{"id":19456907,"url":"https://github.com/porter-dev/api-contracts","last_synced_at":"2025-10-16T07:45:14.575Z","repository":{"id":81890051,"uuid":"604737835","full_name":"porter-dev/api-contracts","owner":"porter-dev","description":"API contracts for use across multiple services","archived":false,"fork":false,"pushed_at":"2024-06-28T15:40:50.000Z","size":3622,"stargazers_count":2,"open_issues_count":4,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-22T07:07:51.226Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/porter-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-21T17:27:17.000Z","updated_at":"2025-03-18T21:49:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"d9e41525-8a01-404d-b922-f49cc6311a81","html_url":"https://github.com/porter-dev/api-contracts","commit_stats":null,"previous_names":[],"tags_count":297,"template":false,"template_full_name":null,"purl":"pkg:github/porter-dev/api-contracts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porter-dev%2Fapi-contracts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porter-dev%2Fapi-contracts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porter-dev%2Fapi-contracts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porter-dev%2Fapi-contracts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/porter-dev","download_url":"https://codeload.github.com/porter-dev/api-contracts/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/porter-dev%2Fapi-contracts/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262708058,"owners_count":23351536,"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":[],"created_at":"2024-11-10T17:18:57.545Z","updated_at":"2025-10-16T07:45:09.531Z","avatar_url":"https://github.com/porter-dev.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Contracts\n\nAPI contracts for use across multiple services\n\n- Protobuf contracts in Go generated using `task all`\n- gRPC Server using [Connect RPC](https://connectrpc.com/docs/introduction/)\n- gRPC Server generated using `task all`\n\n## Contributing\n\nTo start working on this, run the following commands:\n\n```shell\n# install task\nbrew install go-task/tap/go-task\n\n# install dependencies\ntask install-tools\n```\n\n## Installing\n\nNPM:\n\n```bash\nnpm i --legacy-peer-deps @porter-dev/api-contracts\n```\n\nGo\n\n```\ngo get -u github.com/porter-dev/api-contracts\n```\n\n## Usage\n\n- Make changes to the `generated/porter/v1` protos as needed\n- Run `task all` before committing your changes to the PR. This will run the PR prechecks, as well as generate any new code required.\n- Create a PR\n- Upon subsequent changes to your PR, ensure you run `task all` or your changes will not be included in the merged release.\n\nNote: if you have created any new files in your release, be sure to export them in the `index.ts` file found in `generated/js` (this file is not in fact generated).\n\n## Creating a release\n\n- Visit [Github Releases](https://github.com/porter-dev/api-contracts/releases)\n- Click `Create a new release`\n- Click `Choose a tag`, and choose the semantic version that suits your release type. Make sure this begins with `v` and is of the format `vX.Y.Z`\n- Click `Create new tag`\n- Set the form title to with the tag name that you just created\n- Click \"Generate release notes\", then fill out an additionally required information\n\n## Updating message formats\n\nPlease consult this guide for best practices on updating message types for backward- and forward-compatability: https://protobuf.dev/programming-guides/proto3/#updating\n\n## Local development\n\nAssuming that you use `workstation`:\n\n### Porter dashboard\n\nIn the folder containing your `package.json`, run the following:\n`npm i --save --legacy-peer-deps ../../api-contracts/generated/js`\n\n## Porter server\n\nIn the folder containing your `go.mod`, run the following:\n\n```bash\ngo mod edit -replace github.com/porter-dev/api-contracts=../api-contracts\ngo mod vendor\ngo mod tidy\n```\n\n### Cluster Control Plane\n\nIn the folder containing your `go.mod`, run the following:\n\n```bash\ngo mod edit -replace github.com/porter-dev/api-contracts=../api-contracts\ngo mod vendor\ngo mod tidy\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporter-dev%2Fapi-contracts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fporter-dev%2Fapi-contracts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fporter-dev%2Fapi-contracts/lists"}