組織内 連絡先確認チャレンジ一覧取得
セルフサービスの Email / 電話番号 確認・変更(POST /{tenant-id}/v1/me/{email|phone}/{verification|change})で
発行された確認チャレンジの一覧を取得します(読み取り専用)。
「確認コードのメール/SMS が届かない」という問い合わせに対して、どの宛先に送ったか(target_value)と
どのコードを発行したか(verification_code)をオペレーターが確認するためのAPIです。
verification_code を返すのは意図的です。チャレンジの消費には本人のアクセストークンが必要なため、
コードだけを入手したオペレーターが単独で確定させることはできません。
外部サービスにコード生成・検証を委譲しているテナントでは、コードは idp-server にありません
(delivery: external)。その場合は external_reference で外部サービスの記録を引きます。
アクセスには idp:contact-verification-challenge:read 権限が必要で、参照は監査ログに記録されます。
ただし監査ログには verification_code も external_reference も残りません。
path Parameters
| organization-id required | string <uuid> 組織の識別子 |
| tenant-id required | string テナントの識別子 |
query Parameters
| limit | integer [ 1 .. 1000 ] Default: 20 返すアイテムの最大数 |
| offset | integer >= 0 Default: 0 アイテムを返す開始インデックス |
| user_id | string <uuid> ユーザーIDでフィルタリング |
| operation | string Enum: "email_verify" "email_change" "phone_verify" "phone_change" 操作種別でフィルタリング |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
{- "list": [
- {
- "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "operation": "email_change",
- "target_value": "new@example.com",
- "delivery": "internal",
- "verification_code": "123456",
- "external_reference": {
- "transaction_id": "ext-3fa85f64-5717-4562-b3fc-2c963f66afa6"
}, - "attempts": 0,
- "expires_at": "2026-09-10T02:01:53.367123",
- "expired": false
}
], - "total_count": 1,
- "limit": 20,
- "offset": 0
}組織内 連絡先確認チャレンジ詳細取得
指定した組織・テナント内の特定の連絡先確認チャレンジの詳細を取得します
path Parameters
| organization-id required | string <uuid> 組織の識別子 |
| tenant-id required | string テナントの識別子 |
| id required | string <uuid> Example: f47ac10b-58cc-4372-a567-0e02b2c3d479 連絡先確認チャレンジID |
Responses
Response samples
- 200
- 401
- 403
- 404
{- "id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
- "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5",
- "operation": "email_change",
- "target_value": "new@example.com",
- "delivery": "internal",
- "verification_code": "123456",
- "external_reference": {
- "transaction_id": "ext-3fa85f64-5717-4562-b3fc-2c963f66afa6"
}, - "attempts": 0,
- "expires_at": "2026-09-10T02:01:53.367123",
- "expired": false
}Create user within organization tenant
組織内の特定のテナントに新しいユーザーを作成します
path Parameters
| organization-id required | string <uuid> 組織の識別子 |
| tenant-id required | string テナントの識別子 |
query Parameters
| dry_run | boolean Default: false trueの場合、リクエストの検証のみで実行はされません |
Request Body schema: application/jsonrequired
| sub | string <uuid> Unique subject identifier (optional, auto-generated if not provided) |
| provider_id required | string <= 255 characters Identity provider identifier |
| external_user_id | string <= 255 characters External user identifier from identity provider |
| username | string <= 255 characters Username for authentication |
| name required | string <= 255 characters Full display name of the user |
| given_name | string <= 255 characters Given name (first name) of the user |
| family_name | string <= 255 characters Family name (last name) of the user |
| middle_name | string <= 255 characters Middle name of the user |
| nickname | string <= 255 characters Casual name of the user |
| preferred_username | string <= 255 characters Preferred username for display |
| profile | string <uri> <= 255 characters URL of the user's profile page |
| picture | string <uri> <= 255 characters URL of the user's profile picture |
| website | string <uri> <= 255 characters URL of the user's website |
| email required | string <email> <= 255 characters Email address of the user |
| email_verified | boolean Whether the email address has been verified |
| gender | string Gender identity of the user |
| birthdate | string <date> Date of birth (YYYY-MM-DD format) |
| zoneinfo | string <= 255 characters Time zone information |
| locale | string Locale preference |
| phone_number | string^\+?[0-9\- ]{7,20}$ Phone number in E.164 format |
| phone_number_verified | boolean Whether the phone number has been verified |
object Physical address of the user | |
| raw_password required | string [ 8 .. 255 ] characters Plain text password (will be hashed on server) |
object Verified identity claims (OpenID for Identity Assurance) | |
object Custom user properties | |
Array of objects User roles | |
| assigned_tenants | Array of strings <uuid> [ items <uuid > ] List of tenant IDs the user is assigned to |
| current_tenant | string <uuid> Current primary tenant ID |
| assigned_organizations | Array of strings <uuid> [ items <uuid > ] List of organization IDs the user is assigned to |
| current_organization | string <uuid> Current primary organization ID |
Responses
Request samples
- Payload
{- "sub": "753487e7-10bc-4e69-b3b2-4da33721ea3e",
- "provider_id": "idp-server",
- "external_user_id": "string",
- "username": "string",
- "name": "string",
- "given_name": "string",
- "family_name": "string",
- "middle_name": "string",
- "nickname": "string",
- "preferred_username": "string",
- "email": "user@example.com",
- "email_verified": true,
- "gender": "string",
- "birthdate": "2019-08-24",
- "zoneinfo": "string",
- "locale": "string",
- "phone_number": "string",
- "phone_number_verified": true,
- "address": {
- "street_address": "string",
- "locality": "string",
- "region": "string",
- "postal_code": "string",
- "country": "string"
}, - "raw_password": "stringst",
- "verified_claims": { },
- "custom_properties": { },
- "roles": [
- {
- "role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9",
- "role_name": "string"
}
], - "assigned_tenants": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "current_tenant": "f074cfc2-75c1-4aae-a9d7-15ec980dafc4",
- "assigned_organizations": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "current_organization": "c57905cf-834e-4a0d-815b-7b39aa8070fb"
}Response samples
- 201
- 400
- 403
- 404
{- "dry_run": true,
- "result": {
- "sub": "753487e7-10bc-4e69-b3b2-4da33721ea3e",
- "provider_id": "string",
- "external_user_id": "string",
- "username": "string",
- "name": "string",
- "given_name": "string",
- "family_name": "string",
- "middle_name": "string",
- "nickname": "string",
- "preferred_username": "string",
- "email": "user@example.com",
- "email_verified": true,
- "gender": "string",
- "birthdate": "2019-08-24",
- "zoneinfo": "string",
- "locale": "string",
- "phone_number": "string",
- "phone_number_verified": true,
- "address": {
- "street_address": "string",
- "locality": "string",
- "region": "string",
- "postal_code": "string",
- "country": "string"
}, - "updated_at": "2019-08-24T14:15:22Z",
- "status": "REGISTERED",
- "hashed_password": "string",
- "verified_claims": { },
- "custom_properties": { },
- "authentication_devices": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "string",
- "enabled": true
}
], - "roles": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "string"
}
], - "permissions": [
- "string"
], - "assigned_tenants": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "assigned_organizations": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}List users within organization tenant
組織内の特定のテナントのユーザー一覧を取得します。結果は作成日時の降順(新しいユーザーが先頭)でソートされます。
path Parameters
| organization-id required | string <uuid> 組織の識別子 |
| tenant-id required | string テナントの識別子 |
query Parameters
| limit | integer [ 1 .. 1000 ] Default: 20 返すアイテムの最大数 |
| offset | integer >= 0 Default: 0 アイテムを返す開始インデックス |
| user_id | string 特定のユーザーIDでフィルタリング |
| preferred_username | string 優先ユーザー名で完全一致検索。テナントとプロバイダーの範囲で一意な識別子のため、部分一致では検索しません(Issue #1866)。 名前で探す場合は name / given_name / family_name / nickname を使ってください。 |
| preferred_username_like | string 優先ユーザー名で部分一致検索(大文字小文字区別なし)。断片で探したい場合に使います。 一意キーに対する部分一致のため索引が効かず、テナントの全ユーザーを評価します。件数が多いテナントでは遅くなります。 |
string メールアドレスでフィルタリング | |
| external_user_id | string 外部ユーザーIDでフィルタリング |
| status | string Enum: "active" "inactive" "locked" ユーザーステータスでフィルタリング |
| provider_id | string プロバイダーIDでフィルタリング |
| phone_number | string 電話番号でフィルタリング |
| name | string 名前で部分一致検索(大文字小文字区別なし) |
| given_name | string 名で部分一致検索(大文字小文字区別なし) |
| family_name | string 姓で部分一致検索(大文字小文字区別なし) |
| middle_name | string |