그룹 API

엔드포인트: /api/iam/groups/

그룹을 관리하여 사용자를 구성하고 Alpacon 워크스페이스의 서버 접근을 제어합니다.

그룹 목록 조회

그룹 목록을 가져옵니다. 기본 정렬 순서는 이름순입니다.

GET /api/iam/groups/

쿼리 파라미터

파라미터타입설명
namestring그룹 이름으로 필터링 (정확히 일치)
is_ldap_groupbooleanLDAP 그룹 상태로 필터링
searchstringname, display_name, tags, description, gid, server__name 필드에서 검색
orderingstring정렬 필드. 옵션: name, display_name, tags, gid, is_ldap_group, added_at, updated_at. 내림차순은 - 접두사 사용
pageinteger페이지 번호
page_sizeinteger페이지당 결과 수 (기본값: 15, 최대: 100)

응답

{
  "count": 8,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "d94e1b23-5c7d-4f8a-b012-3e4f5a6b7c8d",
      "name": "developers",
      "display_name": "Developers",
      "tags": "engineering",
      "num_members": 12,
      "gid": 2001,
      "is_ldap_group": false,
      "servers": [
        "7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
      ],
      "servers_names": [
        "web-server-01"
      ]
    }
  ]
}

그룹 상세 조회

특정 그룹의 세부 정보를 조회합니다. 멤버 이름 및 타임스탬프가 포함됩니다.

GET /api/iam/groups/{group_id}/

경로 파라미터

파라미터타입설명
group_idUUID조회할 그룹의 ID

응답

{
  "id": "d94e1b23-5c7d-4f8a-b012-3e4f5a6b7c8d",
  "name": "developers",
  "display_name": "Developers",
  "tags": "engineering",
  "num_members": 12,
  "gid": 2001,
  "is_ldap_group": false,
  "description": "스테이징 및 프로덕션 서버에 접근할 수 있는 개발팀",
  "servers": [
    "7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
  ],
  "servers_names": [
    "web-server-01"
  ],
  "members_names": [
    "admin",
    "jsmith",
    "developer1"
  ],
  "added_at": "2023-06-01T08:00:00Z",
  "updated_at": "2024-01-18T14:30:00Z"
}

그룹 생성

새 그룹을 생성합니다. 요청한 사용자에 대해 owner 멤버십이 자동으로 생성됩니다.

POST /api/iam/groups/

요청 본문

{
  "name": "devops",
  "display_name": "DevOps Team",
  "tags": "infrastructure",
  "description": "모든 서버에 대한 전체 접근 권한을 가진 DevOps 엔지니어",
  "servers": [
    "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
    "8f4985df-50bc-42e5-b827-32fcc46959a2"
  ]
}

요청 파라미터

필드타입필수설명
namestringYes그룹 이름 (슬러그 형식, 최대 128자, 고유)
display_namestringYes사람이 읽을 수 있는 표시 이름 (최대 128자, 고유)
tagsstringNo쉼표로 구분된 태그
descriptionstringNo그룹 설명
is_ldap_groupbooleanNoLDAP 그룹 플래그 (기본값: false)
serversarray[UUID]No그룹에 할당할 서버 ID

응답

{
  "id": "e05f2c34-6d8e-4a9b-c123-4f5a6b7c8d9e",
  "name": "devops",
  "display_name": "DevOps Team",
  "tags": "infrastructure",
  "num_members": 1,
  "gid": 2002,
  "is_ldap_group": false,
  "description": "모든 서버에 대한 전체 접근 권한을 가진 DevOps 엔지니어",
  "servers": [
    "7e3984de-49ab-4cc6-bcdf-21fbd35858b8",
    "8f4985df-50bc-42e5-b827-32fcc46959a2"
  ],
  "servers_names": [
    "web-server-01",
    "web-server-02"
  ],
  "members_names": [
    "admin"
  ],
  "added_at": "2024-01-20T10:00:00Z",
  "updated_at": "2024-01-20T10:00:00Z"
}

그룹 수정

그룹 속성을 수정합니다. name, gid, id 필드는 수정 시 읽기 전용입니다.

PATCH /api/iam/groups/{group_id}/

경로 파라미터

파라미터타입설명
group_idUUID수정할 그룹의 ID

요청 본문

{
  "display_name": "DevOps Engineering",
  "tags": "infrastructure, platform",
  "description": "DevOps 팀 설명 업데이트",
  "servers": [
    "7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
  ]
}

요청 파라미터

필드타입필수설명
display_namestringNo사람이 읽을 수 있는 표시 이름
tagsstringNo쉼표로 구분된 태그
descriptionstringNo그룹 설명
serversarray[UUID]No할당할 서버 ID

응답

{
  "id": "e05f2c34-6d8e-4a9b-c123-4f5a6b7c8d9e",
  "name": "devops",
  "display_name": "DevOps Engineering",
  "tags": "infrastructure, platform",
  "num_members": 3,
  "gid": 2002,
  "is_ldap_group": false,
  "description": "DevOps 팀 설명 업데이트",
  "servers": [
    "7e3984de-49ab-4cc6-bcdf-21fbd35858b8"
  ],
  "servers_names": [
    "web-server-01"
  ],
  "members_names": [
    "admin",
    "jsmith",
    "developer1"
  ],
  "added_at": "2024-01-20T10:00:00Z",
  "updated_at": "2024-01-20T16:00:00Z"
}

그룹 삭제

그룹을 삭제합니다.

DELETE /api/iam/groups/{group_id}/

경로 파라미터

파라미터타입설명
group_idUUID삭제할 그룹의 ID

응답

204 No Content

그룹을 삭제하면 모든 멤버십과 서버 접근 연결이 제거됩니다.

오류 코드

상태오류 코드설명
400INVALID_REQUEST잘못된 파라미터
401UNAUTHORIZED인증되지 않음
403FORBIDDEN권한 거부
404NOT_FOUND그룹을 찾을 수 없음