NHN Cloud > Public API 사용 가이드 > 프레임워크 API
다음에서 소개하는 API를 통해 프로젝트 멤버를 생성하거나 역할을 부여하는 등 조직과 프로젝트를 관리할 수 있습니다. 프레임워크 API는 호출 시 인증/인가를 위해 User Access Key 토큰을 사용합니다. User Access Key 토큰은 User Access Key를 기반으로 발급되는 Bearer 타입의 일시적 액세스 토큰입니다. User Access Key 토큰 발급 및 사용에 대한 자세한 내용은 User Access Key 토큰을 참고하세요.
https://core.api.nhncloudservice.com/
Public API를 호출할 때는 아래 Request Header를 반드시 포함해야 합니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Header | x-nhn-authorization | String | Yes | 사용자가 발급받은 Bearer 타입 토큰 |
Public API 반환 시 아래 헤더 부분이 응답 본문에 포함됩니다.
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| isSuccessful | Boolean | No | 성공 여부 |
| resultCode | Integer | No | 결과 코드. 성공 시 0이 반환되며, 실패 시 오류 코드 반환 |
| resultMessage | String | No | 결과 메시지 |
| 이름 | 타입 | 크기 | 설명 |
|---|---|---|---|
| org-id | String | 16자 | 조직 ID |
| project-id | String | 8자 | 프로젝트 ID |
| product-id | String | 8자 | 서비스 ID |
| user-access-key-id | String | 20자 | User Access Key ID |
| project-app-key | String | 20자 | 프로젝트의 앱키 |
| product-app-key | String | 16자 | 서비스의 앱키 |
| uuid | String | 36자 | 멤버의 UUID |
주의
주의
API의 응답은 가이드에 명시되지 않은 필드가 추가될 수 있으므로, 새로운 필드가 추가되어도 오류가 발생하지 않도록 개발해야 합니다. 또한 DB 저장 시, 칼럼 사이즈가 변경될 수 있으므로 여유 있게 설정해야 합니다.
POST "/v1/projects/{project-id}/members"
프로젝트에 멤버를 추가하는 API입니다.
Project.Member.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 멤버를 추가할 프로젝트 ID |
| Request Body | request | CreateMemberRequest | Yes | 요청 |
주의
요청 시 memberUuid, email, userCode 중 하나는 반드시 값이 있어야 합니다.
memberUuid > email > userCode 순으로 값이 있는지 체크하고 있으면 해당 멤버를 프로젝트 멤버로 추가합니다.
한 요청에 한 명의 프로젝트 멤버만 만들 수 있습니다.
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| assignRoles | List<UserAssignRoleProtocol> | Yes | 사용자에게 할당할 역할 목록 |
| memberUuid | String | No | 추가할 멤버의 UUID |
| String | No | 추가할 멤버의 이메일 | |
| userCode | String | No | 추가할 IAM 계정 ID |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roleId | String | Yes | 역할 ID |
| conditions | List<AssignAttributeConditionProtocol> | No | 역할 조건 속성 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| attributeId | String | Yes | 조건 속성 ID |
| attributeOperatorTypeCode | String | Yes | 조건 속성 연산자 조건 속성 데이터 타입에 따라 사용할 수 있는 연산자가 다름
|
| attributeValues | List<String> | Yes | 조건 속성 값 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
POST "/v1/organizations/{org-id}/projects"
조직에 프로젝트를 추가하는 API입니다.
Organization.Project.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 프로젝트를 추가할 조직 ID |
| Request Body | request | CreateProjectRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| description | String | No | 프로젝트 설명(최대 100자) |
| projectName | String | Yes | 프로젝트 이름(최대 40자) |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"project": {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"description": "description",
"projectName": "projectName",
"projectId": "projectId",
"orgId": "orgId",
"projectStatusCode": "STABLE"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| regDateTime | Date | Yes | 프로젝트 생성 일시 |
| description | String | No | 프로젝트 설명 |
| ownerId | String | Yes | 프로젝트 소유자 멤버 ID |
| projectName | String | Yes | 프로젝트 이름 |
| projectId | String | Yes | 프로젝트 ID |
| orgId | String | Yes | 조직 ID |
| projectStatusCode | String | Yes | 프로젝트 상태
|
DELETE "/v1/projects/{project-id}/members/{target-uuid}"
사용자를 해당 프로젝트에서 삭제하는 API입니다.
Project.Member.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Path | target-uuid | String | Yes | 삭제 대상 멤버 UUID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/projects/{project-id}"
프로젝트를 삭제하는 API입니다.
아래 목록 중 하나의 권한이 필요합니다.
* Organization.Project.Delete
* Project.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 삭제할 프로젝트 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/projects/{project-id}/products/{product-id}/disable"
해당 프로젝트에서 사용자가 지정한 서비스를 더 이상 이용하지 않도록 비활성화하는 API입니다.
서비스명:Product.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 서비스를 종료하려는 프로젝트 ID |
| Path | product-id | String | Yes | 서비스 ID |
{
"childProducts": [ {
"productId": "productId",
"productName": "productName",
"statusCode": "STABLE"
} ],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| childProducts | List<ChildProduct> | No | 해당 서비스의 하위 서비스 정보로, 하위 서비스가 없으면 포함하지 않음. 하위 서비스를 먼저 비활성화하고 해당 서비스를 비활성화해야 함. |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| productId | String | Yes | 하위 서비스 ID |
| productName | String | Yes | 하위 서비스 이름 |
| statusCode | String | Yes | 서비스 상태(STABLE, CLOSED) |
POST "/v1/projects/{project-id}/products/{product-id}/enable"
해당 프로젝트에서 사용자가 지정한 서비스를 이용할 수 있도록 활성화 요청하는 API입니다.
서비스명:Product.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | product-id | String | Yes | 서비스 ID |
| Path | project-id | String | Yes | 서비스를 이용하려는 프로젝트 ID |
{
"secretKey": "secretKey",
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"appKey": "appKey",
"parentProduct": {
"productId": "productId",
"productName": "productName",
"statusCode": "STABLE"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| appKey | String | Yes | 해당 프로젝트에서 이용 중인 서비스의 앱키 정보 |
| parentProduct | ParentProduct | No | 상위 서비스 정보가 있으면 해당 정보를 표시하며, 상위 서비스가 없으면 포함하지 않음 |
| secretKey | String | No | 해당 프로젝트에서 이용 중인 서비스에 대한 비밀 키 정보 비밀 키를 이용하는 서비스에서만 제공 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| productId | String | Yes | 서비스 ID |
| productName | String | Yes | 서비스 이름 |
| statusCode | String | Yes | 서비스 상태(STABLE, CLOSED) |
GET "/v1/organizations/{org-id}/roles"
조직 사용자에게 부여할 수 있는 역할 목록을 요청하는 API입니다.
Organization.RoleGroup.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Query | categoryTypeCodes | List<String> | No | 역할/권한/역할 그룹 카테고리 구분(ROLE, PERMISSION, ROLE_GROUP) |
| Query | roleNameLike | String | No | 역할/권한/역할 그룹명 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"roles": [ {
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"roleCategory": "ORG_ROLE",
"categoryTypeCode": "ORG_ROLE_GROUP"
}],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"totalCount": 0
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| roles | List<RoleProtocol> | Yes | 역할 목록 |
| totalCount | Integer | Yes | 총 개수 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| categoryKey | String | Yes | 역할/권한 카테고리 분류 키
|
| categoryTypeCode | String | Yes | 역할 그룹/역할/권한 구분 코드(ORG_ROLE_GROUP, PERMISSION, ROLE, ROLE_GROUP, SYSTEM) |
| description | String | Yes | 역할/권한 설명 |
| roleCategory | String | Yes | 역할/권한 카테고리 대분류(ORG_ROLE, ORG_ROLE_GROUP, ORG_SERVICE_ROLE, PROJECT_ROLE, PROJECT_ROLE_GROUP, PROJECT_SERVICE_ROLE, SYSTEM_ROLE) |
| roleId | String | Yes | 역할/권한 ID |
| roleName | String | Yes | 역할/권한 이름 |
GET "/v1/projects/{project-id}/roles"
프로젝트 사용자에게 부여할 수 있는 역할 목록을 요청하는 API입니다.
Project.RoleGroup.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Query | categoryTypeCodes | List<String> | No | 역할/권한/역할 그룹 카테고리 구분(ROLE, PERMISSION, ROLE_GROUP) |
| Query | roleNameLike | String | No | 역할/권한/역할 그룹명 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"roles": [ {
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"roleCategory": "ORG_ROLE",
"categoryTypeCode": "ORG_ROLE_GROUP"
}],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"totalCount": 0
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| roles | List<RoleProtocol> | Yes | 역할 목록 |
| totalCount | Integer | Yes | 총 개수 |
GET "/v1/organizations/{org-id}/domains"
특정 조직의 도메인을 조회하는 API입니다.
Organization.Domain.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회할 조직의 ID |
{
"domainList": [
{
"domainId": "string",
"domainName": "string"
}
],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "string"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| domainList | List<OrgDomainProtocol> | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| orgDomainId | String | Yes | 조직 도메인 ID |
| orgDomainName | String | Yes | 조직 도메인 이름 |
GET "/v1/organizations/{org-id}/members/{member-uuid}"
조직에 소속된 멤버를 조회하는 API입니다.
Organization.Member.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 멤버를 조회할 조직 ID |
| Path | member-uuid | String | Yes | 조회할 멤버 UUID |
{
"orgMember": {
"memberUuid": "memberUuid",
"roleId": "roleId",
"memberTypeCode": "memberTypeCode",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
}]
}],
"inviteStatusCode": "COMPLETE",
"memberName": "memberName",
"recentPasswordModifyYmdt": "2000-01-23T04:56:07.000+00:00",
"recentLoginYmdt": "2000-01-23T04:56:07.000+00:00",
"roleCode": "roleCode",
"secondFactorCertificationYn": "secondFactorCertificationYn",
"id": "id",
"joinYmdt": "2000-01-23T04:56:07.000+00:00",
"email": "email"
},
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgMember | OrgMemberRoleBundleProtocol | No | 추가된 멤버 정보, 오류 시 포함되지 않음 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| String | Yes | 멤버 이메일 | |
| id | String | No | 멤버 ID(IAM 계정만 제공) |
| inviteStatusCode | String | Yes | COMPLETE, EXPIRE, UNKNOWN, WAIT |
| joinYmdt | Date | Yes | 조직 멤버 등록 일시 |
| memberName | String | Yes | 멤버 이름 |
| memberTypeCode | String | Yes | 계정 구분(TOAST_CLOUD: NHN Cloud 계정, IAM: IAM 계정) |
| memberUuid | String | Yes | 멤버의 UUID |
| recentLoginYmdt | Date | Yes | 마지막 로그인 일시 |
| recentPasswordModifyYmdt | Date | No | 마지막 비밀번호 변경 일시 |
| roleCode | String | No | 역할 ID |
| roles | List<RoleBundleProtocol> | No | 연관 역할 목록(조건 속성 포함) |
| secondFactorCertificationYn | String | No | 2단계 로그인 설정 여부(NHN Cloud 계정만 제공) |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roleId | String | Yes | 역할 ID |
| roleName | String | Yes | 역할 이름 |
| description | String | No | 역할 설명 |
| categoryKey | String | Yes | 역할/권한 카테고리 분류 키
|
| categoryTypeCode | String | Yes | 역할 그룹/역할/권한 구분 코드(ORG_ROLE_GROUP, PERMISSION, ROLE, ROLE_GROUP, SYSTEM) |
| conditions | List<AttributeConditionProtocol> | No | 조건 속성 목록 |
| roleApplyPolicyCode | String | Yes | 역할 사용 여부 ALLOW, DENY |
| regDateTime | Date | Yes | 역할 생성 일시 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| attributeDataTypeCode | String | Yes | 조건 속성 데이터 타입(BOOLEAN, DATETIME, DAY_OF_WEEK, IPADDRESS, NUMERIC, STRING, TIME) |
| attributeDescription | String | No | 조건 속성 설명 |
| attributeId | String | Yes | 조건 속성 ID |
| attributeName | String | Yes | 조건 속성 이름 |
| attributeOperatorTypeCode | String | Yes | 조건 속성 연산자 조건 속성 데이터 타입에 따라 사용할 수 있는 연산자가 다름
|
| attributeValues | List<String> | Yes | 조건 속성 값 |
POST "/v1/organizations/{org-id}/members/search"
해당 조직에 소속된 NHN Cloud 멤버 목록을 조회하는 API입니다.
Organization.Member.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | SearchOrgMembersRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| memberStatusCodes | List<String> | No | 조회할 멤버의 상태
|
| roleIds | Set<String> | No | 멤버들이 부여받은 역할 ID들 |
| paging | PagingBean | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| page | Integer | No | 대상 페이지, 기본값 1 |
{
"orgMembers": [ {
"memberUuid": "memberUuid",
"memberTypeCode": "memberTypeCode",
"inviteStatusCode": "COMPLETE",
"maskingEmail": "maskingEmail",
"memberName": "memberName",
"secondFactorCertificationYn": "secondFactorCertificationYn",
"id": "id",
"joinYmdt": "2000-01-23T04:56:07.000+00:00",
"recentPasswordModifyYmdt": "2000-01-23T04:56:07.000+00:00",
"email": "email",
"recentLoginYmdt": "2000-01-23T04:56:07.000+00:00"
}],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgMembers | List<OrgMemberWithInviteMemberrotocol> | Yes | 조직 멤버 목록 |
| paging | PagingResponse | Yes | 페이지 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| String | Yes | 멤버의 이메일 주소 | |
| inviteStatusCode | String | No | 멤버의 초대 상태(COMPLETE, EXPIRE, UNKNOWN, WAIT) |
| joinYmdt | Date | Yes | 멤버 가입 일시 |
| maskingEmail | String | Yes | 멤버의 마스킹된 이메일 |
| memberName | String | Yes | 멤버의 이름 |
| memberTypeCode | String | Yes | 멤버 구분(TOAST_CLOUD: NHN Cloud 계정, IAM: IAM 계정) |
| memberUuid | String | No | 멤버의 UUID 초대 중인 경우 값을 반환하지 않음 |
| recentLoginYmdt | Date | Yes | 마지막 로그인 일시 |
| recentPasswordModifyYmdt | Date | No | 마지막 비밀번호 변경 일시 |
| secondFactorCertificationYn | String | No | 2단계 로그인 설정 여부(NHN Cloud 멤버만 제공) |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| page | Integer | No | 대상 페이지, 기본값 1 |
| totalCount | Long | Yes | 총 건수 |
GET "/v1/organizations/{org-id}/project-role-groups"
조직에서 설정한 프로젝트 공통 역할 그룹 목록을 조회하는 API입니다.
Organization.Project.RoleGroup.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회 대상 조직 ID |
| Query | descriptionLike | String | No | 설명 |
| Query | roleGroupNameLike | String | No | 역할 그룹명 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
"roleGroups": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG",
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| roleGroups | List<RoleGroupProtocol> | Yes | 프로젝트에서 사용 가능한 역할 그룹 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| description | String | No | 역할 그룹 설명 |
| regDateTime | Date | Yes | 역할 그룹 생성 일시 |
| roleGroupId | String | Yes | 역할 그룹 ID |
| roleGroupName | String | Yes | 역할 그룹의 이름 |
| roleGroupType | String | Yes | 역할 그룹의 종류
|
GET "/v1/product-uis/hierarchy"
청구서에 노출되는 홈페이지 카테고리, 홈페이지 서비스 정보를 반환하는 API입니다.
회원이면 특정한 권한 없이 호출할 수 있는 API입니다.
단, 조직 서비스를 조회하는 경우에는 해당 조직이나 조직 하위에 있는 프로젝트 멤버여야만 합니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Query | productUiType | String | Yes | 서비스 UI 타입
|
| Query | orgId | String | No | 서비스 UI 타입이 ORG인 경우, 조직 ID를 반드시 입력해야 함 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"productUiList": [ {
"productUiId": "productUiId",
"parentProductUiId": "parentProductUiId",
"children": [ null ],
"productUiName": "productUiName",
"productId": "productId",
"manualLink": "manualLink"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| productUiList | List<ProductUiHierarchyProtocol> | Yes | 홈페이지 카테고리 서비스 UI 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| children | List<ProductUiHierarchyProtocol> | No | 홈페이지 서비스 서비스 UI 목록 |
| manualLink | String | No | |
| parentProductUiId | String | No | 서비스 UI 구분 |
| productId | String | No | |
| productUiId | String | No | 서비스 UI 식별 키 |
| productUiName | String | No |
GET "/v1/projects/{project-id}/products/{product-id}"
서비스명:ProductAppKey.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회 대상 프로젝트 ID |
| Path | product-id | String | Yes | 조회 대상 서비스 ID |
{
"hasUpdateSecretKeyPermission": true,
"product": {
"updateDate": "updateDate",
"productId": "productId",
"relationDate": "relationDate",
"secretKey": "secretKey",
"externalId": "externalId",
"productSecretKeyCode": "F",
"productName": "productName",
"updateUuid": "updateUuid",
"appKey": "appKey",
"productStatusCode": "STABLE",
"projectId": "projectId",
"statusCode": "STABLE"
},
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| hasUpdateSecretKeyPermission | Boolean | Yes | 비밀 키 재발급 가능 권한 |
| product | ProjectProductRelationAndProductProtocol | Yes | 지정한 서비스 ID에 대해서 프로젝트에서 사용 중인 서비스 정보를 반환, 오류 시 포함하지 않음 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| appKey | String | Yes | 해당 프로젝트에서 이용 중인 서비스의 앱키 정보 |
| externalId | String | No | 테넌트 ID 서비스에 테넌트 ID가 존재하는 경우에만 제공 |
| productId | String | Yes | 서비스 ID |
| productName | String | Yes | 서비스 이름 |
| productSecretKeyCode | String | No | 비밀 키 사용 여부 T: 사용함 나머지: 사용하지 않음(F, N) |
| productStatusCode | String | Yes | 서비스 상태(STABLE, CLOSED) |
| projectId | String | Yes | 해당 서비스를 사용하는 프로젝트 ID |
| relationDate | Date | Yes | 서비스 이용 시작 일시 |
| secretKey | String | Yes | 서비스 SecretKey secretKey를 이용하는 서비스에서만 제공 |
| statusCode | String | Yes | 해당 서비스의 이용 상태(STABLE, CLOSED) |
| updateDate | Date | No | 서비스 최종 수정 일시 |
| updateUuid | String | No | 서비스 앱키 수정자 UUID |
GET "/v1/projects/{project-id}/members/{member-uuid}"
프로젝트에 소속된 특정 멤버를 조회하는 API입니다.
Project.Member.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 멤버를 조회할 프로젝트 ID |
| Path | member-uuid | String | Yes | 조회할 멤버 UUID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"projectMember": {
"emailAddress": "emailAddress",
"memberTypeCode": "IAM",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
} ]
} ],
"maskingEmail": "maskingEmail",
"memberName": "memberName",
"relationDateTime": "2000-01-23T04:56:07.000+00:00",
"uuid": "uuid",
"statusCode": "COMPLETE"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| projectMember | ProjectMemberRoleBundleProtocol | Yes | 추가된 멤버 정보, 오류 시 포함되지 않음 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| emailAddress | String | No | 멤버 이메일 주소 |
| maskingEmail | String | No | 멤버의 마스킹된 이메일 |
| memberName | String | No | 멤버 이름 |
| memberTypeCode | String | No | 멤버 구분(IAM, TOAST_CLOUD) |
| relationDateTime | Date | No | 멤버 추가 시간 |
| roles | List<RoleBundleProtocol> | No | 연관 역할 목록(조건 속성 포함) |
| statusCode | String | No | 초대 상태 코드(COMPLETE, EXPIRE, UNKNOWN, WAIT) |
| uuid | String | No | 멤버 UUID |
POST "/v1/projects/{project-id}/members/search"
프로젝트에 소속된 멤버 목록을 조회하기 위한 API입니다.
Project.Member.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회할 프로젝트 ID |
| Request Body | request | SearchProjectMembersRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| memberStatusCodes | List<String> | No | 프로젝트 멤버 상태 코드(INVITED, STABLE) |
| roleIds | List<String> | No | 역할 ID 목록 |
| paging | PagingBean | No |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
"projectMembers": [ {
"emailAddress": "emailAddress",
"memberTypeCode": "TOAST_CLOUD",
"maskingEmail": "maskingEmail",
"memberName": "memberName",
"relationDateTime": "2000-01-23T04:56:07.000+00:00",
"uuid": "uuid",
"statusCode": "COMPLETE"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| projectMembers | List<ProjectMemberProtocol> | Yes | 프로젝트 멤버 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| emailAddress | String | No | 멤버 이메일 주소 |
| maskingEmail | String | No | 멤버의 마스킹된 이메일 |
| memberName | String | No | 멤버 이름 |
| memberTypeCode | String | No | 멤버 구분 |
| relationDateTime | Date | No | 멤버 추가 시간 |
| statusCode | String | No | 초대 상태 코드(COMPLETE, EXPIRE, UNKNOWN, WAIT) |
| uuid | String | No | 멤버 UUID |
GET "/v1/projects/{project-id}/project-role-groups/{role-group-id}"
프로젝트의 역할 그룹을 조회하는 API입니다.
Project.RoleGroup.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회 대상 프로젝트 ID |
| Path | role-group-id | String | Yes | 프로젝트 역할 그룹 ID 프로젝트 공통 역할 그룹 ID는 조회 불가 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"roleGroup": {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
} ]
} ],
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| roleGroup | RoleGroupBundleProtocol | Yes | 연관 역할을 포함한 역할 그룹 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roleGroupId | String | No | 역할 그룹 ID |
| roleGroupName | String | No | 역할 그룹 이름 |
| description | String | No | 역할 그룹 설명 |
| roleGroupType | String | No | 역할 그룹 구분(조직, 프로젝트) |
| roles | List<RoleBundleProtocol> | No | 연관 역할 목록 |
| regDateTime | Date | No | 등록 일시 |
GET "/v1/organizations/{org-id}/project-role-groups/{role-group-id}"
프로젝트 공통 역할 그룹을 조회하는 API입니다.
Organization.Project.RoleGroup.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회 대상 조직 ID |
| Path | role-group-id | String | Yes | 프로젝트 공통 역할 그룹 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"roleGroup": {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
} ]
} ],
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| roleGroup | RoleGroupBundleProtocol | Yes | 연관 역할을 포함한 역할 그룹 |
GET "/v1/projects/{project-id}/project-role-groups"
프로젝트의 역할 그룹을 전체 조회하는 API입니다.
Project.RoleGroup.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회 대상 프로젝트 ID |
| Query | descriptionLike | String | No | 설명 |
| Query | roleGroupNameLike | String | No | 역할 그룹명 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
"roleGroups": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG",
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| roleGroups | List<RoleGroupProtocol> | Yes | 프로젝트에서 사용 가능한 역할 그룹 목록 |
GET "/v1/organizations/{org-id}/projects"
특정 조직에 속한 STABLE 한 상태의 프로젝트 목록을 조회하는 API입니다.
조직의 멤버
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회할 조직의 ID |
| Query | memberUuid | String | No | 조직의 멤버 UUID |
| Query | projectName | String | No | 프로젝트 이름 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
{
"projectList": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"delDateTime": "2000-01-23T04:56:07.000+00:00",
"description": "description",
"orgId": "orgId",
"projectStatusCode": "STABLE",
"modDateTime": "2000-01-23T04:56:07.000+00:00",
"projectName": "projectName",
"projectId": "projectId"
} ],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| projectList | List<OrgProjectMemberRoleProtocol> | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| delDateTime | Date | No | 프로젝트 삭제 일시 |
| description | String | No | 프로젝트 설명 |
| modDateTime | Date | No | 프로젝트 수정 일시 |
| orgId | String | Yes | 프로젝트가 속한 조직 ID |
| projectId | String | Yes | 프로젝트 ID |
| projectName | String | Yes | 프로젝트 이름 |
| projectStatusCode | String | Yes | 프로젝트 상태
|
| regDateTime | Date | Yes | 프로젝트 등록 일시 |
GET "/v1/organizations/{org-id}/governances"
활성화된 거버넌스를 조회하는 API입니다.
Organization.Governance.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회 대상 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"usingGovernances": [ {
"regDatetime": "2000-01-23T04:56:07.000+00:00",
"governanceTypeCode": "governanceTypeCode"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| usingGovernances | List<GovernanceProtocol> | No | 사용 중인 거버넌스 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| governanceTypeCode | String | No | 거버넌스 타입 - APPROVE_PROCESS: 승인 처리 - BLOCK_STORAGE_SNAPSHOT: BlockStorage의 Snapshot 기능 사용 여부 - IAAS_RESOURCE_PROTECTION_AND_SEPARATED_NETWORK: IAAS 리소스 권한 통제 및 접속 단말 제한 설정 - PRIVACY_PROTECTION: 개인 정보 보호 - UNIQUE_INSTANCE_NAME: 인스턴스명 중복 방지 |
| regDatetime | Date | No | 거버넌스 사용 설정 일시 |
POST "/v1/organizations/{org-id}/project-role-groups"
프로젝트 공통 역할 그룹을 생성하는 API입니다.
Organization.Project.RoleGroup.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | CreateRoleGroupRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| description | String | No | 역할 그룹 설명 |
| roleGroupName | String | Yes | 역할 그룹 이름 |
| roles | List<AssignRoleProtocol> | Yes | 역할 그룹에 할당할 역할 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| conditions | List<AssignAttributeConditionProtocol> | No | 역할 조건 속성 |
| roleApplyPolicyCode | String | Yes | 역할 사용 여부 ALLOW, DENY |
| roleId | String | Yes | 역할 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/organizations/{org-id}/project-role-groups"
프로젝트 공통 역할 그룹을 삭제하는 API입니다.
Organization.Project.RoleGroup.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | DeleteRoleGroupRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roleGroupIds | List<String> | Yes | 역할 그룹 ID 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/organizations/{org-id}/project-role-groups/{role-group-id}/infos"
프로젝트 공통 역할 그룹의 이름과 설명을 수정하는 API입니다.
Organization.Project.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupInfoRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| description | String | No | 역할 그룹 설명 |
| roleGroupName | String | Yes | 역할 그룹 이름 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/organizations/{org-id}/project-role-groups/{role-group-id}/roles"
프로젝트 공통 역할 그룹의 역할을 수정하는 API입니다.
Organization.Project.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roles | List<AssignRoleProtocol> | Yes | 역할 그룹에 할당할 역할 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
POST "/v1/projects/{project-id}/project-role-groups"
프로젝트에 역할 그룹을 생성하는 API입니다.
Project.RoleGroup.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Request Body | request | CreateRoleGroupRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/projects/{project-id}/project-role-groups"
프로젝트 역할 그룹을 삭제하는 API입니다.
Project.RoleGroup.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Request Body | request | DeleteRoleGroupRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/projects/{project-id}/project-role-groups/{role-group-id}/infos"
프로젝트 역할 그룹의 이름과 설명을 수정하는 API입니다.
Project.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupInfoRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/projects/{project-id}/project-role-groups/{role-group-id}/roles"
프로젝트 역할 그룹의 역할을 수정하는 API입니다.
Project.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roles | List<AssignRoleProtocol> | Yes | 역할 그룹에 할당할 역할 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/organizations/{org-id}/org-role-groups"
조직의 역할 그룹을 전체 조회하는 API입니다.
Organization.RoleGroup.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회 대상 조직 ID |
| Query | descriptionLike | String | No | 설명(해당 문자열이 포함된 결과 조회) |
| Query | roleGroupNameLike | String | No | 역할 그룹명(해당 문자열이 포함된 결과 조회) |
| Query | limit | Integer | No | 페이지당 표시 건수(기본값: 20, 최솟값: 1, 최댓값: 2000) |
| Query | page | Integer | No | 대상 페이지(기본값: 1, 최솟값: 1) |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
"roleGroups": [
{
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG_ROLE_GROUP",
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
}
]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| roleGroups | List<RoleGroupProtocol> | Yes | 조직에서 사용 가능한 역할 그룹 목록 |
GET "/v1/organizations/{org-id}/org-role-groups/{role-group-id}"
조직의 역할 그룹을 조회하는 API입니다.
Organization.RoleGroup.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회 대상 조직 ID |
| Path | role-group-id | String | Yes | 조직 역할 그룹 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"roleGroup": {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleGroupType": "ORG_ROLE_GROUP",
"roles": [
{
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ROLE",
"conditions": [
{
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [
"attributeValues",
"attributeValues"
],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
}
]
}
],
"description": "description",
"roleGroupName": "roleGroupName",
"roleGroupId": "roleGroupId"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| roleGroup | RoleGroupBundleProtocol | Yes | 연관 역할을 포함한 역할 그룹 |
POST "/v1/organizations/{org-id}/org-role-groups"
조직에 역할 그룹을 생성하는 API입니다.
Organization.RoleGroup.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | CreateRoleGroupRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/organizations/{org-id}/org-role-groups"
조직 역할 그룹을 삭제하는 API입니다.
Organization.RoleGroup.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | DeleteRoleGroupRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/organizations/{org-id}/org-role-groups/{role-group-id}/infos"
조직 역할 그룹의 이름과 설명을 수정하는 API입니다.
Organization.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupInfoRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/organizations/{org-id}/org-role-groups/{role-group-id}/roles"
조직 역할 그룹의 역할을 수정하는 API입니다.
Organization.RoleGroup.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Path | role-group-id | String | Yes | 역할 그룹 ID |
| Request Body | request | UpdateRoleGroupRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roles | List<AssignRoleProtocol> | Yes | 역할 그룹에 할당할 역할 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/organizations/{org-id}/members/{member-uuid}"
해당 조직에 소속된 멤버의 역할을 수정하는 API입니다.
Organization.Member.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Path | member-uuid | String | Yes | 수정할 멤버의 UUID |
| Request Body | request | UpdateMemberRoleRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| assignRoles | List<UserAssignRoleProtocol> | Yes | 사용자에게 할당할 역할 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/projects/{project-id}/members/{member-uuid}"
프로젝트에서 지정한 멤버의 역할을 수정하는 API입니다.
Project.Member.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Path | member-uuid | String | Yes | 역할 변경 대상 멤버 UUID |
| Request Body | request | UpdateMemberRoleRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/iam/organizations/{org-id}/members/{member-uuid}"
조직에 소속된 IAM 계정을 조회하는 API입니다.
Organization.Member.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조회할 조직 ID |
| Path | member-uuid | String | Yes | 조회할 조직의 IAM 계정 UUID |
{
"orgMember": {
"country": "country",
"englishName": "englishName",
"nativeName": "nativeName",
"passwordChangedAt": "2000-01-23T04:56:07.000+00:00",
"lastLoggedInAt": "2000-01-23T04:56:07.000+00:00",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
} ]
}],
"officeHoursEnd": "officeHoursEnd",
"userCode": "userCode",
"organizationId": "organizationId",
"createdAt": "2000-01-23T04:56:07.000+00:00",
"emailAddress": "emailAddress",
"lastLoggedInIp": "lastLoggedInIp",
"nickname": "nickname",
"idProviderId": "idProviderId",
"mobilePhoneCountryCode": "mobilePhoneCountryCode",
"id": "id",
"department": "department",
"saasRoles": [ {
"role": "role",
"productId": "productId",
"productName": "productName"
}],
"profileImageUrl": "profileImageUrl",
"lastAccessedAt": "2000-01-23T04:56:07.000+00:00",
"maskingEmail": "maskingEmail",
"telephone": "telephone",
"creationType": "creationType",
"idProviderType": "idProviderType",
"officeHoursBegin": "officeHoursBegin",
"mobilePhone": "mobilePhone",
"corporate": "corporate",
"idProviderUserId": "idProviderUserId",
"name": "name",
"position": "position",
"status": "status"
},
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgMember | OrgIamMemberRoleBundleProtocol | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| corporate | String | No | 회사명 |
| country | String | No | 국적(조직 Owner의 국적) |
| createdAt | Date | No | 생성 일시 |
| creationType | String | No | 계정의 생성 타입 |
| department | String | No | 부서명 |
| emailAddress | String | Yes | IAM 계정 이메일 주소 |
| englishName | String | No | 영어 이름 |
| id | String | Yes | IAM 계정 UUID |
| idProviderId | String | No | 외부 인증을 사용하는 경우, 인증기관 ID |
| idProviderType | String | No | service: IAM 계정 직접 로그인 sso: 고객 SSO 연동 |
| idProviderUserId | String | No | 외부 인증기관이 제공한 사용자 ID |
| lastAccessedAt | Date | No | 계정의 마지막 접속 일시, 없을 경우 null 반환 |
| lastLoggedInAt | Date | No | 계정의 마지막 로그인 일시, 없을 경우 null 반환 |
| lastLoggedInIp | String | No | 계정의 마지막 로그인 IP 주소, 없을 경우 null 반환 |
| maskingEmail | String | No | IAM 계정의 마스킹된 이메일주소 |
| mobilePhone | String | No | IAM 계정의 휴대전화 번호 |
| mobilePhoneCountryCode | String | No | 휴대전화 번호 국가 코드 2자리 영문자 |
| name | String | Yes | IAM 계정의 이름 |
| nativeName | String | No | 모국어 이름 |
| nickname | String | No | 사용자 별명 |
| officeHoursBegin | String | No | 업무 시작 시간 예: 09:00 |
| officeHoursEnd | String | No | 업무 종료 시간 예: 18:00 |
| organizationId | String | Yes | IAM 계정의 조직 ID |
| passwordChangedAt | Date | No | 계정의 마지막 비밀번호 변경 일시, 없을 경우 null 반환 |
| position | String | No | 직위 |
| profileImageUrl | String | No | 프로필 이미지 URL |
| roles | List<RoleBundleProtocol> | No | 연관 역할 목록(조건 속성 포함) |
| saasRoles | List<IamMemberRole> | No | IAM 계정 역할 |
| status | String | No | 계정의 상태 |
| telephone | String | No | IAM 계정의 전화번호 |
| userCode | String | Yes | IAM 계정 ID |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| productId | String | No | |
| productName | String | No | |
| role | String | No |
GET "/v1/iam/organizations/{org-id}/members"
해당 조직에 소속된 IAM 계정 목록을 조회하는 API입니다.
Organization.Member.Iam.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Query | String | No | IAM 계정의 이메일 주소 | |
| Query | emailLike | String | No | |
| Query | idProviderType | String | No | service: IAM 계정 직접 로그인 sso: 고객 SSO 연동 |
| Query | nameLike | String | No | |
| Query | statuses | List<String> | No | |
| Query | userCode | String | No | IAM 계정 ID |
| Query | userCodeLike | String | No | |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"orgMembers": [ {
"country": "country",
"englishName": "englishName",
"nativeName": "nativeName",
"passwordChangedAt": "2000-01-23T04:56:07.000+00:00",
"lastLoggedInAt": "2000-01-23T04:56:07.000+00:00",
"officeHoursEnd": "officeHoursEnd",
"userCode": "userCode",
"organizationId": "organizationId",
"createdAt": "2000-01-23T04:56:07.000+00:00",
"emailAddress": "emailAddress",
"lastLoggedInIp": "lastLoggedInIp",
"nickname": "nickname",
"idProviderId": "idProviderId",
"mobilePhoneCountryCode": "mobilePhoneCountryCode",
"id": "id",
"department": "department",
"profileImageUrl": "profileImageUrl",
"lastAccessedAt": "2000-01-23T04:56:07.000+00:00",
"maskingEmail": "maskingEmail",
"telephone": "telephone",
"creationType": "creationType",
"idProviderType": "idProviderType",
"officeHoursBegin": "officeHoursBegin",
"mobilePhone": "mobilePhone",
"corporate": "corporate",
"idProviderUserId": "idProviderUserId",
"name": "name",
"position": "position",
"status": "status"
} ],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgMembers | List<IamOrgMemberProtocol> | No | 조직 IAM 계정 목록 |
| paging | PagingResponse | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| id | String | No | IAM 계정 UUID |
| userCode | String | Yes | 로그인 시 사용할 IAM 계정 ID |
| name | String | Yes | IAM 계정의 사용자 이름 |
| emailAddress | String | Yes | IAM 계정의 이메일 주소 공지를 수신하거나 비밀번호 변경 안내 메일 수신 시 사용됨 |
| maskingEmail | String | No | IAM 계정의 마스킹된 이메일 주소 |
| mobilePhone | String | No | IAM 계정의 휴대전화 번호 |
| telephone | String | No | IAM 계정의 전화번호 |
| position | String | No | 직위 |
| department | String | No | 부서명 |
| corporate | String | No | 회사명 |
| profileImageUrl | String | No | 프로필 이미지 URL |
| englishName | String | No | 영문 이름 |
| nativeName | String | No | 모국어 이름 |
| nickname | String | No | 사용자 별명 |
| officeHoursBegin | String | No | 업무 시작 시간 예: 09:00 |
| officeHoursEnd | String | No | 업무 종료 시간 예: 18:00 |
| status | String | Yes | 계정 상태를 변경할 수 있음
|
| creationType | String | No | 생성 일시 |
| idProviderId | String | No | 외부 인증을 사용하는 경우, 인증기관 ID |
| idProviderType | String | No | service: IAM 계정 직접 로그인(기본값) sso: 고객 SSO 연동(연동되지 않은 경우 설정 불가) |
| idProviderUserId | String | No | 외부 인증기관이 제공한 사용자 ID |
| createdAt | Date | No | 생성 일시 |
| lastAccessedAt | Date | No | 마지막 접속일시 |
| lastLoggedInAt | Date | No | 마지막 로그인일시 |
| lastLoggedInIp | String | No | 마지막 로그인 한 IP |
| passwordChangedAt | Date | No | 비밀번호 변경 일시 |
| mobilePhoneCountryCode | String | No | 휴대전화 번호 국가 코드 2자리 영문자 |
| organizationId | String | No | IAM 계정의 조직 ID |
| country | String | No | 국적(조직 Owner의 국적) |
POST "/v1/iam/organizations/{org-id}/members"
조직에 IAM 계정을 추가하는 API입니다.
Organization.Member.Iam.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
| Request Body | request | AddIamOrgMemberRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| member | AddIamOrgMemberProtocol | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| userCode | String | Yes | 로그인 시 사용할 IAM 계정 ID |
| name | String | Yes | IAM 계정의 사용자 이름 |
| emailAddress | String | Yes | IAM 계정의 이메일 주소 공지를 수신하거나 비밀번호 변경 안내 메일 수신 시 사용됨 |
| mobilePhone | String | No | IAM 계정의 휴대전화 번호 |
| telephone | String | No | IAM 계정의 전화번호 |
| position | String | No | 직위 |
| department | String | No | 부서명 |
| corporate | String | No | 회사명 |
| profileImageUrl | String | No | 프로필 이미지 URL |
| englishName | String | No | 영문 이름 |
| nativeName | String | No | 모국어 이름 |
| nickname | String | No | 사용자 별명 |
| officeHoursBegin | String | No | 업무 시작 시간 예: 09:00 |
| officeHoursEnd | String | No | 업무 종료 시간 예: 18:00 |
| status | String | Yes | 계정 상태를 변경할 수 있음
|
| creationType | String | No | 연동(sso), 초대(invited), 등록(registred) |
| mobilePhoneCountryCode | String | No | 휴대전화 번호 국가 코드 2자리 영문자, 휴대전화 번호 입력 시 필수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"uuid": "uuid"
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| uuid | String | No | IAM 계정 UUID |
POST "/v1/iam/organizations/{org-id}/members/{member-id}/send-password-setup-mail"
IAM 계정의 비밀번호를 변경할 수 있는 이메일을 전송하는 API입니다.
Organization.Member.Iam.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 대상이 되는 조직 ID |
| Path | member-id | String | Yes | 비밀번호를 변경하려는 IAM 계정의 UUID |
| Request Body | request | SendPasswordSetupMailRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| locale | String | Yes | 사용자의 로케일 정보 예: ko |
| returnUrl | String | Yes | 이메일 변경 알림 메일을 통해서 비밀번호를 변경한 이후 이동할 페이지 주소 정보 이동할 주소 정보에는 반드시 toast.com, dooray.com 또는 nhncloud.com 도메인을 입력해야 함 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/iam/organizations/{org-id}/members/{member-uuid}"
조직의 IAM 계정 정보를 수정하는 API입니다.
Organization.Member.Iam.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 대상이 되는 조직 ID |
| Path | member-uuid | String | Yes | 변경하려는 IAM 계정의 UUID |
| Request Body | request | UpdateIamMemberRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| member | UpdateIamOrgMemberProtocol | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| userCode | String | Yes | 로그인 시 사용할 IAM 계정 ID |
| name | String | Yes | IAM 계정의 사용자 이름 |
| emailAddress | String | Yes | IAM 계정의 이메일 주소 공지를 수신하거나 비밀번호 변경 안내 메일 수신 시 사용됨 |
| mobilePhone | String | No | IAM 계정의 휴대전화 번호 |
| telephone | String | No | IAM 계정의 전화번호 |
| position | String | No | 직위 |
| department | String | No | 부서명 |
| corporate | String | No | 회사명 |
| profileImageUrl | String | No | 프로필 이미지 URL |
| englishName | String | No | 영문 이름 |
| nativeName | String | No | 모국어 이름 |
| nickname | String | No | 사용자 별명 |
| officeHoursBegin | String | No | 업무 시작 시간 예: 09:00 |
| officeHoursEnd | String | No | 업무 종료 시간 예: 18:00 |
| status | String | Yes | 계정 상태를 변경할 수 있음
|
| creationType | String | No | 연동(sso), 초대(invited), 등록(registred) |
| idProviderUserId | String | No | 외부 인증기관이 제공한 사용자 ID |
| mobilePhoneCountryCode | String | No | 휴대전화 번호 국가 코드 2자리 영문자, 휴대전화 번호 입력 시 필수 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
POST "/v1/iam/organizations/{org-id}/members/{member-id}/set-password"
조직 IAM 계정의 비밀번호를 변경하는 API입니다.
Organization.Member.Iam.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 대상이 되는 조직 ID |
| Path | member-id | String | Yes | 비밀번호를 변경하려는 IAM 계정의 UUID |
| Request Body | request | UpdateIamPasswordRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| password | String | Yes | 설정할 비밀번호 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/organizations/{org-id}/products/ip-acl"
IP ACL 설정을 조회하는 API입니다.
Organization.Governance.IpAcl.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"orgIpAcl": [ {
"productId": "productId",
"ips": [ "ips" ]
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgIpAcl | List<OrgIpAclProtocol> | Yes | 설정 결과, 빈 목록이면 설정이 안된 상태 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| ips | List<String> | Yes | 허용 IP들 |
| productId | String | Yes | 서비스 ID undefined이면 공통 설정 |
GET "/v1/iam/organizations/{org-id}/settings/session"
로그인 세션 설정 정보를 조회하는 API입니다.
Organization.Setting.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": ""
},
"result": {
"content": {
"multiSessionsLimit": 1,
"sessionTimeoutMinutes": 10,
"mobileSessionTimeoutMinutes": 10,
"sessionType": "fixed"
}
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| result | Content | Yes | 설정 내용 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| multiSessionsLimit | Integer | Yes | 허용 멀티 세션 수 |
| sessionTimeoutMinutes | Integer | Yes | 세션 타임아웃 |
| mobileSessionTimeoutMinutes | Integer | Yes | 모바일 세션 타임아웃 |
| sessionType | String | Yes | fixed/idle. 기본값은 fixed |
GET "/v1/iam/organizations/{org-id}/settings/security-mfa"
로그인 2차 인증에 대한 설정을 조회하는 API입니다.
Organization.Setting.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": ""
},
"result": {
"range": "organization",
"organizationMfaSetting": {
"type": "email",
"bypassByIp": {
"enable": true
"ipList": [
"1.1.1.1",
"1.1.1.1/24"
]
}
},
"serviceMfaSettings": [{
"serviceId": "{toast-service-id}",
"type": "totp",
"bypassByIp": {
"enable": true
"ipList": [
"1.1.1.1",
"1.1.1.1/24"
]
}
}]
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| result | Result | No | 응답 내용 설정한 적이 없으면 null이 반환됨 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| range | Integer | No | 조직/서비스 여부 organization(공통 설정), services(서비스별 설정) |
| organizationMfaSetting | OrganizationMfaSetting | No | 조직 mfa 설정 정보 공통 설정 |
| serviceMfaSettings | ServiceMfaSettings | No | 서비스별 mfa 설정 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| type | String | No | mfa 타입 none(설정 안 함), totp(Google OTP), email(이메일) |
| bypassByIp | BypassByIp | No | 예외 IP |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| serviceId | Sting | No | 서비스 ID |
| type | String | No | mfa 타입 none(설정 안 함), totp(Google OTP), email(이메일) |
| bypassByIp | BypassByIp | No | 서비스 타입. none, totp, email |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| enable | Boolean | No | 활성화 여부 true(사용 중), false(사용 안함) |
| ipList | List<String> | No | 예외 IP 목록 |
GET "/v1/iam/organizations/{org-id}/settings/security-login-fail"
로그인 실패 보안 설정을 조회하는 API입니다.
Organization.Setting.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": ""
},
"result": {
"enable": false,
"loginFailCount": {
"limit": "5",
"blockMinutes": "2"
}
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| result | Result | No | 로그인 실패 보안을 설정한 경우에만 반환되며, 설정하지 않으면 null이 반환됨 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| enable | Boolean | Yes | 활성화 여부 true(사용 중), false(사용 안함) |
| loginFailCount | LoginFailCount | No | 로그인 실패 보안 설정 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| limit | Integer | No | 시도 허용 횟수 |
| blockMinutes | Integer | No | 로그인 금지 시간 |
GET "/v1/iam/organizations/{org-id}/settings/password-rule"
비밀번호 정책에 대한 설정을 조회하는 API입니다.
Organization.Setting.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": ""
},
"result": {
"content": {
"schemaVersion": 1,
"value": {
"ruleType": "default",
"passwordConstraints": {
"minLength": 8,
"mustNotIncludeIllegalSequence": true,
"mustIncludeUpperCase": true,
"mustIncludeLowerCase": true,
"mustIncludeNumberCase": true,
"mustIncludeSpecialCase": true
},
"passwordExpiry": {
"enabled": true,
"expiryDays": 90,
"allowExpend": true
},
"limitPasswordReuse": {
"enabled": true,
"limitCount": 1
},
"applyRule": "onChangePassword"
}
}
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| result | Content | Yes | 설정 내용 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| schemaVersion | Integer | Yes | 스키마 버전 |
| value | Value | Yes | 비밀번호 정책 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| ruleType | String | Yes | 비밀번호 정책 default(기본 비밀번호 정책), custom(사용자 비밀번호 정책) |
| passwordConstraints | PasswordConstraints | Yes | 비밀번호 강도 |
| passwordExpiry | PasswordExpiry | Yes | 비밀번호 만료 |
| limitPasswordReuse | LimitPasswordReuse | Yes | 비밀번호 재사용 제한 |
| applyRule | String | Yes | 비밀번호 정책 적용 시점 onChangePassword(비밀번호 변경 시 적용), onLogin(즉시 적용) |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| minLength | integer | Yes | 비밀번호 최소 길이 |
| mustNotIncludeIllegalSequence | boolean | Yes | 영문자 1개 이상 true(설정), false(설정 안 함) |
| mustIncludeUpperCase | boolean | Yes | 영문 대문자 1개 이상 true(설정), false(설정 안 함) |
| mustIncludeLowerCase | boolean | Yes | 영문 소문자 1개 이상 true(설정), false(설정 안 함) |
| mustIncludeNumberCase | boolean | Yes | 숫자 1개 이상 true(설정), false(설정 안 함) |
| mustIncludeSpecialCase | boolean | Yes | 특수 문자 1개 이상 true(설정), false(설정 안 함) |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| enable | Boolean | Yes | 사용 여부 true(설정), false(설정 안 함) |
| expiryDays | Integer | Yes | 만료 기간 |
| allowExpend | Boolean | Yes | 만료 시 연장 가능 여부 true(가능), false(불가능) |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| enable | Boolean | Yes | 사용 여부 true(설정), false(설정 안 함) |
| limitCount | Integer | Yes | 재사용 제한 횟수 |
POST "/v1/billing/contracts/basic/products/prices/search"
카운터에 설정된 단가를 조회하는 API입니다. 각 언어별로 노출명, 금액 계산을 위한 종류를 알 수 있습니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Query | limit | Integer | No | |
| Request Body | request | GetContractProductPriceRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| counterNames | List<String> | No | 서비스 메타의 counter Name 목록 없을 경우 전체 검색함 |
| paging | Paging | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| page | Integer | No | 대상 페이지, 기본값 1 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 6,
"page": 1,
"totalCount": 5
},
"prices": [ {
"contractDiscountPolicyId": "jxzEL2C09G20oDX3",
"originalPrice": 0.8008281904610115,
"monthFrom": "monthFrom",
"displayNameJa": "displayNameJa",
"rangeFrom": 1.4658129805029452,
"monthTo": "monthTo",
"counterName": "counterName",
"slidingCalculationTypeCode": "NONE",
"rangeTo": 5.962133916683182,
"displayNameZh": "displayNameZh",
"price": 6.027456183070403,
"contractId": "3YVRwIVU",
"displayNameEn": "displayNameEn",
"displayNameKo": "displayNameKo",
"seq": 5,
"useFixPriceYn": "N"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | 정렬 기준이 없는 페이징 결과 반환 |
| prices | List<ContractProductPriceProtocol> | Yes | 카운터의 단가 정보를 배열로 반환 오류 시 포함되지 않음 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| limit | Integer | Yes | 조회되는 개수 제한 기본값은 20 |
| page | Integer | Yes | |
| totalCount | Integer | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| contractDiscountPolicyId | String | Yes | 약정 요금 정책 아이디 |
| contractId | String | Yes | 약정 아이디 |
| counterName | String | Yes | 카운터 |
| displayNameEn | String | No | 카운터의 영어 이름 |
| displayNameJa | String | No | 카운터의 일본어 이름 |
| displayNameKo | String | Yes | 카운터의 한국어 이름 |
| displayNameZh | String | No | 카운터의 중국어 이름 현재는 영어로 노출됨 |
| monthFrom | String | Yes | 단가 정보가 유효한 시작월(포함) |
| monthTo | String | Yes | 단가 정보가 유효한 종료월(미포함) |
| originalPrice | BigDecimal | Yes | 단가 |
| price | BigDecimal | Yes | 단가 |
| rangeFrom | BigDecimal | Yes | 단가에 속하게 되는 사용량 범위 시작(미포함) |
| rangeTo | BigDecimal | Yes | 단가에 속하게 되는 사용량 범위 종료(포함) |
| seq | Long | Yes | 일련번호 |
| slidingCalculationTypeCode | String | Yes | 슬라이딩 요금 계산 유형 NONE, SECTION_SUM, SECTION_SELECTED |
| useFixPriceYn | String | Yes | 고정 금액 여부(Y: 고정 금액 , N: 단가 계산) Y: 범위에 들어올 경우 price가 금액이 됨 N:(사용량 x 단가)가 금액이 됨 |
GET "/v1/billing/contracts/basic/products"
청구서에 노출되는 메인 카테고리와 서브 카테고리 및 포함되는 카운터의 목록을 제공하는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Query | limit | Integer | No | 조회되는 개수 제한 기본값은 20 |
| Query | page | Integer | No |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 6,
"page": 1,
"totalCount": 5
},
"products": [ {
"productId": "KGDeiKUq",
"unitName": "hours",
"regionTypeCode": "regionTypeCode",
"calcUnitCode": "HOURS",
"displayOrder": 0,
"minUsage": 2.3021358869347655,
"description": "description",
"productUiId": "CQvbgjJw",
"categorySub": "eNWZ3jZq2FsMSHaQ",
"convertUsageTypeCode": "NONE",
"marketPlaceMandatoryUsePeriod": 5,
"counterName": "c2.small",
"meterUnitCode": "HOURS",
"counterTypeCode": "DELTA",
"unit": 1,
"categoryMain": "eNWZ3jZq2FsMSHaQ",
"parentCounterName": "parentCounterName",
"budgetUsageTypeYn": "Y",
"chargingTypeId": "API CALLS",
"productMetadataStatusCode": "STABLE",
"usageAggregationUnitCode": "RESOURCE_ID"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| products | List<ProductMetadata> | Yes | 서비스 메타 정보 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| budgetUsageTypeYn | String | No | 예산 사용량 타입 Yn Y, N |
| calcUnitCode | String | Yes | 금액 계산 시 사용할 단위(미터링 단위를 정산 단위로 변환하여 금액 계산을 수행함), 명세서에 노출할 단위 KB, MB, GB, TB, SECONDS, MINUTE, HOURS, DAYS, MB_HOURS, GB_SECONDS, GB_HOURS, GB_DAYS, CORE_SECONDS, CORE_HOURS, CORE_DAYS, USERS, MAU, MAD, DAU, CALLS, COUNTS, CCU, VCPU_HOURS, COUNT_HOURS |
| categoryMain | String | Yes | 메인 카테고리 |
| categorySub | String | Yes | 서브 카테고리 |
| chargingTypeId | String | Yes | 과금 유형 ID |
| convertUsageTypeCode | String | Yes | 사용량 변환 타입 코드 NONE, HOUR_AVERAGE, DAY_AVERAGE |
| counterName | String | Yes | 카운터 |
| counterTypeCode | String | Yes | 사용량의 합산에 대한 방법
|
| description | String | No | 카운터 설명 |
| displayOrder | Integer | Yes | 노출 순서 |
| marketPlaceMandatoryUsePeriod | Integer | No | 마켓플레이스 필수 사용 기간 |
| meterUnitCode | String | Yes | 서비스에서 미터링 저장 시 사용량 단위 BYTES, KB, MB, GB, TB, CORE, HOURS, MINUTE, USERS, MAU, MAD, DAU, CALLS, COUNTS, CCU, SECONDS |
| minUsage | BigDecimal | Yes | 최소 사용량 |
| parentCounterName | String | Yes | 부모 카운터 이름 |
| productId | String | Yes | 서비스 아이디 |
| productMetadataStatusCode | String | Yes | 카운터 상태 코드 STABLE, CLOSED |
| productUiId | String | Yes | 홈페이지 카테고리/홈페이지 서비스 식별 ID |
| regionTypeCode | String | Yes | 카운터네임이 소속된 리전 코드
|
| unit | Long | Yes | 정산 단위 |
| unitName | String | Yes | 청구서에 노출할 이름 |
| usageAggregationUnitCode | String | No | 사용량 집계 단위 RESOURCE_ID, COUNTER_NAME |
GET "/v1/authentications/projects/{project-id}/project-appkeys"
프로젝트에서 사용 중인 프로젝트 통합 Appkey 목록을 조회하는 API입니다.
Project.ProjectAppKey.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회 대상 프로젝트 ID |
{
"authenticationList": [ {
"appKey": "appKey",
"authStatus": "STABLE",
"modDatetime": "2000-01-23T04:56:07.000+00:00",
"authId": "authId",
"projectId": "projectId",
"lastUsedDatetime": "2000-01-23T04:56:07.000+00:00",
"reIssueDatetime": "2000-01-23T04:56:07.000+00:00",
"regDatetime": "2000-01-23T04:56:07.000+00:00"
} ],
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| authenticationList | List<ProjectAppKeyResponse> | No | 프로젝트 통합 Appkey 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| authId | String | No | 내부적으로 관리하는 인증 수단 아이디 |
| appKey | String | No | 콘솔에 노출되는 프로젝트 통합 Appkey |
| authStatus | String | No | 인증 상태 코드(STABLE, STOP, BLOCKED) |
| projectId | String | No | 프로젝트 ID |
| lastUsedDatetime | Date | No | 마지막 사용 일시 |
| modDatetime | Date | No | 삭제 일시 |
| reIssueDatetime | Date | No | 재생성 일시 |
| regDatetime | Date | No | 생성 일시 |
GET "/v1/authentications/user-access-keys"
멤버의 User Access Key ID 목록을 조회하는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"authentications": [ {
"userAccessKeyID": "userAccessKeyID",
"secretAccessKey": "secretAccessKey",
"authStatus": "STABLE",
"modDatetime": "2000-01-23T04:56:07.000+00:00",
"authId": "authId",
"uuid": "uuid",
"tokenExpiryPeriod": 0,
"tokenFormatCode" : "OPAQUE",
"lastUsedDatetime": "2000-01-23T04:56:07.000+00:00",
"reIssueDatetime": "2000-01-23T04:56:07.000+00:00",
"regDatetime": "2000-01-23T04:56:07.000+00:00",
"lastTokenUsedDatetime": "2025-02-11T01:30:56.771Z",
"validTokenCount": 0
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| authentications | List<UserAccessKeyResponse> | No | 인증 정보 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| authId | String | No | 내부적으로 관리하는 인증 수단 아이디 |
| userAccessKeyID | String | No | User Access Key ID |
| secretAccessKey | String | No | 비밀 키(마스킹 처리됨) |
| authStatus | String | No | 인증 상태 코드(STABLE, STOP, BLOCKED) |
| uuid | String | No | 사용자 UUID |
| lastUsedDatetime | Date | No | User Access Key ID로 인증한 마지막 일시 |
| modDatetime | Date | No | 삭제 일시 |
| reIssueDatetime | Date | No | 재생성 일시 |
| regDatetime | Date | No | 생성 일시 |
| tokenExpiryPeriod | Long | No | 토큰 만료 주기(초 단위) |
| tokenFormatCode | String | No | 토큰 포맷 코드(OPAQUE, JWT) |
| lastTokenUsedDatetime | Long | No | 토큰으로 인증/인가한 마지막 일시 |
| validTokenCount | Long | No | 유효한 토큰 개수 |
POST "/v1/authentications/projects/{project-id}/project-appkeys"
프로젝트에서 사용할 AppKey를 생성하는 API입니다.
Project.ProjectAppKey.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | AppKey를 등록할 프로젝트 ID |
| Request Body | request | AddProjectAppKeyRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| appkeyAlias | String | Yes | 프로젝트 통합 Appkey 별칭 100자 제한 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"authentication": {
"appKey": "appKey",
"authId": "authId"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| authentication | ResponseProtocol | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| authId | String | No | 내부적으로 관리하는 인증 수단 아이디 |
| appKey | String | No | 프로젝트 통합 Appkey |
POST "/v1/authentications/user-access-keys"
멤버의 User Access Key ID를 등록하는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Request Body | PostUserAppKeyRequest | PostUserAppKeyRequest | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| tokenFormatCode | String | No | 토큰 포맷 코드 OPAQUE와 JWT 포맷을 제공하며, 현재 JWT 포맷 토큰은 EasyQueue 서비스에서만 사용 가능함 기본값은 QPAQUE |
| tokenExpiryPeriod | Long | No | 토큰 만료 기간 초 단위이며, OPAQUE 포맷 토큰일 경우 기본값은 하루이고, JWT 토큰은 1시간 OPAQUE 포맷 토큰은 최소 1분, 최대 하루까지 유효한 토큰을 생성 가능하고, JWT 포맷 토큰은 최소 1분, 최대 1시간까지 유효한 토큰을 생성 가능함 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"authentication": {
"userAccessKeyID": "userAccessKeyID",
"secretAccessKey": "secretAccessKey",
"authId": "authId",
"tokenExpiryPeriod": 0,
"tokenFormatCode": "OPAQUE"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| authentication | ResponseProtocol | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| authId | String | No | 내부적으로 관리하는 인증 수단 아이디 |
| userAccessKeyID | String | No | User Access Key ID |
| secretAccessKey | String | No | 비밀 키 |
| tokenExpiryPeriod | Long | No | 토큰 만료 기간(초 단위) |
| tokenFormatCode | String | No | 토큰 포맷 코드(OPAQUE, JWT) |
DELETE "/v1/authentications/projects/{project-id}/project-appkeys/{app-key}"
프로젝트 AppKey를 삭제하는 API입니다.
Project.ProjectAppKey.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 대상 프로젝트 ID |
| Path | app-key | String | Yes | 삭제할 프로젝트 통합 Appkey |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
PUT "/v1/authentications/user-access-keys/{user-access-key-id}/secretkey-reissue"
User Access Key ID의 비밀 키를 재발급하는 API입니다.
자신의 User Access Key ID 비밀 키만 재발급 가능
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | user-access-key-id | String | Yes | User Access Key ID |
| Request Body | request | ReissueSecretKeyRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| needExpireTokens | Boolean | No | 발급 받은 토큰 만료 여부(true: 만료함, false: 만료하지 않음) 기본값 false |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"authentication": {
"secretAccessKey": "secretAccessKey"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| authentication | ResponseProtocol | No |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| secretAccessKey | String | Yes | 비밀키 |
PUT "/v1/authentications/user-access-keys/{user-access-key-id}"
멤버의 User Access Key ID 상태를 변경하는 API입니다.
OPAQUE 토큰용 User Access Key ID를 중지시키면 OPAQUE 토큰도 같이 만료되며, JWT 토큰용 User Access Key ID는 중지해도 JWT 토큰이 만료되지 않습니다.
자신의 User Access Key ID만 수정 가능
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | user-access-key-id | String | Yes | User Acess Key ID |
| Request Body | request | UpdateUserAccessKeyStatusRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| status | String | Yes | 변경할 상태(STOP: 중지, STABLE: 사용) |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/authentications/user-access-keys/{user-access-key-id}"
User Access Key ID를 삭제하는 API입니다.
자신의 User Access Key ID만 삭제 가능
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | user-access-key-id | String | Yes | User Access Key ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/authentications/user-access-keys/{user-access-key-id}/tokens"
User Access Key ID로 발급한 OPAQUE 토큰 목록을 조회하는 API입니다.
자신의 User Access Key ID로 발급한 토큰만 조회 가능
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | user-access-key-id | String | Yes | User Access Key ID |
| Query | token | String | No | 토큰 전문 부분 검색은 지원하지 않음 |
| Query | status | String | No | 토큰 상태 ACTIVE: 활성, EXPIRED: 만료 |
| Query | lastAccessDatetimeFrom | Date | No | 토큰 마지막 사용 일시 지정한 시간보다 크거나 같은 시간에 사용된 토큰을 조회 예: 2025-02-11T00:56:50.902Z |
| Query | expireDatetimeFrom | Date | No | 토큰 만료 일시 지정한 시간보다 크거나 같은 시간에 만료된 토큰을 조회 예: 2025-02-11T00:56:50.902Z |
| Query | regDatetimeFrom | Date | No | 토큰 등록 일시 지정한 시간보다 크거나 같은 시간에 생성된 토큰을 조회 예: 2025-02-11T00:56:50.902Z |
| Query | page | Integer | No | 대상 페이지 기본값 1 |
| Query | limit | Integer | No | 페이지당 표시 건수 기본값 20 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"tokens": [
{
"accessToken": "string",
"expireDatetime": "2025-02-11T00:56:50.902Z",
"lastAccessDatetime": "2025-02-11T00:56:50.902Z",
"regDatetime": "2025-02-11T00:56:50.902Z",
"status": "ACTIVE",
"tokenId": 0
}
],
"totalItems": 0
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| accessToken | String | Yes | 마스킹 처리된 토큰 |
| expireDatetime | Date | No | 토큰 만료일 |
| lastAccessDatetime | Date | Yes | 토큰으로 인증/인가한 마지막 일시 |
| regDatetime | Date | Yes | 토큰 생성 일시 |
| status | String | Yes | 토큰 상태 |
| tokenId | Long | Yes | 토큰 ID |
DELETE "/v1/authentications/user-access-keys/{user-access-key-id}/tokens"
User Access Key ID로 발급한 OPAQUE 토큰을 다건 만료시키는 API입니다.
JWT 토큰을 발급한 User Access Key ID로 요청해도 JWT 토큰은 만료되지 않습니다.
요청에서 토큰 ID와 토큰 목록이 모두 빈 상태면 해당 User Access Key ID로 발급된 모든 토큰이 만료됩니다.
토큰 ID와 토큰 목록이 모두 있으면 둘 모두가 일치하는 토큰만 삭제되며, 요청에 담긴 User Access Key ID의 주인이 아닌 다른 사용자가 호출 시 토큰이 만료되지 않습니다.
자신의 User Access Key ID로 발급한 토큰만 만료 가능
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | user-access-key-id | String | Yes | User Access Key ID |
| Request Body | tokenIds | List<Long> | No | 토큰 ID 목록 |
| Request Body | tokens | List<String> | No | 토큰 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
POST "/v1/iam/projects/{project-id}/members"
IAM 계정을 프로젝트 멤버로 추가하는 API입니다.
Project.Member.Iam.Create
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 멤버를 추가할 프로젝트 ID |
| Request Body | request | AddIamProjectMemberRequest | Yes | 요청 |
주의
한 요청에 한 명의 프로젝트 멤버만 만들 수 있습니다.
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| assignRoles | List<UserAssignRoleProtocol> | Yes | 사용자에게 할당할 역할 목록 |
| memberUuid | String | Yes | 추가할 멤버의 UUID |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| roleId | String | Yes | 역할 ID |
| conditions | List<AssignAttributeConditionProtocol> | No | 역할 조건 속성 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| attributeId | String | Yes | 조건 속성 ID |
| attributeOperatorTypeCode | String | Yes | 조건 속성 연산자 조건 속성 데이터 타입에 따라 사용할 수 있는 연산자가 다름
|
| attributeValues | List<String> | Yes | 조건 속성 값 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
DELETE "/v1/iam/projects/{project-id}/members"
IAM 계정을 해당 프로젝트에서 삭제하는 API입니다.
Project.Member.Iam.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Request Body | request | DeleteMembersRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| memberUuids | List<String> | Yes | 삭제할 대상 계정의 UUID 목록 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/iam/projects/{project-id}/members/{member-uuid}"
프로젝트에 소속된 특정 IAM 멤버를 조회하는 API입니다.
Project.Member.Iam.Get
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 멤버를 조회할 프로젝트 ID |
| Path | member-uuid | String | Yes | 조회할 멤버 UUID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"projectMember": {
"uuid": "uuid",
"id": "id",
"emailAddress": "emailAddress",
"maskingEmail": "maskingEmail",
"name": "memberName",
"relationDateTime": "2000-01-23T04:56:07.000+00:00",
"roles": [ {
"regDateTime": "2000-01-23T04:56:07.000+00:00",
"roleApplyPolicyCode": "ALLOW",
"roleId": "roleId",
"roleName": "roleName",
"categoryKey": "categoryKey",
"description": "description",
"categoryTypeCode": "ORG_ROLE_GROUP",
"conditions": [ {
"attributeId": "attributeId",
"attributeOperatorTypeCode": "ALLOW",
"attributeValues": [ "attributeValues", "attributeValues" ],
"attributeDescription": "attributeDescription",
"attributeName": "attributeName",
"attributeDataTypeCode": "BOOLEAN"
} ]
} ]
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| projectMember | ProjectIamMemberRoleBundleProtocol | Yes | 추가된 멤버 정보, 오류 시 포함되지 않음 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| uuid | String | Yes | 멤버 UUID |
| id | String | Yes | 아이디 |
| name | String | No | 이름 |
| emailAddress | String | No | 멤버 이메일 주소 |
| maskingEmail | String | No | 멤버의 마스킹된 이메일 |
| mobilePhone | String | No | 전화 번호 |
| relationDateTime | Date | No | 멤버 추가 시간 |
| joinYmdt | Date | No | 가입 일시 |
| recentLoginYmdt | Date | No | 최근 로그인 일시 |
| recentPasswordModifyYmdt | Date | No | 최근 비밀번호 변경 일시 |
| roles | List<RoleBundleProtocol> | No | 연관 역할 목록(조건 속성 포함) |
GET "/v1/iam/projects/{project-id}/members"
프로젝트에 소속된 IAM 멤버 목록을 조회하기 위한 API입니다.
Project.Member.Iam.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 조회할 프로젝트 ID |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
"projectMembers": [ {
"uuid": "uuid",
"id": "id",
"emailAddress": "emailAddress",
"maskingEmail": "maskingEmail",
"memberName": "memberName",
"relationDateTime": "2000-01-23T04:56:07.000+00:00"
} ]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| projectMembers | List<IamProjectMemberProtocol> | Yes | 프로젝트 멤버 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| uuid | String | Yes | 멤버 UUID |
| id | String | Yes | 아이디 |
| name | String | No | 이름 |
| emailAddress | String | No | 멤버 이메일 주소 |
| maskingEmail | String | No | 멤버의 마스킹된 이메일 |
| mobilePhone | String | No | 전화 번호 |
| relationDateTime | Date | No | 멤버 추가 시간 |
| joinYmdt | Date | No | 가입 일시 |
| recentLoginYmdt | Date | No | 최근 로그인 일시 |
| recentPasswordModifyYmdt | Date | No | 최근 비밀번호 변경 일시 |
PUT "/v1/iam/projects/{project-id}/members/{member-uuid}"
프로젝트에서 지정한 IAM 멤버의 역할을 변경하는 API입니다.
Project.Member.Iam.Update
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | project-id | String | Yes | 프로젝트 ID |
| Path | member-uuid | String | Yes | 역할 변경 대상 멤버 UUID |
| Request Body | request | UpdateMemberRoleRequest | Yes | 요청 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET "/v1/authentications/organizations/{org-id}/user-access-keys"
조직에 소속된 멤버 및 프로젝트 멤버의 인증 정보를 조회하는 API입니다.
Organization.UserAccessKey.List
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | UserAccessKey를 조회할 조직 ID |
| Query | paging | Paging | No | 페이지당 표시 건수, 기본값 20 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"authenticationList": [
{
"authId": "makedAuthId",
"uuid": "uuid",
"userAccessKeyID": "maskedUserAccessKeyID",
"secretAccessKey": "",
"tokenExpiryPeriod": 86400,
"regDatetime": "2024-05-03T10:27:58.000+00:00",
"modDatetime": "2024-05-03T10:27:58.000+00:00",
"lastUsedDatetime": "2024-08-16T14:09:37.000+00:00",
"reIssueDatetime": "2024-08-29T12:00:45.000+00:00",
"lastTokenUsedDatetime": null,
"validTokenCount": null,
"authStatus": "STABLE"
}
],
"paging": {
"limit": 0,
"page": 6,
"totalCount": 1
},
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| authenticationList | List<UserAccessKeyResponseV7> | Yes | 멤버별 인증 키 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| authId | String | Yes | 인증 수단 ID(마스킹 처리) |
| uuid | String | Yes | 사용자 UUID |
| userAccessKeyID | String | Yes | User Access Key ID(마스킹 처리) |
| secretAccessKey | String | No | 비밀 키(공백 처리) |
| authStatusCode | String | Yes | 인증 상태 코드(STABLE, STOP, BLOCKED) |
| tokenExpiryPeriod | Long | No | 토큰 만료 주기 |
| regDatetime | Date | No | 생성 일시 |
| modDatetime | Date | No | 삭제 일시 |
| lastUsedDatetime | Date | No | 마지막 사용 일시 |
| reIssueDatetime | Date | No | secretAccessKey 재생성 일시 |
| lastTokenUsedDatetime | Date | No | 토큰 마지막 사용 일시 |
| validTokenCount | Long | No | 유효한 토큰 개수 |
GET /v1/organizations
회원이면 특정한 권한 없이 호출 가능한 API입니다.
[Query Parameter]
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| orgName | String | No | 조직 이름 |
| orgNameMatchTypeCode | String | No | 조직 이름 검색 타입(EXACT: 정확히 일치, LIKE: 부분 일치, 기본값: LIKE) |
| page | Integer | No | 대상 페이지, 기본값 1 |
| limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
[Response Body]
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"orgList": [
{
"org": {
"orgId": "org-id",
"orgName": "organization-name",
"orgStatusCode": "STABLE",
"ownerUuid": "owner-uuid",
"regDateTime": "2023-01-01T00:00:00+09:00",
"remainingJobCode": "NONE",
"ipAclTypeCode": "COMMON",
"orgDomainList": [
{
"domainId": "domain-id",
"domainName": "domain-name"
}
]
},
"orgMember": {
"existOrgMember": true,
"orgOwner": true
},
"orgOwner": {
"email": "owner@example.com",
"name": "owner-name",
"restrictStatusCode": "STABLE",
"country": "KR",
"restrictTypes": []
}
}
],
"paging": {
"page": 1,
"limit": 20,
"totalCount": 1
}
}
[Response Body 설명]
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgList | List<OrgMemberRelationProtocol> | Yes | 조직 목록 정보 |
| paging | PagingResponse | Yes | 페이징 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| org | OrgProtocol | Yes | 조직 정보 |
| orgMember | OrgMemberProtocol | Yes | 조직/프로젝트 멤버 정보 |
| orgOwner | OwnerProtocol | Yes | 조직 Owner 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| orgId | String | Yes | 조직 ID |
| orgName | String | Yes | 조직 이름 |
| orgStatusCode | String | Yes | 조직 상태 코드(STABLE, CLOSED) |
| ownerUuid | String | Yes | 조직 Owner UUID |
| regDateTime | Date | Yes | 조직 생성일시 |
| remainingJobCode | String | Yes | 조직 후속 작업(NONE, IAM_ORG_CREATE, IAM_ORG_UPDATE, IAM_ORG_DELETE) |
| ipAclTypeCode | String | Yes | 조직 IP ACL 타입 코드(COMMON, INDIVIDUAL) |
| orgDomainList | List<OrgDomainProtocol> | Yes | 조직 도메인 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| existOrgMember | Boolean | Yes | 조직 멤버 존재 여부 |
| orgOwner | Boolean | Yes | 조직 Owner 여부 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| String | Yes | 조직 Owner 이메일 | |
| name | String | Yes | 조직 Owner 이름 |
| restrictStatusCode | String | Yes | 조직 Owner 제약 상태(HOLD, MEMBER_BLOCKED, RESOURCE_BLOCKED, RESOURCE_DELETED, STABLE, UNPAID) |
| country | String | Yes | 조직 Owner 국가 코드 |
| restrictTypes | List<String> | Yes | 조직 Owner 제약 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| domainId | String | Yes | 조직 도메인 ID |
| domainName | String | Yes | 조직 도메인 이름 |
POST /v1/organizations
자신의 조직을 추가하는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Request Body | request | CreateOrgRequest | Yes | 요청 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| orgName | String | Yes | 생성할 조직 이름(최대 70자) |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"orgId": "org-id",
"orgName": "organization-name",
"owner": {
"email": "owner@example.com",
"name": "owner-name",
"ownerId": "owner-uuid",
"restrictTypes": []
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| orgId | String | Yes | 조직 ID |
| orgName | String | Yes | 조직 이름 |
| owner | Owner | Yes | 조직 Owner 정보 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| String | Yes | 조직 Owner 이메일 | |
| name | String | Yes | 조직 Owner 이름 |
| ownerId | String | Yes | 조직 Owner ID |
| restrictTypes | List<String> | Yes | 제약 대상 목록 |
DELETE /v1/organizations/{org-id}
자신의 조직을 삭제하는 API입니다.
Organization.Delete
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Path | org-id | String | Yes | 조직 ID |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes |
GET /v1/products
제공되는 서비스 목록들을 조회하는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Query | productId | String | No | 서비스 ID |
| Query | productCategoryCode | String | No | 서비스 카테고리 코드(PROJECT, ORG, MARKET_PLACE) |
| Query | productName | String | No | 서비스 이름 |
| Query | productNameLike | String | No | 서비스 이름 Like 검색 |
| Query | limit | Integer | No | 페이지당 표시 건수, 기본값 20 |
| Query | page | Integer | No | 대상 페이지, 기본값 1 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"paging": {
"limit": 1,
"page": 1,
"totalCount": 1
},
"products": [
{
"parentProductId": "productId",
"productCategoryCode": "PROJECT",
"productId": "productId",
"productName": "productName"
}
]
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| paging | PagingResponse | Yes | |
| products | List<Product> | Yes | 서비스 정보 목록 |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| parentProductId | String | No | 부모 서비스 ID |
| productCategoryCode | String | Yes | 서비스 카테고리 코드(PROJECT, ORG, MARKET_PLACE) |
| productId | String | Yes | 서비스 ID |
| productName | String | Yes | 서비스 이름 |
GET /v1/messages/role
역할의 다국어 목록을 가져오는 API입니다.
회원이면 특정한 권한 없이 호출 가능한 API입니다.
| 구분 | 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|---|
| Query | messageType | String | No | 메시지 타입
|
| Query | languages | List<String> | No | 언어
|
| Query | keyword | String | No | 검색 키워드 |
| Query | messageId | String | No | 메시지 ID |
| Query | limit | Integer | Yes | 페이지당 표시 건수 |
| Query | page | Integer | Yes | 대상 페이지 |
{
"header": {
"isSuccessful": true,
"resultCode": 0,
"resultMessage": "resultMessage"
},
"messages": [
{
"i18nMessageSeq": 0,
"categoryId": "categoryId",
"messageId": "messageId",
"messageType": "MESSAGE",
"description": "description",
"koKr": "한국어 메시지",
"enUs": "English message",
"jaJp": "日本語メッセージ",
"zhCn": "中文消息"
}
],
"paging": {
"limit": 10,
"page": 1,
"totalCount": 100
}
}
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| header | 공통 응답 | Yes | |
| messages | List<MessageProtocol> | Yes | 메시지 목록 |
| paging | PagingResponse | Yes |
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| i18nMessageSeq | Long | No | 메시지 순번 |
| categoryId | String | No | 카테고리 ID |
| messageId | String | No | 메시지 ID |
| messageType | String | No | 메시지 타입(MESSAGE, ERROR) |
| description | String | No | 설명 |
| koKr | String | No | 한국어 메시지 |
| enUs | String | No | 영어 메시지 |
| jaJp | String | No | 일본어 메시지 |
| zhCn | String | No | 중국어 메시지 |
| 결과 코드 | 설명 | 조치 |
|---|---|---|
| 80007 | 만료되었거나 존재하지 않는 토큰을 사용해서 호출한 경우 발생하는 오류 | 새로운 토큰을 발급하여 사용 |
| -6 | 권한 없는 호출자가 호출한 경우에 발생하는 오류 | 호출자에게 적절한 권한을 부여 |
| -8 | 조직 IP ACL 정책에 의해 IP 검증이 실패한 경우 발생하는 오류 | 조직 IP ACL에 해당 IP가 등록되었는지 확인 |
| 404 | 없는 API 호출 시 발생 | 호출하는 API의 httpmethod,uri를 확인 |
| 400 501 502 503 504 505 |
요청 파라미터가 적절하지 않을 때 발생하는 오류 | 요청 파라미터의 필수값 및 설정 가능한 값 등을 확인 |
| 500 | 비정상 시스템 오류 | 담당자에게 문의 |
| 1000 | 파라미터가 잘못될 경우 발생하는 오류 조직 IAM 계정 API - IAM 계정 비밀번호 변경 이메일 전송 요청 값 returnUrl 이 허가된 도메인이 아닐 때 발생(허가된 도메인: toast.com, dooray.com, nhncloud.com) |
요청 파라미터 확인 |
| 1201 | 서버 내부적인 API 요청이 실패하여 발생하는 오류 | 오류 메시지에 포함된 오류 메시지와 코드를 바탕으로 해결 포함된 오류 메시지와 코드만으로는 해결이 어려울 경우 담당자에게 문의 |
| 10005 70008 1104 |
요청 파라미터가 적절하지 않을 때 발생하는 오류 | 요청 파라미터의 필수값 및 설정 가능한 값 등을 확인 |
| 10009 | 조직 또는 프로젝트에 존재하지 않은 역할을 부여할 때 발생하는 오류 | 멤버에게 존재하는 역할을 부여하도록 변경 |
| 10010 | 역할 그룹 삭제 시, 프로젝트 멤버(초대중인 멤버 포함)에 해당 역할 그룹만 부여된 경우 발생하는 오류 프로젝트 멤버 역할 변경 시, 아무 역할도 부여하지 않을 때 발생하는 오류 |
1) 삭제하려는 역할 그룹만 가진 프로젝트 멤버 멤버(초대중인 멤버 포함)들의 역할을 다른 역할로 변경 또는 해당 멤버들 삭제 2) 프로젝트 멤버 역할 변경 시, 요청에 역할에 대한 값을 설정하여 요청 |
| 10012 | 프로젝트 멤버 삭제 시, 해당 멤버가 삭제되면서 해당 프로젝트에 ADMIN 역할을 가진 멤버가 더 이상 존재하지 않을 경우 발생하는 오류 | 1) 삭제 대상이 아닌 다른 프로젝트 멤버에게 ADMIN 역할 부여 2) ADMIN 역할이 아닌 대상을 삭제 |
| 12100 | 프로젝트 멤버가 존재하지 않을 때 발생하는 오류 | 존재하는 프로젝트 멤버 UUID 사용 |
| 12107 | 요청 uuid와 대상 uuid가 동일한 것이 허용되지 않는 API에서 동일할 경우 발생하는 오류 | 대상 uuid와 요청 uuid를 다르게 설정 |
| 12400 | 존재하지 않거나 삭제된 프로젝트에 멤버를 추가할 경우 발생하는 오류 | 존재하는 프로젝에 멤버 추가하도록 변경 |
| 12401 | 프로젝트 생성 시, 해당 프로젝트의 조직 Owner 계정에 설정된 프로젝트 생성 개수 제한을 초과했을 경우 발생하는 오류 | 1) 사용하지 않는 프로젝트를 삭제하여 생성 가능한 프로젝트 수 확보 2) 담당자를 통해 프로젝트 최대 생성 개수 조정 요청 |
| 12500 | 프로젝트 삭제 시, 사용 중인 서비스가 존재할 때 발생하는 오류 | 해당 프로젝트의 사용 중인 서비스 전부 비활성화 처리 후 프로젝트 삭제 처리 시도 |
| 13001 | 서비스 활성화/비활성화 실패 시 발생하는 오류 | 담당자에게 문의 |
| 13002 | 이미 활성화 상태인 서비스를 다시 활성화했을 경우 발생하는 오류 | 기존에 활성화된 서비스를 활용 |
| 13004 | 활성화 불가능한 서비스를 활성화했을 경우 발생하는 오류 | 활성화 가능한 서비스에 대해 활성화 |
| 13006 | 법인 전용 서비스 활성화, 조직 Owner의 멤버 타입이 법인이 아닐 경우 발생하는 오류 | 법인 계정 타입을 가진 조직 Owner의 조직 하위 프로젝트에서 서비스 활성화 시도 |
| 22006 | 추가 시 이미 존재하는 경우 발생 | 중복된 요청이 오지 않도록 처리 |
| 22013 | 조직 Owner의 역할을 변경 시도했을 때 발생하는 오류 | 조직 Owner를 대상으로 역할 변경은 불가능 |
| 22016 | 조직이 존재하지 않을 때 발생하는 오류 | 존재하는 조직의 orgId로 요청하는지 확인 |
| 23005 | 조직 ID에 해당하는 조직이 존재하지 않을 때 발생하는 오류 | 담당자 문의 |
| 30015 | 프로젝트 AppKey의 생성 제한 횟수를 초과할 경우 발생하는 오류 프로젝트 통합 Appkey API - 프로젝트 통합 Appkey 생성에서 생성되는 프로젝트 AppKey의 생성 가능 횟수는 3개이며 3개를 초과할 경우 오류 발생 |
사용하지 않은 프로젝트 통합 Appkey 삭제 후 재시도 |
| 40017 | 프로젝트가 존재하지 않을 경우 발생하는 오류 | 존재하는 프로젝트에 대해 API 요청 |
| 40028 13003 |
프로젝트가 존재하지 않을 경우(생성했다가 삭제한 경우) 발생하는 오류 | 존재하는 프로젝트에 대해 API 요청 |
| 40054 | 서비스 활성화 시, 먼저 활성화되어야 하는 서비스가 활성화 되어있지 않은 경우 발생하는 오류 | 먼저 활성화가 되어야 하는 서비스 활성화 처리 |
| 40057 | 서비스 비활성화 시, 먼저 비활성화 되어야 하는 서비스가 비활성화 되어있지 않은 경우 발생하는 오류 | 먼저 비활성화가 되어야 하는 서비스 비활성화 처리 |
| 50007 | 유효하지 않은 멤버일 때, 발생하는 오류 (존재하지 않는 멤버이거나, 휴면 및 탈퇴 상태의 멤버는 유효하지 않음) 조직 생성 API - API 호출 시, uuid가 유효하지 않을 경우 |
유효한 멤버의 uuid로 수정 |
| 60003 | DB에 데이터가 없을 경우 발생하는 오류 프로젝트 통합 Appkey API - 프로젝트 통합 Appkey 삭제 에서 삭제할 AppKey가 없을 경우 발생하는 오류 |
1) 담당자 문의 2) 존재하는 AppKey를 삭제 대상 앱키 값으로 설정 |
| 62004 | 역할 그룹 생성 시 동일한 이름의 역할 그룹이 존재하는 경우 발생하는 오류 | 중복되지 않은 이름으로 변경 |
| 62008 | 역할 그룹 수정, 삭제 및 역할 그룹에 역할 추가/삭제 시 역할 그룹 ID가 존재하지 않는 경우 발생 | 존재하는 역할 그룹 ID를 사용하도록 변경 |
| 62009 | 역할 그룹 생성 시 역할이 유효하지 않은 역할인 경우 발생 | 유효한 역할을 사용하도록 변경 |
| 62011 | 역할 그룹 삭제 시 알림 그룹에서 사용 중이어서 발생 | 알림 그룹 삭제 후 역할 그룹을 삭제하도록 변경 |
| 62014 | 역할 그룹 삭제 및 역할 그룹에 역할 추가/삭제 시 역할 그룹을 할당했던 멤버들이 역할을 서비스에 통지하는데 실패 | 담당자에게 문의 |
| 62019 | 조직 멤버에게 허용되지 않는 역할을 부여하려는 경우 | 담당자에게 문의 |
| 72005 | 빌링 관련 API 호출이 실패할 때 발생하는 오류 | 담당자에게 문의 |
| 70013 | 이용 중인 서비스가 존재할 때 발생하는 오류 | 이용 중인 서비스 비활성화 |
| 70014 | 멤버 탈퇴 조건을 만족하지 않을 경우 발생하는 오류 IAM 계정 - 1) 사용 중인 서비스가 있을 때 2) 삭제되지 않은 프로젝트가 있을 때 3) 해당 멤버가 임의의 프로젝트에 ADMIN 역할로 존재할 때 |
각 멤버 타입에 맞는 탈퇴 조건을 만족하도록 설정 |
| 70024 | 결제 수단이 정상적으로 등록되지 않았을 때 발생하는 오류 | 결제수단 등록 |
| 70032 | 미납으로 인해 멤버 블록이 되었을 경우 발생하는 오류 | 해당 계정이 가진 미납 청구서 결제 |
| -200201 | user-code 길이 조건이 맞지 않는 경우 발생하는 오류 | 20자 이내의 소문자, 숫자, 특수문자(-, , .) 사용 가능. 특수문자(-, , .)는 제일 앞과 제일 뒤에는 사용할 수 없음. |
| -200202 | user-code 포맷 조건이 맞지 않는 경우 발생하는 오류 | 소문자, 숫자, 특수문자(-, , .) 사용 가능. 특수문자(-, , .)는 제일 앞과 제일 뒤에는 사용할 수 없음. |
| -200203 | 이름 길이 조건이 맞지 않는 경우 발생하는 오류 | 60자 이내의 길이 요건을 만족하도록 이름 길이 수정 |
| -200204 | 멤버 생성 수정시 user-code가 겹치는 경우 발생하는 오류 | 중복되지 않는 user-code로 변경하여 요청 |