Configuration Overview
The soxom.yaml file is the central configuration for Soxom SDK generation. It controls everything from SDK metadata to feature configuration.
File Location
Section titled “File Location”soxom.yaml lives at the root of your Config Repository and is picked up automatically on every build. The path is fixed — Soxom does not search subdirectories or accept an alternate location.
Basic Structure
Section titled “Basic Structure”# Required: Configuration versionversion: "1.0"
# SDK metadatasdk: name: my-sdk version: 1.0.0 description: SDK for My API
# OpenAPI sourcespec: path: ./openapi.yaml
# Target languagestargets: - typescript - python - go - java
# SDK structureresources: {}
# Feature configurationpagination: {}authentication: {}retries: {}timeouts: {}streaming: {}Full Annotated Example
Section titled “Full Annotated Example”version: "1.0"
# SDK metadata - defines package identitysdk: name: acme-sdk # Package name version: 1.0.0 # Semantic version description: SDK for Acme API # Package description
# OpenAPI specification sourcespec: path: ./openapi.yaml # Local path to spec # origin: https://api.example.com/openapi.yaml # Or remote URL
# Target languages with language-specific configtargets: typescript: package_name: "@acme/sdk" # npm package name module_format: esm # esm or cjs
python: package_name: acme-sdk # PyPI package name min_version: "3.9" # Minimum Python version
go: module: github.com/acme/sdk-go # Go module path
java: group_id: com.acme # Maven group ID artifact_id: acme-sdk # Maven artifact ID
# Resource grouping and SDK structureresources: $client: # Methods on client root methods: health: get /health
users: # Resource namespace models: - User - UserCreate methods: list: get /users create: post /users get: get /users/{id} subresources: settings: methods: get: get /users/{id}/settings update: put /users/{id}/settings
# Pagination configurationpagination: default_type: cursor schemes: cursor: cursor: request_param: after response_property: next_cursor limit: request_param: limit default: 20 max: 100 has_more: response_property: has_more
# Authentication configurationauthentication: default: bearer env_vars: bearer: token: ACME_API_TOKEN
# Retry configurationretries: enabled: true max_attempts: 3 backoff: initial_interval_ms: 500 max_interval_ms: 30000 multiplier: 2.0 jitter: 0.25 retry_on: - 408 - 429 - 500 - 502 - 503 - 504
# Timeout configurationtimeouts: default_ms: 60000 connect_ms: 10000 read_ms: 30000
# Streaming configurationstreaming: sse: enabled: true sentinel_events: - "[DONE]"Configuration Sections
Section titled “Configuration Sections”| Section | Required | Description |
|---|---|---|
version | Yes | Configuration file version (always "1.0") |
sdk | Yes | SDK package metadata |
spec | Yes | OpenAPI specification source |
targets | Yes | Target languages to generate |
resources | No | SDK resource structure |
pagination | No | Pagination configuration |
authentication | No | Auth configuration |
retries | No | Retry behavior |
timeouts | No | Request timeouts |
streaming | No | SSE streaming settings |
Configuration Hierarchy
Section titled “Configuration Hierarchy”Soxom uses a layered configuration system:
- Global defaults - Set in
soxom.yamlroot sections - Per-operation - Override using OpenAPI
x-soxom-*extensions - Runtime - Override when calling SDK methods
Validation
Section titled “Validation”Validation runs automatically on every build — both soxom.yaml and the referenced OpenAPI spec are checked, and any errors surface in the Builds view of the dashboard. To preview validation before merging, push to a branch of the Config Repository: Soxom creates a preview build for it.
Next Steps
Section titled “Next Steps”- SDK Metadata - Configure package identity
- Resources - Define SDK structure
- Targets - Language-specific settings