프로젝트 생성과 조직 요구조건 API (V2)
Project는 관련 리소스를 묶고 협업 권한을 관리하는 경계입니다. 프로젝트의 역할과 조직 및 보안 표지 요구조건은 함께 적용됩니다. 기본적인 권한 모델은 프로젝트와 역할에 있습니다.
작업 선택
| 작업 | API |
|---|---|
| 메타데이터 조회 | Get Project |
| 이름과 권한을 지정하여 생성 | Create Project |
| 템플릿으로 생성 | Create Project From Template |
| 조직 요구조건 추가 | Add Organizations |
| 조직 요구조건 제거 | Remove Organizations |
| 직접 적용한 조직 조회 | List Organizations Of Project |
일반 생성 API를 OAuth2 타사 애플리케이션에서 호출할 때는 애플리케이션을 Ontology SDK와 연결하지 않아야 합니다. 그 제한은 일반 생성 요청의 준비 조건에서 다룹니다.
Project 자료형
| 이름 | 자료형 | 필수 여부 | 의미와 조건 | 예시 값 |
|---|---|---|---|---|
rid | string | 필수 | 프로젝트의 고유 식별자(RID)입니다. | ri.compass.main.folder.01a79a9d-e293-48db-a585-9ffe221536e8 |
displayName | string | 필수 | 프로젝트 표시 이름입니다. 같은 공간 안에서 고유해야 하며 /를 포함할 수 없습니다. | My Important Project |
description | string | 선택 | 프로젝트에 연결된 설명입니다. | project description |
documentation | string | 선택 | 프로젝트에 연결된 문서 내용입니다. | project documentation |
path | string | 필수 | 리소스 이름 자체를 포함한 전체 경로입니다. | /Empyrean Airlines/My Important Project |
createdBy | string | 필수 | 리소스를 생성한 Foundry 사용자입니다. | f05f8da4-b84c-4fca-9c77-8af0b13d11de |
updatedBy | string | 필수 | 리소스를 마지막으로 갱신한 Foundry 사용자입니다. | f05f8da4-b84c-4fca-9c77-8af0b13d11de |
createdTime | string (date-time) | 필수 | 리소스 생성 시각입니다. | 2024-09-25T17:29:35.974Z |
updatedTime | string (date-time) | 필수 | 리소스를 가장 최근에 갱신한 시각입니다. | 2024-09-25T17:29:35.974Z |
trashStatus | enum | 필수 | 프로젝트의 휴지통 상태입니다. 허용값: DIRECTLY_TRASHED, ANCESTOR_TRASHED, NOT_TRASHED. | NOT_TRASHED |
spaceRid | string | 필수 | 프로젝트가 속한 공간의 RID입니다. | ri.compass.main.folder.a86ad5f5-3db5-48e4-9fdd-00aa3e5731ca |
resourceLevelRoleGrantsAllowed | boolean | 필수 | 프로젝트 안의 개별 리소스에 직접 역할을 부여할 수 있는지 나타냅니다. | true |
기본 역할과 명시적 역할 부여
defaultRoles는 조직과 보안 표지 접근 요구조건을 충족한 사용자에게 자동 부여하는 기본 역할입니다. roleGrants는 역할 ID를 키로 하여 특정 사용자 또는 그룹 목록에 역할을 부여합니다. 기본 역할의 적용 대상이 넓다는 점을 고려하여 명시적인 관리 그룹의 역할과 각각 검토합니다.
프로젝트 생성 결과에는 소유자에 준하는 권한을 가진 주체가 있어야 합니다. 기준은 역할에 compass:edit-project 작업이 포함되는지이며, 기본 역할 집합에서는 일반적으로 compass:manage가 해당합니다. 역할 이름이나 예시 UUID만으로 이 조건을 충족한다고 판단하지 않습니다.
일반 생성 API의 resourceLevelRoleGrantsAllowed는 생략 시 true입니다. 이는 API 입력 생략의 기본값이며, 화면에서 제공하는 초기값이나 공간별 정책과 구분합니다. 프로젝트 수준에서만 역할을 관리하려면 실제 정책을 확인하여 생성 입력을 명시합니다.
조직과 공간의 관계
프로젝트에 적용할 조직은 상위 공간에도 적용되어 있어야 합니다. 조직이 적용된 공간 안에서는 프로젝트를 조직이 하나도 없는 상태로 만들 수 없습니다. 따라서 마지막 조직을 제거하는 작업도 이 조건을 충족해야 합니다.
조직 추가 및 제거는 프로젝트의 접근 요구조건을 바꿉니다. 사용자의 소속 조직이나 조직의 사용자 구성원을 변경하는 API와 구분합니다. 직접 적용한 조직 목록과 상속을 포함한 접근 요구조건도 별도로 확인합니다.
템플릿으로 생성할 때
프로젝트 템플릿은 역할과 그룹, 보안 표지 및 제약 조건을 구성합니다. 적용할 때 새 그룹이나 표지가 만들어질 수 있으므로 관련 생성 권한과 이름 충돌도 확인해야 합니다.
템플릿이 값을 고정한 필드와 사용자가 값을 제공해야 하는 필드를 구분합니다. 변수값, 설명, 조직과 기본 역할의 조건은 템플릿 생성 API에 있습니다.
프로젝트 예시
가상 항공사 프로젝트의 메타데이터입니다.
{
"path": "/Empyrean Airlines/My Important Project",
"updatedTime": "2024-09-25T17:29:35.974Z",
"updatedBy": "f05f8da4-b84c-4fca-9c77-8af0b13d11de",
"createdBy": "f05f8da4-b84c-4fca-9c77-8af0b13d11de",
"displayName": "My Important Project",
"documentation": "project documentation",
"resourceLevelRoleGrantsAllowed": true,
"description": "project description",
"createdTime": "2024-09-25T17:29:35.974Z",
"rid": "ri.compass.main.folder.01a79a9d-e293-48db-a585-9ffe221536e8",
"spaceRid": "ri.compass.main.folder.a86ad5f5-3db5-48e4-9fdd-00aa3e5731ca",
"trashStatus": "NOT_TRASHED"
}