API 레퍼런스: 조직
조직 관리 및 사용자 관리 엔드포인트의 API 레퍼런스입니다.
엔드포인트: GET /v1/tenant/{tenantId}
인증: 테넌트 범위 API 키 · read 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
응답 (200):
테넌트 정보
{
"id": "00000000-0000-0000-0000-000000000000",
"createdBy": "00000000-0000-0000-0000-000000000000",
"createdAt": "2024-03-15T16:30:00Z",
"displayName": "string",
"contactEmail": "string",
"isActive": true,
"shortName": "string",
"useOrganizationTheme": true,
"description": "string",
"organizationId": "00000000-0000-0000-0000-000000000000",
"allowedLogins": {
"Microsoft": true,
"Google": true,
"LinkedIn": true
},
"tenantType": "normal",
"url": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 예 | 형식: uuid |
| createdBy | string | 예 | 형식: uuid |
| createdAt | string | 예 | 형식: date-time |
| displayName | string | 예 | 기본값: ""최대 길이: 128 |
| contactEmail | string | 예 | 형식: email |
| isActive | boolean | 예 | 기본값: true |
| shortName | string | 예 | |
| useOrganizationTheme | boolean | 예 | 기본값: true |
| description | string | 예 | 최대 길이: 200 |
| organizationId | string | 예 | 형식: uuid |
| allowedLogins | object | 예 | |
| tenantType | normal | sandbox | demo | 예 | 허용 값: normal, sandbox, demo기본값: normal |
| url | string | 예 | 형식: uri |
오류:
엔드포인트: PUT /v1/tenant/{tenantId}
인증: 테넌트 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
요청 본문:
{
"id": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"contactEmail": "string",
"shortName": "string",
"description": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 아니요 | 형식: uuid |
| displayName | string | 아니요 | |
| contactEmail | string | 아니요 | |
| shortName | string | 아니요 | |
| description | string | 아니요 |
응답 (200):
테넌트를 업데이트했습니다
{
"id": "00000000-0000-0000-0000-000000000000",
"createdBy": "00000000-0000-0000-0000-000000000000",
"createdAt": "2024-03-15T16:30:00Z",
"displayName": "string",
"contactEmail": "string",
"isActive": true,
"shortName": "string",
"useOrganizationTheme": true,
"description": "string",
"organizationId": "00000000-0000-0000-0000-000000000000",
"allowedLogins": {
"Microsoft": true,
"Google": true,
"LinkedIn": true
},
"tenantType": "normal",
"url": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 예 | 형식: uuid |
| createdBy | string | 예 | 형식: uuid |
| createdAt | string | 예 | 형식: date-time |
| displayName | string | 예 | 기본값: ""최대 길이: 128 |
| contactEmail | string | 예 | 형식: email |
| isActive | boolean | 예 | 기본값: true |
| shortName | string | 예 | |
| useOrganizationTheme | boolean | 예 | 기본값: true |
| description | string | 예 | 최대 길이: 200 |
| organizationId | string | 예 | 형식: uuid |
| allowedLogins | object | 예 | |
| tenantType | normal | sandbox | demo | 예 | 허용 값: normal, sandbox, demo기본값: normal |
| url | string | 예 | 형식: uri |
오류:
엔드포인트: GET /v1/tenant/{tenantId}/statistics
인증: 테넌트 범위 API 키 · read 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
응답 (200):
테넌트 통계
{
"tenantId": "00000000-0000-0000-0000-000000000000",
"uploadedDataSize": 0,
"uploadedDataCount": 0,
"modelCount": 0,
"simulationCount": 0,
"userCount": 0
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| tenantId | string | 예 | 형식: uuid |
| uploadedDataSize | number | 예 | |
| uploadedDataCount | number | 예 | |
| modelCount | number | 예 | |
| simulationCount | number | 예 | |
| userCount | number | 예 |
오류:
조건에 맞는 사용자를 JSON 배열로 반환합니다. 전체 개수는 제공되지 않으며, limit/offset을 사용해 페이지를 나눕니다.
엔드포인트: GET /v1/tenant/{tenantId}/users
인증: 테넌트 범위 API 키 · read 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| limit | integer | 쿼리 | 아니요 | 반환할 최대 항목 수 |
| offset | integer | 쿼리 | 아니요 | 건너뛸 항목 수 |
응답 (200):
사용자 목록
[
{
"id": "00000000-0000-0000-0000-000000000000",
"email": "string",
"firstName": "string",
"lastName": "string",
"createdAt": "2024-03-15T16:30:00Z",
"lastLoginAt": "2024-03-15T16:30:00Z",
"tenantId": "00000000-0000-0000-0000-000000000000",
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true,
"organizationId": "00000000-0000-0000-0000-000000000000",
"isActiveInOrganization": true,
"isAdminInOrganization": true
}
] 오류:
본문의 역할 필드(isAdminInTenant, access: none|portalViewer|designer|architect|intelligence, isDashboardViewer)는 입력한 값 그대로 적용됩니다. 이 엔드포인트는 테넌트 관리자 권한 전체를 다루므로 신뢰할 수 있는 호출자에게만 쓰기 범위 키를 발급하세요. 대시보드 조회 권한은 isDashboardViewer boolean으로 설정합니다. 기존의 읽기 전용 Viewer 단계는 제거되었습니다.
엔드포인트: POST /v1/tenant/{tenantId}/users
인증: 테넌트 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
요청 본문:
{
"email": "string",
"firstName": "string",
"lastName": "string",
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true,
"preferredLocale": "en"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| string | 예 | 사용자의 이메일 주소(로그인 ID로도 사용) 형식: email | |
| firstName | string | 아니요 | 선택 입력 항목: 이름 최대 길이: 64자 |
| lastName | string | 아니요 | 선택 입력 항목: 성 최대 길이: 64자 |
| isActiveInTenant | boolean | 아니요 | 사용자가 이 테넌트에서 활성 상태인지 여부 |
| isAdminInTenant | boolean | 아니요 | 이 테넌트의 관리자 권한(전체 테넌트 관리 기능에 그대로 적용) |
| access | none | portalViewer | designer | architect | intelligence | 아니요 | 단일 선택 좌석: none | portalViewer | designer | architect | intelligence 허용 값: none, portalViewer, designer, architect, intelligence |
| isDashboardViewer | boolean | 아니요 | 사용자에게 읽기 전용 대시보드 보기 권한이 있는지 여부 |
| preferredLocale | en | zh | es | fr | de | pt | it | nl | ja | tr | pl | cs | hu | id | ko | vi | th | 아니요 | 사용자가 선호하는 UI 언어 허용 값: en, zh, es, fr, de, pt, it, nl, ja, tr, pl, cs, hu, id, ko, vi, th |
응답 (201):
사용자를 추가했습니다
{
"id": "string",
"message": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 예 | 새로 추가한 사용자의 ID |
| message | string | 예 |
오류:
엔드포인트: PUT /v1/tenant/{tenantId}/users/{userId}
인증: 테넌트 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| userId | string | 경로 | 예 | 형식: uuid |
요청 본문:
{
"isActiveInTenant": true,
"isAdminInTenant": true,
"access": "none",
"isDashboardViewer": true
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| isActiveInTenant | boolean | 아니요 | 이 테넌트에서 사용자가 활성 상태인지 여부 |
| isAdminInTenant | boolean | 아니요 | 이 테넌트의 관리자 권한 (입력한 값 그대로 적용되며, 테넌트 관리자 권한 전체를 부여합니다) |
| access | none | portalViewer | designer | architect | intelligence | 아니요 | 단일 선택 라이선스: none | portalViewer | designer | architect | intelligence. 대시보드 조회 권한은 isDashboardViewer boolean으로 설정합니다. 허용 값: none, portalViewer, designer, architect, intelligence |
| isDashboardViewer | boolean | 아니요 | 사용자에게 대시보드 읽기 전용 권한이 있는지 여부 |
응답 (200):
업데이트했습니다
{
"message": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| message | string | 예 |
오류:
엔드포인트: DELETE /v1/tenant/{tenantId}/users/{userId}
인증: 테넌트 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| userId | string | 경로 | 예 | 형식: uuid |
응답 (200):
사용자를 삭제했습니다
{
"message": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| message | string | 예 |
오류:
사용자, 테넌트, 조직에 연결된 일회용 토큰 (유효 기간 60초)과 사용자의 브라우저를 이동시킬 url을 반환합니다. 사용자의 브라우저에서 URL을 열면 별도의 이메일 링크나 사용자 가장 없이 ProcessMind에 인증된 상태로 접속하며, 사용자 본인의 세션이 생성됩니다. API 키에 전용 sessions 범위가 필요합니다. 조직 범위 키는 해당 조직의 모든 테넌트에서 토큰을 발급할 수 있지만, 테넌트 범위 키는 자신이 속한 테넌트의 사용자에게만 발급할 수 있습니다. 토큰은 비밀번호와 동일한 수준으로 취급하세요. 한 번만 반환되며 로그에 기록되지 않고, 키나 사용자를 비활성화하면 폐기됩니다.
엔드포인트: POST /v1/tenant/{tenantId}/users/{userId}/login-token
인증: 테넌트 또는 조직 범위 API 키 · sessions 범위 · 요청 제한 초당 2회 (최대 4회)
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| userId | string | 경로 | 예 | 형식: uuid |
요청 본문:
선택 입력 항목인 도착 경로 (상대 경로, 예: “app” 또는 “app/dashboards”)
{
"path": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| path | string | 아니요 | 최대 길이: 512 |
응답 (200):
로그인 전달 토큰
{
"token": "string",
"url": "string",
"expiresInSeconds": 0,
"expiresAt": "2024-03-15T16:30:00Z"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| token | string | 예 | |
| url | string | 예 | |
| expiresInSeconds | number | 예 | |
| expiresAt | string | 예 | 형식: date-time |
오류:
API 키는 연동 시스템의 인증에 사용됩니다. 조직 범위 키를 사용하면 조직 내 모든 테넌트의 키를 발급하고 관리할 수 있습니다.
조직 범위 API 키가 필요합니다. 비밀 키는 반환되지 않습니다.
엔드포인트: GET /v1/tenant/{tenantId}/api-keys
인증: 조직 범위 API 키 · read 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| limit | integer | 쿼리 | 아니요 | 반환할 최대 항목 수 |
| offset | integer | 쿼리 | 아니요 | 건너뛸 항목 수 |
응답 (200):
API 키 목록
[
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
}
}
] 오류:
조직 범위 쓰기 키가 필요합니다. 비밀 키는 서버에서 생성되어 응답에 한 번만 포함됩니다. 안전한 곳에 보관하세요. 저장되는 값은 해시뿐입니다.
엔드포인트: POST /v1/tenant/{tenantId}/api-keys
인증: 조직 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
요청 본문:
{
"displayName": "string",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"enabled": true,
"expiresAt": "2024-03-15T16:30:00Z"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| displayName | string | 예 | 최대 길이: 128 |
| scope | object | 아니요 | |
| enabled | boolean | 아니요 | |
| expiresAt | string | 아니요 | 형식: date-time |
응답 (201):
API 키를 생성했습니다 (비밀 키는 한 번만 포함됩니다)
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"secret": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 예 | 형식: uuid |
| tenantId | string | 예 | 형식: uuid |
| organizationId | string | 예 | 형식: uuid |
| displayName | string | 예 | 최대 길이: 128 |
| partialKey | string | 예 | 최대 길이: 128 |
| enabled | boolean | 예 | 기본값: true |
| createdAt | string | 예 | 형식: date-time |
| lastUsedAt | string | 예 | 형식: date-time |
| expiresAt | string | 예 | 형식: date-time |
| scope | object | 예 | |
| secret | string | 예 | 최대 길이: 128 |
오류:
조직 범위 쓰기 키가 필요합니다. 범위 필드는 저장된 범위와 병합됩니다.
엔드포인트: PUT /v1/tenant/{tenantId}/api-keys/{keyId}
인증: 조직 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| keyId | string | 경로 | 예 | 형식: uuid |
요청 본문:
{
"displayName": "string",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
},
"enabled": true,
"expiresAt": "2024-03-15T16:30:00Z"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| displayName | string | 아니요 | 최대 길이: 128 |
| scope | object | 아니요 | |
| enabled | boolean | 아니요 | |
| expiresAt | string | 아니요 | 형식: date-time |
응답 (200):
API 키를 업데이트했습니다
{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"organizationId": "00000000-0000-0000-0000-000000000000",
"displayName": "string",
"partialKey": "string",
"enabled": true,
"createdAt": "2024-03-15T16:30:00Z",
"lastUsedAt": "2024-03-15T16:30:00Z",
"expiresAt": "2024-03-15T16:30:00Z",
"scope": {
"read": true,
"write": true,
"uploadData": true,
"sessions": true
}
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| id | string | 예 | 형식: uuid |
| tenantId | string | 예 | 형식: uuid |
| organizationId | string | 예 | 형식: uuid |
| displayName | string | 예 | 최대 길이: 128 |
| partialKey | string | 예 | 최대 길이: 128 |
| enabled | boolean | 예 | 기본값: true |
| createdAt | string | 예 | 형식: date-time |
| lastUsedAt | string | 예 | 형식: date-time |
| expiresAt | string | 예 | 형식: date-time |
| scope | object | 예 |
오류:
조직 범위 쓰기 키가 필요합니다. 키는 논리적으로 삭제되며 즉시 인증에 사용할 수 없게 됩니다.
엔드포인트: DELETE /v1/tenant/{tenantId}/api-keys/{keyId}
인증: 조직 범위 API 키 · write 범위
매개변수:
| 이름 | 유형 | 위치 | 필수 | 설명 |
|---|---|---|---|---|
| tenantId | string | 경로 | 예 | 형식: uuid |
| keyId | string | 경로 | 예 | 형식: uuid |
응답 (200):
API 키를 삭제했습니다
{
"message": "string"
} | 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| message | string | 예 |
오류:
신용카드 등록이나 대기 없이 바로 이용할 수 있습니다. 조직의 업무 방식을 명확하고 유기적으로 연결된 프로세스 설계로 바꿔 보세요.
프로세스 아키텍처를 구축하고, 소유권과 통제 기준을 정립하며, 모든 계층의 역할과 책임을 조율하세요.
무료 체험을 시작하고 프로세스를 관리·운영하고 지속적으로 개선할 수 있는 신뢰할 만한 기반을 마련하세요.