사용자 API

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

Alpacon 워크스페이스의 사용자 계정을 관리합니다. 사용자 ID 대신 pk=-를 사용하면 현재 인증된 사용자 자신을 참조합니다.

사용자 목록 조회

사용자 목록을 가져옵니다. 기본 정렬 순서는 슈퍼유저, 스태프, 활성 사용자 순이며 그 다음 사용자명 순입니다.

GET /api/iam/users/

쿼리 파라미터

파라미터타입설명
is_activeboolean활성 상태로 필터링
is_staffboolean스태프 상태로 필터링
is_superuserboolean슈퍼유저 상태로 필터링
is_ldap_userbooleanLDAP 사용자 상태로 필터링
shellstring셸로 필터링 (정확히 일치)
usernamestring사용자명으로 필터링 (정확히 일치)
username__icontainsstring사용자명으로 필터링 (대소문자 무시 부분 일치)
added_at__gtedatetime해당 날짜 이후에 추가된 사용자 필터링
added_at__ltedatetime해당 날짜 이전에 추가된 사용자 필터링
added_at__gtdatetime해당 날짜 이후에 추가된 사용자 필터링 (미포함)
added_at__ltdatetime해당 날짜 이전에 추가된 사용자 필터링 (미포함)
exclude_groupUUID해당 그룹에 속한 사용자 제외
searchstringusername, first_name, last_name, email, phone, tags, description, uid, added_at 필드에서 검색
orderingstring정렬 필드. 옵션: first_name, last_name, email, tags, uid, is_superuser, is_staff, is_active, date_joined, last_login, added_at, updated_at. 내림차순은 - 접두사 사용
pageinteger페이지 번호
page_sizeinteger페이지당 결과 수 (기본값: 15, 최대: 100)

응답

{
  "count": 15,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "a540bf0f-8b37-4f03-8546-dd71c6b03329",
      "auth0_id": "auth0|64a1b2c3d4e5f6a7b8c9d0e1",
      "username": "admin",
      "first_name": "John",
      "last_name": "Doe",
      "email": "admin@example.com",
      "phone": "+1-555-0100",
      "tags": "infrastructure, lead",
      "num_groups": 3,
      "uid": 2000,
      "is_active": true,
      "is_staff": true,
      "is_superuser": true,
      "is_ldap_user": false,
      "date_joined": "2023-01-15T10:00:00Z"
    }
  ]
}

사용자 상세 조회

특정 사용자의 세부 정보를 조회합니다. pk=-를 사용하면 현재 인증된 사용자의 정보를 조회합니다.

GET /api/iam/users/{user_id}/

경로 파라미터

파라미터타입설명
user_idUUID사용자 ID 또는 인증된 사용자를 나타내는 -

응답

{
  "id": "a540bf0f-8b37-4f03-8546-dd71c6b03329",
  "auth0_id": "auth0|64a1b2c3d4e5f6a7b8c9d0e1",
  "username": "admin",
  "first_name": "John",
  "last_name": "Doe",
  "email": "admin@example.com",
  "phone": "+1-555-0100",
  "tags": "infrastructure, lead",
  "num_groups": 3,
  "uid": 2000,
  "is_active": true,
  "is_staff": true,
  "is_superuser": true,
  "is_ldap_user": false,
  "date_joined": "2023-01-15T10:00:00Z",
  "description": "System administrator",
  "shell": "/bin/bash",
  "home_directory": "/home/admin",
  "last_login": "2024-01-20T09:15:00Z",
  "last_login_ip": "203.0.113.45",
  "added_at": "2023-01-15T10:00:00Z",
  "updated_at": "2024-01-20T09:15:00Z",
  "websh_total_lifetime": 86400,
  "webftp_upload_bytes": 1048576,
  "webftp_download_bytes": 5242880
}

사용자 생성

새 사용자 계정을 생성합니다. uid는 2000부터 자동으로 할당되며 home_directory/home/{username}으로 설정됩니다. password를 제공하지 않으면 자동으로 생성됩니다.

POST /api/iam/users/

요청 본문

{
  "username": "jsmith",
  "first_name": "Jane",
  "last_name": "Smith",
  "email": "jane.smith@example.com",
  "phone": "+1-555-0200",
  "tags": "developer",
  "description": "Backend developer",
  "shell": "/bin/bash"
}

요청 파라미터

필드타입필수설명
usernamestringYes사용자명. ^[a-z][a-z0-9_-]*$ 패턴 필수
first_namestringNo이름
last_namestringNo
emailstringNo이메일 주소
phonestringNo전화번호
tagsstringNo쉼표로 구분된 태그
descriptionstringNo사용자 설명
shellstringNo로그인 셸 (기본값: /bin/bash)
is_activebooleanNo활성 상태 (기본값: true)
is_staffbooleanNo스태프 상태 (기본값: false)
is_superuserbooleanNo슈퍼유저 상태 (기본값: false)
is_ldap_userbooleanNoLDAP 사용자 플래그 (기본값: false)

응답

{
  "id": "b651cf10-9c48-4a14-9657-ee82d7c14430",
  "auth0_id": "",
  "username": "jsmith",
  "first_name": "Jane",
  "last_name": "Smith",
  "email": "jane.smith@example.com",
  "phone": "+1-555-0200",
  "tags": "developer",
  "num_groups": 0,
  "uid": 2001,
  "is_active": true,
  "is_staff": false,
  "is_superuser": false,
  "is_ldap_user": false,
  "date_joined": "2024-01-20T10:00:00Z"
}

사용자 수정

사용자 계정 속성을 수정합니다. 스태프 사용자만 다른 사용자를 수정할 수 있습니다. username 필드는 수정 시 읽기 전용입니다.

PATCH /api/iam/users/{user_id}/

경로 파라미터

파라미터타입설명
user_idUUID수정할 사용자의 ID

요청 본문

{
  "first_name": "Janet",
  "email": "janet.smith@example.com",
  "tags": "developer, senior",
  "is_active": true,
  "is_staff": true
}

요청 파라미터

필드타입필수설명
first_namestringNo이름
last_namestringNo
emailstringNo이메일 주소
phonestringNo전화번호
tagsstringNo쉼표로 구분된 태그
descriptionstringNo사용자 설명
shellstringNo로그인 셸
is_activebooleanNo활성 상태
is_staffbooleanNo스태프 상태
passwordstringNo새 비밀번호 (쓰기 전용)

응답

{
  "id": "b651cf10-9c48-4a14-9657-ee82d7c14430",
  "auth0_id": "",
  "username": "jsmith",
  "first_name": "Janet",
  "last_name": "Smith",
  "email": "janet.smith@example.com",
  "phone": "+1-555-0200",
  "tags": "developer, senior",
  "num_groups": 1,
  "uid": 2001,
  "is_active": true,
  "is_staff": true,
  "is_superuser": false,
  "is_ldap_user": false,
  "date_joined": "2024-01-20T10:00:00Z"
}

사용자 삭제

사용자 계정을 삭제합니다. 마지막 슈퍼유저, 그룹의 마지막 소유자, 또는 결제 소유자인 경우 삭제할 수 없습니다. ?purge=true를 사용하면 사용자 레코드를 영구적으로 제거합니다.

DELETE /api/iam/users/{user_id}/

경로 파라미터

파라미터타입설명
user_idUUID삭제할 사용자의 ID

쿼리 파라미터

파라미터타입설명
purgebooleantrue로 설정하면 사용자 레코드를 영구적으로 제거

응답

204 No Content

사용자를 삭제하면 해당 계정과 모든 그룹 멤버십이 제거됩니다. 마지막 슈퍼유저, 그룹의 마지막 소유자, 또는 결제 소유자인 경우 작업이 실패합니다.

오류 코드

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