Provider schema 参考
本页面渲染由固定版本 bricoop-releases 生成的 provider 定义 schema。provider schema 比 application schema 更大,其字段按 auths[]、models[]、services[] 和 profiles[] 分组,所以 provider manifest 的每个部分都有自己的字段集合。每个字段都列出了它的 path、type、required 标志以及任何 enum 或 default 值。
切勿手动编辑这些行。这些字段在构建时由 sources/synced/protocol/reference.json 生成,任何手动编辑都会在下一次同步时被覆盖。如果某个字段有误,请在上游 bricoop-releases 中修正并重新运行 protocol 同步;本页的下一次发布会带上修正后的行。
该表格由路由从构建所校验的同一固定快照渲染,所以你在这里读到的行与 Bricoop Desktop 在运行时执行的行一致。表格上方显示的 schemaRevision 是按文件计算的哈希;页面页脚显示的 revision 是导入快照时所用的 40 字符上游 commit。
Provider stable schema
| path | type | required | default | enum |
|---|---|---|---|---|
auths[].api_key.console.name | string | yes | ||
auths[].api_key.console.url | string | yes | ||
auths[].api_key.enabled | boolean | no | true | |
auths[].enabled | boolean | no | true | |
auths[].method | string | yes | OAuth, ApiKey | |
auths[].name | string | yes | ||
auths[].oauth.auth_code.authorize.params[].json | any | yes | ||
auths[].oauth.auth_code.authorize.params[].value | string | yes | ||
auths[].oauth.auth_code.authorize.url.json | any | yes | ||
auths[].oauth.auth_code.authorize.url.value | string | yes | ||
auths[].oauth.auth_code.enabled | boolean | no | true | |
auths[].oauth.auth_code.exchange.body.fields[].json | any | yes | ||
auths[].oauth.auth_code.exchange.body.fields[].value | string | yes | ||
auths[].oauth.auth_code.exchange.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.auth_code.exchange.delay | integer|null | no | ||
auths[].oauth.auth_code.exchange.headers[].json | any | yes | ||
auths[].oauth.auth_code.exchange.headers[].value | string | yes | ||
auths[].oauth.auth_code.exchange.response.body_mapping.system[] | string | no | ||
auths[].oauth.auth_code.exchange.response.body_mapping.vars[] | string | no | ||
auths[].oauth.auth_code.exchange.url.json | any | yes | ||
auths[].oauth.auth_code.exchange.url.value | string | yes | ||
auths[].oauth.auth_code.redirect_uri | string | yes | ||
auths[].oauth.device_code.enabled | boolean | no | true | |
auths[].oauth.device_code.poll.body.fields[].json | any | yes | ||
auths[].oauth.device_code.poll.body.fields[].value | string | yes | ||
auths[].oauth.device_code.poll.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.device_code.poll.delay | integer|null | no | ||
auths[].oauth.device_code.poll.headers[].json | any | yes | ||
auths[].oauth.device_code.poll.headers[].value | string | yes | ||
auths[].oauth.device_code.poll.response.body_mapping.system[] | string | no | ||
auths[].oauth.device_code.poll.response.body_mapping.vars[] | string | no | ||
auths[].oauth.device_code.poll.url.json | any | yes | ||
auths[].oauth.device_code.poll.url.value | string | yes | ||
auths[].oauth.device_code.request.body.fields[].json | any | yes | ||
auths[].oauth.device_code.request.body.fields[].value | string | yes | ||
auths[].oauth.device_code.request.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.device_code.request.delay | integer|null | no | ||
auths[].oauth.device_code.request.headers[].json | any | yes | ||
auths[].oauth.device_code.request.headers[].value | string | yes | ||
auths[].oauth.device_code.request.response.body_mapping.system[] | string | no | ||
auths[].oauth.device_code.request.response.body_mapping.vars[] | string | no | ||
auths[].oauth.device_code.request.url.json | any | yes | ||
auths[].oauth.device_code.request.url.value | string | yes | ||
auths[].oauth.device_code.scopes[] | string | no | ||
auths[].oauth.device_code.vars[] | string | no | ||
auths[].oauth.enabled | boolean | no | true | |
auths[].oauth.refresh.access_token_ttl_seconds | integer|null | no | ||
auths[].oauth.refresh.body.fields[].json | any | yes | ||
auths[].oauth.refresh.body.fields[].value | string | yes | ||
auths[].oauth.refresh.body.type | string | yes | json, form_urlencoded | |
auths[].oauth.refresh.delay | integer|null | no | ||
auths[].oauth.refresh.headers[].json | any | yes | ||
auths[].oauth.refresh.headers[].value | string | yes | ||
auths[].oauth.refresh.method | null|string | no | ||
auths[].oauth.refresh.response.body_mapping.system[] | string | no | ||
auths[].oauth.refresh.response.body_mapping.vars[] | string | no | ||
auths[].oauth.refresh.response.error.permanent_codes[] | string | no | ||
auths[].oauth.refresh.response.error.permanent_statuses[] | integer | no | ||
auths[].oauth.refresh.url | null|string | no | ||
auths[].oauth.scopes[] | string | no | ||
auths[].oauth.vars[] | string | no | ||
auths[].request.additional_fields[].json | any | yes | ||
auths[].request.additional_fields[].value | string | yes | ||
auths[].request.additional_headers[].json | any | yes | ||
auths[].request.additional_headers[].value | string | yes | ||
auths[].request.body_template | null|string | no | null | |
auths[].request.delay | integer|null | no | ||
enabled | boolean | no | true | |
id | string | yes | ||
minimal_client_version | string | yes | ||
models[].aliases[] | string | no | ||
models[].capabilities.compaction.encoding | null|string | no | ||
models[].capabilities.compaction.transport | null|string | no | local | |
models[].capabilities.deferred_tool_loading | boolean | no | false | |
models[].capabilities.parallel_tool_calls | boolean | yes | ||
models[].capabilities.structured_output | boolean | yes | ||
models[].capabilities.thinking | null | no | ||
models[].description | null|string | no | ||
models[].enabled | boolean | no | true | |
models[].kind | string | yes | Chat | |
models[].max_context_tokens | integer | yes | ||
models[].max_output_tokens | integer | yes | ||
models[].modalities.input[] | string | no | text, image, video | |
models[].modalities.output[] | string | no | text, image, video | |
models[].model_id | string | yes | ||
models[].name | string | yes | ||
models[].release_date | string | yes | ||
models[].scenes[] | string | no | ||
models[].supported_protocols[] | string | no | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
models[].tier | string | yes | frontier | |
name | string | yes | ||
profiles[].auth | string | yes | ||
profiles[].billing_mode | string | no | Subscription, UsageBasedApiKey, Hybrid, Unknown | |
profiles[].enabled | boolean | no | true | |
profiles[].encrypted_compaction_plain_strategy | string | no | lazy, eager | |
profiles[].max_context_tokens | integer|null | no | null | |
profiles[].max_output_tokens | integer|null | no | null | |
profiles[].name | string | yes | ||
profiles[].post_auth[].body.fields[].json | any | yes | ||
profiles[].post_auth[].body.fields[].value | string | yes | ||
profiles[].post_auth[].body.type | string | yes | json, form_urlencoded | |
profiles[].post_auth[].delay | integer|null | no | ||
profiles[].post_auth[].headers[].json | any | yes | ||
profiles[].post_auth[].headers[].value | string | yes | ||
profiles[].post_auth[].method | null|string | no | ||
profiles[].post_auth[].name | string | yes | ||
profiles[].post_auth[].response.body_mapping.system[] | string | no | ||
profiles[].post_auth[].response.body_mapping.vars[] | string | no | ||
profiles[].post_auth[].url.json | any | yes | ||
profiles[].post_auth[].url.value | string | yes | ||
profiles[].request.additional_fields[].json | any | yes | ||
profiles[].request.additional_fields[].value | string | yes | ||
profiles[].request.additional_headers[].json | any | yes | ||
profiles[].request.additional_headers[].value | string | yes | ||
profiles[].request.body_template | null|string | no | null | |
profiles[].request.delay | integer|null | no | ||
profiles[].routing_filters[].action | string | no | allow, deny | |
profiles[].routing_filters[].kind | string | yes | Chat | |
profiles[].routing_filters[].model | null|string | no | ||
profiles[].routing_filters[].protocol | null|string | no | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
profiles[].services[] | string | no | ||
profiles[].vars[].default | null|string | no | ||
profiles[].vars[].description | null|string | no | ||
profiles[].vars[].required | boolean | no | false | |
profiles[].vars[].type | string | no | string, integer, number, boolean | |
schema_version | integer | yes | 2 | |
services[].capabilities.compaction.encoding | null|string | no | ||
services[].capabilities.compaction.transport | null|string | no | local, remote | |
services[].capabilities.custom_tools | boolean | no | false | |
services[].capabilities.max_output_tokens.field | string | yes | max_tokens, max_completion_tokens | |
services[].capabilities.mid_conversation_system | boolean | no | false | |
services[].capabilities.namespace_tools | boolean | no | false | |
services[].capabilities.stop | boolean | no | true | |
services[].capabilities.thinking.adaptive.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.adaptive.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.adaptive.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.adaptive.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.adaptive.request.body_template | null|string | no | null | |
services[].capabilities.thinking.adaptive.request.delay | integer|null | no | ||
services[].capabilities.thinking.disabled.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.disabled.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.disabled.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.disabled.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.disabled.request.body_template | null|string | no | null | |
services[].capabilities.thinking.disabled.request.delay | integer|null | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.high | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.low | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.max | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.medium | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.minimal | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_budget.xhigh | integer | no | ||
services[].capabilities.thinking.enabled.effort_to_value.high | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.low | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.max | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.medium | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.minimal | string | no | ||
services[].capabilities.thinking.enabled.effort_to_value.xhigh | string | no | ||
services[].capabilities.thinking.enabled.request.additional_fields[].json | any | yes | ||
services[].capabilities.thinking.enabled.request.additional_fields[].value | string | yes | ||
services[].capabilities.thinking.enabled.request.additional_headers[].json | any | yes | ||
services[].capabilities.thinking.enabled.request.additional_headers[].value | string | yes | ||
services[].capabilities.thinking.enabled.request.body_template | null|string | no | null | |
services[].capabilities.thinking.enabled.request.delay | integer|null | no | ||
services[].capabilities.thinking.encoding | string | no | plain | |
services[].enabled | boolean | no | true | |
services[].endpoint.json | any | yes | ||
services[].endpoint.value | string | yes | ||
services[].execution.idle_timeout_seconds | integer|null | no | ||
services[].execution.max_attempts | integer|null | no | ||
services[].execution.timeout_seconds | integer|null | no | ||
services[].kind | string | yes | Chat | |
services[].name | string | yes | ||
services[].path.json | any | yes | ||
services[].path.value | string | yes | ||
services[].priority | integer | no | 0 | |
services[].protocol | string | yes | OpenaiChatCompletions, OpenaiResponses, AnthropicMessages, GeminiGenerateContent | |
services[].request.additional_fields[].json | any | yes | ||
services[].request.additional_fields[].value | string | yes | ||
services[].request.additional_headers[].json | any | yes | ||
services[].request.additional_headers[].value | string | yes | ||
services[].request.body_template | null|string | no | null | |
services[].request.delay | integer|null | no | ||
services[].response.reasoning_fields.content | null|string | no | ||
services[].response.reasoning_fields.encrypted_content | null|string | no | ||
services[].response.reasoning_fields.signature | null|string | no | ||
services[].response.reasoning_fields.summary | null|string | no | ||
services[].response.selector | null|string | no | null | |
version | string | yes |