Resources
The resources section defines how your SDK is organized. Resources group related API operations into logical namespaces.
Basic Structure
Section titled “Basic Structure”resources: users: methods: list: get /users create: post /users get: get /users/{id}This generates:
client.users.list();client.users.create({ name: "John" });client.users.get("user-123");Resource Properties
Section titled “Resource Properties”| Property | Required | Type | Description |
|---|---|---|---|
methods | Yes | object | Map of method names to operations |
models | No | array | Associated model names |
subresources | No | object | Nested resource definitions |
Methods
Section titled “Methods”Methods map SDK method names to OpenAPI operations.
Syntax
Section titled “Syntax”methods: <method_name>: <http_method> <path>Examples
Section titled “Examples”resources: users: methods: list: get /users # GET /users create: post /users # POST /users get: get /users/{id} # GET /users/{id} update: put /users/{id} # PUT /users/{id} delete: delete /users/{id} # DELETE /users/{id}
orders: methods: list: get /orders create: post /orders get: get /orders/{order_id} cancel: post /orders/{order_id}/cancelDefault Method Names
Section titled “Default Method Names”Soxom uses these conventional names based on HTTP method and path pattern:
| HTTP Method | Path Pattern | Conventional Name |
|---|---|---|
| GET | /resources | list |
| GET | /resources/{id} | get |
| POST | /resources | create |
| PUT | /resources/{id} | update |
| PATCH | /resources/{id} | patch |
| DELETE | /resources/{id} | delete |
You can use any method name you prefer:
methods: fetchAll: get /users # Custom name archive: delete /users/{id} # Custom name for deleteClient Root Methods
Section titled “Client Root Methods”Use $client to define methods directly on the client object:
resources: $client: methods: health: get /health version: get /version
users: methods: list: get /usersGenerated usage:
// Methods on client rootclient.health();client.version();
// Resource methodsclient.users.list();Models Association
Section titled “Models Association”Associate OpenAPI schema models with resources for documentation and IDE hints:
resources: users: models: - User - UserCreate - UserUpdate methods: list: get /users create: post /users get: get /users/{id} update: put /users/{id}Nested Subresources
Section titled “Nested Subresources”Define nested resources for hierarchical APIs:
resources: users: methods: list: get /users get: get /users/{user_id}
subresources: settings: methods: get: get /users/{user_id}/settings update: put /users/{user_id}/settings
preferences: methods: get: get /users/{user_id}/preferences update: put /users/{user_id}/preferencesGenerated usage:
// Main resourceclient.users.list();client.users.get("user-123");
// Nested subresourcesclient.users.settings.get("user-123");client.users.settings.update("user-123", { theme: "dark" });
client.users.preferences.get("user-123");Deep Nesting
Section titled “Deep Nesting”Subresources can be nested multiple levels:
resources: organizations: methods: list: get /organizations get: get /organizations/{org_id}
subresources: teams: methods: list: get /organizations/{org_id}/teams get: get /organizations/{org_id}/teams/{team_id}
subresources: members: methods: list: get /organizations/{org_id}/teams/{team_id}/members add: post /organizations/{org_id}/teams/{team_id}/membersGenerated usage:
client.organizations.teams.list("org-123");client.organizations.teams.members.list("org-123", "team-456");client.organizations.teams.members.add("org-123", "team-456", { userId: "user-789" });Complete Example
Section titled “Complete Example”resources: # Root level methods $client: methods: health: get /health
# Users with subresources users: models: - User - UserCreate - UserUpdate - UserSettings methods: list: get /users create: post /users get: get /users/{user_id} update: put /users/{user_id} delete: delete /users/{user_id} subresources: settings: methods: get: get /users/{user_id}/settings update: put /users/{user_id}/settings
# Orders orders: models: - Order - OrderCreate methods: list: get /orders create: post /orders get: get /orders/{order_id} cancel: post /orders/{order_id}/cancel
# Chat with nested completions chat: subresources: completions: models: - ChatCompletion - ChatCompletionChunk methods: create: post /chat/completionsPath Parameters
Section titled “Path Parameters”Path parameters in the OpenAPI spec automatically become method arguments:
methods: get: get /users/{user_id}/posts/{post_id}// Path parameters become method argumentsclient.users.posts.get("user-123", "post-456");Next Steps
Section titled “Next Steps”- Targets - Language-specific settings
- Pagination - Configure auto-pagination