Skip to main content
OpenAPI

グループ API

組織のグループとそのメンバーを作成・管理します。

グループ API は、機能アクセス管理のためにメンバーを整理する際に使用します。1 人のメンバーは複数のグループに所属できます。グループメンバーシップは、メンバーのロール、シート、個人使用量上限、課金グループ、Credits 帰属を変更しません。
対象プラン:Enterprise。組織でグループ機能が有効になっている必要があります。
呼び出す前に API キーの取得を完了し、OpenAPI 共通仕様を確認してください。

前提条件

  • Authorization: Bearer <api_key> を送信します。
  • JSON リクエストボディがある場合は Content-Type: application/json を送信します。
  • API キーに紐づく組織を organization_id に指定します。
  • userIds リクエストフィールドには、組織メンバー ID ではなくユーザー ID を使用します。メンバー APIが返す userId フィールドから取得できます。

グループの種類

書き込み可否は source で判断します。source: "manual" のグループは Qoder で管理され、この API から更新、削除、メンバー変更ができます。その他のソースは OpenAPI では読み取り専用で、isManaged: true を返します。たとえば SCIM グループは source: "scim" を返します。読み取り専用グループは同期元システムで管理してください。

データモデル

Group

フィールド説明
idstringグループ ID
organizationIdstring組織 ID
displayNamestringグループ名
descriptionstring説明。空の場合は省略
sourcestringmanualscim などのグループソース
externalIdstring同期元システムのグループ ID。空の場合は省略
syncTypestringscim などの同期タイプ。空の場合は省略
isManagedbooleanメンバーシップが外部ソースで管理されているか
creatorIdstring作成者のユーザー ID。取得できない場合は省略
createdAtstring作成日時(ISO 8601)。取得できない場合は省略
updatedAtstring最終更新日時(ISO 8601)。取得できない場合は省略
memberCountinteger現在のグループメンバー数

グループメンバー

フィールド説明
idstring組織メンバー ID
userIdstringユーザー ID。グループメンバーの追加・削除時に使用
namestringメンバー名
emailstringメールアドレス。取得できない場合は省略
statusstringENABLEDDISABLED などの組織メンバーステータス
joinedAtstringユーザーが組織に参加した日時。取得できない場合は省略
usageLimitobject現在の個人使用量上限。取得できない場合は省略
usageLimit.quotaKeystringクォータ識別子
usageLimit.limitValuenumber上限値。-1 は無制限
usageLimit.usedValuenumber現在の期間での使用量
usageLimit.resetCyclestringリセット周期。取得できない場合は省略
usageLimit.isActiveboolean上限が有効かどうか
usageLimit.lastResetAtstring前回のリセット日時。取得できない場合は省略
usageLimit.nextResetAtstring次回のリセット日時。取得できない場合は省略
グループメンバーオブジェクトには、メンバーのロールや課金グループは含まれません。これらのフィールドが必要な場合はメンバー APIを使用してください。

API リファレンス

グループ一覧

GET /v1/organizations/{organization_id}/groups
クエリパラメーター必須説明
sourcestringいいえmanualscim などのソースを完全一致で絞り込み
externalIdstringいいえ外部グループ ID を完全一致で絞り込み
syncTypestringいいえ同期タイプを完全一致で絞り込み
userIdstringいいえ指定したユーザー UUID を含むグループのみ返す
keywordstringいいえグループ名または説明を大文字・小文字を区別せず検索
maxResultsintegerいいえページサイズ。デフォルト 20、最大 100
nextTokenstringいいえ前回のレスポンスで返されたカーソル

成功レスポンス(200 OK)

{
  "groups": [
    {
      "id": "1c8f3ee2-b970-4b61-93f9-f8be080ae945",
      "organizationId": "org_xxx",
      "displayName": "Platform Team",
      "description": "Platform maintainers",
      "source": "manual",
      "isManaged": false,
      "creatorId": "550e8400-e29b-41d4-a716-446655440000",
      "createdAt": "2026-08-01T08:00:00Z",
      "updatedAt": "2026-08-01T08:00:00Z",
      "memberCount": 2
    }
  ],
  "maxResults": 20,
  "nextToken": "cursor_from_response"
}
最終ページでは nextToken が省略されます。

グループの作成

POST /v1/organizations/{organization_id}/groups 手動管理グループを作成します。displayName は前後の空白が除去され、空にはできません。有効な既存の手動グループと同じ名前は使用できません。userIds を省略するか空配列を送信すると、メンバーなしで作成できます。重複ユーザー ID は除外されます。ID が 1 つでも無効、または現在の組織メンバーでない場合、リクエストは失敗し、グループは作成されません。

リクエストボディ

{
  "displayName": "Platform Team",
  "description": "Platform maintainers",
  "userIds": [
    "550e8400-e29b-41d4-a716-446655440000",
    "550e8400-e29b-41d4-a716-446655440001"
  ]
}
フィールド必須説明
displayNamestringはいグループ名
descriptionstringいいえグループの説明
userIdsstring 配列いいえグループ作成時に追加するユーザー UUID。1 リクエストあたり最大 100 件
作成された Group201 Created で返します。

グループの取得

GET /v1/organizations/{organization_id}/groups/{group_id} 指定した Group200 OK で返します。

グループの更新

PUT /v1/organizations/{organization_id}/groups/{group_id} 手動管理グループのみ更新できます。省略したフィールドは変更されません。空の description を送信すると説明を消去できます。

リクエストボディ

{
  "displayName": "Platform Engineering",
  "description": ""
}
フィールド必須説明
displayNamestringいいえ新しいグループ名。前後の空白を除去した後に空にはできません
descriptionstringいいえ新しい説明。空文字列で消去
更新された Group200 OK で返します。

グループの削除

DELETE /v1/organizations/{organization_id}/groups/{group_id} 手動管理グループのみ削除できます。グループを削除すると、メンバーシップとグループに紐づくアクセス ポリシーが削除されます。組織メンバーは削除されず、課金グループ、個人使用量上限、履歴使用量も変更されません。 200 OK を返します:
{}

グループメンバー一覧

GET /v1/organizations/{organization_id}/groups/{group_id}/members
クエリパラメーター必須説明
keywordstringいいえメンバー名またはメールアドレスを大文字・小文字を区別せず検索
maxResultsintegerいいえページサイズ。デフォルト 20、最大 100
nextTokenstringいいえ前回のレスポンスで返されたカーソル

成功レスポンス(200 OK)

{
  "members": [
    {
      "id": "member_abc123",
      "userId": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Alice",
      "email": "alice@example.com",
      "status": "ENABLED",
      "joinedAt": "2026-06-01T08:00:00Z",
      "usageLimit": {
        "quotaKey": "big_model_credits",
        "limitValue": 5000,
        "usedValue": 1250,
        "resetCycle": "monthly",
        "isActive": true
      }
    }
  ],
  "maxResults": 20,
  "nextToken": "cursor_from_response"
}
最終ページでは nextToken が省略されます。

グループメンバーの追加

POST /v1/organizations/{organization_id}/groups/{group_id}/members 1 人以上の組織ユーザーを手動管理グループに追加します。既存のメンバーシップは重複して作成されません。

リクエストボディ

{
  "userIds": [
    "550e8400-e29b-41d4-a716-446655440000",
    "550e8400-e29b-41d4-a716-446655440001"
  ]
}
userIds は必須で、空でないユーザー ID を 1 リクエストあたり 1~100 件指定します。重複または追加済みのユーザー ID から重複メンバーシップは作成されません。メンバーシップを変更する前にすべての ID が検証されます。ID が 1 つでも不正、または現在の組織メンバーでない場合、リクエストは 400 BadRequest で失敗し、メンバーシップは追加されません。 200 OK レスポンスには現在のグループメンバーが先頭から最大 20 人含まれ、ページネーションフィールドはありません。完全な一覧にはグループメンバー一覧を使用してください。
{
  "members": [
    {
      "id": "member_abc123",
      "userId": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Alice",
      "email": "alice@example.com",
      "status": "ENABLED",
      "joinedAt": "2026-06-01T08:00:00Z"
    }
  ]
}

グループメンバーの削除

DELETE /v1/organizations/{organization_id}/groups/{group_id}/members 手動管理グループから 1 つ以上のメンバーシップを削除します。ユーザー自体は組織から削除されません。

リクエストボディ

{
  "userIds": [
    "550e8400-e29b-41d4-a716-446655440001"
  ]
}
userIds は必須で、空でないユーザー ID を 1 リクエストあたり 1~100 件指定します。この API は DELETE に JSON ボディを使用するため、HTTP クライアントとプロキシがボディを保持することを確認してください。ID が 1 つでも不正な場合、リクエストは 400 BadRequest で失敗し、メンバーシップは削除されません。有効な ID でも組織メンバーでない、またはグループにいない場合は何も変更されず、同じリクエスト内の他の一致するメンバーシップは削除されます。200 OK を返します:
{}

エラー

エラーは OpenAPI 共通仕様で説明する標準レスポンス形式を使用します。
HTTP ステータスエラーコード主な原因
400BadRequest不正なリクエスト、ID、カーソル、または空の必須フィールド
400OrganizationGroupSCIMReadOnly同期または外部管理グループを変更しようとした
401UnauthorizedAPI キーがない、または無効
403ForbiddenAPI キーが対象組織に属していない
403OrganizationPlanCapabilityForbidden組織でグループ機能が有効でない
404NotFoundグループまたはメンバーが存在しない
409AlreadyExists同名の有効な手動グループがすでに存在する