本ドキュメントは、セキュリオ とIdP間でのユーザープロビジョニングを可能にするオープン標準の System for Cross-Domain Identity Management (SCIM)の仕様を記載しています。
SCIM APIの実装は、SCIM 2.0プロトコルに準拠しています。
ユーザ属性
属性 | 型 |
id | int |
string | |
name | string |
(削除予定) companyid | int |
(削除予定) count | int |
active | Boolean |
グループ属性
属性 | 型 |
id |
int |
displayName |
string |
members |
Multi-valued |
SCIM APIへのアクセス
SCIM Base URLは「https://api.seculio.com/scim/v1」となっています。
また、SCIM APIへのすべてのリクエストでは、Authorization
ヘッダーにBearer
トークンを指定する必要があります。
Authorization: Bearer ○○
Bearer
トークンは、Seculio上のSCIM設定ページで取得可能です。
ユーザAPI
HTTPメソッド | URL | 詳細 |
GET |
https://api.seculio.com/scim/v1/Users/ |
ユーザリストの取得 |
GET |
https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
ユーザの取得 |
POST |
https://api.seculio.com/scim/v1/Users/ |
ユーザの作成 |
PATCH |
https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
ユーザの更新(単一値の属性) |
PUT |
https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
ユーザの更新(複数値の属性) |
DELETE |
未対応 (現在、SCIMによるユーザの削除はできません) |
ユーザリストの取得
ユーザリストの取得時、URLパラメータにcountを指定すると、指定されたユーザ数のリストを取得することが可能です。
※ Seculio上のユーザ数が指定された数値以下の場合、全ユーザのリストが取得可能です。
※ countが未設定の場合は、最大1000ユーザのリストが取得可能です。
以下の例では、500ユーザのリストを取得できます。
HTTPメソッド | URL |
GET | https://api.seculio.com/scim/v1/Users/?count=500 |
レスポンスステータス
Status: 200 OK
リクエスト例
なし
レスポンス例
{
"totalResults": 2
"itemsPerPage": 2
"startIndex": 1
"schemas":
"urn:ietf:params:scim:schemas:core:2.0:userInfo"
"Resources":
{
"schemas":
"urn:ietf:params:scim:schemas:core:2.0:userInfo"
"id": "1"
"email": "test1@example.com"
"name": "Test1 LRM"
"active": true
}
{
"schemas":
"urn:ietf:params:scim:schemas:core:2.0:userInfo"
"id": "2"
"email": "test2@example.com" "name": "Test2 LRM"
"active": true
}
}
ユーザの取得
HTTPメソッド | URL |
GET | https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
なし
レスポンス例 (修正予定)
{ "totalResults": 1, "itemsPerPage": 1, "startIndex": 1, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "id": 1, "email": "test@example.com", "name": "taro yamada", "companyid": 1, "count": 1, "active": true, "created_at": "xxxx-xx-xx xx:xx:xx", "updated_at": "xxxx-xx-xx xx:xx:xx" } ], "count": 1, "id": 1 }
ユーザの作成
HTTPメソッド | URL |
POST | https://api.seculio.com/scim/v1/Users/ |
レスポンスステータス
Status: 201 Created
リクエスト例
{ "schemas":[ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "userName":"Username", "name":{"givenName":"GivenName","familyName":"FamilyName"}, "emails":[ { "primary":true, "value":"test@example.com", "type":"work" } ], "displayName":"{{GivenName}} {{FamilyName}}", "active":true }
レスポンス例 (修正予定)
{ "totalResults": 1, "itemsPerPage": 1, "startIndex": 0, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "id": 1, "email": "test@example.com", "name": "GivenName FamilyName", "companyid": 1, "count": 1, "active": true, "created_at": "xxxx-xx-xx xx:xx:xx", "updated_at": "xxxx-xx-xx xx:xx:xx" } ], "count": 1, "id": 1 }
ユーザの更新(単一値の属性)
HTTPメソッド | URL |
PATCH | https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:userInfo"
],
"Operations": [
{
"op": "Replace",
"path": "name.familyName",
"value": "FamilyName"
},
{
"op": "Replace",
"path": "name.givenName",
"value": "GivenName"
},
{
"op": "Replace",
"path": "emails[type eq \"work\"].value",
"value": "test@example.com"
}
]
}
レスポンス例 (修正予定)
{ "totalResults": 1, "itemsPerPage": 1, "startIndex": 0, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "id": 1, "email": "test@example.com", "name": "GivenName FamilyName", "companyid": 1, "count": 1, "active": true, "created_at": "xxxx-xx-xx xx:xx:xx", "updated_at": "xxxx-xx-xx xx:xx:xx" } ], "count": 1, "id": 1 }
ユーザの更新(複数値の属性)
HTTPメソッド | URL |
PUT | https://api.seculio.com/scim/v1/Users/{ユーザ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "userName": "test@example.com", "name": { "givenName": "GivenName", "familyName": "FamilyName" }, "emails": [ { "primary": true, "value": "test@example.com", "type": "work" } ], "displayName": "GivenName FamilyName", "active": true }
レスポンス例 (修正予定)
{ "totalResults": 1, "itemsPerPage": 1, "startIndex": 0, "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "Resources": [ { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:userInfo" ], "id": 1, "email": "test@example.com", "name": "GivenName FamilyName", "companyid": 1, "count": 1, "active": true, "created_at": "xxxx-xx-xx xx:xx:xx", "updated_at": "xxxx-xx-xx xx:xx:xx" } ], "count": 1, "id": 1 }
グループAPI
HTTPメソッド | URL | detail |
GET | https://api.seculio.com/scim/v1/Groups/ | グループリストの取得 |
GET | https://api.seculio.com/scim/v1/Groups/{グループ`id`} | グループの取得 |
POST | https://api.seculio.com/scim/v1/Groups/ | グループの作成 |
PATCH | https://api.seculio.com/scim/v1/Groups/{グループ`id`} | グループの更新(単一値の属性) |
PUT | https://api.seculio.com/scim/v1/Groups/{グループ`id`} | グループの更新(複数値の属性) |
DELETE | 未対応 |
グループリストの取得
HTTPメソッド | URL |
GET | https://api.seculio.com/scim/v1/Groups/ |
レスポンスステータス
Status: 200 OK
リクエスト例
なし
レスポンス例
{
"totalResults": 2
"schemas": "urn:ietf:params:scim:schemas:core:2.0:Group"
"Resources":
{
"id": 1
"displayName": "Group1"
"members":
{
"value": 1
"display": "test@example.com"
}
}
{
"id": 2
"displayName": "Group2"
"members": null
}
}
グループの取得
HTTPメソッド | URL |
GET | https://api.seculio.com/scim/v1/Groups/{グループ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
なし
レスポンス例
{
"schemas": "urn:ietf:params:scim:schemas:core:2.0:Group" "id": 1
"displayName": "Group1"
"members":
{
"value": 1 "display": "test@example.com"
}
}
グループの作成
※ グループ作成時にメンバーを紐付けることは出来ません。
HTTPメソッド | URL |
POST | https://api.seculio.com/scim/v1/Groups/ |
レスポンスステータス
Status: 201 OK
リクエスト例
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "displayName": "GroupA" }
レスポンス例
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": 1, "displayName": "GroupA", "members": [] }
グループの更新(単一値の属性)
HTTPメソッド | URL |
PATCH | https://api.seculio.com/scim/v1/Groups/{グループ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
- グループ名の更新
{
"schemas": [ "urn:ietf:params:scim:api:messages:2.0:Group" ],
"Operations": [
{
"op": "replace",
"path": "displayName",
"value": {
"id": 1,
"displayName": "UpdatedGroupName"
}
}
]
}
- メンバーの追加
{
"schemas": [ "urn:ietf:params:scim:api:messages:2.0:Group" ],
"Operations": [
{
"op": "add",
"path": "members",
"value": [
{ "value": 1 },
{ "value": 2 }
]
}
]
}
- メンバーの削除
{
"schemas": [ "urn:ietf:params:scim:api:messages:2.0:Group" ],
"Operations": [
{
"op": "remove",
"path": "members",
"value": [
{ "value": 1 }
]
}
]
}
グループの更新(複数値の属性)
※ members属性が空の状態でリクエストを行うと、紐づいているメンバーが全て解除されるのでご注意下さい。
HTTPメソッド | URL |
PUT | https://api.seculio.com/scim/v1/Groups/{グループ`id`} |
レスポンスステータス
Status: 200 OK
リクエスト例
{
"schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ],
"displayName": "GroupB,
"members": [
{ "value": 1 }
]
}
レスポンス例
{ "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:Group" ], "id": 1, "displayName": "GroupB", "members": [
{
"value": 1,
"display": "test@example.com"
], }
Rate Limits
Users Endpoints
エンドポイント | 制限 (1分あたりのリクエスト) | バースト |
GET /scim/v1/Users | 300 | 50 |
GET /scim/v1/Users/{id} | 300 | 50 |
POST /scim/v1/Users | 120 | 20 |
PUT /scim/v1/Users/{id} | 120 | 20 |
Groups Endpoints
エンドポイント |
制限 (1分あたりのリクエスト) |
バースト |
GET /scim/v1/Groups |
300 |
50 |
GET /scim/v1/Groups/{id} |
300 |
50 |
POST /scim/v1/Groups |
120 |
20 |
PUT /scim/v1/Groups/{id} |
120 |
20 |