Skip to main content
OpenAPI

メンバー API

組織メンバーの一覧・管理、統計、クォータ、Add-On Cap の API。

このドキュメントについて

Qoder UI 外でメンバーとクォータを管理するインテグレーション向け。事前に API キーの取得 を完了し、共通仕様 を参照してください。

前提条件

  • 有効な API キー:Authorization: Bearer <api_key>
  • キーは対象組織に紐づき、呼び出し元の権限が操作を許可している必要があります。

API 一覧

1. メンバー一覧

GET /v1/organizations/{organization_id}/members 組織のメンバーリストをページネーションで取得します。ユーザー ID またはメールアドレスによる完全一致検索をサポートします。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID

クエリパラメータ

パラメータ必須説明
userIdstringいいえユーザー UUID による完全一致検索。email と同時に指定不可
emailstringいいえメール完全一致検索
includeDeletedstringいいえtrue に設定すると削除済みメンバーを含む
maxResultsintegerいいえページサイズ(デフォルト 20、最大 100)
nextTokenstringいいえページネーションカーソル
userId は空でない標準 UUID である必要があります。userId または email による完全一致検索では、最大 1 件を返し、新しい nextToken は返しません。一致するメンバーがない場合は、空の members 配列とともに 200 OK を返します。

成功レスポンス(200 OK)

デフォルトクエリ(アクティブメンバーのみ):
{
  "members": [
    {
      "id": "member_abc123",
      "userId": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Alice",
      "email": "alice@example.com",
      "role": "org_admin",
      "status": "ENABLED",
      "joinedAt": "2025-06-01T08:00:00Z"
    },
    {
      "id": "member_ghi789",
      "userId": "550e8400-e29b-41d4-a716-446655440001",
      "name": "Charlie",
      "role": "org_member",
      "status": "ENABLED",
      "joinedAt": "2025-07-10T14:30:00Z"
    }
  ],
  "maxResults": 20,
  "nextToken": "eyJwYWdlIjogMn0="
}
一部のメンバーレコードでは email フィールドが返されない場合があります。インテグレーション時はオプションフィールドとして処理してください。
削除済みメンバーを含む(**includeDeleted=true**):
{
  "members": [
    {
      "id": "member_abc123",
      "userId": "550e8400-e29b-41d4-a716-446655440000",
      "name": "Alice",
      "email": "alice@example.com",
      "role": "org_admin",
      "status": "ENABLED",
      "joinedAt": "2025-06-01T08:00:00Z"
    },
    {
      "id": "member_def456",
      "userId": "550e8400-e29b-41d4-a716-446655440002",
      "name": "Bob",
      "email": "bob@example.com",
      "role": "org_member",
      "status": "DELETED",
      "joinedAt": "2025-03-15T10:00:00Z",
      "deletedAt": "2026-02-01T12:00:00Z"
    }
  ],
  "maxResults": 20
}
deletedAt は削除済みメンバーにのみ返されます。アクティブメンバーにはこのフィールドは含まれません。nextToken がない場合は最終ページです。

レスポンスフィールド

フィールド説明
membersarrayメンバーリスト
members[].idstringメンバー ID
members[].userIdstringユーザー ID
members[].namestringメンバー名
members[].emailstringメンバーメール(空の場合あり)
members[].rolestringロール名(例:org_adminorg_member
members[].statusstringメンバーステータス:ENABLED(アクティブ)、DISABLED(停止済み)、UNACTIVATED(未アクティブ化)、APPROVE_PENDING(承認待ち)、APPROVE_DECLINED(承認拒否)、DELETED(削除済み)
members[].joinedAtstring参加日時(ISO 8601)
members[].deletedAtstring または null削除日時(ISO 8601);アクティブメンバーには返されない
maxResultsint32このリクエストのページサイズ
nextTokenstring次ページカーソル。最終ページでは省略

2. メンバー詳細取得

GET /v1/organizations/{organization_id}/members/{member_id} 単一メンバーの詳細情報を取得します。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID
member_idstringはいメンバー ID

成功レスポンス(200 OK)

アクティブメンバー:
{
  "id": "member_abc123",
  "userId": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Alice",
  "email": "alice@example.com",
  "role": "org_admin",
  "status": "ENABLED",
  "joinedAt": "2025-06-01T08:00:00Z"
}
削除済みメンバー(**GetMember** は削除済みメンバーも自動的に含む):
{
  "id": "member_def456",
  "userId": "550e8400-e29b-41d4-a716-446655440002",
  "name": "Bob",
  "email": "bob@example.com",
  "role": "org_member",
  "status": "DELETED",
  "joinedAt": "2025-03-15T10:00:00Z",
  "deletedAt": "2026-02-01T12:00:00Z"
}

レスポンスフィールド

「メンバー一覧」の members[] フィールドと同一です。

3. メンバー作成

POST /v1/organizations/{organization_id}/members 新しいユーザーを作成し、現在の組織に追加します。このエンドポイントは新規アカウントのみを作成します。メールアドレスがすでに登録されている場合、既存アカウントの再利用やパスワード変更は行いません。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID

リクエストボディ(JSON)

{
  "email": "alice@example.com",
  "name": "Alice",
  "password": "StrongPassword123!",
  "role": "org_member"
}
フィールド必須説明
emailstringはい新規ユーザーのメールアドレス。ドメインが組織で検証済みかつ有効である必要があります
namestringはいユーザーおよびメンバーの表示名
passwordstringはい初期パスワード。強度要件を満たす必要があり、レスポンスには返されません
rolestringいいえメンバーロール:org_member または org_admin。デフォルトは org_member

成功レスポンス(200 OK)

{
  "member": {
    "id": "member_abc123",
    "userId": "550e8400-e29b-41d4-a716-446655440000",
    "name": "Alice",
    "email": "alice@example.com",
    "role": "org_member",
    "status": "ENABLED",
    "joinedAt": "2026-05-23T08:00:00Z"
  }
}

エラーレスポンス

エラーコードHTTP ステータス説明
InvalidParameter400email または name が欠落しているか無効
InvalidPassword400パスワードが欠落しているか強度要件を満たしていない
InvalidRole400ロールが org_member または org_admin ではない
EmailDomainRequired400組織に検証済みかつ有効なメールドメインがない
EmailDomainNotSupported400メールドメインが組織で有効になっていない
InsufficientSeats400組織に利用可能なシートがない
EmailAlreadyExists409メールアドレスがすでに登録されている

4. メンバー統計取得

GET /v1/organizations/{organization_id}/members/statistics 組織メンバーに関する統計データを取得します。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID

成功レスポンス(200 OK)

{
  "totalMembers": 50,
  "billableMembers": 45,
  "adminMembers": 3,
  "purchasedSeats": 100,
  "remainingSeats": 55
}

レスポンスフィールド

フィールド説明
totalMembersint32総メンバー数
billableMembersint32課金対象メンバー数
adminMembersint32管理者数
purchasedSeatsint32購入済みシート数
remainingSeatsint32残りシート数

5. メンバー削除

DELETE /v1/organizations/{organization_id}/members/{member_id} 組織からメンバーを削除します。削除前に、現在の課金サイクル内での使用量を確認します。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID
member_idstringはいメンバー ID

成功レスポンス(200 OK)

現サイクルで使用量あり(シート解放はサイクル終了まで遅延):
{
  "id": "member_abc123",
  "hasBillingCycleUsage": true
}
現サイクルで使用量なし(シートを即時解放可能):
{
  "id": "member_abc123",
  "hasBillingCycleUsage": false
}

レスポンスフィールド

フィールド説明
idstring削除されたメンバーの ID
hasBillingCycleUsagebool現在の課金サイクル内で使用量があるか(シート解放タイミングに影響)

エラーレスポンス

メンバーがチームに所属していない(404)
{
  "requestId": "req_abc123",
  "code": "UserNotTeamMember",
  "message": "User is not a member of this team"
}
メンバー数不足(400)
{
  "requestId": "req_abc123",
  "code": "InsufficientMembers",
  "message": "The number of organization members cannot be less than the minimum requirement"
}

6. メンバークォータ取得

GET /v1/organizations/{organization_id}/members/{member_id}/quota 指定メンバーの完全な使用状況を取得します。プランクォータ、リソースパッククォータ、合計クォータ、組織共有パッククォータを含みます。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID
member_idstringはいメンバー ID

成功レスポンス(200 OK)

組織共有パックあり、ステータス正常:
{
  "userId": "user_abc123",
  "planQuota": {
    "quotaSummary": {
      "usedValue": 350.5,
      "limitValue": 1000.0,
      "unit": "credits"
    }
  },
  "resourcePackageQuota": {
    "quotaSummary": {
      "usedValue": 100.0,
      "limitValue": 500.0,
      "unit": "credits"
    }
  },
  "totalQuota": {
    "quotaSummary": {
      "usedValue": 450.5,
      "limitValue": 1500.0,
      "unit": "credits"
    }
  },
  "sharedQuota": {
    "quotaSummary": {
      "usedValue": 200.0,
      "limitValue": 1000.0,
      "unit": "credits"
    }
  },
  "lastResetAt": "2026-03-01T00:00:00Z",
  "nextResetAt": "2026-04-01T00:00:00Z",
  "status": "active"
}
組織共有パックなし、使用量超過:
{
  "userId": "user_def456",
  "planQuota": {
    "quotaSummary": {
      "usedValue": 1000.0,
      "limitValue": 1000.0,
      "unit": "credits"
    }
  },
  "totalQuota": {
    "quotaSummary": {
      "usedValue": 1000.0,
      "limitValue": 1000.0,
      "unit": "credits"
    }
  },
  "lastResetAt": "2026-03-01T00:00:00Z",
  "nextResetAt": "2026-04-01T00:00:00Z",
  "status": "restricted"
}
組織に共有パックがない場合 sharedQuota は返されません。メンバーにリソースパックがない場合 resourcePackageQuota は返されません。statusrestricted の場合、使用量上限に達しています。

レスポンスフィールド

フィールド説明
userIdstringユーザー ID
planQuotaobjectプランクォータ情報
resourcePackageQuotaobjectリソースパッククォータ情報
totalQuotaobject合計クォータ情報(プラン + リソースパック)
sharedQuotaobject または null組織共有パッククォータ(組織に共有パックがない場合は返されない)
lastResetAtstring前回リセット日時(ISO 8601)
nextResetAtstring次回リセット日時(ISO 8601)
statusstringユーザーステータス:active または restricted
クォータサマリーフィールド
フィールド説明
usedValuefloat64使用量
limitValuefloat64クォータ上限
unitstring単位(例:credits

7. メンバークォータ一括取得

POST /v1/organizations/{organization_id}/members/batchGetQuota 複数メンバーのクォータと使用状況を一度に取得します。メンバークォータ取得と同じ範囲を返します。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID

リクエストボディ(JSON)

フィールド必須検証説明
memberIdsstring[]はい1~100 件の空でないメンバー IDクォータを取得するメンバー
{
  "memberIds": ["member_abc123", "member_def456"]
}

成功レスポンス(200 OK)

{
  "quotas": [
    {
      "memberId": "member_abc123",
      "userId": "user_abc123",
      "planQuota": {
        "quotaSummary": {
          "usedValue": 350.5,
          "limitValue": 1000.0,
          "unit": "credits"
        }
      },
      "resourcePackageQuota": {
        "quotaSummary": {
          "usedValue": 100.0,
          "limitValue": 500.0,
          "unit": "credits"
        }
      },
      "totalQuota": {
        "quotaSummary": {
          "usedValue": 450.5,
          "limitValue": 1500.0,
          "unit": "credits"
        }
      },
      "sharedQuota": {
        "quotaSummary": {
          "usedValue": 200.0,
          "limitValue": 1000.0,
          "unit": "credits"
        }
      },
      "lastResetAt": "2026-03-01T00:00:00Z",
      "nextResetAt": "2026-04-01T00:00:00Z",
      "status": "active"
    },
    {
      "memberId": "member_def456",
      "userId": "user_def456"
    }
  ]
}
quotas 配列は、重複を含めて memberIds と同じ順序で返されます。メンバーにクォータレコードがない場合、その要素には memberIduserId のみが含まれます。組織に存在しないメンバーが 1 件でもある場合、リクエスト全体が 404 NotFound となり、部分成功は返しません。

レスポンスフィールド

フィールド説明
quotasarrayメンバークォータの結果一覧
quotas[].memberIdstringメンバー ID
quotas[].userIdstringユーザー ID
quotas[].planQuotaobjectPlan クォータ情報。データがない場合は省略
quotas[].resourcePackageQuotaobjectリソースパッケージクォータ情報。データがない場合は省略
quotas[].totalQuotaobject合計クォータ情報。データがない場合は省略
quotas[].sharedQuotaobject組織共有パッケージクォータ。データがない場合は省略
quotas[].lastResetAtstring前回リセット時刻(ISO 8601)。データがない場合は省略
quotas[].nextResetAtstring次回リセット時刻(ISO 8601)。データがない場合は省略
quotas[].statusstringactive または restricted。クォータデータがない場合は省略

8. メンバー Add-On Cap 更新

PUT /v1/organizations/{organization_id}/members/{member_id}/addon-cap メンバーの Shared Add-On クォータキャップを更新します(Big Model Credits クォータに基づく)。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID
member_idstringはいメンバー ID

リクエストパラメータ(JSON)

フィールド必須バリデーション説明
addOnCapint64 または nullいいえ非負の整数または nullクォータキャップ。null または省略は無制限、0 は無効

リクエスト例

クォータキャップを設定:
{
  "addOnCap": 1000
}
無制限に設定:
{
  "addOnCap": null
}

成功レスポンス(200 OK)

{
  "memberId": "member_abc123",
  "email": "alice@example.com",
  "addOnCap": 1000
}
無制限の場合:
{
  "memberId": "member_abc123",
  "email": "alice@example.com",
  "addOnCap": null
}

レスポンスフィールド

フィールド説明
memberIdstringメンバー ID
emailstringメンバーメール
addOnCapint64 または null現在のクォータキャップ;null は無制限

エラーレスポンス

addOnCap 形式無効(400)
{
  "requestId": "req_abc123",
  "code": "InvalidAddOnCapFormat",
  "message": "Invalid addOnCap format"
}
メンバーがチームに所属していない(404)
{
  "requestId": "req_abc123",
  "code": "UserNotTeamMember",
  "message": "User is not a member of this team"
}

9. メンバー Add-On Cap 一括更新

POST /v1/organizations/{organization_id}/batchUpdateAddOnCap 指定メンバーの Shared Add-On クォータキャップを一括更新します(Big Model Credits クォータに基づく)。1リクエストあたり最大100メンバー、全メンバーに同じキャップを設定します。

パスパラメータ

パラメータ必須説明
organization_idstringはい組織 ID

リクエストパラメータ(JSON)

フィールド必須バリデーション説明
addOnCapint64 または nullいいえ非負の整数または nullクォータキャップ。null または省略は無制限、0 は無効
memberIdsstring[]はい1〜100 個の非空文字列更新対象のメンバー ID リスト

リクエスト例

一括でクォータキャップを設定:
{
  "addOnCap": 1000,
  "memberIds": ["member_abc123", "member_def456"]
}
一括で無制限に設定:
{
  "addOnCap": null,
  "memberIds": ["member_abc123"]
}

成功レスポンス(200 OK)

{
  "members": [
    {
      "memberId": "member_abc123",
      "previousAddOnCap": 500
    },
    {
      "memberId": "member_def456"
    }
  ]
}
メンバーが以前無制限だった場合、previousAddOnCap は省略されます。

レスポンスフィールド

フィールド説明
membersarray更新結果リスト、リクエストの memberIds と同じ順序
members[].memberIdstringメンバー ID
members[].previousAddOnCapint64更新前のクォータキャップ。以前無制限だった場合は省略

エラーレスポンス

addOnCap 形式無効(400)
{
  "requestId": "req_abc123",
  "code": "InvalidAddOnCapFormat",
  "message": "Invalid addOnCap format"
}
memberIds が空(400)
{
  "requestId": "req_abc123",
  "code": "EmptyMemberIDs",
  "message": "memberIds must not be empty"
}
memberIds が 100 件超過(400)
{
  "requestId": "req_abc123",
  "code": "TooManyMemberIDs",
  "message": "memberIds must not exceed 100"
}

エラーコード

エラーコードHTTP ステータス説明
BadRequest400リクエストパラメータが無効(例:member_id が空)
InvalidParameter400メンバー作成の email または name が欠落または無効、または userId が無効、email と同時指定
InvalidPassword400パスワードが欠落しているか強度要件を満たしていない
InvalidRole400メンバーロールが無効
EmailDomainRequired400組織に検証済みかつ有効なメールドメインがない
EmailDomainNotSupported400メールドメインが組織で有効になっていない
InsufficientSeats400組織に利用可能なシートがない
InvalidBatchQuotaRequest400一括クォータ取得の JSON リクエストボディが無効
InvalidAddOnCapFormat400addOnCap 形式が無効
InvalidBatchAddOnCapRequest400Add-On Cap 一括更新の JSON リクエストボディが無効
EmptyMemberIDs400memberIds が空
TooManyMemberIDs400memberIds が 100 件を超えている
EmptyMemberIDAtIndex400memberIds に空文字列が含まれる
InsufficientMembers400組織メンバー数が最低要件を下回ることはできない
Unauthorized401API キーが欠落または無効
Forbidden403この組織へのアクセス権限なし
NotFound404メンバーが見つからない
UserNotTeamMember404ユーザーはこのチームのメンバーではない
EmailAlreadyExists409メールアドレスがすでに登録されている
InternalError500サーバー内部エラー
エラーレスポンスの形式は 共通仕様エラーレスポンス を参照してください。

使用例

メンバー一覧

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members?maxResults=20" \
  -H "Authorization: Bearer <api_key>"

メールでメンバー検索

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members?email=alice@example.com" \
  -H "Authorization: Bearer <api_key>"

ユーザー ID でメンバー検索

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members?userId=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer <api_key>"

メンバー一覧(削除済みを含む)

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members?includeDeleted=true" \
  -H "Authorization: Bearer <api_key>"

メンバー詳細取得

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members/member_abc123" \
  -H "Authorization: Bearer <api_key>"

メンバー作成

curl -X POST "https://api.qoder.com/v1/organizations/org_xxx/members" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{"email":"alice@example.com","name":"Alice","password":"StrongPassword123!","role":"org_member"}'

メンバー統計取得

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members/statistics" \
  -H "Authorization: Bearer <api_key>"

メンバー削除

curl -X DELETE "https://api.qoder.com/v1/organizations/org_xxx/members/member_abc123" \
  -H "Authorization: Bearer <api_key>"

メンバー Add-On Cap 更新

curl -X PUT "https://api.qoder.com/v1/organizations/org_xxx/members/member_abc123/addon-cap" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "addOnCap": 1000
  }'

メンバークォータ取得

curl -X GET "https://api.qoder.com/v1/organizations/org_xxx/members/member_abc123/quota" \
  -H "Authorization: Bearer <api_key>"

メンバークォータ一括取得

curl -X POST "https://api.qoder.com/v1/organizations/org_xxx/members/batchGetQuota" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "memberIds": ["member_abc123", "member_def456"]
  }'

メンバー Add-On Cap 一括更新

curl -X POST "https://api.qoder.com/v1/organizations/org_xxx/batchUpdateAddOnCap" \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "addOnCap": 1000,
    "memberIds": ["member_abc123", "member_def456"]
  }'