The SDK is open to external contributions in the form of issues, proposals, and pull requests against the proto definitions. Generated code is not edited by hand — every change starts in aDocumentation Index
Fetch the complete documentation index at: https://docs.sdk.anghami.com/llms.txt
Use this file to discover all available pages before exploring further.
.proto file.
Workflow
- Fork github.com/anghami/sdk.
- Edit
.protofiles undersdk/. Never editapi/,web/,swift/Generated/,java/generated/,python/sdk/, ordocs/api/. make generateto regenerate every language and the OpenAPI bundle.make checkto run lint + breaking + generate. Must pass.- Commit both proto and generated changes in the same commit.
- Open a PR. CI runs the same
make cipipeline.
Proto conventions
These are enforced bybuf lint (STANDARD + COMMENTS). See CLAUDE.md in the repo for the full list, but the highlights:
- Every message, field, enum, enum value, service, and RPC has a leading comment. The COMMENTS lint rule will fail your PR otherwise.
- Enum zero values use
_UNSPECIFIEDsuffix (CONTENT_TYPE_UNSPECIFIED = 0). - Service names end in
Service(MusicCatalogService, notMusicCatalog). - IDs are typed messages, never raw
int64orstring. - Pagination is always cursor-based via
sdk.shared.v1.PaginationRequest/PaginationResponse. - No cross-service imports. A service may import from
sdk.shared.v1but never from another service’s package. - One file per request/response pair.
service.protoonly contains the service definition. - Validation rules use
buf.validatefield annotations.
Breaking changes
make breaking runs buf breaking --against main and fails the PR on any breaking change to a v1 package. If you genuinely need a breaking change:
- Introduce a
v2package alongsidev1. - Mark
v1operations as deprecated in proto comments. - Plan a deprecation window before removing
v1.
Where to file what
- Bug in generated code → file a proto-level issue describing the broken behavior; we’ll fix the proto and regenerate.
- Incorrect documentation → PR against the matching
.mdxunderdocs/. MDX edits don’t require regeneration. - New service or operation → start with an issue describing the use case before opening a proto PR — we want to discuss shape first.
- Generator improvements → those go to sebuf, not this repo.
What’s out of scope
- Direct edits to generated files. They will be reverted on the next
make generate. - Adding live-channel or social-graph operations. See Overview for what’s in scope.