用户目录(UD)

最后更新:2022-08-23

本文档主要覆盖一个SP应用如何通过SCIM协议与IDP4进行用户目录进行数据同步。本文档主要针对SP需要拉取IDaaS平台数据(此方法不建议,IDaaS不可控)、SP需要推送组织机构、账户、组数据到IDaaS、IDaaS需要推送组织机构、账户、组数据到SP的三类典型应用场景,方便SP与IDaaS实现数据交互闭环。

当前SP推至IDaaS和IDaaS推至SP场景我们都提供覆盖场景广的连接器Connector实现应用和IDaaS数据打通,需要IDaaS与SP相关同步数据都通过Connector连接器实现。

1. 术语定义

参考:IDP中产品术语介绍

2. 场景描述:

IDaaS平台支持 SCIM 协议,用户目录同步机制支持三种方式:

  1. 推的方式:IDaaS平台通过API将IDaaS中的用户目录信息同步到应用服务器(即SP Service Provider),需要业务系统提供API,如下图中第1步所示;

  2. 送的方式:IDaaS系统提供API,应用服务器(即SP Service Provider)调用IDaaS平台API接口将业务用户目录同步到IDaaS中,如下图中第2步所示;

  3. 拉的方式:IDaaS系统提供API,应用服务器(即SP Service Provider)调用IDaaS平台API接口拉取IDaaS平台的用户目录数据,如下图中的第3步所示。

image.png 建议使用第一种方式;
优势:在保证安全的前提下,可以保证账户数据的一致性,实时性;
如果各业务系统(SP)采用第二种方式,IDaaS平台可提供相应技术文档及API接口;
如果各业务系统(SP)采用第三种方式,IDaaS平台可提供相应技术文档及API接口。

3. IDaaS推至SP

3.1. 集成方式

通过统一连接器Connector实现,如何创建任务见IDP同步数据到SP场景

3.1.1. 同步目标

选择SCIM类型,选择目标子类型为IDP4标准SCIM
目标管理配置如图:
image.png

  • 来源名称:随意填写,注意唯一性即可;

  • 适用环境:默认是开发环境。需要注意的是来源和目标的环境必须是一样的,否则不会执行同步任务

  • 来源主类型:SCIM类型

  • 来源子类型:选择IDP4标准SCIM

  • 组织机构同步地址: SP系统组织机构API地址

  • 账户同步地址: SP系统账户API地址,

  • 组同步地址: SP系统组API地址,

注意,组织机构同步地址,账户同步地址,组同步地址三者必须有一个不能为空

  • 协议类型: sp系统API接口认证类型(BASIC,OAUTH2)

    如果API接口没有认证措施,可以默认BASIC,账密随意填写即可

  • 如选择basic,则需要填写basic协议的账户和密码,如图

image.png

  • 如选择oauth2,则需要填写oauth的url,client_id,client_secret,如图:

image.png

3.2. API定义

3.2.1. 组织机构

url地址如: developer/scim/organization

3.2.1.1. 添加组织机构

method: POST

content-Type: application/json

参数名

参数值

备注

organization

{organization}

组织机构的名称

parentUuid

{parentUuid}

所属父级组织机构的uuid或外部ID

rootNode

{rootNode}

是否是根节点

organizationUuid

{organizationUuid}

本组织机构的uuid或外部ID,唯一,主键

manager

{manager}

组织机构的管理者,value是管理者账户的外部ID,displayName是用户名,管理者可为空

type

{type}

SELF_OU(自建组织机构)或DEPARTMENT(“自建部门”)

levelNumber

{levelNumber}

部门排序号

extendFields

{extendFields}

扩展字典,attributes为系统定义扩展字段

Request Body示例:

{
  "organization": "test1",
  "parentUuid": "main",
  "organizationUuid": "0801601",
  "manager": [],
  "extendFields": {
    "testAttr": "123"
  },
  "levelNumber": "1",
  "type": "EXTERNAL_OU",
  "enabled": true,
  "rootNode": false
}

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

3.2.1.2. 修改组织机构

method: PUT

content-Type: application/json

参数名

参数值

备注

organization

{organization}

组织机构的名称

parentUuid

{parentUuid}

所属父级组织机构的uuid或外部ID

rootNode

{rootNode}

是否是根节点

organizationUuid

{organizationUuid}

本组织机构的uuid或外部ID,主键

manager

{manager}

组织机构的管理者,value是管理者账户的外部ID,displayName是用户名,管理者可为空

type

{type}

SELF_OU(自建组织机构)或DEPARTMENT(“自建部门”)

levelNumber

{levelNumber}

部门排序号

extendFields

{extendFields}

扩展字典,attributes为系统定义扩展字段

Request Body示例:

{
  "organization": "test1",
  "parentUuid": "main",
  "organizationUuid": "0801601",
  "manager": [],
  "extendFields": {
    "testAttr": "123"
  },
  "levelNumber": "1",
  "type": "EXTERNAL_OU",
  "enabled": true,
  "rootNode": false
}

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

3.2.1.3. 删除组织机构

method: DELETE

content-Type: application/json

参数名

参数值

备注

id

{id}

本组织机构的外部ID,主键,一般对应应用系统的唯一标识

Request Body示例:

/developer/scim/organization?id=4544581305390943066

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

3.2.2. 账户

url地址如: developer/scim/account

3.2.2.1. 添加账户

method: POST

content-Type: application/json

参数名

参数值

备注

userName

{userName}

账户名称,唯一

id

{id}

用户ID,与外部ID(externalId)值一样

displayName

{displayName}

用户的显示名称,唯一

emails

{emails}

邮箱

phoneNumbers

{phoneNumbers}

手机号, 只能一个且唯一

externalId

{externalId}

外部ID,唯一,可作主键

userBelongs

{userBelongs}

用户所属的组织机构列表 ,人员组织机构属性需要放到这下面

├─externalId

{externalId}

组织机构的外部id

├─mainOu

{mainOu}

是否是主组织机构

├─displayOrder

{displayOrder}

显示顺序

├─extendFields

{extendFields}

人员组织属性参数,Map<key,value>结构,key为人员组织属性的字段值,value为需要赋予的具体值

locked

boolean

是否锁定账户,ture锁定账户,false启用账户。锁定账户后将不能登录应用系统

enabled

boolean

是否禁用账户,ture禁用账户,false启用账户。禁用账户后将不能登录应用系统

extendFields

{extendFields}

扩展字段,attributes为系统定义扩展字段

Request Body示例:

{
  "emails": [
    {
      "value": "test@test.com",
      "primary": true
    }
  ],
  "userBelongs":[{
    "externalId":"4860408743312212887",
    "mainOu":true,
    "extendFields":{
      "connector":"1"
    },
    "displayOrder":1
  }],
  "displayName": "test1",
  "extendFields": {
    "testAttr": "1"
  },
  "externalId": "536607420296949165",
  "id": "536607420296949165",
  "locked": true,
  "userName": "test1",
  "enabled": true,
  "phoneNumbers": [
    {
      "value": "180xxxxxxxx"
    }
  ]
}

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

3.2.2.2. 修改账户

method: PUT

content-Type: application/json

参数名

参数值

备注

userName

{userName}

账户名称,唯一

id

{id}

用户ID,与外部ID(externalId)值一样

displayName

{displayName}

用户的显示名称,唯一

emails

{emails}

邮箱

phoneNumbers

{phoneNumbers}

手机号, 只能一个且唯一

externalId

{externalId}

外部ID,唯一,可作主键

belongs

{belongs}

为账户指定组织单位

organzationsOrderList

{organzationsOrderList}

账户在所属机构下的排序号

locked

boolean

是否锁定账户,ture锁定账户,false启用账户。锁定账户后将不能登录应用系统

enabled

boolean

是否禁用账户,ture启用账户,false禁用账户。禁用账户后将不能登录应用系统

extendFields

{extendFields}

扩展字段,attributes为系统定义扩展字段

Request Body示例:

{
  "emails": [
    {
      "value": "test@test.com",
      "primary": true
    }
  ],
  "belongs": [
    {
      "belongOuUuid": "testUuid"
    }
  ],
  "displayName": "test1",
  "extendFields": {
    "testAttr": "1"
  },
  "externalId": "536607420296949165",
  "id": "536607420296949165",
  "locked": true,
  "userName": "test1",
  "enabled": true,
  "phoneNumbers": [
    {
      "value": "180xxxxxxxx"
    }
  ]
}

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

3.2.2.3. 删除账户

method: DELETE

content-Type: application/json

参数名

参数值

备注

id

{id}

本账户的外部ID,主键,一般对应应用系统的唯一标识

Request Body示例:

/developer/scim/account?id=4544581305390943066

SP需要返回 Response Body示例:

{
  "code": 200,
  "message": ""
}

参数说明:

字段名

错误码

备注

code,int类型

200

SP返回错误码200,即视为成功

message,错误信息,String类型

400

参数异常

4. SP推至IDaaS

4.1. 集成方式

针对不同SP推送至IDaaS的方式,我们提供不同的接入指引,只需要按需选择相关接入指引即可实现不同SP同步数据到IDaaS的流程,目前我们支持两种方式,一种采用调用API的方式同步数据到IDaaS,也可以通过统一连接器Connector实现,见数据同步方案

推荐使用Connector 的SCIM 接口进行数据同步,替换掉直接使用IDaaS SCIM接口进行数据同步

4.2. API集成步骤

4.2.1. 创建应用(如果有则不需要创建)

该步骤主要目的帮助开发者在IDaaS平台上如何创建一个应用,以及获取AK,SK,用于识别是哪个应用向IDaaS平台同步数据。这里建议不要混用其他应用。

image.png

4.2.2. 设置数据范围和API接口范围

在上图中红框标记部分设置该应用允许访问的数据范围和接口范围

4.2.3. 获取access_token

该步骤主要帮助开发者获取调用机构或人员API时所需的token,该token是对API接口做到保护作用,必须使用正确的AK与SK才能获取到token。

4.2.4. 调用接口

该步骤主要帮助开发者开发对应的机构或人员API接口,通过下面的文档介绍调用。

4.3. API文档

4.3.1. 应用获取token

调用API接口时,需要先获取access_token,调用接口时传入access_token有两种方式:

  • URL值后:URL?access_token={access_token}

  • Header里面:Authorization Bearer {access_token}(注意 bearer与access_token之间的空格)-推荐

client_id和client_secret即为创建应用时候查看到的API Key和APi Secret

Path:/oauth/token
Method: POST
请求方法: POST
Headers:

参数名称

参数值

是否必须

示例

备注

Content-Type

application/x-www-form-urlencoded

Body:

参数名称

参数类型

是否必须

示例

备注

client_id

text

client_id={API Key}

应用详情 API Key值

client_secret

text

client_secret={API Secret}

应用详情 API Secret值

scope

text

scope=read

固定值

grant_type

text

grant_type=client_credentials

固定值

返回数据

名称

类型

是否必须

默认值

备注

其他信息

access_token

string

必须

access_token凭证

token_type

string

必须

凭证类型

固定值 bearer

expires_in

number

必须

有效期

单位为秒

scope

string

必须

授权范围

固定值 read

jti

string

非必须

access_token为jwt格式时,才有此值。

2f5a91a9-e939-401e-8a0b-db0b5fdee42a

请求地址示例: {{idaas_host}}/oauth/token?client_id={{client_id}}&client_secret={{client_secret}}&scope=read&grant_type=client_credentials

返回示例 :

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsiYXBwX2FwaV9yZXNvdXJjZSIsImVudGVycHJpc2VfbW9iaWxlX3Jlc291cmNlIiwiYmZmX2FwaV9yZXNvdXJjZSJdLCJzY29wZSI6WyJyZWFkIl0sImV4cCI6MTYyMDQ4NDI3MCwiYXV0aG9yaXRpZXMiOlsiUk9MRV9BUFBMSUNBVElPTl9BUEkiLCJST0xFX0VORF9VU0VSIl0sImp0aSI6ImQ0N2U3M2RlLTFiMTctNDgxZS05Yzg4LTNkODdlZGE1ODllZiIsImNsaWVudF9pZCI6IjBmZmI3MWI5MDQwY2IxZWM5OGZlZTQ1ZTllYWVkODQxWjIwQ2t0bmRremQifQ.UxPJWUOA9YWvKHRZ8VWgu1qwKCYKVBYfQfBMpJyvIQk",
  "token_type": "bearer",
  "expires_in": 43199,
  "scope": "read",
  "jti": "d47e73de-1b17-481e-9c88-3d87eda589ef"
}

image.png

4.3.2. 调用API

4.3.2.1. 组织机构

4.3.2.1.1. 推送组织机构

Path:/api/bff/v1.2/developer/scim/organization/create
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

应用获取到的access_token

Body

名称

类型

是否必须

备注

其他信息

organizationName

string

必须

机构名称

externalId

string

非必须

外部id,组织机构的唯一id,可作主键

如果不填,IDaaS将随机生成一个唯一值,并在结果中返回

parentExternalId

string

必须

所属的父级组织机构的唯一id

通过在系统”机构及组”中在组织机构属性中查看参数“外部ID”即可

type

string

非必须

组织机构类型

自建组织单位:SELF_OU,自建部门:DEPARTMENT,外部同步组织单位:EXTERNAL_OU,默认为DEPARTMENT

sortNumber

int

非必须

排序号

enabled

boolean

非必须

是否启用

true:启用,false:禁用,默认为true。

description

string

非必须

描述信息

不超过255个字符。

effectiveTime

datetime

非必须

生效时间

格式:2022-09-04 13:00:00
必须大于当前时间

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义,如果自定义扩展字段是必填选项,则该属性必填

├─ test1

string

非必须

manager

object[]

非必须

主管列表

├─ value

string

非必须

主管账户外部ID

返回数据

名称

类型

是否必须

备注

其他信息

success

boolean

必须

是否成功

code

string

必须

成功为200

message

null

必须

错误信息

success为false取值提示给用户

requestId

string

必须

无须关注

data

object

非必须

├─ externalId

string

非必须

返回的外部id,可作主键

├─ id

string

非必须

uuid

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:externalId:123456重复

请求参数错误

400

InvalidParameter.ExternalId.Exist

例如:外部ID重复,externalId:123456

外部id重复

400

InvalidParameter.Name.Exist

例如:OU名称重复,OrganizationName:研发部

组织机构的名称已存在

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/organization/create
请求示例:

{
  "organizationName": "成都研发部",
  "externalId": "12345609877332",
  "parentExternalId": "2961201661376138058",
  "type": "DEPARTMENT",
  "sortNumber": "3",
  "enabled": true,
  "description": "负责产品研发",
  "extendFields": {
    "test1": "123"
  },
  "manager": [
    {
      "value": "7962078547983645191"
    },
    {
      "value": "7515197174099641957"
    }
  ]
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620441890839$1be504af-ddc2-c5e3-ef2e-35c9682890af",
  "data": {
    "externalId": "12345609877332",
    "id": "48dac1a9e83bc7fb3436283cd9fd00e1dOxlgdGxN15"
  }
}

image.png

4.3.2.1.2. 修改组织机构

Path:/api/bff/v1.2/developer/scim/organization/update
Method: PUT
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

应用获取到的access_token

Body

名称

类型

是否必须

备注

其他信息

externalId

string

必须

外部id,组织机构的唯一id,可作主键

organizationName

string

非必须

机构名称

parentExternalId

string

非必须

所属的父级组织机构的唯一id

通过在系统”机构及组”中在组织机构属性中查看参数“外部ID”即可

type

string

非必须

组织机构类型

自建组织单位:SELF_OU,自建部门:DEPARTMENT,外部同步组织单位:EXTERNAL_OU,默认为DEPARTMENT

sortNumber

int

非必须

排序号

enabled

boolean

非必须

是否启用

true:启用,false:禁用,默认为true

description

string

非必须

描述信息

不超过255个字符

effectiveTime

datetime

非必须

生效时间

格式:2022-09-04 13:00:00
必须大于当前时间

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义

├─ test1

string

非必须

manager

object[]

非必须

主管列表

├─ value

string

非必须

主管账户外部ID

  • 提示:不准备修改的字段可不传。

返回数据

名称

类型

是否必须

备注

其他信息

success

boolean

必须

是否成功

code

string

必须

成功为200

message

null

必须

错误信息

success为false取值提示给用户

requestId

string

必须

无须关注

data

object

非必须

├─ externalId

string

非必须

返回的外部id,主键

├─ id

string

非必须

uuid

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:描述信息不能超过500个字符

请求参数错误

400

EntityNotFound

例如:组织机构不存在

未查找到要更新的OU

400

InvalidParameter.Name.Exist

例如:OU名称重复,OrganizationName:研发部

组织机构的名称已存在

400

OperationDenied

例如:OU不能移动到自己子级下

不被允许的操作

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/organization/update
请求示例 :

{
  "description": "",
  "organizationName": "成都研发部",
  "externalId": "12345609877332",
  "parentExternalId": "2961201661376138058",
  "enabled": false,
  "type": null,
  "sortNumber": "5",
  "extendFields": {
    "test1": "1235123"
  }
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620441921304$7a08f7ce-9120-1a2c-aa20-a835abbcb2d8",
  "data": {
    "externalId": "12345609877332",
    "id": "48dac1a9e83bc7fb3436283cd9fd00e1dOxlgdGxN15"
  }
}

image.png

4.3.2.1.3. 删除组织机构

Path:/api/bff/v1.2/developer/scim/organization/delete
Method: DELETE
Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

应用获取到的access_token

Query

参数名称

是否必须

示例

备注

externalId

外部id,组织机构的唯一id,可作主键

返回数据

名称

类型

是否必须

备注

其他信息

success

boolean

必须

是否成功

code

string

必须

成功为200

message

null

必须

错误信息

success为false取值提示给用户

requestId

string

必须

无须关注

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

400

EntityNotFound

例如:组织机构不存在

未查找到要更新的OU

400

OperationDenied.OUContainsChildren

例如:该OU存在关联关系,不能删除

未查找到要更新的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/organization/delete?externalId={{externalId}}
返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620441956051$13d70a5d-ef59-c447-9a30-12aeac3c5c2c"
}

image.png

4.3.2.2. 账户

4.3.2.2.1. 推送账户

Path:/api/bff/v1.2/developer/scim/account/create
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

非必须

外部id,账户的唯一id,可作主键

如果不填,IDaaS将随机生成一个唯一值,并在结果中返回

userName

string

必须

账户名称

登录名称

displayName

string

必须

显示名称

password

string

非必须

IDaaS平台主账户密码

若为空,则将使用系统随机密码。

firstLogin

boolean

非必须

是否首次登录

打开密码策略的强制改密的前提下,true 表示触发首次登录强制修改密码

email

string

非必须

邮箱

唯一

phoneNumber

string

非必须

手机号

唯一

phoneRegion

string

非必须

手机号区号

enabled

boolean

非必须

是否启用

true:启用,false:禁用,默认为true。

locked

boolean

非必须

是否锁定

true:已锁定,false:未锁定,默认为false。

description

string

非必须

描述信息

不超过255个字符

expireTime

datetime

非必须

过期时间

格式:2022-09-04 13:00:00
必须大于当前时间

effectiveTime

datetime

非必须

生效时间

格式:2022-09-04 13:00:00
必须大于当前时间

avatarUuid

string

非必须

头像唯一标识

通过“上传账户头像”接口上传头像图片后得到

userBelongs

string []

必须

所属组织机构的集合

├─externalId

String

必须

​组织机构的唯一id

├─mainOu

boolean

非必须

是否主组织

true:是,false:不是, 都填写true/都填写false/都不填写,则默认第一个为主组织,填写多个true,则默认第一个填写true的为主组织

├─extendFields

object

非必须

自定义”人员-组织属性”数据字典

在IDaaS数据字典中定义,如果自定义扩展字段是必填选项,则该属性必填

├─displayOrder

long

非必须

排序号

从0开始

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义,如果自定义扩展字段是必填选项,则该属性必填

├─ test

string

非必须

├─ test1

string

非必须

applicationUuid

string

非必须

应用uuid

选填,应用的uuid可在应用列表-具体应用详情里查看,若传递则代表需要推送应用子账户,子账户信息参考applicationUsers

applicationUsers

object[]

非必须

应用子账户列表

├─ username

string

必须

子账户名

├─ test

string

非必须

子账户扩展字段

​在IDaaS数据字典中定义,如果自定义扩展字段是必填选项,则该属性必填

返回数据

名称

类型

是否必须

备注

其他信息

success

boolean

必须

是否成功

code

string

必须

成功为200

message

null

必须

错误信息

success为false取值提示给用户

requestId

string

必须

无须关注

data

object

非必须

├─ externalId

string

非必须

返回的外部id,可作主键

├─ id

string

非必须

uuid

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:账户名称不能为空

请求参数错误

400

InvalidParameter.ExternalId.Exist

例如:externalId外部ID重复

外部id重复

400

InvalidParameter.Name.Exist

例如:账户名(username)已经存在

账户名称已经存在

400

InvalidParameter.Name.Exist

例如:账户名(username)已经存在

账户名称已经存在

400

InvalidParameter.DisplayName.Exist

例如:显示名已经存在

显示名已经存在

400

InvalidParameter.Email.Exist

例如:邮箱(email)已被其他账户绑定

邮箱(email)已被其他账户绑定

400

InvalidParameter.PhoneNumber.Exist

例如:手机号(phoneNumber)已被其他账户绑定

手机号(phoneNumber)已被其他账户绑定

400

InvalidParameter.PhoneEmail.AllEmpty

例如:手机号(phoneNumber)和邮箱(email)必须选填一个

手机号(phoneNumber)和邮箱(email)不能全为空

400

EntityNotFound

例如:所属组织机构(belongs):123456不存在

未查找到externalId对应的OU

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/create
请求示例 :

{
  "externalId": "12345609877332",
  "userName": "developer2",
  "displayName": "开发人员3",
  "password": "Jdev@12345",
  "email": "test2@test.com",
  "phoneNumber": "",
  "description": "",
  "phoneRegion": "",
  "expireTime": null,
  "userBelongs": [
    {
      "externalId": "123456",
      "displayOrder": 3243243,
      "mainOu": true,
      "extendFields": {
        "attr": "123",
        "position": "pdsa"
      }
    }
  ],
  "extendFields": {
    "test": "123456",
    "test1": "woman"
  },
  "applicationUuid": "2029afb7cfa9dcbf01f4c16df2632f79SBhU2RbjQb9",
  "applicationUsers": [
    {
      "username": "developer2",
      "adCode": "ad111",
      "ldapCode": "ldap111"
    },
    {
      "username": "developer22",
      "adCode": "ad222",
      "ldapCode": "ldap222"
    }
  ]
}

成功示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620442045576$7b6c6eb2-f581-1cd3-61df-e25fbd81e432",
  "data": {
    "externalId": "12345609877332",
    "id": "102c03563bc868f5055438828f1b30063g5xe8NBpKk"
  }
}

image.png

4.3.2.2.2. 修改账户

Path:/api/bff/v1.2/developer/scim/account/update
Method: PUT
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

必须

外部id,账户的唯一id,可作主键

账户外部ID(和账户名称必填一个)

userName

string

必须

账户名称

账户名称(和外部ID必填一个)

displayName

string

非必须

显示名称

password

string

非必须

IDaaS平台主账户密码

email

string

非必须

邮箱

唯一

phoneNumber

string

非必须

手机号

唯一

enabled

boolean

非必须

​是否启用

​true:启用,false:禁用,默认为true

locked

boolean

非必须

​是否锁定

​true:已锁定,false:未锁定,默认为false

description

string

非必须

描述信息

不超过255个字符

expireTime

string

非必须

过期时间

格式:2022-09-04 13:00:00
必须大于当前时间

effectiveTime

datetime

非必须

生效时间

格式:2022-09-04 13:00:00
必须大于当前时间

avatarUuid

string

非必须

头像唯一标识

通过“上传账户头像”接口上传头像图片后得到

userBelongs

string []

必须

所属组织机构的集合

├─externalId

String

必须

​组织机构的唯一id

├─mainOu

boolean

非必须

是否主组织

true:是,false:不是, 都填写true/都填写false/都不填写,则默认第一个为主组织,填写多个true,则默认第一个填写true的为主组织

├─extendFields

object

非必须

自定义”人员-组织属性”数据字典

在IDaaS数据字典中定义

├─displayOrder

long

非必须

排序号

从0开始

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义

├─ test

string

非必须

├─ test1

string

非必须

applicationUuid

string

非必须

应用uuid

选填,应用的uuid可在应用列表-具体应用详情里查看,若传递则代表需要推送应用子账户,子账户信息参考applicationUsers

applicationUsers

object[]

非必须

应用子账户列表

├─ username

string

必须

子账户名

├─ xxx…

string

非必须

子账户扩展字段’

在IDaaS数据字典中定义

  • 提示:不准备修改的字段可不传。

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:账户名称不能为空

请求参数错误

400

InvalidParameter.ExternalId.Exist

例如:externalId外部ID重复

外部id重复

400

InvalidParameter.Name.Exist

例如:账户名(username)已经存在

账户名称已经存在

400

InvalidParameter.DisplayName.Exist

例如:显示名已经存在

显示名已经存在

400

InvalidParameter.Email.Exist

例如:邮箱(email)已被其他账户绑定

邮箱(email)已被其他账户绑定

400

InvalidParameter.PhoneNumber.Exist

例如:手机号(phoneNumber)已被其他账户绑定

手机号(phoneNumber)已被其他账户绑定

400

InvalidParameter.PhoneEmail.AllEmpty

例如:手机号(phoneNumber)和邮箱(email)必须选填一个

手机号(phoneNumber)和邮箱(email)不能全为空

400

InvalidParameter.ExternalId.NotExist

例如:通过externalId查询不到账户

未查找到externalId对应的账户

400

EntityNotFound

例如:所属组织机构(belongs):123456不存在

未查找到externalId对应的OU

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/update
请求示例 :

{
  "externalId": "12345609877332",
  "userName": "developer2",
  "displayName": "开发人员4",
  "password": "Jdev@12345",
  "email": "test2@test.com",
  "phoneNumber": "",
  "description": "",
  "mainOUBelong": "",
  "userBelongs": [
    {
      "belong": "123456",
      "displayOrder": 3243243,
      "mainOu": true,
      "extendFields": {
        "attr": "123",
        "position": "pdsa"
      }
    }
  ],
  "extendFields": {
    "test": "123456",
    "test1": "woman"
  },
  "applicationUuid": "2029afb7cfa9dcbf01f4c16df2632f79SBhU2RbjQb9",
  "applicationUsers": [
    {
      "username": "developer2",
      "adCode": "ad111",
      "ldapCode": "ldap111"
    },
    {
      "username": "developer22",
      "adCode": "ad222",
      "ldapCode": "ldap222"
    }
  ]
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620442079935$84b7e280-7242-6830-f632-14bfe2f7e8d4",
  "data": {
    "externalId": "12345609877332",
    "id": "102c03563bc868f5055438828f1b30063g5xe8NBpKk"
  }
}

image.png

4.3.2.2.3. 删除账户

Path:/api/bff/v1.2/developer/scim/account/delete
Method: DELETE

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名称

是否必须

示例

备注

externalId

外部id,账户的唯一id,可作主键

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

400

EntityNotFound

例如:账户不存在

未查找到要删除的账户

403

OperationDenied

例如:管理员 admin 不能删除

删除操作不被允许

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/delete?externalId={{externalId}}
返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620442094115$5c057847-70bb-0391-306b-162643fd994c"
}

image.png

4.3.2.2.4. 离职账户

Path:/api/bff/v1.2/developer/scim/account/archive
Method: PUT

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Body

参数名称

是否必须

示例

备注

externalId

外部id,账户的唯一id,可作主键

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/archive
返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1638948843358$fac3b9ad-b426-b2d7-8c69-2746b8d050bf",
  "data": null
}

image.png

4.3.2.2.5. 返聘账户

Path:/api/bff/v1.2/developer/scim/account/rehired
Method: PUT
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

必须

外部id,账户的唯一id,可作主键

organizationExternalId

string

非必须

返聘后账户所属组织机构外部id

不填则返聘至原组织机构下,若原组织机构不存在则返聘至根组织机构下

useOldGroup

boolean

非必须

是否使用原来的组信息

默认true,保留原所属组信息

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/rehired
请求示例 :

{
  "externalId": "12345609877332",
  "organizationExternalId": "11648579523462"
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1620442079935$84b7e280-7242-6830-f632-14bfe2f7e8d4",
  "data": {
    "externalId": "12345609877332",
    "id": "102c03563bc868f5055438828f1b30063g5xe8NBpKk"
  }
}

image.png

4.3.2.2.6. 上传账户头像

Path:/api/bff/v1.2/developer/scim/account/avatar/upload
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

默认值

备注

其他信息

base64File

string

必须

图片转base64字符串, 文件大小不超过1MB

filename

string

必须

文件名称,例如:123.jpg

仅支持JPG、PNG格式

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─uuid

string

头像数据唯一标识

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

400

例如:仅支持JPG、PNG格式

请求参数错误

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/account/avatar/upload
请求示例 :

{
  "base64File": "iVBORw0KGgoAAAANSUhEUgAABWs****+Pbf33FEAAAAASUVORK5CYII=",
  "filename": "avatar.png"
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1671596832872$c3b3a198-5868-ff24-67a4-840e8485bbe6",
  "data": {
    "uuid": "8e5be602c73462c7d84b1ca5419b9100s1UOQfxQabF"
  }
}

image.png

4.3.2.3. 组

4.3.2.3.1. 推送组

Path:/api/bff/v1.2/developer/scim/group/create
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

非必须

外部id,组的唯一id,可作主键

如果不填,IDaaS将随机生成一个唯一值,并在结果中返回

displayName

string

必须

显示名称

ouExternalId

string

必须

所属的父级组织机构的唯一id

description

string

非必须

描述信息

不超过255个字符

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义,如果自定义扩展字段是必填选项,则该属性必填

├─ test

string

非必须

├─ test1

string

非必须

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─ externalId

string

返回的外部id,主键

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组名称不能为空

请求参数错误

400

InvalidParameter.DisplayName.Exist

例如:当前OU下,组名已经存在

显示名已经存在

400

InvalidParameter.ExternalId.Exist

例如:externalId已存在

externalId已存在

400

EntityNotFound

例如:OU不存在

组隶属的OU不存在

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/group/create
请求示例 :

{
  "externalId": "121-11",
  "displayName": "测试同步组11",
  "ouExternalId": "605016592710192945",
  "addMembers": [
    {
      "accountExternalId": "",
      "username": "test1"
    }
  ],
  "extendFields": {
    "test": "123456"
  }
}

成功示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1638516367923$28829ca7-b8c8-d03c-9558-b91328184e9e",
  "data": {
    "externalId": "121-11"
  }
}

img.png

4.3.2.3.2. 修改组

Path:/api/bff/v1.2/developer/scim/group/update
Method: PUT
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

必须

外部id,组的唯一id,可作主键

displayName

string

非必须

显示名称

description

string

非必须

描述信息

不超过255个字符

addMembers

object []

非必须

需要添加的组成员

├─accountExternalId

String

非必须

账户外部ID

如果同时传了accountExternalId和username,以accountExternalId为准

├─username

string

非必须

账户名

如果同时传了accountExternalId和username,以accountExternalId为准

deleteMembers

object[]

非必须

需要移除的组成员

已经存在的账户外部ID和账户名

├─accountExternalId

String

非必须

账户外部ID

如果同时传了accountExternalId和username,以accountExternalId为准

├─username

string

非必须

账户名

如果同时传了accountExternalId和username,以accountExternalId为准

extendFields

object

非必须

扩展字段

在IDaaS数据字典中定义

├─ test

string

非必须

├─ test1

string

非必须

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组的externalId参数不能为空

请求参数错误

400

InvalidParameter.DisplayName.Exist

例如:当前OU下,组名已经存在

显示名已经存在

400

InvalidParameter.ExternalId.NotExist

例如:externalId不存在

externalId不存在

403

Forbidden

例如:没有权限操作该组 没有权限操作该组

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/group/update
请求示例 :

{
  "externalId": "121434322",
  "description": "tttt测试",
  "displayName": "测试t121",
  "addMembers": [
    {
      "accountExternalId": "",
      "username": "test1"
    }
  ],
  "deleteMembers": [
    {
      "accountExternalId": "",
      "username": "test2"
    }
  ],
  "extendFields": {
    "test": "ttt测试"
  }
}

返回示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
  "data": null
}

img.png

4.3.2.3.3. 删除组

Path:/api/bff/v1.2/developer/scim/group/delete
Method: DELETE

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名称

是否必须

示例

备注

externalId

外部id,组的唯一id,可作主键

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组的externalId参数不能为空

请求参数错误

400

EntityNotFound

例如:查询不到组信息

未查询到组信息

400

OperationDenied.GroupContainsChildren

例如:组有关联成员(如有子成员),不能删除

组有关联成员(如有子成员),不能删除

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例:{{idaas_host}}//api/application/group?externalId=1694618271068407094 请求示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "BF66FA08-E57B-4387-90C0-A72E41307239",
  "data": null
}

img.png

4.3.2.3.4. 添加组成员

Path:/api/bff/v1.2/developer/scim/group/add_group_members
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

默认值

备注

其他信息

externalId

string

必须

外部id,组的唯一id,可作主键

addMembers

object []

必须

需要添加的组成员

一次组成员最多不超过10

├─accountExternalId

String []

非必须

账户外部ID

如果同时传了accountExternalId和username,以accountExternalId为准

├─username

string

非必须

账户名

如果同时传了accountExternalId和username,以accountExternalId为准

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─ addFailureMemberDtos

string[]

返回添加失败的外部id

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组名称不能为空

请求参数错误

400

InvalidParameter.DisplayName.Exist

例如:当前OU下,组名已经存在

显示名已经存在

400

InvalidParameter.ExternalId.Exist

例如:externalId已存在

externalId已存在

400

EntityNotFound

例如:OU不存在

组隶属的OU不存在

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/group/add_group_members
请求示例 :

{
  "externalId": "5613281506756426797",
  "addMembers": [
    {
      "accountExternalId": "2142057301007169643 "
    }
  ]
}

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1670920450751$ef482589-6cd3-5b2e-f479-a5f280243a22",
  "data": {
    "addFailureMemberDtos": []
  }
}

img.png

4.3.2.3.5. 移除组成员

Path:/api/bff/v1.2/developer/scim/group/delete_group_members
Method: POST
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

默认值

备注

其他信息

externalId

string

必须

外部id,组的唯一id,可作主键

deleteMembers

object []

必须

需要移除的组成员

一次组成员最多不超过10

├─accountExternalId

String []

非必须

账户外部ID

如果同时传了accountExternalId和username,以accountExternalId为准

├─username

string

非必须

账户名

如果同时传了accountExternalId和username,以accountExternalId为准

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─ deleteFailureMemberDtos

string[]

返回移除失败的外部id

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组名称不能为空

请求参数错误

400

InvalidParameter.DisplayName.Exist

例如:当前OU下,组名已经存在

显示名已经存在

400

InvalidParameter.ExternalId.Exist

例如:externalId已存在

externalId已存在

400

EntityNotFound

例如:OU不存在

组隶属的OU不存在

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/group/delete_group_members
请求示例 :

{
  "externalId": "5613281506756426797",
  "deleteMembers": [
    {
      "accountExternalId": "2142057301007169643 "
    }
  ]
}

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1670920450751$ef482589-6cd3-5b2e-f479-a5f280243a22",
  "data": {
    "deleteFailureMemberDtos": []
  }
}

img.png

5. SP从IDaaS拉取

此方案主要针对业务系统需要单独拉取IDaaS组织机构和账户数据提供。

5.1. 集成方式

集成方式和SP推至IDaaS一致,请查看SP推至IDaaS

5.2. API文档

5.2.1. 组织机构

5.2.1.1. 查询组织机构

Path:/api/bff/v1.2/developer/scim/organization/detail
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

必须

Query

参数名

是否必须

类型

备注

externalId

必须

String

外部id,组织机构的唯一id

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├externalId

string

组织机构的外部id

├organizationName

string

组织机构名称

├parentExternalId

string

父组织机构外部id

├type

string

类型

├enabled

boolean

是否可用

├description

string

描述

├nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表当前节点引用的人事节点ID

└extendFields

object

扩展字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

400

EntityNotFound

例如:组织机构不存在

未查找到要更新的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例:/api/bff/v1.2/developer/scim/organization/detail?externalId=1694618271068407094

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "B5D4A6D1-9C51-4AC3-A413-4A27EE1C1474",
  "data": {
    "organizationName": "ceshi导入0009",
    "externalId": "9999233222",
    "parentExternalId": "764712910283009725",
    "type": "SELF_OU",
    "rootNode": false,
    "sortNumber": 0,
    "enabled": true,
    "description": null,
    "extendFields": {
      "4": "asd"
    }
  }
}

5.2.1.2. 获取组织机构列表

若传入的查询参数externalId为引用节点组织外部ID,则会返回引用的人事组织节点下的所有组织

Path: /api/bff/v1.2/developer/scim/organization/list
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalId

非必须

String

外部id,组织机构的唯一id

start

非必须

Number

分页开始位置,默认0

limit

非必须

Number

分页限制条数,默认20

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├ refOrgExternalId

string

若传入的查询参数externalId为引用节点组织外部ID,则会返回引用的人事组织节点外部ID

├ organizations

string

返回的组织机构信息

├─externalId

string

组织机构的外部id,主键

├─organizationName

string

组织机构名称

├─parentExternalId

string

父组织机构外部id

├─ type

string

类型

├─enabled

string

是否可用

├─description

string

描述

├─nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├─refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表此节点引用的人事组织节点外部ID

└─extendFields

object

扩展字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求示例 :

获取该公司的所有组织机构:/api/bff/v1.2/developer/scim/organization/list

获取某个OU下所有组织机构的信息:/api/bff/v1.2/developer/scim/organization/list?externalId=5986176890912195413

响应示例:

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "3CCA4939-170C-46AA-BE11-F3DE924FC0E9",
  "data": {
    "organizations": [
      {
        "organizationName": "成都研发部",
        "externalId": "2858068028015036528",
        "parentExternalId": "129733886490329012",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 0,
        "enabled": true,
        "description": "",
        "extendFields": {}
      },
      {
        "organizationName": "成都分公司",
        "externalId": "129733886490329012",
        "parentExternalId": "6721629573848908864",
        "type": "SELF_OU",
        "rootNode": false,
        "sortNumber": 0,
        "enabled": true,
        "description": "",
        "extendFields": {}
      },
      {
        "organizationName": "测试研发部3-3",
        "externalId": "test3-3",
        "parentExternalId": "test3",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 3,
        "enabled": true,
        "description": "通过SCIM同步组织机构",
        "extendFields": {
          "test1": "1235123"
        }
      },
      {
        "organizationName": "研发部3-4",
        "externalId": "test3-4",
        "parentExternalId": "test3",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 3,
        "enabled": true,
        "description": "研发分部",
        "extendFields": {
          "test1": "123"
        }
      }
    ],
    "total": 4,
    "refOrgExternalId": ""
  }
}

5.2.1.3. 获取根节点组织机构信息

Path:/api/bff/v1.2/developer/scim/organization/root
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├externalId

string

组织机构的外部id,主键

├organizationName

string

组织机构名称

├parentExternalId

string

父组织机构外部id

├type

string

类型

├enabled

string

账户是否可用

├description

string

描述

├nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表当前节点引用的人事节点ID

└extendFields

object

扩展字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:cannot get current enterpriseUuid(获取不到当前租户信息)

请求参数错误

400

EntityNotFound

例如:cannot get rootOU

未查找根OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/organization/root

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "C757F8D6-E96A-4399-823C-E55AED4D59C3",
  "data": {
    "organizationName": "OuName",
    "externalId": "6721629573848908864",
    "parentExternalId": null,
    "type": "SELF_OU",
    "rootNode": true,
    "sortNumber": 0,
    "enabled": true,
    "description": "",
    "extendFields": {}
  }
}

5.2.1.4. 获取组织机构的直属子级

若传入的查询参数externalId为引用节点组织外部ID,则会返回引用的人事组织节点下一级直属子级组织

Path:/api/bff/v1.2/developer/scim/organization/children
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalId

必须

String

外部id,组织机构的唯一id

start

非必须

Number

分页开始位置,默认0

limit

非必须

Number

分页限制条数,默认20

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├ refOrgExternalId

string

若传入的查询参数externalId为引用节点组织外部ID,则会返回引用的人事组织节点外部ID

├ organizations

string

返回的组织机构信息

├─externalId

string

组织机构的外部id,主键

├─organizationName

string

组织机构名称

├─parentExternalId

string

父组织机构外部id

├─ type

string

类型

├─enabled

string

账户是否可用

├─description

string

描述

├─nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├─refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表当前节点引用的人事节点ID

└─extendFields

object

扩展字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例:/api/bff/v1.2/developer/scim/organization/children?externalId=1

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "26AD790D-FB7D-4ED9-B07E-82448C929F88",
  "data": {
    "organizations": [
      {
        "organizationName": "销售部",
        "externalId": "130015784",
        "parentExternalId": "1",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 130015784,
        "enabled": true,
        "description": null,
        "extendFields": {
        }
      },
      {
        "organizationName": "研发部",
        "externalId": "129387071",
        "parentExternalId": "1",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 129387071,
        "enabled": true,
        "description": null,
        "extendFields": {
        }
      },
      {
        "organizationName": "测试部",
        "externalId": "129083981",
        "parentExternalId": "1",
        "type": "DEPARTMENT",
        "rootNode": false,
        "sortNumber": 129083981,
        "enabled": true,
        "description": null,
        "extendFields": {
        }
      }
    ],
    "total": 3,
    "refOrgExternalId": ""
  }
}

5.2.1.5. 获取组织机构在根组织机构下的详情

Path:/api/bff/v1.2/developer/scim/organization/ou_tree/detail
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalId

必须

String

外部id,组织机构的唯一id

ouTreeId

必须

String

根组织机构的外部id(externalId)。

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├organizationName

string

组织机构名称

├externalId

string

组织机构的外部id,主键

├parentExternalId

string

父组织机构外部id

├type

string

类型

├enabled

boolean

是否可用

├description

string

描述

├extendFields

object

扩展字段

├nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表当前节点引用的人事节点ID

├mainTree

boolean

查询参数ouTreeId组织是否是人事组织节点

├inRefTree

boolean

查询的组织是否在应用群组树下被引用

└refTreeInfo

object

应用群组下引用树节点详情

当该OU在应用群组被引用时(inRefTree=true)返回该节点在引用树中的详情

├parentRefNodeId

string

引用节点的ID

├parentRefNodeParentId

string

引用节点的上级ID

├parentRefNodePath

string

引用节点的完整路径

└virtualPath

string

当前OU在引用树的路径

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/organization/ou_tree/detail?externalId=4976673832566876807&ouTreeId=6754318132683840690

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1638524635493$33f22ddb-ada2-fc94-53b6-6b48ba1cbb57",
  "data": {
    "organizationName": "部门12",
    "externalId": "4976673832566876807",
    "parentExternalId": "5874903584085219353",
    "type": "DEPARTMENT",
    "rootNode": false,
    "sortNumber": 0,
    "enabled": true,
    "description": "",
    "extendFields": {},
    "uuid": "0e5650d3a1a6368a5bb884c23a9a3ad7v8stn6k6xEF",
    "manager": [],
    "nodeType": "SELF_CREATED",
    "refOrgExternalId": null,
    "mainTree": false,
    "inRefTree": true,
    "refTreeInfo": [
      {
        "parentRefNodeId": "2782426129122542668",
        "parentRefNodeParentId": "6754318132683840690",
        "parentRefNodePath": "wceshi / 应用群组 / 钉钉 / 部门1",
        "virtualPath": "wceshi / 应用群组 / 钉钉 / 部门1 / 部门12"
      }
    ]
  }
}

5.2.1.6. 通过外部id批量获取机构列表

Path:/api/bff/v1.2/developer/scim/organization/list_by_externalids
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalIds

非必须

Array

组织单位的外部id列表(externalIds),查询上限为20条。

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├externalId

string

组织机构的外部id,主键

├organizationName

string

组织机构名称

├parentExternalId

string

父组织机构外部id

├type

string

类型

├enabled

string

是否可用

├description

string

描述

├nodeType

string

组织机构类型

ENTERPRISE_ROOT(“公司根节点”,“Enterprise root”)
MASTER_TREE_ROOT(“主树根节点”, “Master tree root node”)
APP_GROUP(“应用群组”, “App Group Node”) 
SLAVE_TREE_ROOT(“子树根节点”, “Slave tree root node”) 
SELF_CREATED(“自建节点”, “Self Create”) 
REF_NODE(“引用主树”, “Reference main tree”);

├refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表此节点引用的人事组织节点外部ID

└extendFields

object

扩展字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/organization/list_by_externalids?externalIds=main,5151221213604955599&access_token=4616b26c-5a90-4b96-a789-73082615978e

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1653016959220$fe930cc3-a245-2db4-60ef-cd0f17022da0",
  "data": [
    {
      "organizationName": "信息中心",
      "externalId": "5151221213604955599",
      "parentExternalId": "main",
      "type": "DEPARTMENT",
      "rootNode": false,
      "sortNumber": 0,
      "enabled": true,
      "description": "",
      "extendFields": {},
      "uuid": "84ade7e0fac2f09860f0b12be0966327okxZfEsycxK",
      "manager": [],
      "nodeType": "SELF_CREATED",
      "refOrgExternalId": null
    },
    {
      "organizationName": "人事组织",
      "externalId": "main",
      "parentExternalId": "8249652021431815479",
      "type": "SELF_OU",
      "rootNode": false,
      "sortNumber": 1,
      "enabled": true,
      "description": "主数据根节点",
      "extendFields": {},
      "uuid": "a1ec4b823932038336d9e1055faf88fbWNWK14yKMcb",
      "manager": [],
      "nodeType": "MASTER_TREE_ROOT",
      "refOrgExternalId": null
    }
  ]
}

5.2.2. 账户

5.2.2.1. 获取账户信息

Path:/api/bff/v1.2/developer/scim/account/detail
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalId

必须

String

外部id,账户的唯一id

archived

非必须

boolean

是否离职,true:查询离职账户,false:查询普通账户,默认false。可选

applicationUuid

非必须

String

应用uuid信息,若传递,则返回IDaaS主账户在该应用下的子账户信息,可选

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├externalId

string

用户的外部id

├username

string

用户名

├displayName

string

显示名

├phoneNumber

string

手机号

├email

string

邮箱

├locked

string

账号是否锁定,true为锁定,false为未锁定

├archived

boolean

是否离职,false:普通账户,true:离职账户

├enabled

string

账号是否可用,true为启用,false禁用

├belongs

string

描述账户所属组织机构列表

├extendFields

object

扩展字段

├applicationUsers

object[]

应用子账户列表

├─ username

string

子账户名

├─ xxx…

string

子账户扩展属性’字段值’

​注意,“xxx” 不是固定值,“xxx”代表子账户扩展属性定义的数据字典’字段值’,是动态的,请在应用群组下-> 具体群组-> 数据字典查看,”…” 代表有多个

├userBelongs

string []

所属ou的外部id

为组织外部id的集合,必填

├─externalId

String

具体的组织外部id

├─mainOu

boolean

是否主组织

true:是,false:不是

├─extendFields

object

自定义”人员-组织属性”数据字典

填写则代表更新该项信息。更新时,如果数据字典是必填选项,则该属性必填

├─displayOrder

int

账户在所属组织机构下的排序号

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)不能为空

请求参数错误

400

InvalidParameter.ExternalId.NotExist

例如:externalId不存在

未查找到该账户

请求地址示例: /api/bff/v1.2/developer/scim/account/detail?externalId=123456&applicationUuid=0e5650d3a1a6368a5bb884c23a9a3ad7v8stn6k6xEF

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1654135480474$06464a81-94cf-eb7c-8938-d5cb6d742217",
  "data": {
    "externalId": "8867130358788280975",
    "username": "test11",
    "displayName": "test11",
    "phoneNumber": "180xxxxxxxx",
    "phoneRegion": "86",
    "email": null,
    "locked": false,
    "enabled": true,
    "archived": false,
    "description": "",
    "extendFields": {
      "age": ""
    },
    "userBelongs": [
      {
        "externalId": "8094330624995480237",
        "displayOrder":0,
        "extendFields": {},
        "mainOu": true
      }
    ],
    "applicationUsers": []
  }
}

5.2.2.2. 获取账户列表(旧)

若传入的查询参数ouUuid或者ouExternalId为引用节点组织外部ID,则会返回引用的人事组织节点账户列表数据

Path: /api/bff/v1.2/developer/scim/account/enterprise/list_all
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

ouUuid

非必须

String

指定具体组织机构的UUID, 可选

ouExternalId

非必须

String

指定具体组织机构的外部ID, 可选,ouUuid和ouExternalId只能存在一个

username

非必须

String

通过账户名称进行过滤, 可选

createStartDate

非必须

String

指定账户创建开始日期, 格式: yyyy-MM-dd, 如: 2018-01-01, 可选

createEndDate

非必须

String

指定账户创建结束日期, 格式: yyyy-MM-dd, 如: 2018-01-30, 可选

start

非必须

Number

分页开始位置,默认0

limit

非必须

Number

分页限制条数,默认20

archived

非必须

boolean

是否离职,true:查询离职账户,false:查询普通账户,默认false。可选

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

│ total

int

总数

├ refOrgExternalId

string

若传入的查询参数ouExternalId为引用节点组织外部ID,则会返回引用的人事组织节点外部ID

├ refOrgUuid

string

若传入的查询参数ouUuid为引用节点组织外部UUID,则会返回引用的人事组织节点UUID

└─systemAccountLists

object

返回的账户列表

├─externalId

string

用户的外部id,主键

├─username

string

用户名

├─displayName

string

显示名

├─phoneNumber

string

手机号

├─email

string

邮箱

├─locked

string

账号是否锁定,true为锁定,false为未锁定

├─archived

boolean

是否离职,false:普通账户,true:离职账户

├─enabled

string

账号是否可用,true为启用,false禁用

├─belongs

string

描述账户所属组织机构列表

├─extendFields

object

扩展字段

└─organzationsOrderList

object

账户在所属组织机构下的排序号

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/account/enterprise/list_all?ouUuid=87e6a7827a3852db002b4f9236b4e08cEkEe5m1hWlF&access_token=4616b26c-5a90-4b96-a789-73082615978e

响应示例 :

 {
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "5709C39A-D53A-4D74-8765-7D763907877B",
  "data": {
    "total": 3,
    "systemAccountLists": [
      {
        "externalId": "3543180585310896590",
        "username": "developer2",
        "displayName": "开发人员3",
        "phoneNumber": "",
        "email": "test2@test.com",
        "enabled": true,
        "locked": false,
        "description": "来自应用{test-developer}的同步",
        "extendFields": {
          "test": "123456",
          "test1": "woman"
        },
        "belongs": [
          "test2",
          "test1"
        ]
      },
      {
        "externalId": "test-2",
        "username": "test-2",
        "displayName": "test-3",
        "phoneNumber": "18890900900",
        "email": "test2@test2.com",
        "enabled": false,
        "locked": false,
        "description": "123ttt",
        "extendFields": {
          "test": "t",
          "test1": "woman123"
        },
        "belongs": [
          "test2"
        ]
      },
      {
        "externalId": "test-1",
        "username": "test-1",
        "displayName": "test-1",
        "phoneNumber": "",
        "email": "tangyuehan@idsmanager.com",
        "enabled": false,
        "locked": false,
        "description": "来自应用{test-developer}的同步",
        "extendFields": {},
        "belongs": [
          "test2",
          "test1"
        ]
      }
    ],
    "refOrgExternalId": "",
    "refOrgUuid": ""
  }
}

5.2.2.3. 获取账户列表(新)

若传入的查询参数ouExternalId为引用节点组织外部ID,则会返回引用的人事组织节点账户列表数据

Path: /api/bff/v1.2/developer/scim/account/list
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

ouExternalId

非必须

String

指定具体组织机构的外部ID, 可选

createStartDate

非必须

String

指定账户创建开始日期, 格式: yyyy-MM-dd, 如: 2018-01-01, 可选

createEndDate

非必须

String

指定账户创建结束日期, 格式: yyyy-MM-dd, 如: 2018-01-30, 可选

start

非必须

Number

分页开始位置,默认0

limit

非必须

Number

分页限制条数,默认20

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

│ total

int

总数

├ refOrgExternalId

string

若传入的查询参数ouExternalId为引用节点组织外部ID,则会返回引用的人事组织节点外部ID

└─accounts

object

返回的账户列表

├─externalId

string

用户的外部id,主键

├─username

string

用户名

├─displayName

string

显示名

├─phoneNumber

string

手机号

├─email

string

邮箱

├─locked

string

账号是否锁定,true为锁定,false为未锁定

├─archived

boolean

是否离职,false:普通账户,true:离职账户

├─enabled

string

账号是否可用,true为启用,false禁用

├─belongs

string

描述账户所属组织机构列表

├─extendFields

object

扩展字段

├userBelongs

string []

所属ou的外部id

为组织外部id的集合,必填

├─externalId

String

具体的组织外部id

├─mainOu

boolean

是否主组织

true:是,false:不是

├─extendFields

object

自定义”人员-组织属性”数据字典

填写则代表更新该项信息。更新时,如果数据字典是必填选项,则该属性必填

├─displayOrder

int

账户在所属组织机构下的排序号

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/account/list?ouExternalId=3410295325503010222&access_token=4616b26c-5a90-4b96-a789-73082615978e

响应示例 :

{
    "success": true,
    "code": "200",
    "message": null,
    "requestId": "1676371660617$149dc1b4-a1c5-ad3d-7882-7540c7a0af81",
    "data": {
        "accounts": [
            {
                "externalId": "6287885825738008167",
                "username": "***in",
                "displayName": "***理员",
                "phoneNumber": null,
                "phoneRegion": "86",
                "email": null,
                "locked": false,
                "enabled": true,
                "archived": false,
                "description": null,
                "extendFields": {},
                "effectiveTime": null,
                "expireTime": null,
                "createTime": "2022-08-15 15:25:41",
                "updateTime": "2023-02-09 10:31:59",
                "avatarUuid": null,
                "userBelongs": [
                    {
                        "externalId": "3410295325503010222",
                        "displayOrder": 0,
                        "extendFields": {},
                        "mainOu": true
                    }
                ],
                "applicationUsers": []
            }
        ],
        "total": 1,
        "refOrgExternalId": null
    }
}

5.2.2.4. 获取账户在根组织机构下的详情

Path: /api/bff/v1.2/developer/scim/account/ou_tree/detail
Method: GET

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalId

必须

String

外部id,账户的唯一id

ouTreeId

必须

String

根组织单位的外部id(externalId)。

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├externalId

string

用户的外部id,主键

├username

string

用户名

├displayName

string

显示名

├phoneNumber

string

手机号

├email

string

邮箱

├locked

string

账号是否锁定,true为锁定,false为未锁定

├enabled

string

账号是否可用,true为启用,false禁用

├userBelongs

string []

所属ou的外部id

为组织外部id的集合,必填

├─externalId

String

具体的组织外部id

├─mainOu

boolean

是否主组织

true:是,false:不是

├─extendFields

object

自定义”人员-组织属性”数据字典

填写则代表更新该项信息。更新时,如果数据字典是必填选项,则该属性必填

├─displayOrder

int

账户在所属组织机构下的排序号

├extendFields

object

扩展字段

├refOrgExternalId

string

引用人事节点外部ID

当nodeType为引用主树类型时,该ID代表当前节点引用的人事节点ID

├mainTree

boolean

查询的ouTreeId组织是否是人事组织节点

├inRefTree

boolean

查询的账户是否在应用群组树下被引用

└refTreeInfo

object

应用群组下引用树节点详情

账户所属父级组织被引用时返回该节点在引用树中的详情

├parentRefNodeId

string

引用节点的ID

├parentRefNodeParentId

string

引用节点的上级ID

├parentRefNodePath

string

引用节点的完整路径

├virtualPath

string

当前账户的路径

└parentNodeId

string

当前账户上级OU的ID

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/account/ou_tree/detail?externalId=3623477547857298846&ouTreeId=6754318132683840690

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1676371845284$ef0d823b-6c50-024a-47ee-4aeaba79623d",
  "data": {
    "externalId": "6287885825738008167",
    "username": "***in",
    "displayName": "***理员",
    "phoneNumber": null,
    "phoneRegion": "86",
    "email": null,
    "locked": false,
    "enabled": true,
    "archived": false,
    "description": null,
    "extendFields": {},
    "effectiveTime": null,
    "expireTime": null,
    "createTime": "2022-08-15 15:25:41",
    "updateTime": "2023-02-09 10:31:59",
    "avatarUuid": null,
    "userBelongs": [
      {
        "externalId": "main",
        "displayOrder": 0,
        "extendFields": {},
        "mainOu": false,
      }
    ],
    "applicationUsers": [],
    "mainTree": true,
    "inRefTree": false,
    "refTreeInfo": []
  }
}

5.2.2.5. 通过外部id等条件批量获取用户信息列表

Path: /api/bff/v1.2/developer/scim/account/load_by_externalIds
Method: GET/POST

Headers

参数名称

参数值

是否必须

示例

备注

Authorization

Bearer {access_token}

Query

参数名

是否必须

类型

备注

externalIds

非必须

Array

账户的外部id集合(externalIds),查询上限为50条。

email

非必须

String

邮箱(不支持模糊查询)。

phone

非必须

String

手机号(不支持模糊查询)。

displayName

非必须

String

显示名(支持使用前缀模糊查询)。

hasIneffective

非必须

boolean

是否查询未生效数据,默认false

start

非必须

Number

分页开始位置,默认0

limit

非必须

Number

分页限制条数,默认20

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

└─accounts

object

返回的账户列表

├─externalId

string

用户的外部id,主键

├─username

string

用户名

├─displayName

string

显示名

├─phoneNumber

string

手机号

├─email

string

邮箱

├─locked

string

账号是否锁定,true为锁定,false为未锁定

├─archived

boolean

是否离职,false:普通账户,true:离职账户

├─enabled

string

账号是否可用,true为启用,false禁用

├─belongs

string

描述账户所属组织机构列表

├─extendFields

object

扩展字段

├userBelongs

string []

所属ou的外部id

为组织外部id的集合,必填

├─externalId

String

具体的组织外部id

├─mainOu

boolean

是否主组织

true:是,false:不是

├─extendFields

object

自定义”人员-组织属性”数据字典

填写则代表更新该项信息。更新时,如果数据字典是必填选项,则该属性必填

├─displayOrder

int

账户在所属组织机构下的排序号

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

EntityNotFound

例如:组织机构123456不存在

未查找到externalId对应的OU

403

Forbidden

例如:没有权限操作该父OU

没有权限操作

请求地址示例: /api/bff/v1.2/developer/scim/account/load_by_externalIds?externalIds=7278996792421980908,6786131135298859160&phone=18398600000&displayName=test_zg_122&email=test_zg_122@gmail.com&access_token=4616b26c-5a90-4b96-a789-73082615978e

响应示例 :

 {
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1693473726490$52ec38eb-1105-115b-9842-60638fc666cf",
  "data": {
    "accounts": [
      {
        "externalId": "7278996792421980908",
        "username": "test***",
        "displayName": "***",
        "phoneNumber": null,
        "phoneRegion": "86",
        "email": null,
        "locked": false,
        "enabled": true,
        "archived": false,
        "description": "",
        "extendFields": {},
        "effectiveTime": null,
        "expireTime": "2116-12-31 23:59:59",
        "createTime": "2023-08-24 18:03:46",
        "updateTime": "2023-08-24 18:03:46",
        "avatarUuid": null,
        "belongs": [],
        "organzationsOrderList": [
          {
            "externalId": "4564325328869962519",
            "displayOrder": 0
          }
        ],
        "userBelongs": [
          {
            "belong": "4564325328869962519",
            "externalId": "4564325328869962519",
            "displayOrder": 0,
            "extendFields": {},
            "mainOu": true,
            "belongOuUuid": null
          }
        ],
        "applicationUsers": []
      },
      {
        "externalId": "6786131135298859160",
        "username": "test***",
        "displayName": "***",
        "phoneNumber": null,
        "phoneRegion": "86",
        "email": null,
        "locked": false,
        "enabled": true,
        "archived": false,
        "description": "",
        "extendFields": {},
        "effectiveTime": null,
        "expireTime": "2116-12-31 23:59:59",
        "createTime": "2023-03-01 14:10:11",
        "updateTime": "2023-08-24 10:41:10",
        "avatarUuid": null,
        "belongs": [],
        "organzationsOrderList": [
          {
            "externalId": "4564325328869962519",
            "displayOrder": 0
          }
        ],
        "userBelongs": [ {
            "belong": "4564325328869962519",
            "externalId": "4564325328869962519",
            "displayOrder": 0,
            "extendFields": {},
            "mainOu": true,
            "belongOuUuid": null
          }
        ],
        "applicationUsers": []
      }
    ],
    "total": 2,
    "refOrgExternalId": null
  }
}

5.2.3. 组

5.2.3.1. 获取组织机构下的组列表

Path:/api/bff/v1.2/developer/scim/group/list
Method: GET
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

ouExternalId

string

必须

所属组织机构(OU)的外部ID

start

Number

非必须

分页开始位置,默认0

limit

Number

非必须

分页限制条数,默认20

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─total

int

总数

├─list

object[]

├──externalId

String ​

账户组id,主键

├──displayName

String ​

组显示名称

├──description

String ​

描述信息

├──extendFields

object

自定义扩展的字段

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:组名称不能为空

请求参数错误

400

EntityNotFound

例如:OU不存在

组隶属的OU不存在

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例:{{idaas_host}}/api/bff/v1.2/developer/scim/group/list?ouExternalId=5613281506756426797&limit=2&start=0

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1671696298074$2c60e4e5-ec1a-5237-c84c-0943f6e2c557",
  "data": {
    "total": 4,
    "list": [
      {
        "externalId": "3908431160027359986",
        "displayName": "组1",
        "description": "",
        "extendFields": {}
      },
      {
        "externalId": "5613281506756426797",
        "displayName": "成都组",
        "description": "",
        "extendFields": {
          "212": "12"
        }
      }
    ]
  }
}

img.png

5.2.3.2. 获取组成员

Path:/api/bff/v1.2/developer/scim/group/group_members
Method: GET
Headers

参数名称

参数值

是否必须

示例

备注

Content-Type

application/json

Authorization

Bearer {access_token}

Body

名称

类型

是否必须

备注

其他信息

externalId

string

必须

外部id,组的唯一id

start

Number

非必须

分页开始位置,默认0

limit

Number

非必须

分页限制条数,默认20

返回数据

名称

类型

备注

其他信息

success

boolean

是否成功

code

string

成功为200

message

null

错误信息

success为false取值提示给用户

requestId

string

无须关注

data

object

├─total

int

总数

├─list

object[]

├──accountExternalId

String ​

账户外部ID

├──username

String ​

账户名

├──displayName

String ​

用户的显示名称

错误码

HttpCode(请求状态码)

code(错误码)

message(错误信息)

备注

200

200

null

请求成功

400

InvalidParameter

例如:外部id(externalId)无效

请求参数错误

400

EntityNotFound

例如:组不存在

组隶属的OU不存在

403

Forbidden

例如:没有权限操作该组

没有权限操作该组

请求地址示例: {{idaas_host}}/api/bff/v1.2/developer/scim/group/group_members?externalId=5613281506756426797&limit=2&start=0

响应示例 :

{
  "success": true,
  "code": "200",
  "message": null,
  "requestId": "1670922993003$fc25eb21-0a9a-3805-fbf4-bb54ef61938f",
  "data": {
    "total": 11,
    "list": [
      {
        "accountExternalId": "2142057301007169643",
        "username": "zhangdh1111",
        "displayName": "zhangdh1111"
      },
      {
        "accountExternalId": "111111111111195",
        "username": "developer295",
        "displayName": "开发人员395"
      }
    ]
  }
}

img.png