| name | api-endpoint |
| description | | Use when this capability is needed. |
OpenGov API Endpoint Generator
Generate SDK endpoints from OpenAPI specifications following project conventions.
Workflow
- Read the OpenAPI spec at the provided file path
- Extract attribute schemas - Use the schema extraction guide in references/schema-extraction.md to:
- Locate the schema in the OpenAPI spec for each resource
- Extract using jq command or Python script
- Document all fields in a mapping table
- Verify field types, required/optional status, and nullable flags
- Verify field mappings before generating code
- Identify endpoints to implement from the spec
- Check existing code to understand current patterns and avoid duplicates
- Generate code following patterns in references/patterns.md
- Run tests and type checks to verify
Quick Reference
Files to Create/Modify
| Component | Location | When |
|---|
| Endpoint module | src/opengov_api/{resource}.py | Always |
| Response models | src/opengov_api/models/{resource}.py | If typed responses needed |
| Params model | src/opengov_api/models/params.py | If list endpoint has filters |
| Enums | src/opengov_api/models/enums.py | If status/type enums needed |
| Model exports | src/opengov_api/models/__init__.py | When adding models |
| SDK exports | src/opengov_api/__init__.py | Always |
| Tests | tests/test_{resource}.py | Always |
| Common tests | tests/test_common_endpoints.py | Add to parametrized lists |
OpenAPI to SDK Mapping
| OpenAPI | SDK |
|---|
GET /{resource} | list_{resource}() returning JSONAPIResponse[{Resource}Resource] |
GET /{resource}/{id} | get_{resource}(id) returning dict[str, Any] |
POST /{resource} | create_{resource}(data) returning dict[str, Any] |
PATCH /{resource}/{id} | update_{resource}(id, data) returning dict[str, Any] |
DELETE /{resource}/{id} | delete_{resource}(id) or archive_{resource}(id) |
Nested GET /{parent}/{id}/{child} | list_{parent}_{child}(parent_id) |
Nested POST /{parent}/{id}/{child} | add_{parent}_{child}(parent_id, data) |
Filter Parameter Translation
| OpenAPI Parameter | SDK Param Name | Model Field |
|---|
filter[status] | status | filter_status |
filter[createdAt] | created_at | filter_created_at |
filter[isEnabled] | is_enabled | filter_is_enabled |
page[number] | page_number | page_number |
page[size] | page_size | page_size |
Detailed Patterns
See references/patterns.md for complete code examples including:
- Full list endpoint with typed params/response
- Iterator function pattern
- Simple CRUD endpoints
- Nested resource endpoints
- Model definitions
- Test patterns
Checklist
Before completing, verify:
Schema Extraction & Validation:
Code Generation:
Integration:
Verification:
Converted and distributed by TomeVault — claim your Tome and manage your conversions.