개요
도메인 간 ID 관리를 위한 시스템(SCIM)은 사용자 및 그룹 권한 설정/권할 설정 해제를 자동화하고 고객의 ID 제공업체(IdP)에서 Udemy Business 계정으로 사용자 및 그룹 데이터를 업데이트하는 표준 API입니다.SCIM은 Okta, Azure AD 및 OneLogin 등 여러 IdP에 의해 지원됩니다. 또한, Udemy Business SCIM API를 다른 IdP나 자체 개발 도구에 대해서도 활용할 수 있습니다.
기업에서 다음 IdP 중 하나를 사용하는 경우 SCIM 구성에 아래의 가이드를 대신 참조하시기 바랍니다.
SCIM은 JSON으로 데이터 포맷된 표준화된 REST API를 사용합니다. Udemy Business는 SCIM 표준 버전 2.0을 지원합니다. API는 기업체 서비스 고객이라면 누구나 사용 가능합니다.
Udemy Business SCIM API는 다음 기능을 지원합니다.
- 사용자 권한 설정
- 사용자 권한 설정 해제 (비활성화)
- 이메일 주소 변경
- 사용자 상세 정보 변경
- 그룹 권한 설정
- 그룹에 사용자 추가 및 제거
SCIM 프로토콜 설명
SCIM Protocol은 웹에서 ID 데이터에 권한을 설정하고 관리하기 위한 애플리케이션 수준의 REST 포로토콜입니다. 프로토콜은 클라이언트가 IdP이고 서버가 Udemy Business인 클라이언트-서버입니다.
기본적인 흐름은 다음과 같습니다.
- IdP에서 고객에 의해 사용자의 Udemy Business 접근 권한이 승인되면 IdP가 저희에게 특정 사용자가 데이터베이스에 존재하는지 확인하도록 요청을 보냅니다. userName이나 email 속성으로 사용자 검색을 신청합니다.
- 사용자가 존재하지 않으면 IdP는 사용자를 생성하도록 요청을 보냅니다.
- 사용자가 존재하면 IdP는 해당 사용자를 업데이트하도록 요청을 보냅니다.
- Udemy Business의 접근이 거부되면 IdP는 저희에게 해당 사용자를 데이터베이스에서 비활성화하도록 요청을 보냅니다.
- 또한 IdP는 사용자의 상세 정보를 변경하도록 요청을 보낼 수 있습니다.
API에 어떻게 접속하나요?
SCIM API에 연결하는 인증 자격 증명을 얻으려면 Udemy Business 계정에서 관리 -> 설정 -> 권한 설정(SCIM) 페이지를 통해 SCIM 통합을 설정해야 합니다. 참고로, 관리자만 이 페이지에 접근할 수 있습니다.
설정 시작을 클릭합니다.
다음 단계에서 공급업체 선택을 선택한 다음 사용자 지정을 선택합니다.
토큰 생성을 클릭합니다.
이 화면에서 복사를 클릭하여 베어러 토큰을 클립보드에 복사합니다.
귀하의 요청에는 베어러 토큰을 인증 HTTP 헤더에 포함해야 합니다. 예를 들자면 다음과 같습니다.
GET /scim/v2/Users HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <enter you Bearer token her>
Content-Type: application/scim+json
Udemy Business SCIM API는 HTTP 프로토콜을 사용하며 안전한 HTTPS 연결에 대해서만 사용할 수 있습니다.
API의 기본 URL: https://<yoursubdomain>.udemy.com/scim/v2/.
Udemy Business SCIM API와 상호 작용하는 애플리케이션을 개발 중인 경우 본 문서의 마지막에 있는 SCIM RFC를 참고하시기 바랍니다. Udemy Business SCIM API 구현은 표준을 준수합니다.
속도 제한
Udemy Business는 표준 HTTP 속도 제한 프로토콜에 따라 SCIM API에 속도 제한을 적용합니다. 요청이 속도 제한 처리되면 HTTP 429 응답을 수신하게 되며 이 경우 Retry-After 헤더에 명시된 바에 따라 기다린 후 다시 시도해야 합니다.
SCIM API 엔드포인트
정보 엔드포인트
이와 같은 엔드포인트는 정보를 담고 있으며 클라이언트를 구성하는 역할을 합니다. 인증이 요구되지 않으므로 이와 같은 엔드포인트에 접근할 때에는 인증 헤더를 포함할 필요가 없습니다.
GET /ServiceProviderConfig
어떤 방식이 지원되는지 여부를 포함한 Udemy Business SCIM 구현 관련 세부 사항을 반환합니다.
GET /Schemas
SCIM 구현이 지원하는 스키마에 대한 정보를 반환합니다. 사용자 및 그룹이 스키마로 지원됩니다.
GET /Schemas/Users
사용자 리소스에 지원되는 모든 속성을 반환합니다.
GET /Schemas/Groups
그룹 리소스에 지원되는 모든 속성을 반환합니다.
사용자 엔드포인트
이와 같은 엔드포인트를 사용하면 사용자 나열, 속성별 필터링, 신규 사용자 추가, 사용자 정보 업데이트, 사용자 비활성화 또는 익명 처리가 가능합니다.
SCIM API가 모든 사용자를 반환하지 않으면 Udemy Business 지원팀에 문의하시기 바랍니다.
지원되는 속성
SCIM 속성 | 필수 여부 | 설명 |
emails[type=”work”]]['value’] |
예 | 사용자의 이메일. 반드시 고유한 값이어야 합니다. |
userName |
예 | IdP에서 보낸 사용자 이름입니다. 반드시 고유한 값이어야 합니다. |
active |
예 | 사용자 비활성화/재활성화를 나타냅니다 |
externalId |
예 | IdP에서 보낸 사용자의 외부 ID입니다. 반드시 고유한 값이어야 합니다. |
urn:ietf:params:scim:schemas:extension: |
예 | EnterpriseSchema의 employeeNumber 필드를 반환하고 external_id 필드로 저장합니다. |
name.givenName |
아니요 | 사용자의 이름입니다. 필수는 아니지만 사용자 식별이 용이하므로 해당 속성을 항상 명시하는 것이 좋습니다. |
name.familyName |
아니요 | 사용자의 성입니다. 필수는 아니지만 사용자 식별이 용이하므로 해당 속성을 항상 명시하는 것이 좋습니다. |
name, { givenName, familyName } |
아니요 | 사용자의 이름과 성입니다. 필수는 아니지만 사용자 식별이 용이하므로 해당 속성을 항상 명시하는 것이 좋습니다. |
title |
아니요 | 사용자의 직함입니다 (예: “수석 엔지니어”) |
그룹 |
아니요 | 사용자가 소속된 SCIM 그룹 |
참고로, 이 목록에 없는 속성은 명시하더라도 무시됩니다.
GET /Users
기본적으로 페이지당 12명의 사용자가 표시되어 페이지별 사용자 목록이 반환됩니다. 아래와 같은 매개변수를 전달해 결과 세트를 통해 페이지를 매길 수 있습니다.
count
and
startIndex
대표적인 예는 다음과 같습니다.
GET /scim/v2/Users?startIndex=1&count=100 HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <enter you Bearer token here>
startIndex
- 현재 목록 결과 세트 (오프셋)에서 첫 번째 결과의 1부터 시작하는 인덱스입니다.
-
count
- : 목록 응답 페이지(제한)에서 반환된 리소스의 수입니다. 단일 요청에서 최대 1,000명의 사용자를 검색할 수 있습니다. 이 항목을 생략하면 기본값은 12로 설정되어 있습니다.
요청 예시
GET https://demo.udemy.com/scim/v2/Users
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 18,
"startIndex": 1,
"Resources": [
{
"id": "KwLzN3",
"externalId": "00u3mlhj4x1E482sK5d7",
"userName": "firstName.lastName@domain.com",
"name": {
"givenName": "firstName",
"familyName": "lastName",
"formatted": "firstName lastName"
},
"emails": [
{
"value": "firstName.lastName@domain.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [
{
"value": "NZOaw",
"display": "Group Test",
"$ref": "https://demo.udemy.com/scim/v2/Groups/NZOaw"
},
{
"value": "dn1K8",
"display": "NewGroup2",
"$ref": "https://demo.udemy.com/scim/v2/Groups/dn1K8"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/KwLzN3",
"created": "2022-01-19T01:11:59Z",
"lastModified": "2024-11-22T21:58:48Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "64e63"
}
},
[...]
],
"itemsPerPage": 12
}
GET /Users?filter=
이 엔드포인트는 사용자를 특정 속성별로 필터링하기 위해 사용됩니다. 예를 들어 userName 속성으로 검색이 가능합니다.
GET /Users?filter=userName eq "example..name”
참고: 위의 예시에서 URL 매개변수를 URL 인코딩하여 URL이 다음과 같아져야 합니다.
GET /Users?filter=userName%20eq%20%22example.name%22
이는 사용자 리소스 목록을 반환합니다. 결과가 없으면 빈 목록이 반환됩니다.
GET Users?filter=groups.value eq "{SCIM_Group_ID}"
이는 이 SCIM 그룹에 속하는 모든 사용자를 반환합니다
지원되는 필터는 다음과 같습니다.
userName
externalID
emails[type eq=”work”]
groups
지원되는 연산자는 다음과 같습니다.
and
eq
응답:
- 성공 시 엔터티 목록이 포함된 HTTP 상태 코드 200
- 지원되지 않는 필터가 제공된 경우 HTTP 상태 코드 501
POST /Users
이 엔드포인트는 Udemy Business에 새로운 사용자를 생성(권한 설정)하기 위해 사용됩니다.
응답에는
ID
속성이 포함되며 이는 요청에서 이 사용자를 참조할 때 사용해야 합니다.
다음을 참조하세요.
- 이렇게 생성된 신규 사용자의 경우 최초 로그인 전까지는 라이선스를 사용하지 않습니다.
- 이 사용자에 대해 보류 중인 초대가 있는 경우에는 이 시점에서 초대가 사용됩니다.
사용자는 그룹에 추가되며 초대에 지정된 사항에 따라 적절한 역할/강의가 배정됩니다. - Udemy Business에 이미 있는 사용자를 생성하려 시도하면 해당 사용자는 SCIM로 관리됩니다. (사용자 관리 페이지의 작은 링크 아이콘으로 표시됨). 참고로 사용자의 상태와 라이선스 사용량은 변하지 않습니다. 사용자가 활성화된 상태였다면 사용자는 계속 활성화 상태로 남으며, 비활성화 상태였다면 사용자는 계속 비활성화 상태로 남습니다.
요청 예시
POST https://demo.udemy.com/scim/v2/Users
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"active": true,
"emails": [
{
"primary": true,
"type": "work",
"value": "demo.user@test.com"
}
],
"externalId" : "externalIdValue",
"meta": {
"resourceType": "User"
},
"userName": "DemoTest",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "externalIdValue"
},
"name": {
"familyName": "Test",
"formatted": "formatted",
"givenName": "Demo"
}
}
응답 예시
{
"id": "MPD698",
"name": {
"givenName": "Demo",
"familyName": "Test",
"formatted": "Demo Test"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:00:26Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "externalIdValue"
},
"userName": "DemoTest",
"externalId": "externalIdValue"
}
응답:
- HTTP 상태 코드, 201 및 사용자 리소스 성공
- 기업에 이미 동일한 userName의 구성원이 있을 경우 HTTP 상태 코드 409
- 요청이 유효성 검사를 통과하지 못한 경우 응답 본문에 오류 세부 정보가 있는 HTTP 상태 코드 400
GET /Users/<id>
이 엔드포인트는 지정된 사용자의 사용자 상세 정보 검색에 사용됩니다.
ID
매개변수는 사용자가 SCIM으로 생성되었을 때나 모든 기존 사용자를 나열할 때 반환되는 고유 식별자입니다.
응답:
- 성공한 상태의 사용자 리소스가 포함된 HTTP 상태 코드 200
- 사용자를 찾을 수 없다면 HTTP 상태 코드 404
PUT /Users/<id>
이 엔드포인트는 Udemy Business에서 사용자 상세 정보를 대체 (덮어쓰기)하기 위해 사용됩니다. 지정된 경우 active 속성을 이용하여 해당 사용자를 비활성화하거나 재활성화할 수 있습니다.
요청 예시:
PUT https://demo.udemy.com/scim/v2/Users/MPD698
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"id": "MPD698",
"userName": "demo.user@test.com",
"externalId": "NewExternalID",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"name": {
"givenName": "demo",
"familyName": "user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"active": true
}
응답 예시
{
"id": "MPD698",
"name": {
"givenName": "demo",
"familyName": "user",
"formatted": "demo user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:17:52Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"userName": "demo.user@test.com",
"externalId": "NewExternalID"
}
응답:
- HTTP 상태 코드 200 및 업데이트된 사용자 리소스
- 사용자가 존재하지 않는 경우 HTTP 상태 코드 404
- 기업 소유자를 비활성화하려 시도하는 경우 또는 잘못된 작업의 경우 HTTP 상태 코드 400
PATCH /Users/<id>
이 엔드포인트는 시스템의 사용자 상세 정보를 부분적으로 업데이트하기 위해 사용되며, 사용자의 일부 속성만 바꿀 수 있습니다. 이는 전체 사용자를 교체하는 PUT과는 반대입니다.
여기에는 사용자를 비활성화하거나 재활성화하는 active 속성이 포함될 수도 있습니다.
- 각 요청 본문은 URI 값 "urn:ietf:params:scim:api:messages:2.0:PatchOp"와 함께 반드시 "schemas" 속성을 포함해야 합니다.
- HTTP PATCH 요청 본문은 값이 하나 이상의 PATCH 작업 배열인 "Operations" 속성을 반드시 포함해야 합니다. 각 PATCH 작업 개체는 반드시 정확히 하나의 "op" 구성원을 가져야 하며, 그 값은 실행할 작업을 표시하고 "add", "remove", 또는 "replace" 중 하나일 수 있습니다.
- “path” 속성은 비어 있을 수 있으며 이 경우 “value”는 {“path”: “value”} 형식의 딕셔너리여야 합니다.
요청 예시
PATCH https://demo.udemy.com/scim/v2/Users/MPD698
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "replace",
"path": "userName",
"value": "DemoUserName"
}
]
}
응답 예시
{
"id": "MPD698",
"name": {
"givenName": "demo",
"familyName": "user",
"formatted": "demo user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [
{
"value": "5ypNz",
"display": "NewGroup",
"$ref": "https://demo.udemy.com/scim/v2/Groups/5ypNz"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:17:52Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"userName": "DemoUserName",
"externalId": "NewExternalID"
}
응답:
- 성공한 업데이트된 사용자 리소스가 포함된 HTTP 상태 코드 200
- 사용자를 찾을 수 없다면 HTTP 상태 코드 404
- 기업 소유자를 비활성화하려 시도하는 경우 또는 잘못된 작업의 경우 HTTP 상태 코드 400
그룹 엔드포인트
지원되는 속성
SCIM 속성 |
필수 여부 |
설명 |
displayName |
예 |
그룹 이름입니다. 모든 Udemy Business 그룹 가운데 고유한 값이어야 합니다. |
externalId |
아니요 |
ID 제공자가 보낸 그룹의 외부 ID입니다 |
참고로, 이 목록에 없는 속성은 명시하더라도 무시됩니다.
GET /Groups
이 엔드포인트는 권한을 설정한 모든 그룹의 페이지 목록을 표시하기 위해 사용됩니다. 쿼리 열 매개변수 startIndex 및 count를 포함하여 결과를 통해 페이지를 매깁니다.
SCIM를 이용해 생성된 그룹만 반환됩니다. Udemy Business에서 생성된 그룹은 반환되지 않습니다.
요청 예시
GET https://demo.udemy.com/scim/v2/scim/v2/Groups
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 6,
"startIndex": 1,
"Resources": [
{
"id": "NZOaw",
"displayName": "Group Test",
"members": [
{
"value": "KwLzN3",
"display": "firstName lastName",
"type": "User",
"$ref": "https://demo.udemy.com/scim/v2/Users/KwLzN3"
},
{
"value": "eBmzpr",
"display": "user four",
"type": "User",
"$ref": "https://demo.udemy.com/scim/v2/Users/eBmzpr"
}
],
"externalId": null,
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/NZOaw",
"created": "2024-08-23T22:26:48Z",
"lastModified": "2024-08-23T22:26:48Z"
}
},
[...]
],
"itemsPerPage": 12
}
GET /Groups?filter=
이 엔드포인트는 그룹을 특정 속성별로 필터링하기 위해 사용됩니다. 예를 들어 displayName 속성으로 검색이 가능합니다.
GET /Groups?filter=displayName eq "Marketing”
이는 그룹 리소스 목록을 반환합니다. 결과가 없으면 빈 목록이 반환됩니다.
참고로, URL 매개변수를 인코딩하여 URL이 다음과 같아져야 합니다.
GET /Groups?filter=displayName%20eq%20%22Marketing%22
지원되는 필터는 다음과 같습니다.
displayName
externalId
Id
member.value
지원되는 연산자는 다음과 같습니다.
and
eq
응답:
- 성공 시 엔터티 목록이 포함된 HTTP 상태 코드 200
- 지원되지 않는 필터가 사용된 경우 HTTP 상태 코드 501
POST /Groups
이 엔드포인트는 Udemy Business에 새로운 그룹을 생성 (권한 설정)하기 위해 사용됩니다.
응답:
- 같은 이름으로 권한 설정된 그룹이 이미 단체 내에 있는 경우 HTTP 상태 코드 409, 고유한 scimType 오류 코드와 함께 409 (충돌)을 반환합니다.
- 그룹이 성공적으로 생성되면 그룹 생성 리소스 URL이 포함된 Location 헤더와 함께 HTTP 상태 코드 201 (충돌)이 포함된 그룹의 전체 대표를 반환합니다.
GET /Groups/<id>
이 엔드포인트는 Udemy Business에서 그룹 상세 정보를 가져오기 위해 사용됩니다.
응답:
- HTTP 상태 코드 200 및 그룹 리소스
- 그룹을 찾을 수 없다면 HTTP 상태 코드 404
POST /Groups
이 엔드포인트는 Udemy Business에 새로운 그룹을 생성 (권한 설정)하기 위해 사용됩니다.
경고: POST 또는 PUT /scim/v2/Groups 엔드포인트를 사용해 그룹을 만드는 경우, 요청에 members 특성을 포함하지 않도록 합니다. 지정된 구성원은 모두 무시됩니다. 그룹에 사용자를 추가하려면 우선 그룹을 만든 다음 PATCH /scim/v2/Groups/를 별도 호출합니다
요청 예시
https://demo.udemy.com/scim/v2/Groups
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Group1",
"externalId": "234523"
}
응답 예시
{
"id": "vREOw",
"displayName": "Group1",
"members": [],
"externalId": "234523",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/vREOw",
"created": "2025-01-15T22:24:54Z",
"lastModified": "2025-01-15T22:24:54Z"
}
}
PUT /Groups/<id>
이 엔드포인트는 Udemy Business에서 그룹 상세 정보를 교체하기 위해 사용됩니다.
경고: POST 또는 PUT /scim/v2/Groups 엔드포인트를 사용해 그룹을 만드는 경우, 요청에 members 특성을 포함하지 않도록 합니다. 지정된 구성원은 모두 무시됩니다. 그룹에 사용자를 추가하려면 우선 그룹을 만든 다음 PATCH /scim/v2/Groups/를 별도 호출합니다
요청 예시
PUT https://demo.udemy.com/scim/v2/Groups/vREOw
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Group1",
"externalId": "MPD699"
}
응답 예시
{
"id": "vREOw",
"displayName": "Group1",
"members": [],
"externalId": "MPD699",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/vREOw",
"created": "2025-01-08T21:12:53Z",
"lastModified": "2025-01-15T22:35:55Z"
}
}
응답:
- HTTP 상태 코드 200 및 업데이트된 그룹 리소스
- 그룹이 존재하지 않는 경우 HTTP 상태 코드 404
PATCH /Groups/<id>
이 엔드포인트는 Udemy Business에서 그룹 상세 정보를 부분 업데이트하기 위해 사용됩니다.
PATCH 엔드포인트는 다양한 연산자 (가능한 경우 연산자 조합도)를 지원하기 때문에 다른 엔드포인트보다 까다롭습니다.
요청 예시
PATCH https://demo.udemy.com/scim/v2/Groups/5ypNz
{ "schemas":
["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations":[
{
"op":"add",
"path": "members",
"value":[{
"display": "demo user",
"$ref":"https://demo.udemy.com/scim/v2/Users/MPD698",
"value": "MPD698"
}
]
}
]
}
응답 예시
204 No Content
- replace 작업은 특정한 값을 변경합니다. 저희의 경우에는 그룹 또는 구성원의 이름에 해당합니다.
- remove 작업은 그룹에서 구성원을 제거합니다.
- add 작업은 구성원을 그룹에 추가합니다.
규칙은 다음과 같습니다.
- 저희는 절대 권한을 설정하지 구성원을 그룹에서 제거하지 않습니다 (예를 들어 구성원에 `replace` 작업을 수행하는 경우).
- 작업 수에 관계 없이 PATCH 요청은 원자로 취급되어야 합니다.
입력 확인은 다음과 같습니다.
- 각 요청 본문은 URI 값 "urn:ietf:params:scim:api:messages:2.0:PatchOp"와 함께 반드시 "schemas" 속성을 포함해야 합니다.
- HTTP PATCH 요청 본문은 값이 하나 이상의 PATCH 작업 배열인 "Operations" 속성을 반드시 포함해야 합니다. 각 PATCH 작업 개체는 반드시 정확히 하나의 "op" 구성원을 가져야 하며, 그 값은 실행할 작업을 표시하고 "add", "remove", 또는 "replace" 중 하나일 수 있습니다.
- “path” 속성은 비어 있을 수 있으며 이 경우 “value”는 {“path”: “value”} 형식의 딕셔너리여야 합니다.
- “Remove” 작업에는 “members” 경로가 필수적입니다.
- “Add” 작업에는 “members” 또는 “externalId” “경로”가 있어야 합니다.
- “Replace” 작업에는 “members” 경로가 있을 수 있습니다. 없을 경우에는 저희가 그룹 상세 정보 (그룹 이름 등)를 변경하고 있지만 구성원은 변경하지 않을 때에 해당합니다.
참고
- 사용자를 그룹에 배정하거나 배정 해제하는 작업은 비동기식으로 처리되므로 변경 사항은 Udemy Business에 바로 반영되지 않습니다.
- 중첩된 그룹은 지원하지 않으므로 이 요청 도중에는 무시됩니다.
응답:
- 작업이 성공한 경우 HTTP 상태 코드 204
- 그룹이 존재하지 않는 경우 HTTP 상태 코드 404
- 기업 직원이 아닌 사용자에게 그룹을 배정하려는 시도가 있는 경우 오류 상세 정보가 포함된 HTTP 상태 코드 404
- 요청이 유효성 검사를 통과하지 못한 경우 응답 본문에 오류 세부 정보가 있는 HTTP 상태 코드 400
DELETE /Groups/<id>
이 엔드포인트는 Udemy Business에서 그룹을 삭제하거나 권한 설정을 해제하기 위해 사용됩니다.
규칙은 다음과 같습니다.
- 그룹에 권한을 설정하지 않은 구성원이 있는 경우 그룹에서 권한 설정한 사용자를 제거하고 `OrganizationSCIMGroup` 기록을 삭제합니다.
응답:
- 작업이 성공한 경우 HTTP 상태 코드 204
- 그룹이 존재하지 않는 경우 HTTP 상태 코드 404
추가 읽기 자료
- SCIM 개요: http://www.simplecloud.info
- RFC 7642, SCIM - 정의, 개요, 개념 및 요구 사항: https://tools.ietf.org/pdf/rfc7642.pdf
- RFC 7643, SCIM - 핵심 스키마: https://tools.ietf.org/pdf/rfc7643.pdf
- RFC 7644, SCIM - 프로토콜: https://tools.ietf.org/pdf/rfc7644.pdf