Adobe Learning Manager 2026년 8월 릴리스의 API 변경 사항
Adobe Learning Manager의 사용자 그룹 관리 API
이 릴리스에는 프로그래밍 방식으로 사용자 지정 사용자 그룹을 관리하기 위한 관리자 범위 공개 API 엔드포인트 세 개가 새로 추가되었습니다. 관리 앱을 사용하지 않고 사용자 정의 사용자 그룹을 만들고, 이름을 바꾸고, 삭제할 수 있습니다. 이를 통해 ID 또는 프로비저닝 워크플로의 일부로 그룹 관리를 자동화할 수 있습니다.
이러한 엔드포인트는 사용자 정의 사용자 그룹에서만 작동합니다. 모든 사용자 그룹 및 자동 생성된 사용자 그룹과 같은 시스템 관리 그룹은 API 응답에서 readOnly: true를 가지며 이러한 끝점을 통해 수정하거나 삭제할 수 없습니다.
API 인증 요구 사항은 Adobe Learning Manager API 인증을 참조하세요.
사용자 그룹 API 끝점
세 엔드포인트 모두 쓰기 권한(ROLE_ADMIN)이 있는 관리자 액세스 토큰이 필요합니다.
일반 요청 헤더
세 엔드포인트 모두에 다음 헤더가 필요합니다.
Authorization: Bearer \<access-token\>
X-acap-user: \<user-id\>
X-acap-account: \<account-id\>
X-acap-caller-role: ROLE_ADMIN
Content-Type: application/vnd.api+json
Accept: application/vnd.api+json
사용자 그룹 만들기
POST /primeapi/v2/userGroups
초기 멤버 목록을 사용하여 새 사용자 정의 사용자 그룹을 만듭니다. 그룹은 즉시 책임자 앱에서 사용할 수 있습니다.
요청 본문
{
"name": "Marketing Team",
"description": "Custom user group for marketing onboarding",
"data": [
{ "type": "user", "id": "11282373" },
{ "type": "user", "id": "11282374" }
]
}
매개 변수 요청
참고: 데이터 배열은 만들 때만 초기 구성원 목록을 설정하는 데 사용됩니다. 생성 후 멤버를 추가하거나 제거하려면 기존 사용자 그룹 멤버십 끝점을 사용합니다.
응답 201 생성됨
{
"links": {
"self": "https://<host>/primeapi/v2/userGroups"
},
"data": {
"id": "2769204",
"type": "userGroup",
"attributes": {
"dateCreated": "2026-06-04T14:19:53.000Z",
"description": "Custom user group for marketing onboarding",
"name": "Marketing Team",
"readOnly": false,
"userCount": 2
}
}
}
유효성 검사 규칙 POST
사용자 그룹 업데이트
PUT /primeapi/v2/userGroups/{id}
기존 사용자 정의 사용자 그룹의 이름 및/또는 설명을 업데이트합니다. 이 끝점은 그룹 멤버를 추가하거나 제거할 수 없습니다.
두 필드 중 하나는 생략할 수 있으며, 필드를 생략하면 현재 값이 변경되지 않습니다. 설명을 위해 null을 전달하면 설명이 지워집니다. 이름에 대한 빈 문자열 전달이 거부되었습니다.
요청 본문
{
"name": "Updated Group Name",
"description": "Updated description text"
}
매개 변수 요청
응답 200 확인
{
"data": {
"type": "userGroup",
"id": "2767870",
"attributes": {
"name": "Updated Group Name",
"description": "Updated description text",
"readOnly": false,
"state": "Active",
"userCount": 3
}
}
}
유효성 검사 규칙 PUT
사용자 그룹 삭제
DELETE /primeapi/v2/userGroups/{id}
지정된 사용자 정의 사용자 그룹을 삭제된 것으로 표시합니다. 그룹 레코드는 영구적으로 제거되지 않으며, 그 상태가 DELETED로 설정되어 있어 관리 앱에 표시되지 않고 새 구성에서 사용할 수 없습니다. 그룹 ID를 다시 사용할 수 없습니다.
요청 예
DELETE /primeapi/v2/userGroups/2767870
Authorization: Bearer <access-token>
X-acap-user: <user-id>
X-acap-account: <account-id>
X-acap-caller-role: ROLE_ADMIN
응답 204 내용 없음
응답 본문이 비어 있습니다.
참고: DELETE은 멱등 행렬이 아닙니다. 두 번째 DELETE 요청을 동일한 그룹 ID로 전송하면 204가 아닌 DELETED_USERGROUP 코드와 함께 400 오류가 반환됩니다. 400 DELETED_USERGROUP 응답을 그룹이 이미 삭제되었음을 확인하는 응답으로 취급합니다. 일괄 삭제는 지원되지 않습니다. 각 그룹에는 별도의 DELETE 요청이 필요합니다.
유효성 검사 규칙 DELETE
Adobe Learning Manager의 외부 학습 API
이 릴리스에는 외부 학습 기능에 대한 다섯 개의 새로운 학습자 범위 API 끝점이 추가됩니다. 이러한 끝점을 통해 학습자는 모바일 앱, 통합 HR 시스템 또는 사용자 정의 학습 포털과 같이 프로그래밍 방식으로 외부 학습 제출을 생성, 검색 및 업데이트할 수 있습니다.
API를 통한 외부 학습 워크플로는 학습자 앱의 워크플로를 반영합니다. 학습자가 교육 세부 정보와 선택적 증명 문서를 제출하고, 직접 관리자가 제출 내용을 검토하라는 알림을 받으며, 승인 시 기록이 학습자의 성적 증명서에 나타납니다.
다섯 개의 모든 엔드포인트는 학습자 범위입니다. 학습자는 자신의 제출물에만 액세스할 수 있습니다. 학습자가 다른 학습자의 데이터에 액세스하려고 하면 API에서 오류를 반환합니다.
API 인증 요구 사항은 Adobe Learning Manager API 인증을 참조하세요.
외부 학습 API 끝점
모든 엔드포인트에는 학습자 액세스 토큰(ROLE_LEARNER)이 필요합니다.
공통 요청 헤더
Authorization: Bearer <access-token>
X-acap-user: <user-id>
X-acap-account: <account-id>
X-acap-caller-role: ROLE_LEARNER
Accept: application/vnd.api+json
Content-Type: application/vnd.api+json (POST and PUT only)
제출 상태 수명 주기
APPROVED 및 REJECTED 는 최종 상태입니다. 거부된 제출물은 다시 열 수 없습니다. 학습자는 새 제출물을 작성해야 합니다.
계정 양식 구성 가져오기
GET /primeapi/v2/externalLearningSettings
계정 수준 양식 구성을 반환합니다. 제출 양식을 렌더링하기 전에 이 끝점을 호출합니다. 응답은 표시할 필드(필수, 해당 데이터 유형 및 관리자가 구성한 사용자 정의 필드)를 정의합니다.
계속하기 전에 최상위 사용 속성을 확인하십시오. false인 경우, 이 계정에 대해 외부 학습 기능이 활성화되지 않아 제출 끝점에서 오류가 반환됩니다.
응답 200 OK
{
"data": {
"id": "8627",
"type": "externalLearningSettings",
"attributes": {
"enabled": true,
"updatedAt": "2026-06-05T06:51:20.000Z",
"coreFields": [
{ "id": "title", "type": "TEXT", "mandatory": true, "editable": false, "order": 0 },
{ "id": "description_notes", "type": "TEXT", "mandatory": false, "editable": true, "order": 1 },
{ "id": "date", "type": "TIMESTAMP", "mandatory": false, "editable": true, "order": 2 },
{ "id": "score", "type": "NUMBER", "mandatory": true, "editable": true, "order": 3 },
{ "id": "duration", "type": "TEXT", "mandatory": false, "editable": true, "order": 4 },
{ "id": "attachments", "type": "FILE_UPLOAD", "mandatory": true, "editable": true, "order": 5 }
],
"customFields": [
{
"id": "960369b2-...",
"type": "NUMBER",
"mandatory": true,
"order": 0,
"label": { "en_US": "Employee Code" }
},
{
"id": "3c6cc6d9-...",
"type": "DROPDOWN",
"mandatory": true,
"order": 1,
"label": { "en_US": "Department" },
"options": [
{ "option_id": "opt_1", "label": { "en_US": "IT" } },
{ "option_id": "opt_2", "label": { "en_US": "HR" } },
{ "option_id": "opt_3", "label": { "en_US": "FIN" } }
]
}
]
}
}
}
핵심 필드 참조
날짜 범위. 값 셰이프: { “start_date”: “
”, “end_date”: “ ” }. 두 값 중 하나는 null일 수 있습니다.
값 셰이프: { “achieved_score”:
, “max_score”: }. 두 값은 모두 숫자여야 합니다.
사용자 지정 필드는 관리자가 정의하고 customFields[]에 반환됩니다. 해당 ID, 유형, 필수 플래그, 레이블 및 드롭다운 옵션은 계정 구성에 따라 다릅니다.
제출 목록
GET /primeapi/v2/externalLearnings
인증된 학습자가 제출한 항목의 페이지가 매겨진 목록을 ModifiedAt 내림차순(가장 최근에 수정된 항목 먼저)으로 정렬하여 반환합니다.
쿼리 매개 변수
응답 200 확인
{
"links": {
"next": "/primeapi/v2/externalLearnings?page[offset]=10&page[limit]=10"
},
"data": [
{ "id": "1001", "type": "externalLearning", "attributes": { "status": "PENDING", ... } },
{ "id": "1002", "type": "externalLearning", "attributes": { "status": "APPROVED", ... } }
]
}
제출 서류 가져오기
GET /primeapi/v2/externalLearnings/{id}
인증된 학습자에게 속한 단일 제출에 대한 전체 기록을 반환합니다.
**응답 200 확인
{
"data": {
"id": "1001",
"type": "externalLearning",
"attributes": {
"submissionUrl": "https://<cdn-url>/cert.pdf",
"title": "Java Fundamentals Certification",
"status": "PENDING",
"creationSource": "LEARNER",
"createdAt": "2026-04-14T08:30:00.000Z",
"modifiedAt": "2026-04-16T11:45:00.000Z",
"fields": [ "...resolved against live settings..." ]
},
"relationships": {
"reviewerUser": { "data": null }
}
}
}
제출 서류 만들기
POST /primeapi/v2/externalLearnings
보류 중 상태에서 새 외부 학습 제출을 만듭니다. 계정 설정에 정의된 모든 필수 필드가 포함되어야 합니다. POST이 성공하면 학습자의 관리자는 플랫폼 내 알림을 받아 제출을 검토하게 됩니다.
파일 업로드
첨부 파일 필드는 다른 필드와 별도로 처리됩니다. 필드 []에 포함하지 마십시오. 대신:
1.ALM 파일 업로드 끝점에서 미리 서명된 S3 업로드 URL을 얻습니다.
2. 해당 URL에 파일을 업로드합니다.
3. 결과 URL을 POST 요청에서 최상위 submissionUrl 속성으로 전달합니다.
요청 본문
{
"data": {
"type": "externalLearning",
"attributes": {
"submissionUrl": "<pre-signed-upload-url>",
"fields": [
{ "id": "title", "type": "TEXT", "value": "Java Fundamentals Certification" },
{ "id": "description_notes", "type": "TEXT", "value": "Completed via online course platform." },
{ "id": "date", "type": "TIMESTAMP", "value": { "start_date": "2026-05-01T00:00:00.000Z", "end_date": "2026-05-15T00:00:00.000Z" } },
{ "id": "score", "type": "NUMBER", "value": { "achieved_score": 88, "max_score": 100 } },
{ "id": "duration", "type": "TEXT", "value": "40 hours" },
{ "id": "960369b2-...", "type": "NUMBER", "value": "1225" },
{ "id": "3c6cc6d9-...", "type": "DROPDOWN", "value": "opt_3" }
]
}
}
}
필드 값 모양
검증 규칙 POST
제출 업데이트
PUT /primeapi/v2/externalLearnings/{id}
보류 중인 기존 제출을 업데이트합니다. 보류 중인 제출만 업데이트할 수 있습니다. 승인됨 또는 거부됨 제출 PUT을 시도하면 409 오류가 반환됩니다.
이 끝점은 완전 대체 의미 체계를 사용합니다. 변경하려는 필드뿐만 아니라 모든 PUT 요청에 전체 필드 []을(를) 입력하십시오. 배열에서 생략된 필드가 지워집니다.
학습자가 업데이트할 수 있는 필드
요청 본문
{
"data": {
"type": "externalLearning",
"attributes": {
"submissionUrl": "<cdn-url>/cert-v2.pdf",
"fields": [
{ "id": "title", "type": "TEXT", "value": "Java Fundamentals — Updated" },
{ "id": "description_notes", "type": "TEXT", "value": "Updated notes." },
{ "id": "date", "type": "TIMESTAMP", "value": { "start_date": null, "end_date": null } },
{ "id": "score", "type": "NUMBER", "value": { "achieved_score": 92, "max_score": 100 } },
{ "id": "duration", "type": "TEXT", "value": "42 hours" },
{ "id": "960369b2-...", "type": "NUMBER", "value": "1227" },
{ "id": "3c6cc6d9-...", "type": "DROPDOWN", "value": "opt_2" }
]
}
}
}
LT의 학습자 관련 인증 ID 및 루트 인증 ID용 API
반복 인증이 갱신되면 Adobe Learning Manager에서 새로운 버전의 인증이 생성되고 활성 학습자가 자동으로 등록됩니다. 통합이 Adobe Learning Manager 학습자 환경에 의존하지 않고 직접 인증 데이터를 쿼리하는 경우, 이 API를 사용하여 특정 시점에서 특정 학습자와 관련된 반복 인증의 버전을 정확하게 결정할 수 있습니다.
API의 목적
반복 인증은 갱신할 때마다 새 인증 ID를 생성합니다. 기본 Adobe Learning Manager 학습자 경험에는 각 학습자와 관련된 버전만 표시됩니다. 학습자가 새로운 버전으로 전환되면 이전 버전은 자동으로 숨겨집니다.
통합에서 인증 데이터를 개별적으로 검색할 경우(예: 외부 포털에 인증 정보 표시) 이 필터링을 자동으로 적용하지 않을 수도 있습니다. 이를 수행하지 않으면 학습자는 반복되는 인증의 모든 기록 버전을 볼 수 있으며, 여기에는 더 이상 해당 인증과 관련이 없는 인증도 포함되며, 어느 쪽을 수행해야 하는지에 대한 아무런 표시도 표시되지 않습니다.
이 API는 해당 간격을 해결했습니다. 루트 인증 ID가 주어지면 지정된 학습자에게 적용되는 특정 인증 버전을 반환하며, 이는 해당 등록 기록 및 모든 반복을 고려합니다.
인증 재발 이해
인증이 다시 수행되도록 구성되면 갱신될 때마다 고유한 ID로 새 인증 버전이 생성됩니다. 모든 버전은 처음 만들어질 때 원래 인증의 ID인 단일 루트 인증 ID,으로 다시 추적됩니다.
예를 들어, 매월 되풀이되는 인증은 시간이 지남에 따라 버전 시퀀스를 생성할 수 있으며, 각 새 버전은 되풀이 간격에 도달하면 자동으로 생성됩니다. 재발이 발생하면 적극적으로 등록된 학습자는 새 버전에 자동으로 등록됩니다.
각 버전에는 개별 ID가 있으므로 학습자의 관련 버전은 개별 등록 타임라인에 따라 달라집니다.
-
반복 전에 등록하고 다음 재발이 발생하기 전에 인증을 완료한 학습자는 시간이 경과함에 따라 여러 버전을 거쳐야 합니다.
-
반복 주기의 중간에 등록한 학습자는 등록할 때 현재 버전에 직접 등록됩니다.
관련 인증 버전 확인
인증 버전 API를 사용하여 특정 학습자와 관련된 반복 인증의 버전을 식별합니다.
루트 인증 ID을(를) 입력으로 제공하십시오. API는 학습자의 등록 내역을 평가하고 다음 규칙에 따라 적절한 버전을 반환합니다.
즉, 동일한 루트 인증 ID를 동시에 쿼리하는 두 학습자가 각 학습자의 개별 등록 기록에 따라 다른 결과를 받을 수 있습니다.
참고: 새 버전을 만들고 등록을 마이그레이션하는 동안 되풀이 중에 잠시 창이 있을 수 있습니다. API에서 새로 만든 버전이 아닌 대체하려고 하는 버전을 반환할 수 있습니다.
예
연속되는 반복으로 인해 시간이 지남에 따라 4개의 버전이 생성된 매월 반복되는 인증을 고려하십시오.
-
첫 번째 버전에 등록하고 각 반복이 발생함에 따라 진행한 학습자는 현재 활성화된 버전으로 돌아갑니다. 이는 존재하는 최신 버전이 아닌 자체 완료 및 반복 내역을 반영합니다.
-
아직 등록하지 않은 학습자는 가장 최근에 생성된 버전으로 돌아갑니다. 새로 등록해야 하는 버전이기 때문입니다.
통합 기능을 사용하면 모든 기록 버전을 표시하거나 어떤 인증 버전이 적용되는지 추측하지 않고도 항상 학습자에게 관련된 인증 버전을 안내할 수 있습니다.
API 참조
루트 인증에 대한 해당 인증 받기
GET /primeapi/v2/learningObjects/{loId}/applicableCertification
루트 인증의 ID가 있는 경우 현재 학습자에게 적용되는 인증 버전을 해결합니다. 등록된 학습자의 경우 현재 등록된 버전이 반환됩니다. 등록되지 않은 학습자의 경우 최신 활성 버전이 반환됩니다.
참고: 이 API는 한 번에 한 학습자의 버전 정보를 반환합니다. 모든 버전의 인증 목록은 반환되지 않습니다 .
경로 매개 변수
쿼리 매개 변수
요청 예시
GET /primeapi/v2/learningObjects/certification%3A167658/applicableCertification?include=subLOs
Accept: application/vnd.api+json
Authorization: oauth <access-token>
curl -X GET --header 'Accept: application/vnd.api+json' \
--header 'Authorization: oauth <access-token>' \
'https://<host>/primeapi/v2/learningObjects/certification%3A167658/applicableCertification?include=subLOs'
참고: loId 값은 URL로 인코딩되어야 합니다. certification:167658과 같은 인증 ID의 콜론이 %3A(으)로 인코딩되었습니다.
예제 응답 200 OK
응답은 표준 학습 객체 응답과 동일한 구조를 사용하여 해결된 인증을 반환합니다.
중요: 응답의 ID 필드는 이 학습자에게 적용되는 특정 버전인 확인된 인증의 ID입니다. 이 API의 전체 목적은 루트 ID를 올바른 현재 버전으로 변환하는 것이기 때문에 이것은 일반적으로 loId로 전달한 루트 인증 ID와 다릅니다.
{
"data": {
"id": "string",
"type": "string",
"attributes": {
"authorNames": [
"string"
],
"bannerUrl": "string",
"catalogs": [
...
]
}
}
}
응답 코드
오류 응답 예
{
"meta": {
"error": "string",
"detail": "string"
}
}
참고: 이 API는 호출당 한 명의 학습자에 대한 버전을 확인합니다. 루트 인증에 대해 존재하는 모든 버전의 목록은 반환하지 않습니다.
중요 지점
-
비반복 인증:전달하는 loId가 반복하도록 구성되지 않은 인증이면 API에서 해당 인증 자체를 반환합니다.
-
건너뛴 중간 버전:학습자의 활성 등록이 이전 버전에서 이후 버전으로 직접 이동하더라도 API는 학습자의 실제 현재 버전으로 올바르게 확인됩니다. 학습자가 적극적으로 관여하지 않은 중간 버전의 존재는 해결에 영향을 미치지 않는다.
-
삭제된 인증 대 중단된 인증: 삭제된 인증 버전은 해결 대상에서 완전히 제외됩니다. 중단된 인증은 상태에 따라 계속 고려될 수 있습니다. 해결 가능한 특정 버전을 사용하고 있는 경우 은퇴를 가정하기 보다는 현재 상태를 확인하여 고려 대상에서 제거합니다.
-
해결은 결정적입니다. 학습자의 등록 데이터가 일치하지 않는 상태(예: 두 개 이상의 등록이 현재 등록으로 표시됨)인 경우, API는 예측할 수 없는 결과나 오류를 반환하지 않고 가장 최근에 만든 버전으로 해결합니다.
참고: 이 API에 해당하는 관리자 범위 항목은 현재 사용할 수 없으며 향후 릴리스에 대해 평가 중입니다.
통합에서 이 API 사용
일반적인 사용 사례는 학습자가 액세스할 수 있는 인증이 나열된 외부 페이지 또는 포털입니다. 특정 인증 ID에 직접 연결하는 대신, 재발 후 오래될 수 있습니다. 루트 인증 ID를 사용하여 연결하고 학습자가 선택한 시점에서 올바른 버전을 확인합니다.
1.재귀 전에 먼저 생성된 인증의 ID 루트 인증 ID,를 사용하여 통합에 인증을 저장하거나 참조합니다.
2.학습자가 보거나 수행할 인증을 선택하면 GET /primeapi/v2/learningObjects/{loId}/applicableCertification을 호출하고 루트 인증 ID를 loId로 전달합니다.
3. 등록 조치인지 또는 현재 진행 상황을 보는지에 관계없이 학습자를 올바른 대상으로 안내하려면 응답에서 반환된 인증 버전을 사용합니다.
이렇게 하면 인증이 시간이 지남에 따라 반복되고 새 버전이 생성되는 경우에도 학습자는 항상 실제 등록 및 진행률과 일치하는 인증 버전을 찾을 수 있습니다.
보고: 학습자 성적 증명서의 루트 교육 ID
루트 교육 ID 열은 모든 계정의 학습자 성적 증명서에서 기본적으로 사용할 수 있습니다.
참고: 인증의 양이 많은 매우 큰 계정의 경우 학습자 성적 증명서의 루트 교육 ID 값이 일괄적으로 확인됩니다. 이렇게 해도 데이터의 정확도는 변경되지 않지만 대본 생성에는 시간이 오래 걸릴 수 있습니다.
이 열에서는 학습자의 모든 반복 인증 버전에 대한 전체 기록을 그룹화하고 보고할 수 있습니다. 관련되지 않은 개별 기록으로 각 반복을 처리하지 않습니다. 각 되풀이는 여전히 학습자 성적 증명서에 고유한 행으로 표시됩니다. [루트 교육 ID] 열은 단순히 동일한 기본 인증에 속하는 행을 식별합니다.
참고: 반복 인증에서 학습자의 전체 참여 기록을 추적해야 하는 경우 루트 교육 ID 열을 사용합니다.