diff --git a/.stainless/stainless.yml b/.stainless/stainless.yml new file mode 100644 index 000000000..d604bc5f8 --- /dev/null +++ b/.stainless/stainless.yml @@ -0,0 +1,308 @@ +# yaml-language-server: $schema=https://app.stainless.com/config.schema.json + +# The main edition for the config, see the [docs] for more information. +# +# [docs]: https://www.stainless.com/docs/reference/editions +edition: 2025-10-10 + +organization: + # Name of your organization or company, used to determine the name of the client + # and headings. + name: bifrost + # Link to your API documentation. + docs: https://github.com/maximhq/bifrost + # Contact email for bug reports, questions, and support requests. + contact: '' + +# `targets` define the output targets and their customization options, such as +# whether to emit the Node SDK and what its package name should be. +targets: + typescript: + # The edition for this target, see the [docs] for more information. + # + # [docs]: https://www.stainless.com/docs/reference/editions + edition: typescript.2025-10-10 + package_name: bifrost + production_repo: maximhq/bifrost-ts-sdk + publish: + npm: false + python: + edition: python.2025-11-20 + package_name: bifrost + production_repo: maximhq/bifrost-python-sdk + publish: + pypi: false + go: + edition: go.2025-10-08 + package_name: bifrost + production_repo: maximhq/bifrost-go-sdk + options: + enable_v2: true + kotlin: + edition: kotlin.2025-10-08 + reverse_domain: com.bifrost.api + production_repo: maximhq/bifrost-kotlin-sdk + publish: + maven: false + ruby: + edition: ruby.2025-10-08 + gem_name: bifrost + production_repo: maximhq/bifrost-ruby-sdk + publish: + rubygems: false + +# `environments` are a map of the name of the environment (e.g. "sandbox", +# "production") to the corresponding url to use. +environments: + production: http://localhost:8080 + +# `resources` define the structure and organization for your API, such as how +# methods and models are grouped together and accessed. See the [configuration +# guide] for more information. +# +# [configuration guide]: https://www.stainless.com/docs/guides/configure#resources +resources: + # ============================================================================= + # Core v1 APIs + # ============================================================================= + chat: + subresources: + completions: + models: + chat_completion_request: '#/components/schemas/ChatCompletionRequest' + bifrost_response: '#/components/schemas/BifrostResponse' + log_prob: '#/components/schemas/LogProb' + methods: + create: post /v1/chat/completions + + completions: + methods: + create: post /v1/completions + + embeddings: + methods: + create: post /v1/embeddings + + models: + methods: + list: get /v1/models + + responses: + methods: + create: post /v1/responses + + count_tokens: + methods: + create: post /v1/count_tokens + + audio: + methods: + create_speech: post /v1/audio/speech + create_transcription: post /v1/audio/transcriptions + + mcp: + subresources: + tool: + models: + bifrost_message: '#/components/schemas/BifrostMessage' + tool_call: '#/components/schemas/ToolCall' + methods: + execute: post /v1/mcp/tool/execute + + # v1 Batches + batches: + methods: + create: post /v1/batches + list: get /v1/batches + retrieve: get /v1/batches/{batch_id} + cancel: post /v1/batches/{batch_id}/cancel + get_results: get /v1/batches/{batch_id}/results + + # v1 Files + files: + methods: + create: post /v1/files + list: get /v1/files + retrieve: get /v1/files/{file_id} + delete: delete /v1/files/{file_id} + get_content: get /v1/files/{file_id}/content + + # ============================================================================= + # Management APIs (/api/*) + # ============================================================================= + api: + subresources: + # MCP Client Management + mcp: + methods: + list_clients: get /api/mcp/clients + subresources: + client: + models: + mcp_client_config: '#/components/schemas/MCPClientConfig' + success_response: '#/components/schemas/SuccessResponse' + methods: + create: post /api/mcp/client + update_tools: put /api/mcp/client/{id} + delete: delete /api/mcp/client/{id} + reconnect: post /api/mcp/client/{id}/reconnect + + # Provider Management + providers: + models: + model_provider: '#/components/schemas/ModelProvider' + provider_response: '#/components/schemas/ProviderResponse' + key: '#/components/schemas/Key' + network_config: '#/components/schemas/NetworkConfig' + concurrency_and_buffer_size: '#/components/schemas/ConcurrencyAndBufferSize' + proxy_config: '#/components/schemas/ProxyConfig' + methods: + list: get /api/providers + create: post /api/providers + retrieve: get /api/providers/{provider} + update: put /api/providers/{provider} + delete: delete /api/providers/{provider} + + # Config Management + config: + models: + client_config: '#/components/schemas/ClientConfig' + methods: + retrieve: get /api/config + update: put /api/config + + # Logs + logs: + methods: + list: get /api/logs + delete: delete /api/logs + list_dropped: get /api/logs/dropped + get_stats: get /api/logs/stats + get_filter_data: get /api/logs/filterdata + recalculate_cost: post /api/logs/recalculate-cost + + # Governance - Customers + governance: + subresources: + customers: + methods: + list: get /api/governance/customers + create: post /api/governance/customers + retrieve: get /api/governance/customers/{customer_id} + update: put /api/governance/customers/{customer_id} + delete: delete /api/governance/customers/{customer_id} + teams: + methods: + list: get /api/governance/teams + create: post /api/governance/teams + retrieve: get /api/governance/teams/{team_id} + update: put /api/governance/teams/{team_id} + delete: delete /api/governance/teams/{team_id} + virtual_keys: + methods: + list: get /api/governance/virtual-keys + create: post /api/governance/virtual-keys + retrieve: get /api/governance/virtual-keys/{vk_id} + update: put /api/governance/virtual-keys/{vk_id} + delete: delete /api/governance/virtual-keys/{vk_id} + + # Plugins + plugins: + methods: + list: get /api/plugins + create: post /api/plugins + retrieve: get /api/plugins/{name} + update: put /api/plugins/{name} + delete: delete /api/plugins/{name} + + # Session + session: + methods: + is_auth_enabled: get /api/session/is-auth-enabled + login: post /api/session/login + logout: post /api/session/logout + + # Cache + cache: + methods: + clear_by_request: delete /api/cache/clear/{requestId} + clear_by_key: delete /api/cache/clear-by-key/{cacheKey} + + # Proxy Config + proxy_config: + methods: + retrieve: get /api/proxy-config + update: put /api/proxy-config + + # Keys + keys: + methods: + list: get /api/keys + + # Models (API) + models: + methods: + list: get /api/models + + # Version + version: + methods: + retrieve: get /api/version + + # Pricing + pricing: + methods: + force_sync: post /api/pricing/force-sync + + # ============================================================================= + # Utility APIs + # ============================================================================= + health: + methods: + check: get /health + +settings: + # All generated integration tests that hit the prism mock http server are marked + # as skipped. Removing this setting or setting it to false enables tests, but + # doing so may result in test failures due to bugs in the test server. + # + # [prism mock http server]: https://stoplight.io/open-source/prism + disable_mock_tests: true + license: MIT + +# `client_settings` define settings for the API client, such as extra constructor +# arguments (used for authentication), retry behavior, idempotency, etc. +client_settings: + opts: + api_key: + type: string + read_env: BIFROST_API_KEY + nullable: true + auth: + security_scheme: bearerAuth + base_url: + type: string + read_env: BIFROST_BASE_URL + nullable: true + +security_schemes: + bearerAuth: + type: http + scheme: bearer + +security: + - bearerAuth: [] + +# `readme` is used to configure the code snippets that will be rendered in the +# README.md of various SDKs. In particular, you can change the `headline` +# snippet's endpoint and the arguments to call it with. +readme: + example_requests: + default: + type: request + endpoint: post /v1/chat/completions + params: {} + headline: + type: request + endpoint: post /v1/chat/completions + params: {} diff --git a/.stainless/workspace.json b/.stainless/workspace.json new file mode 100644 index 000000000..4be0fc909 --- /dev/null +++ b/.stainless/workspace.json @@ -0,0 +1,22 @@ +{ + "project": "bifrost", + "openapi_spec": "../docs/openapi/openapi.json", + "stainless_config": "stainless.yml", + "targets": { + "go": { + "output_path": "https://github.com/maximhq/bifrost-go-sdk" + }, + "kotlin": { + "output_path": "https://github.com/maximhq/bifrost-kotlin-sdk" + }, + "python": { + "output_path": "https://github.com/maximhq/bifrost-python-sdk" + }, + "ruby": { + "output_path": "https://github.com/maximhq/bifrost-ruby-sdk" + }, + "typescript": { + "output_path": "https://github.com/maximhq/bifrost-ts-sdk" + } + } +}