{"id":15287502,"url":"https://github.com/stroeer/tapir","last_synced_at":"2025-04-30T14:41:00.397Z","repository":{"id":36984182,"uuid":"256244891","full_name":"stroeer/tapir","owner":"stroeer","description":"T-online API Repository","archived":false,"fork":false,"pushed_at":"2025-04-28T06:21:48.000Z","size":5631,"stargazers_count":5,"open_issues_count":16,"forks_count":9,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-04-28T07:27:12.073Z","etag":null,"topics":["api","buzz","grpc","protobuf"],"latest_commit_sha":null,"homepage":"https://stroeer.github.io/tapir/article.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stroeer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-04-16T14:49:47.000Z","updated_at":"2025-04-28T06:20:21.000Z","dependencies_parsed_at":"2023-09-29T14:58:16.886Z","dependency_job_id":"c5365a88-dce2-4bd9-badf-15c372056ead","html_url":"https://github.com/stroeer/tapir","commit_stats":null,"previous_names":[],"tags_count":110,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stroeer%2Ftapir","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stroeer%2Ftapir/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stroeer%2Ftapir/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stroeer%2Ftapir/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stroeer","download_url":"https://codeload.github.com/stroeer/tapir/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251722797,"owners_count":21633016,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","buzz","grpc","protobuf"],"created_at":"2024-09-30T15:29:36.402Z","updated_at":"2025-04-30T14:41:00.371Z","avatar_url":"https://github.com/stroeer.png","language":"JavaScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"docs_resources/tapir.png\" height=\"200\" alt=\"tapir\"/\u003e\n   \u003ch1\u003etapir\u003c/h1\u003e\n\u003c/div\u003e\n\n![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/stroeer/tapir?color=%23f653a6\u0026label=Release\u0026style=flat-square) \n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/stroeer/tapir/proto.yaml?style=flat-square\u0026label=build) \n![GitHub License](https://img.shields.io/github/license/stroeer/tapir?style=flat-square) \n\nThe **T**-online **API** **R**epository contains the interface definitions of t-online APIs that support the [gRPC](https://grpc.io/) protocol. You can use these definitions with open source tools to generate client libraries, documentation and other artifacts.\n\nT-online APIs use [Protocol Buffers](https://github.com/google/protobuf) version 3 (proto3) as their Interface Definition Language (IDL) to define the API interface and the structure of the payload messages.\n\n## overview\n\n### guidelines\n\n* tapir provides an [IDL](https://en.wikipedia.org/wiki/Interface_description_language) and RCP services stubs to access editorial content and their configuration. This allows delivering various t-online products developed by independent teams\n* RPC services and proto messages are optimized for an efficient development and delivery of those products: One of our internal API guideline demands that all the content required to render a page must depend on a single API call.\n* different editorial content types and product features are modeled by the same proto messages using the same concepts. This allows to keep the APIs _clean_ and future proof. Examples:\n    * articles, videos or galleries share the same message structure distinguished by a type field\n    * attributes of an article are modeled as generic `\u003cstring, string\u003e` maps\n    * elements of an article like images, videos and their assets share the same proto messages and can be distinguished by a type field\n    * [enumerations](https://developers.google.com/protocol-buffers/docs/proto3#enum) are only used for stable/rarely changing lists of pre-defined values like a content type.\n    Volatile fields like layout types are modeled as `string` fields.\n* proto message fields and entries of maps are optional unless commented otherwise. Clients must not break if an optional field or map entry is missing.\n\n\n## generate code\n\nWe recommend to use the generated SDKs from the [buf schema registry (BSR)](#buf-schema-registry) in your project. \n\nIn addition, it's possible to generate code for interacting with the t-online APIs using the [buf cli](https://buf.build/docs/generate/overview). See [docs](https://buf.build/docs/installation)\nfor installation instructions.  \n\nRun the following commands to generate code for `java`, `python`, `node` (deprecated), `protobuf-es` (`node-buf`) or `go`:\n\n```shell\n# java, python and go\nmake generate\n# node (deprecated, use BSR sdk instead or node-buf if cjs is needed)\nmake generate TEMPLATE=buf.gen.node.yaml\n# bufbuild/es generates ts only (deprecated, use BSR sdk)\nmake generate TEMPLATE=buf.gen.node-proto.yaml\n# bufbuild/es generates cjs only\nmake generate TEMPLATE=buf.gen.node-buf.yaml\n```\n\nSee corresponding `buf.gen.*.yaml` code generation configuration.\n\n## testing and quality assurance\n\nWe use the [buf cli](https://buf.build/docs/ecosystem/cli-overview) for quality assurance of our proto files:\n\n* `make lint`: linting all proto files with [buf lint](https://buf.build/docs/lint/overview) \n* `make fmt`: formatting all proto files with [buf fmt](https://buf.build/docs/format/style)\n* `make breaking`: check for breaking changes against the main branch with [buf breaking](https://buf.build/docs/breaking/overview)\n\nThese tools are configured in the `buf.yaml` file. \n\nIn addition, we run some basic language specific tests to verify a successful code generation for `java` and `node`.\n\n## releases\n\nWe use [semantic versioning](https://semver.org/) for our releases. \n\nTo create a new release run`make BUMP=[major|minor|patch] release` (defaults to `patch)` in your clean main branch. This will create \na new tag and push it to the main branch. In addition, a new release will be created in GitHub if a\nfine-grained personal access token is provided in the `GITHUB_TOKEN` environment variable.\n\n### buf schema registry\n\nWe push to the [buf schema registry (BSR)](https://buf.build/stroeer/tapir) automatically for each new tag. The registry\nprovides SDKs for various languages to interact with the t-online APIs. It's recommended to \nuse these SDKs instead of our custom [client libraries](#client-libraries).\n\n### client libraries\n\nIn addition to the [BSR SDKs](https://buf.build/stroeer/tapir), we generate packages hosted on [GitHub](https://github.com/orgs/stroeer/packages?repo_name=tapiro) \nfor the following languages:\n\n* [java](https://github.com/stroeer/tapir/packages/235034)\n* (`deprecated`) [node](https://github.com/stroeer/tapir/packages/235031) \n* (`deprecated`) [protobuf-es (v1)](https://github.com/stroeer/tapir/pkgs/npm/tapir-proto-v1)\n* [protobuf-es (v2)](https://github.com/stroeer/tapir/pkgs/npm/tapir-buf-v1)\n\nautomatically for each new tag which can be integrated in your build system.\n\nSee our GitHub [workflow](.github/workflows/proto.yaml) for details. \n\n\n\n \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstroeer%2Ftapir","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstroeer%2Ftapir","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstroeer%2Ftapir/lists"}