保存目录数据源配置接口

在指定 sourceId 下创建或替换通讯录数据源配置,包含连接参数、字段映射、同步范围和计划。创建时 config_revision 为 0;更新时填写最新修订号,且不能改变 source_type。修改连接参数时,非 SCIM 数据源会先进行连接检查。

所需权限

所需权限资源Scope资源服务
用户同步配置管理(管理)directory-sync-configadmin.v1.directory-sync-config.manageqwenwork-biz-service

PUT /api/openapi/v1/directory-sync/sources/{sourceId}

认证与请求头

使用应用 API Key 调用。当前接口校验上方独立 Scope;读取、管理与执行权限互不包含。

名称位置类型必填说明示例
Authorizationheaderstring应用 API Key,使用 Bearer 方式传递。Bearer qwk_\\*
X-Request-Idheaderstring可选的调用追踪标识;未传入时由服务端生成。req-20260831-001

请求参数

名称位置类型必填说明示例
sourceIdpathstring · uuid必填数据源的稳定 UUID。创建时由调用方指定,更新时使用已有数据源的标识。"<uuid>"
Idempotency-Keyheaderstring必填本次写操作的幂等键。同一操作重试时复用相同键和请求内容,避免重复处理。"<string>"
config_revisionbodyinteger · int64创建新数据源时为 0;更新已有数据源时填写最新读取的 config_revision。 最小值:1。1
credentialsbodyOpenapifacadeDirectorySourceCredentials连接来源系统的应用凭据或目录密码;仅接受写入,不在响应中返回。{"agent_id":"<string>","app_id":"<string>","app_secret":"<string>","bind_dn":"<string>","bind_password":"<string>","client_id":"<string>","client_secret":"<string>","corp_id":"<string>","secret":"<string>","tenant_id":"<string>"}
credentials.agent_idbodystring企业微信自建应用的 Agent ID。 最多字符数:512。"<string>"
credentials.app_idbodystring来源系统提供的应用标识。 最多字符数:512。"<string>"
credentials.app_secretbodystring与 App ID 对应的应用密钥。 最多字符数:4096。"<string>"
credentials.bind_dnbodystring用于绑定 LDAP 目录的服务账号 DN。 最多字符数:2048。"<string>"
credentials.bind_passwordbodystringLDAP 绑定账号的密码。 最多字符数:4096。"<string>"
credentials.client_idbodystring来源系统应用的客户端标识。 最多字符数:512。"<string>"
credentials.client_secretbodystring与 Client ID 对应的客户端密钥。 最多字符数:4096。"<string>"
credentials.corp_idbodystring企业微信的企业标识。 最多字符数:512。"<string>"
credentials.secretbodystring企业微信应用的 Secret。 最多字符数:4096。"<string>"
credentials.tenant_idbodystringMicrosoft Entra ID 的租户标识。 最多字符数:512。"<string>"
default_seatbodyboolean必填是否默认向新同步的用户分配席位。false
deletion_alert_emailbodystring接收删除告警的邮箱地址。 最多字符数:320。"<string>"
deletion_alert_enabledbodyboolean必填是否对同步中的删除情况启用告警。false
deletion_alert_thresholdbodyinteger · int64必填触发删除告警的人数阈值。 最小值:0。0
deletion_policybodystring必填来源用户被删除或停用时的处理策略。 可选值:delete_user、deactivate_only、deactivate_and_reclaim_seat。"delete_user"
initial_scim_tokenbodystring首次配置 SCIM 接入使用的令牌,只作为输入。 最多字符数:255。"<string>"
namebodystring必填通讯录数据源的名称。 最多字符数:255。"<string>"
schedulebodystring必填同步计划:manual 为手动,daily 为每天,every_6_hours 为每 6 小时。"manual"
schedule_anchor_atbodystring · date-time计算定时同步计划时使用的起始时间。"2026-08-27T10:00:00Z"
settingsbodyOpenapifacadeDirectorySourceSettings必填数据源的连接、字段映射和同步范围配置。{"connection":{"client_name":"<string>","tls_enabled":false,"url":"<string>"},"department_mapping":{"external_id":"<string>","name":"<string>","order":"<string>","parent_external_id":"<string>","status":"<string>"},"mapping":{"account":"<string>","department_external_id":"<string>","email":"<string>","employee_no":"<string>","external_id":"<string>","name":"<string>","phone":"<string>","status":"<string>"},"scope":{"base_dn":"<string>","mode":"all","org_unit_external_ids":["<string>"],"org_unit_filter":"<string>","user_filter":"<string>"}}
settings.connectionbodyOpenapifacadeDirectorySourceConnection必填数据源的服务连接设置。{"client_name":"<string>","tls_enabled":false,"url":"<string>"}
settings.connection.client_namebodystringSCIM 调用方的名称。 最多字符数:255。"<string>"
settings.connection.tls_enabledbodyboolean是否为目录连接启用 TLS 加密。false
settings.connection.urlbodystringLDAP 等来源服务的连接地址。 最多字符数:2048。"<string>"
settings.department_mappingbodyOpenapifacadeDirectorySourceDepartmentMapping必填来源部门属性到千问办公部门字段的映射。{"external_id":"<string>","name":"<string>","order":"<string>","parent_external_id":"<string>","status":"<string>"}
settings.department_mapping.external_idbodystring必填来源数据中用于映射外部唯一标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.namebodystring必填来源数据中用于映射名称的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.orderbodystring来源数据中用于映射排序值的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.parent_external_idbodystring来源数据中用于映射上级部门外部标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.statusbodystring来源数据中用于映射状态的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mappingbodyOpenapifacadeDirectorySourceFieldMapping必填成员属性到千问办公用户字段的映射。{"account":"<string>","department_external_id":"<string>","email":"<string>","employee_no":"<string>","external_id":"<string>","name":"<string>","phone":"<string>","status":"<string>"}
settings.mapping.accountbodystring来源数据中用于映射账号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.department_external_idbodystring来源数据中用于映射所属部门外部标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.emailbodystring来源数据中用于映射邮箱的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.employee_nobodystring来源数据中用于映射工号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.external_idbodystring必填来源数据中用于映射外部唯一标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.namebodystring必填来源数据中用于映射名称的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.phonebodystring来源数据中用于映射手机号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.statusbodystring来源数据中用于映射状态的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.scopebodyOpenapifacadeDirectorySourceScope必填需要从来源目录读取的组织或搜索范围。{"base_dn":"<string>","mode":"all","org_unit_external_ids":["<string>"],"org_unit_filter":"<string>","user_filter":"<string>"}
settings.scope.base_dnbodystringLDAP 搜索的根 DN,用于限定读取范围。 最多字符数:2048。"<string>"
settings.scope.modebodystring必填同步范围:all 为全部,departments 为指定部门,base_dn 为 LDAP 搜索根,administrative_units 为管理单元。"all"
settings.scope.org_unit_external_idsbodyarray | null需要同步的来源部门或管理单元标识列表。 最多项数:200。["<string>"]
settings.scope.org_unit_filterbodystring筛选来源部门的目录查询条件。 最多字符数:2048。"<string>"
settings.scope.user_filterbodystring筛选来源用户的目录查询条件。 最多字符数:2048。"<string>"
source_typebodystring必填通讯录来源类型,用于选择钉钉、飞书、企业微信、AD、LDAP、Entra ID 或 SCIM 的接入方式。 可选值:dingtalk、feishu、wecom、windows_ad、openldap、entra_id、scim。"dingtalk"

请求示例

将 <BASE_URL> 替换为企业部署的千问办公 API 服务地址,并填写实际参数。示例中的占位值不能直接用于请求。

curl --request PUT --url '<BASE_URL>/api/openapi/v1/directory-sync/sources/<sourceId>' --header 'Authorization: Bearer <API_KEY>' --header 'Idempotency-Key: <UNIQUE_REQUEST_ID>' --header 'Content-Type: application/json' --data '{  "config_revision": 1,  "credentials": {"agent_id": "<string>","app_id": "<string>","app_secret": "<string>","bind_dn": "<string>","bind_password": "<string>","client_id": "<string>","client_secret": "<string>","corp_id": "<string>","secret": "<string>","tenant_id": "<string>"  },  "default_seat": false,  "deletion_alert_email": "<string>",  "deletion_alert_enabled": false,  "deletion_alert_threshold": 0,  "deletion_policy": "delete_user",  "initial_scim_token": "<string>",  "name": "<string>",  "schedule": "manual",  "schedule_anchor_at": "2026-08-27T10:00:00Z",  "settings": {"connection": {"client_name": "<string>","tls_enabled": false,"url": "<string>"},"department_mapping": {"external_id": "<string>","name": "<string>","order": "<string>","parent_external_id": "<string>","status": "<string>"},"mapping": {"account": "<string>","department_external_id": "<string>","email": "<string>","employee_no": "<string>","external_id": "<string>","name": "<string>","phone": "<string>","status": "<string>"},"scope": {"base_dn": "<string>","mode": "all","org_unit_external_ids": ["<string>"],"org_unit_filter": "<string>","user_filter": "<string>"}  },  "source_type": "dingtalk"}'

响应

200 请求成功,返回当前或更新后的数据。

名称类型必填说明示例
config_revisioninteger · int64数据源配置修订号,用于检查并发修改。0
connection_statusstring数据源连接的当前状态。"<string>"
created_atstring · date-time此记录的创建时间。"2026-08-27T10:00:00Z"
created_by_emailstring创建者的邮箱。"<string>"
created_by_namestring创建者的姓名。"<string>"
credential_configuredboolean是否已为此数据源配置连接凭据。false
default_seatboolean是否默认向新同步的用户分配席位。false
deletion_alert_emailstring接收删除告警的邮箱地址。"<string>"
deletion_alert_enabledboolean是否对同步中的删除情况启用告警。false
deletion_alert_thresholdinteger · int64触发删除告警的人数阈值。0
deletion_policystring来源用户被删除或停用时的处理策略。"<string>"
external_id_fieldstring当前选作外部用户唯一标识的来源字段。"<string>"
external_id_field_lockedboolean外部用户标识字段是否已锁定。false
idstring · uuid此记录的唯一标识,查询、更新或删除对应记录时使用。"<uuid>"
last_activity_atstring · date-time此数据源最近一次活动的时间。"2026-08-27T10:00:00Z"
last_connected_atstring · date-time最近一次成功连接来源系统的时间。"2026-08-27T10:00:00Z"
last_connection_error_codestring最近一次连接失败的错误码。"<string>"
modified_atstring · date-time此记录最后一次修改的时间。"2026-08-27T10:00:00Z"
namestring通讯录数据源的名称。"<string>"
next_run_atstring · date-time下一次计划执行同步的时间。"2026-08-27T10:00:00Z"
schedulestring同步计划:manual 为手动,daily 为每天,every_6_hours 为每 6 小时。"<string>"
schedule_anchor_atstring · date-time计算定时同步计划时使用的起始时间。"2026-08-27T10:00:00Z"
settingsOpenapifacadeDirectorySourceSettings数据源的连接、字段映射和同步范围配置。{"connection":{"client_name":"<string>","tls_enabled":false,"url":"<string>"},"department_mapping":{"external_id":"<string>","name":"<string>","order":"<string>","parent_external_id":"<string>","status":"<string>"},"mapping":{"account":"<string>","department_external_id":"<string>","email":"<string>","employee_no":"<string>","external_id":"<string>","name":"<string>","phone":"<string>","status":"<string>"},"scope":{"base_dn":"<string>","mode":"all","org_unit_external_ids":["<string>"],"org_unit_filter":"<string>","user_filter":"<string>"}}
settings.connectionOpenapifacadeDirectorySourceConnection数据源的服务连接设置。{"client_name":"<string>","tls_enabled":false,"url":"<string>"}
settings.connection.client_namestringSCIM 调用方的名称。 最多字符数:255。"<string>"
settings.connection.tls_enabledboolean是否为目录连接启用 TLS 加密。false
settings.connection.urlstringLDAP 等来源服务的连接地址。 最多字符数:2048。"<string>"
settings.department_mappingOpenapifacadeDirectorySourceDepartmentMapping来源部门属性到千问办公部门字段的映射。{"external_id":"<string>","name":"<string>","order":"<string>","parent_external_id":"<string>","status":"<string>"}
settings.department_mapping.external_idstring来源数据中用于映射外部唯一标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.namestring来源数据中用于映射名称的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.orderstring来源数据中用于映射排序值的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.parent_external_idstring来源数据中用于映射上级部门外部标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.department_mapping.statusstring来源数据中用于映射状态的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mappingOpenapifacadeDirectorySourceFieldMapping成员属性到千问办公用户字段的映射。{"account":"<string>","department_external_id":"<string>","email":"<string>","employee_no":"<string>","external_id":"<string>","name":"<string>","phone":"<string>","status":"<string>"}
settings.mapping.accountstring来源数据中用于映射账号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.department_external_idstring来源数据中用于映射所属部门外部标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.emailstring来源数据中用于映射邮箱的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.employee_nostring来源数据中用于映射工号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.external_idstring来源数据中用于映射外部唯一标识的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.namestring来源数据中用于映射名称的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.phonestring来源数据中用于映射手机号的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.mapping.statusstring来源数据中用于映射状态的属性名称;填写字段名,不是某个成员或部门的实际值。 最多字符数:128。"<string>"
settings.scopeOpenapifacadeDirectorySourceScope需要从来源目录读取的组织或搜索范围。{"base_dn":"<string>","mode":"all","org_unit_external_ids":["<string>"],"org_unit_filter":"<string>","user_filter":"<string>"}
settings.scope.base_dnstringLDAP 搜索的根 DN,用于限定读取范围。 最多字符数:2048。"<string>"
settings.scope.modestring同步范围:all 为全部,departments 为指定部门,base_dn 为 LDAP 搜索根,administrative_units 为管理单元。"all"
settings.scope.org_unit_external_idsarray | null需要同步的来源部门或管理单元标识列表。 最多项数:200。["<string>"]
settings.scope.org_unit_filterstring筛选来源部门的目录查询条件。 最多字符数:2048。"<string>"
settings.scope.user_filterstring筛选来源用户的目录查询条件。 最多字符数:2048。"<string>"
source_typestring通讯录来源类型,用于选择钉钉、飞书、企业微信、AD、LDAP、Entra ID 或 SCIM 的接入方式。"<string>"
statusstring此记录当前所处的状态。"<string>"
updated_by_emailstring最后修改者的邮箱。"<string>"
updated_by_namestring最后修改者的姓名。"<string>"
{
  "config_revision": 0,
  "connection_status": "<string>",
  "created_at": "2026-08-27T10:00:00Z",
  "created_by_email": "<string>",
  "created_by_name": "<string>",
  "credential_configured": false,
  "default_seat": false,
  "deletion_alert_email": "<string>",
  "deletion_alert_enabled": false,
  "deletion_alert_threshold": 0,
  "deletion_policy": "<string>",
  "external_id_field": "<string>",
  "external_id_field_locked": false,
  "id": "<uuid>",
  "last_activity_at": "2026-08-27T10:00:00Z",
  "last_connected_at": "2026-08-27T10:00:00Z",
  "last_connection_error_code": "<string>",
  "modified_at": "2026-08-27T10:00:00Z",
  "name": "<string>",
  "next_run_at": "2026-08-27T10:00:00Z",
  "schedule": "<string>",
  "schedule_anchor_at": "2026-08-27T10:00:00Z",
  "settings": {
    "connection": {
      "client_name": "<string>",
      "tls_enabled": false,
      "url": "<string>"
    },
    "department_mapping": {
      "external_id": "<string>",
      "name": "<string>",
      "order": "<string>",
      "parent_external_id": "<string>",
      "status": "<string>"
    },
    "mapping": {
      "account": "<string>",
      "department_external_id": "<string>",
      "email": "<string>",
      "employee_no": "<string>",
      "external_id": "<string>",
      "name": "<string>",
      "phone": "<string>",
      "status": "<string>"
    },
    "scope": {
      "base_dn": "<string>",
      "mode": "all",
      "org_unit_external_ids": [
        "<string>"
      ],
      "org_unit_filter": "<string>",
      "user_filter": "<string>"
    }
  },
  "source_type": "<string>",
  "status": "<string>",
  "updated_by_email": "<string>",
  "updated_by_name": "<string>"
}

default 请求失败,返回错误码和错误详情。

名称类型必填说明示例
codestring用于程序判断错误原因的稳定业务错误码。"<string>"
detailstring便于阅读的错误说明。"<string>"
detailsOpenapiErrorDetails字段校验失败时的详细信息。{"field":"<string>","reason":"<string>","suggestion":"<string>"}
details.fieldstring未通过校验的请求字段。"<string>"
details.reasonstring稳定的校验失败原因,用于判断字段为何不合法。"<string>"
details.suggestionstring建议采用的规范化字段值。"<string>"
errorstring稳定的 HTTP 错误类型。"<string>"
{
  "code": "<string>",
  "detail": "<string>",
  "details": {
    "field": "<string>",
    "reason": "<string>",
    "suggestion": "<string>"
  },
  "error": "<string>"
}