
Continue SDK 密钥同步模型解析SyncSecretsRequest 字段说明与 Python 实战指南【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continueSyncSecretsRequest是 Continue Hub IDE API 中用于按完全限定密钥名Fully Qualified Secret NamesFQSN批量解析并同步用户密钥的请求模型。本文以 SyncSecretsRequest.md 为骨架结合 openapi.yaml 中/ide/sync-secrets端点的 OpenAPI 定义、Python 客户端源码与测试用例完整讲解该模型的三个字段、JSON 序列化规则以及从构造请求到调用sync_secrets接口的端到端实战流程。读完本文你将能独立使用 Continue Python SDK 构造并发送密钥同步请求、解析返回结果并理解其底层调用链。一、模型定位它解决什么问题SyncSecretsRequest是 POST/ide/sync-secrets接口的请求体模型。该接口在 OpenAPI 规范packages/continue-sdk/openapi.yaml中的定义为Resolves and synchronizes secrets for the authenticated user based on the provided Fully Qualified Secret Names (FQSNs).即基于调用方提供的完全限定密钥名FQSN数组为已认证用户解析并同步对应的密钥。这类接口通常服务于 Continue 的 IDE 扩展VS Code、JetBrains在 Hub 侧解析组织密钥的场景——调用方不必在本地保存明文密钥只需携带密钥的完全限定名称由服务端解析后返回结果。从源码注释default_api.py也可以看到该模型的用途它是请求体中唯一必传的参数承载了要解析的 FQSN 列表以及可选的组织作用域限定条件。二、属性详解原文档给出了模型字段的完整定义下表在保留原表全部信息的基础上补充了从 Python 源码sync_secrets_request.py与 OpenAPI 规范中确认的细节名称类型说明必填/可选fqsnsList[object]要解析的完全限定密钥名FQSN数组必填org_scope_idstr用于限定密钥解析范围的组织 ID可选org_scope_slugstr用于限定密钥解析范围的组织 slug可选三个字段的关键要点如下1. fqsns必填表示Fully Qualified Secret Names即完全限定密钥名的数组是本次请求的核心载荷。OpenAPI 规范openapi.yaml将其定义为type: array, items: object且位于required列表中与模型源码中无默认值、必填的声明一致。Python 模型实现将其具体化为List[Dict[str, Any]]sync_secrets_request.py即每个 FQSN 元素在 JSON 中是一个对象object而非纯字符串。这也解释了模型文档中为何将其类型标注为List[object]。2. org_scope_id / org_scope_slug均可选二者互为补充都用于限定密钥解析的组织作用域可按需二选一或都不传。OpenAPI 规范中二者声明为nullable: truePython 模型中二者均为Optional[StrictStr]默认值为Nonesync_secrets_request.py。在未指定组织作用域的情况下服务端会基于当前认证用户解析密钥指定后则在该组织范围内解析。3. 请求体的 JSON 形态综合上述定义一次完整的SyncSecretsRequest请求体 JSON 形如{ fqsns: [ { orgId: org_xxx, secretName: ANTHROPIC_API_KEY } ], orgScopeId: org_xxx, orgScopeSlug: null }注意fqsns 数组元素的具体内部结构键名由服务端约定OpenAPI 规范仅规定其为 object 类型未在公共规范中固化内部键。实际使用时请以 Hub 服务端的 FQSN 约定为准。三、字段命名与 JSON 别名映射SyncSecretsRequest的 Python 实现采用了snake_case 属性名 camelCase JSON 别名的映射方式这一点在构建 JSON 时极易踩坑务必留意Python 属性名JSON 字段名alias说明fqsnsfqsns同名无差异org_scope_idorgScopeId序列化时输出orgScopeIdorg_scope_slugorgScopeSlug序列化时输出orgScopeSlug这一映射由Field(..., aliasorgScopeId)/Field(..., aliasorgScopeSlug)定义sync_secrets_request.py并体现在__properties [fqsns, orgScopeId, orgScopeSlug]中。模型所有序列化方法to_str、to_json、to_dict均以 alias 为输出基准例如to_str()内部调用model_dump(by_aliasTrue)。同时model_config开启了populate_by_nameTrue与validate_assignmentTruesync_secrets_request.py意味着populate_by_nameTrue既可以用属性名org_scope_id也可以用别名orgScopeId作为关键字构造实例validate_assignmentTrue对实例字段的后续赋值也会触发类型校验to_dict() 的 null 处理仅当可选字段在初始化时被显式置为None时才会输出orgScopeId: null/orgScopeSlug: null否则直接省略sync_secrets_request.py。四、Python 构造与序列化示例原文档给出了模型的基本用法此处完整继承并补充构造实例、实际 JSON 输入输出的完整示例from openapi_client.models.sync_secrets_request import SyncSecretsRequest # 方式一从 JSON 字符串创建实例 json_str {fqsns: [{orgId: org_xxx, secretName: OPENAI_API_KEY}], orgScopeId: org_xxx} sync_secrets_request_instance SyncSecretsRequest.from_json(json_str) # 方式二直接按属性名构造populate_by_name 生效 sync_secrets_request_instance SyncSecretsRequest( fqsns[{orgId: org_xxx, secretName: OPENAI_API_KEY}], org_scope_idorg_xxx, ) # 序列化为 JSON 字符串输出使用 camelCase 别名如 orgScopeId print(SyncSecretsRequest.to_json()) # 转换为 dict sync_secrets_request_dict sync_secrets_request_instance.to_dict() print(sync_secrets_request_dict) # 从 dict 反向创建实例 sync_secrets_request_from_dict SyncSecretsRequest.from_dict(sync_secrets_request_dict)原文档中的json {}仅为 OpenAPI Generator 模板占位符对应TODO update the JSON string below实际使用时请填入上例所示包含fqsns的真实 JSON。值得强调的是from_dict对非 dict 输入如直接传入模型实例会退化为model_validate(obj)sync_secrets_request.py兼容性较好。五、底层调用链POST /ide/sync-secretsSyncSecretsRequest最终会作为请求体传入DefaultApi.sync_secrets()。整个调用链在源码中非常清晰default_api.pySyncSecretsRequestpydantic 模型 └─ DefaultApi.sync_secrets(sync_secrets_request) └─ _sync_secrets_serialize(...) # 序列化参数、组装请求 └─ api_client.param_serialize( methodPOST, resource_path/ide/sync-secrets, bodysync_secrets_request, auth_settings[apiKeyAuth], ... )关键实现细节HTTP 方法与路径POST /ide/sync-secretsdefault_api.py认证方式apiKeyAuthBearer Token服务端默认 host 为https://api.continue.dev见 DefaultApi.mdContent-Type / Accept均协商为application/jsondefault_api.py返回类型List[Optional[object]]即已解析的密钥结果数组未找到时为 null/undefinedopenapi.yaml错误响应404 User not found用户不存在openapi.yaml超时控制_request_timeout可传单个总超时秒数或(connection, read)元组default_api.py。除sync_secrets外SDK 还提供sync_secrets_with_http_info返回完整ApiResponse含状态码/头信息与sync_secrets_without_preload_content返回原始RESTResponseType两个变体供不同场景选用。六、端到端实战发送一次密钥同步请求综合 DefaultApi.md 的接口示例与本模型的构造方式完整调用代码如下import os import openapi_client from openapi_client.models.sync_secrets_request import SyncSecretsRequest from openapi_client.rest import ApiException from pprint import pprint # 1. 配置 host可选默认 https://api.continue.dev configuration openapi_client.Configuration( hosthttps://api.continue.dev ) # 2. 配置 Bearer 认证apiKeyAuth configuration openapi_client.Configuration( access_tokenos.environ[BEARER_TOKEN] ) # 3. 构造请求体fqsns 必填org 作用域可选 sync_secrets_request SyncSecretsRequest( fqsns[ {orgId: org_xxx, secretName: OPENAI_API_KEY}, {orgId: org_xxx, secretName: ANTHROPIC_API_KEY}, ], org_scope_idorg_xxx, # 可选 # org_scope_slugmy-org, # 与 org_scope_id 二选一可选 ) # 4. 发起请求并打印结果 with openapi_client.ApiClient(configuration) as api_client: api_instance openapi_client.DefaultApi(api_client) try: api_response api_instance.sync_secrets(sync_secrets_request) print(The response of DefaultApi-sync_secrets:\n) pprint(api_response) except ApiException as e: print(Exception when calling DefaultApi-sync_secrets: %s\n % e)运行前提环境中需设置BEARER_TOKEN环境变量或等价方式提供 Hub API Key并已通过 packages/continue-sdk/python/README.md 中描述的安装方式安装openapi_client包。七、测试与验证仓库为该模型提供了配套单元测试 test_sync_secrets_request.py其中make_instance方法给出了构造测试实例的两种形态仅必填参数include_optionalFalse只传fqsns含全部可选参数include_optionalTruefqsnsorg_scope_idorg_scope_slug。该测试与模型文档、OpenAPI 规范三方印证了字段的必填/可选划分。若你在本地修改或复刻该模型可用以下命令运行测试验证cd packages/continue-sdk/python/api python -m unittest test.test_sync_secrets_request另外TypeScript 侧同样生成了对应的 SyncSecretsRequest.ts跨语言 SDK 的字段定义保持一致便于前后端联调时对照。八、相关资源模型文档SyncSecretsRequest.md接口文档DefaultApi.mdPython 模型实现sync_secrets_request.pyPython API 客户端default_api.py单元测试test_sync_secrets_request.pyOpenAPI 规范端点原始定义openapi.yamlSDK 总览packages/continue-sdk/python/README.md模型列表与 API 端点索引packages/continue-sdk/python/api/README.md【免费下载链接】continueopen-source coding agent项目地址: https://gitcode.com/GitHub_Trending/co/continue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考