{"id":31764021,"url":"https://github.com/dispatchrun/dispatch-proto","last_synced_at":"2026-02-17T11:33:58.073Z","repository":{"id":221201027,"uuid":"753721077","full_name":"dispatchrun/dispatch-proto","owner":"dispatchrun","description":"Protobuf definitions for the Dispatch SDK","archived":false,"fork":false,"pushed_at":"2024-06-25T23:16:12.000Z","size":75,"stargazers_count":2,"open_issues_count":3,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T23:41:05.910Z","etag":null,"topics":["dispatch","protobuf","sdk"],"latest_commit_sha":null,"homepage":"https://buf.build/stealthrocket/dispatch-sdk","language":null,"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/dispatchrun.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":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-06T17:07:54.000Z","updated_at":"2024-06-12T22:56:29.000Z","dependencies_parsed_at":"2024-04-05T03:30:17.071Z","dependency_job_id":"80981c7c-d782-4912-8732-910362e90cd4","html_url":"https://github.com/dispatchrun/dispatch-proto","commit_stats":null,"previous_names":["stealthrocket/dispatch-sdk-protobuf","stealthrocket/dispatch-proto","dispatchrun/dispatch-proto"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dispatchrun/dispatch-proto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dispatchrun%2Fdispatch-proto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dispatchrun%2Fdispatch-proto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dispatchrun%2Fdispatch-proto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dispatchrun%2Fdispatch-proto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dispatchrun","download_url":"https://codeload.github.com/dispatchrun/dispatch-proto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dispatchrun%2Fdispatch-proto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29542524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-17T08:11:05.436Z","status":"ssl_error","status_checked_at":"2026-02-17T08:09:38.860Z","response_time":100,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dispatch","protobuf","sdk"],"created_at":"2025-10-09T23:39:33.455Z","updated_at":"2026-02-17T11:33:58.047Z","avatar_url":"https://github.com/dispatchrun.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/dispatchrun/.github/blob/main/profile/dispatch_logo_dark.png?raw=true\"\u003e\n    \u003cimg alt=\"dispatch logo\" src=\"https://github.com/dispatchrun/.github/blob/main/profile/dispatch_logo_light.png?raw=true\" height=\"64\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n# dispatch-proto\n\n[![Build](https://github.com/dispatchrun/dispatch-proto/actions/workflows/buf.yml/badge.svg)](https://github.com/dispatchrun/dispatch-proto/actions/workflows/buf.yml)\n[![Docs](https://img.shields.io/badge/API-reference-lightblue.svg)](https://buf.build/stealthrocket/dispatch-proto/docs/main:dispatch.sdk.v1)\n\nThis module contains the protobuf definitions to integrate with Dispatch.\n\n[connectrpc]:      https://connectrpc.com/\n[grpc]:            https://grpc.io/\n[http-signatures]: https://datatracker.ietf.org/doc/draft-ietf-httpbis-message-signatures/19/\n[signup]:          https://docs.dispatch.run/getting-started\n[rpc-dispatch]:    https://buf.build/stealthrocket/dispatch-proto/docs/main:dispatch.sdk.v1#dispatch.sdk.v1.DispatchService.Dispatch\n[rpc-function]:    https://buf.build/stealthrocket/dispatch-proto/docs/main:dispatch.sdk.v1#dispatch.sdk.v1.FunctionService.Run\n\n- [What is Dispatch?](#what-is-dispatch)\n- [Authentication](#authentication)\n- [Dispatching Calls to Functions](#dispatching-calls-to-functions)\n- [Running Function Calls](#running-function-calls)\n  - [Verification of Function Calls](#verification-of-function-calls)\n- [Contributing](#contributing)\n\n## What is Dispatch?\n\nDispatch is a cloud service for developing scalable and reliable applications,\nincluding:\n\n- **Event-Driven Architectures**\n- **Background Jobs**\n- **Transactional Workflows**\n- **Multi-Tenant Data Pipelines**\n\nDispatch differs from alternative solutions by allowing developers top write\nsimple Python code: it has a **minimal API footprint**, which usually only\nrequires using a function decorator (no complex framework to learn), failure\nrecovery is built-in by default for transient errors like rate limits or\ntimeouts, with a **zero-configuration** model.\n\nTo interact with the Dispatch scheduler, the client SDK uses this module to\ngenerate [connectrpc][connectrpc] or [gRPC][grpc] clients and servers.\n\n## Authentication\n\nTo authenticate with the Dispatch control plane, a client must present a valid\nAPI key in the `Authorization` header of the HTTP requests, for example:\n\n```sh\ncurl https://api.dispatch.run/dispatch.sdk.v1.DispatchService/Dispatch \\\n    -H \"Authorization: Bearer $DISPATCH_API_KEY\" \\\n    ...\n```\n\nTo obtain an API key, follow the instructions to [sign up for Dispatch][signup] 🚀.\n\n## Dispatching Calls to Functions\n\nClients can submit calls to functions implemented in their application, using\nthe [`dispatch.sdk.v1.DispatchService/Dispatch`][rpc-dispatch] method.\n\nThe request contains the list of calls that will be performed asynchronously by\nthe scheduler.\n\n## Running Function Calls\n\nFunction endpoints are implemented by exposing the\n[`dispatch.sdk.v1.FunctionService/Run`][rpc-function]\nmethod on a [connectrpc][connectrpc] or [gRPC][grpc] endpoint.\n\nThe scheduler will make the function calls that were submitted via the API.\n\n### Verification of Function Calls\n\nWhen calling functions, requests are signed using asymmetric key pairs. The private\nkey is stored by Dispatch, and the server uses the private key to verify the\nsignature of requests it receives.\n\nThe signature mechanism uses the [HTTP Signatures IETF Draft][http-signatures],\nwith the following signing fields:\n\n    @method, @path, @authority, content-type, content-digest\n\nThe request signature is generated using the ed25519 cryptographic function,\nthe `keyid` in the signature is set to `default`.\n\n### HTTP Status Codes\n\nThe protocol uses HTTP status codes to communicate errors that occurred before\nany function could be run (e.g., due to invalid requests).\n\n| Status | Reason                                             |\n| :----- | :------------------------------------------------- |\n| 200    | The requested function ran successfuly             |\n| 400    | Malformed requests (e.g., missing function name)   |\n| 401    | Missing or malformed signature in the HTTP request |\n| 403    | An invalid signature was found in the HTTP request |\n| 404    | The requested function did not exist               |\n\nWhen responses containing those status codes are returned, the content type is\n**application/json** and the body is a JSON object with this structure:\n```json\n{\n  \"code\": \"unauthenticated\",\n  \"message\": \"missing request signature\"\n}\n```\n\nThis format follows the [connectrpc][connectrpc] protocol, the **code** is set\naccording to the [http-to-error-code](https://connectrpc.com/docs/protocol/#http-to-error-code)\nspecification, and the **message** contains a description of the error intended\nto provide operators insight into the reason why the request failed.\n\nProxies on the request path can also return other HTTP status codes such as\n429 to apply rate limits or 504 if a timeout occurred.\n\n## Contributing\n\nContributions are always welcome! Would you spot a typo or anything that needs\nto be improved, feel free to send a pull request.\n\nPull requests need to pass all CI checks before getting merged. The buf linters\nrun on every code push and will detect any breaking changes that are made to the\ngenerated code or the wire format. In general, we never accept breaking changes,\nbut there are cases where we might make exceptions for fixes to the generated\ncode because consumers are expected to pin their dependency and are responsible\nfor updating their code when needed. Breaking changes to the wire format are\nnever acceptable.\n\nRemember to be respectful and open minded!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdispatchrun%2Fdispatch-proto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdispatchrun%2Fdispatch-proto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdispatchrun%2Fdispatch-proto/lists"}