組織メンバーの一覧・管理、統計、クォータ、Add-On Cap の API。
このドキュメントについて
Qoder UI 外でメンバーとクォータを管理するインテグレーション向け。事前に API キーの取得 を完了し、共通仕様 を参照してください。
前提条件
- 有効な API キー:
Authorization: Bearer <api_key>。 - キーは対象組織に紐づき、呼び出し元の権限が操作を許可している必要があります。
API 一覧
1. メンバー一覧
GET /v1/organizations/{organization_id}/members
組織のメンバーリストをページネーションで取得します。ユーザー ID またはメールアドレスによる完全一致検索をサポートします。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
クエリパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
userId | string | いいえ | ユーザー UUID による完全一致検索。email と同時に指定不可 |
email | string | いいえ | メール完全一致検索 |
includeDeleted | string | いいえ | true に設定すると削除済みメンバーを含む |
maxResults | integer | いいえ | ページサイズ(デフォルト 20、最大 100) |
nextToken | string | いいえ | ページネーションカーソル |
userId は空でない標準 UUID である必要があります。userId または email による完全一致検索では、最大 1 件を返し、新しい nextToken は返しません。一致するメンバーがない場合は、空の members 配列とともに 200 OK を返します。
成功レスポンス(200 OK)
デフォルトクエリ(アクティブメンバーのみ):
一部のメンバーレコードでは email フィールドが返されない場合があります。インテグレーション時はオプションフィールドとして処理してください。
削除済みメンバーを含む(**includeDeleted=true**):
deletedAtは削除済みメンバーにのみ返されます。アクティブメンバーにはこのフィールドは含まれません。nextTokenがない場合は最終ページです。
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
members | array | メンバーリスト |
members[].id | string | メンバー ID |
members[].userId | string | ユーザー ID |
members[].name | string | メンバー名 |
members[].email | string | メンバーメール(空の場合あり) |
members[].role | string | ロール名(例:org_admin、org_member) |
members[].status | string | メンバーステータス:ENABLED(アクティブ)、DISABLED(停止済み)、UNACTIVATED(未アクティブ化)、APPROVE_PENDING(承認待ち)、APPROVE_DECLINED(承認拒否)、DELETED(削除済み) |
members[].joinedAt | string | 参加日時(ISO 8601) |
members[].deletedAt | string または null | 削除日時(ISO 8601);アクティブメンバーには返されない |
maxResults | int32 | このリクエストのページサイズ |
nextToken | string | 次ページカーソル。最終ページでは省略 |
2. メンバー詳細取得
GET /v1/organizations/{organization_id}/members/{member_id}
単一メンバーの詳細情報を取得します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
member_id | string | はい | メンバー ID |
成功レスポンス(200 OK)
アクティブメンバー:
**GetMember** は削除済みメンバーも自動的に含む):
レスポンスフィールド
「メンバー一覧」の members[] フィールドと同一です。
3. メンバー作成
POST /v1/organizations/{organization_id}/members
新しいユーザーを作成し、現在の組織に追加します。このエンドポイントは新規アカウントのみを作成します。メールアドレスがすでに登録されている場合、既存アカウントの再利用やパスワード変更は行いません。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
リクエストボディ(JSON)
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
email | string | はい | 新規ユーザーのメールアドレス。ドメインが組織で検証済みかつ有効である必要があります |
name | string | はい | ユーザーおよびメンバーの表示名 |
password | string | はい | 初期パスワード。強度要件を満たす必要があり、レスポンスには返されません |
role | string | いいえ | メンバーロール:org_member または org_admin。デフォルトは org_member |
成功レスポンス(200 OK)
エラーレスポンス
| エラーコード | HTTP ステータス | 説明 |
|---|---|---|
InvalidParameter | 400 | email または name が欠落しているか無効 |
InvalidPassword | 400 | パスワードが欠落しているか強度要件を満たしていない |
InvalidRole | 400 | ロールが org_member または org_admin ではない |
EmailDomainRequired | 400 | 組織に検証済みかつ有効なメールドメインがない |
EmailDomainNotSupported | 400 | メールドメインが組織で有効になっていない |
InsufficientSeats | 400 | 組織に利用可能なシートがない |
EmailAlreadyExists | 409 | メールアドレスがすでに登録されている |
4. メンバー統計取得
GET /v1/organizations/{organization_id}/members/statistics
組織メンバーに関する統計データを取得します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
成功レスポンス(200 OK)
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
totalMembers | int32 | 総メンバー数 |
billableMembers | int32 | 課金対象メンバー数 |
adminMembers | int32 | 管理者数 |
purchasedSeats | int32 | 購入済みシート数 |
remainingSeats | int32 | 残りシート数 |
5. メンバー削除
DELETE /v1/organizations/{organization_id}/members/{member_id}
組織からメンバーを削除します。削除前に、現在の課金サイクル内での使用量を確認します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
member_id | string | はい | メンバー ID |
成功レスポンス(200 OK)
現サイクルで使用量あり(シート解放はサイクル終了まで遅延):
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
id | string | 削除されたメンバーの ID |
hasBillingCycleUsage | bool | 現在の課金サイクル内で使用量があるか(シート解放タイミングに影響) |
エラーレスポンス
メンバーがチームに所属していない(404)
6. メンバークォータ取得
GET /v1/organizations/{organization_id}/members/{member_id}/quota
指定メンバーの完全な使用状況を取得します。プランクォータ、リソースパッククォータ、合計クォータ、組織共有パッククォータを含みます。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
member_id | string | はい | メンバー ID |
成功レスポンス(200 OK)
組織共有パックあり、ステータス正常:
組織に共有パックがない場合sharedQuotaは返されません。メンバーにリソースパックがない場合resourcePackageQuotaは返されません。statusがrestrictedの場合、使用量上限に達しています。
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
userId | string | ユーザー ID |
planQuota | object | プランクォータ情報 |
resourcePackageQuota | object | リソースパッククォータ情報 |
totalQuota | object | 合計クォータ情報(プラン + リソースパック) |
sharedQuota | object または null | 組織共有パッククォータ(組織に共有パックがない場合は返されない) |
lastResetAt | string | 前回リセット日時(ISO 8601) |
nextResetAt | string | 次回リセット日時(ISO 8601) |
status | string | ユーザーステータス:active または restricted |
| フィールド | 型 | 説明 |
|---|---|---|
usedValue | float64 | 使用量 |
limitValue | float64 | クォータ上限 |
unit | string | 単位(例:credits) |
7. メンバークォータ一括取得
POST /v1/organizations/{organization_id}/members/batchGetQuota
複数メンバーのクォータと使用状況を一度に取得します。メンバークォータ取得と同じ範囲を返します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
リクエストボディ(JSON)
| フィールド | 型 | 必須 | 検証 | 説明 |
|---|---|---|---|---|
memberIds | string[] | はい | 1~100 件の空でないメンバー ID | クォータを取得するメンバー |
成功レスポンス(200 OK)
quotas 配列は、重複を含めて memberIds と同じ順序で返されます。メンバーにクォータレコードがない場合、その要素には memberId と userId のみが含まれます。組織に存在しないメンバーが 1 件でもある場合、リクエスト全体が 404 NotFound となり、部分成功は返しません。
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
quotas | array | メンバークォータの結果一覧 |
quotas[].memberId | string | メンバー ID |
quotas[].userId | string | ユーザー ID |
quotas[].planQuota | object | Plan クォータ情報。データがない場合は省略 |
quotas[].resourcePackageQuota | object | リソースパッケージクォータ情報。データがない場合は省略 |
quotas[].totalQuota | object | 合計クォータ情報。データがない場合は省略 |
quotas[].sharedQuota | object | 組織共有パッケージクォータ。データがない場合は省略 |
quotas[].lastResetAt | string | 前回リセット時刻(ISO 8601)。データがない場合は省略 |
quotas[].nextResetAt | string | 次回リセット時刻(ISO 8601)。データがない場合は省略 |
quotas[].status | string | active または restricted。クォータデータがない場合は省略 |
8. メンバー Add-On Cap 更新
PUT /v1/organizations/{organization_id}/members/{member_id}/addon-cap
メンバーの Shared Add-On クォータキャップを更新します(Big Model Credits クォータに基づく)。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
member_id | string | はい | メンバー ID |
リクエストパラメータ(JSON)
| フィールド | 型 | 必須 | バリデーション | 説明 |
|---|---|---|---|---|
addOnCap | int64 または null | いいえ | 非負の整数または null | クォータキャップ。null または省略は無制限、0 は無効 |
リクエスト例
クォータキャップを設定:
成功レスポンス(200 OK)
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
memberId | string | メンバー ID |
email | string | メンバーメール |
addOnCap | int64 または null | 現在のクォータキャップ;null は無制限 |
エラーレスポンス
addOnCap 形式無効(400)
9. メンバー Add-On Cap 一括更新
POST /v1/organizations/{organization_id}/batchUpdateAddOnCap
指定メンバーの Shared Add-On クォータキャップを一括更新します(Big Model Credits クォータに基づく)。1リクエストあたり最大100メンバー、全メンバーに同じキャップを設定します。
パスパラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
organization_id | string | はい | 組織 ID |
リクエストパラメータ(JSON)
| フィールド | 型 | 必須 | バリデーション | 説明 |
|---|---|---|---|---|
addOnCap | int64 または null | いいえ | 非負の整数または null | クォータキャップ。null または省略は無制限、0 は無効 |
memberIds | string[] | はい | 1〜100 個の非空文字列 | 更新対象のメンバー ID リスト |
リクエスト例
一括でクォータキャップを設定:
成功レスポンス(200 OK)
メンバーが以前無制限だった場合、previousAddOnCap は省略されます。
レスポンスフィールド
| フィールド | 型 | 説明 |
|---|---|---|
members | array | 更新結果リスト、リクエストの memberIds と同じ順序 |
members[].memberId | string | メンバー ID |
members[].previousAddOnCap | int64 | 更新前のクォータキャップ。以前無制限だった場合は省略 |
エラーレスポンス
addOnCap 形式無効(400)
エラーコード
| エラーコード | HTTP ステータス | 説明 |
|---|---|---|
BadRequest | 400 | リクエストパラメータが無効(例:member_id が空) |
InvalidParameter | 400 | メンバー作成の email または name が欠落または無効、または userId が無効、email と同時指定 |
InvalidPassword | 400 | パスワードが欠落しているか強度要件を満たしていない |
InvalidRole | 400 | メンバーロールが無効 |
EmailDomainRequired | 400 | 組織に検証済みかつ有効なメールドメインがない |
EmailDomainNotSupported | 400 | メールドメインが組織で有効になっていない |
InsufficientSeats | 400 | 組織に利用可能なシートがない |
InvalidBatchQuotaRequest | 400 | 一括クォータ取得の JSON リクエストボディが無効 |
InvalidAddOnCapFormat | 400 | addOnCap 形式が無効 |
InvalidBatchAddOnCapRequest | 400 | Add-On Cap 一括更新の JSON リクエストボディが無効 |
EmptyMemberIDs | 400 | memberIds が空 |
TooManyMemberIDs | 400 | memberIds が 100 件を超えている |
EmptyMemberIDAtIndex | 400 | memberIds に空文字列が含まれる |
InsufficientMembers | 400 | 組織メンバー数が最低要件を下回ることはできない |
Unauthorized | 401 | API キーが欠落または無効 |
Forbidden | 403 | この組織へのアクセス権限なし |
NotFound | 404 | メンバーが見つからない |
UserNotTeamMember | 404 | ユーザーはこのチームのメンバーではない |
EmailAlreadyExists | 409 | メールアドレスがすでに登録されている |
InternalError | 500 | サーバー内部エラー |

