顧客 /api/ext/users

「顧客」は、YappliCRMに登録されているアプリの会員(エンドユーザー)を指します。ここでは、顧客情報の取得・登録・更新・削除をおこなうエンドポイント群を説明します。カスタムフィールドの扱いについては カスタムフィールド設計ガイドidunique_id・外部連携IDの違いについては 顧客の識別子(id / unique_id / 外部連携ID)の使い分け も合わせて参照してください。

すべてのエンドポイントで Authorization: Bearer {access_token} が必須です。また、リクエストボディを送信するエンドポイント(顧客登録・顧客更新)では、Content-Type: application/json も併せて指定してください。


顧客一覧

GET/api/ext/users

クエリパラメータ

パラメータ 必須 説明 デフォルト
per_page Integer - 1ページあたりの件数(最大 1000 50
page Integer - ページ番号 1

顧客の絞り込みや並べ替え(フィルタリング・ソート)には対応していません。per_page / page によるページングのみご利用いただけます。

カスタムフィールドを物理名(キー名)で取得することもできません。常に column01column50 の連番キーで返却されます。設定されている数が50個未満の場合でも、顧客一覧では未設定分を含めて column50 まで返却されます。この点は、設定されている数分しか返却されない 顧客登録顧客詳細とは異なります。詳細は カスタムフィールドの件数と型 を参照してください。

顧客一覧は、YappliCRM内部の顧客ID昇順(登録日時の古い順)で返却されます。並び順は固定で、ページング中に順序が変わることはありません。

レスポンス(成功時 200

{
  "members": [
    {
      "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
      "client_id": "c9e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8",
      "unique_id": "A00000000012345B",
      "pin": null,
      "login_id": "tanaka.ichiro@example.com",
      "age": 0,
      "rank": "bronze",
      "change_status": 0,
      "cms_token": null,
      "change_code": null,
      "change_passcode": null,
      "change_requested_at": null,
      "change_email": null,
      "change_password": null,
      "regist_token": null,
      "email_token": null,
      "password_token": null,
      "login_token": null,
      "device_token": null,
      "token_isuued_at": null,
      "column01": null,
      "column02": null,
      "column03": null,
      "column04": null,
      "column05": null,
      "column06": null,
      "column07": null,
      "column08": null,
      "column09": null,
      "column10": null,
      "column11": null,
      "column12": null,
      "column13": null,
      "column14": null,
      "column15": null,
      "column16": null,
      "column17": null,
      "column18": null,
      "column19": null,
      "column20": null,
      "column21": null,
      "column22": null,
      "column23": null,
      "column24": null,
      "column25": null,
      "column26": null,
      "column27": null,
      "column28": null,
      "column29": null,
      "column30": null,
      "column31": null,
      "column32": null,
      "column33": null,
      "column34": null,
      "column35": null,
      "column36": null,
      "column37": null,
      "column38": null,
      "column39": null,
      "column40": null,
      "column41": null,
      "column42": null,
      "column43": null,
      "column44": null,
      "column45": null,
      "column46": null,
      "column47": null,
      "column48": null,
      "column49": null,
      "column50": null,
      "secret_question": null,
      "secret_answer": null,
      "point": 0,
      "total_point": 0,
      "total_point_count": 0,
      "logined": 1,
      "enabled": 1,
      "memo": null,
      "ud_id": "90c83ca0-846a-4301-9682-2fb028bda57f",
      "user_agent": null,
      "os": null,
      "os_version": null,
      "app_version": null,
      "regist_route": 0,
      "email_verified_at": null,
      "point_geted_at": null,
      "first_booted_at": null,
      "last_booted_at": null,
      "logined_at": "2026-06-03 14:13:33",
      "returned_at": null,
      "created_at": "2026-05-25 17:10:41",
      "updated_at": "2026-07-01 00:02:15",
      "change_status_name": "引継依頼なし",
      "logined_name": "ログイン中",
      "enabled_name": "有効"
    },
    {
      "id": "e3a1c2d4-1f5b-4a2e-9c3d-8b7a6f5e4d3c",
      "client_id": "c9e1a2b3-4d5e-6f70-8192-a3b4c5d6e7f8",
      "unique_id": "A00000000067890B",
      "pin": null,
      "login_id": "yamada.taro@example.com",
      "age": 0,
      "rank": "gold",
      "change_status": 0,
      "cms_token": null,
      "change_code": null,
      "change_passcode": null,
      "change_requested_at": null,
      "change_email": null,
      "change_password": null,
      "regist_token": null,
      "email_token": null,
      "password_token": null,
      "login_token": null,
      "device_token": null,
      "token_isuued_at": null,
      "column01": "山田太郎",
      "column02": null,
      "column03": null,
      "column04": null,
      "column05": null,
      "column06": null,
      "column07": null,
      "column08": null,
      "column09": null,
      "column10": null,
      "column11": null,
      "column12": null,
      "column13": null,
      "column14": null,
      "column15": null,
      "column16": null,
      "column17": null,
      "column18": null,
      "column19": null,
      "column20": null,
      "column21": null,
      "column22": null,
      "column23": null,
      "column24": null,
      "column25": null,
      "column26": null,
      "column27": null,
      "column28": null,
      "column29": null,
      "column30": null,
      "column31": null,
      "column32": null,
      "column33": null,
      "column34": null,
      "column35": null,
      "column36": null,
      "column37": null,
      "column38": null,
      "column39": null,
      "column40": null,
      "column41": null,
      "column42": null,
      "column43": null,
      "column44": null,
      "column45": null,
      "column46": null,
      "column47": null,
      "column48": null,
      "column49": null,
      "column50": null,
      "secret_question": null,
      "secret_answer": null,
      "point": 10016,
      "total_point": 75016,
      "total_point_count": 12,
      "logined": 0,
      "enabled": 1,
      "memo": null,
      "ud_id": null,
      "user_agent": null,
      "os": "iOS",
      "os_version": "18.0",
      "app_version": "3.2.1",
      "regist_route": 0,
      "email_verified_at": null,
      "point_geted_at": "2026-09-01 14:19:00",
      "first_booted_at": "2026-05-25 17:38:35",
      "last_booted_at": "2026-09-01 14:19:00",
      "logined_at": null,
      "returned_at": "2026-09-01 14:19:00",
      "created_at": "2026-05-25 17:38:35",
      "updated_at": "2026-07-01 00:02:15",
      "change_status_name": "引継依頼なし",
      "logined_name": "未ログイン",
      "enabled_name": "有効"
    }
  ],
  "total": 2,
  "per_page": 50,
  "current_page": 1,
  "last_page": 1
}

Member Object

フィールド 説明
id String YappliCRMの顧客ID
client_id String YappliCRMの契約単位(クライアント)を識別するID
unique_id String 外部システムでユニークな会員証番号等のID
pin String 指定発番時に割り当てられるピン
login_id String ログインID
age Integer 年齢
rank String ランク
change_status / change_code / change_passcode / change_requested_at / change_email / change_password / cms_token / regist_token / email_token / password_token / login_token / device_token / token_isuued_at mixed YappliCRM内部用のフィールドです。値の形式・内容は保証されないため、外部システムからは参照しないでください
column01column50 String カスタムフィールド(最大50個)。管理画面上で「文字列」「数値」「日付」「日付時間」の型を設定できますが、保存・返却される値は常にString型です(詳細は カスタムフィールドの件数と型 を参照)
secret_question String 秘密の質問
secret_answer String 秘密の質問の答え
point Integer 保有ポイント
total_point Integer 総取得ポイント
total_point_count Integer ポイント付与・減算の実行回数
logined Integer ログイン状態(0:未ログイン/1:ログイン済)
enabled Integer 利用可否(0:利用不可/1:利用可)
memo String メモ
ud_id String ユーザーデバイスID(最大255文字)
user_agent String 会員登録・利用時のUser-Agent
os String 利用端末のOS(例:iOSAndroid
os_version String 利用端末のOSバージョン
app_version String 利用しているアプリのバージョン
regist_route Integer 会員登録経路を表す数値
email_verified_at DateTime メールアドレスの認証日時
point_geted_at DateTime ポイント最終取得日
first_booted_at DateTime アプリの初回起動日時
last_booted_at DateTime アプリの最終起動日時
logined_at DateTime 最終ログイン日
returned_at DateTime 最終復帰日時(アプリを最後に開いた日時)
created_at DateTime 登録日
updated_at DateTime 更新日
change_status_name String change_status の表示名(例:引継依頼なし
logined_name String logined の表示名(例:ログイン中未ログイン
enabled_name String enabled の表示名(例:有効利用不可
顧客登録顧客更新のレスポンスには external_ids フィールドが含まれますが、顧客一覧のレスポンスには含まれません。
pin は「指定発番」というID発番方式を利用している場合に割り当てられる値です。指定発番の詳細について知りたい場合は、当社担当者へお問い合わせください。
enabled は、その顧客がYappliCRMを利用できる状態かどうかを表します。1(利用可)が通常の状態で、0(利用不可)は、利用規約違反などを理由にアカウントを利用停止にしたいケースを想定した項目です。

レスポンス(失敗時)

HTTPステータス401

{
  "status": false,
  "errors": ["認証に失敗しました。"],
  "all_errors": ["認証に失敗しました。"],
  "error_code": "API-OPENAPI16"
}

アクセストークンが無効・期限切れの場合に返却されます。詳細は エラーコード一覧 を参照してください。


顧客詳細

GET/api/ext/users/{id}

パスパラメータ

パラメータ 必須 説明
id String YappliCRMの顧客ID

クエリパラメータ

パラメータ 必須 説明 デフォルト
with_column_key Boolean - true の場合、カスタムフィールドの物理名(キー名)をレスポンスに含める false

レスポンス(成功時 200

顧客登録・更新APIと同様に、レスポンスは member オブジェクトでラップされた形式で返却されます。

レスポンス例(with_column_key=false 時)

{
  "member": {
    "id": "b4f3a1c2-7e9d-4c6a-8f2b-1d3e5a7c9b0d",
    "unique_id": "A00000000012345B",
    "pin": null,
    "login_id": "sato.hanako@example.com",
    "rank": "silver",
    "column01": "山田太郎",
    "column02": "test",
    "column03": null,
    "column04": null,
    "column05": null,
    "column06": null,
    "column07": null,
    "column08": null,
    "column09": null,
    "column10": null,
    "column11": null,
    "column12": null,
    "column13": null,
    "column14": null,
    "column15": null,
    "column16": null,
    "secret_question": null,
    "secret_answer": null,
    "point": 0,
    "total_point": 1010,
    "logined": 0,
    "enabled": 1,
    "memo": null,
    "ud_id": "1a2b3c4d5e6f7g8h",
    "point_geted_at": "2026-01-12 13:42:47",
    "point_used_at": "2026-01-12",
    "point_expired_at": "--",
    "point_expired_point": "--",
    "external_ids": {
      "example_id1": "66",
      "example_id2": "88"
    },
    "logined_at": "2026-01-16 08:43:08",
    "created_at": "2025-03-13 13:56:45",
    "updated_at": "2026-07-13 00:06:44"
  }
}

with_column_key=false(デフォルト)の場合、カスタムフィールドは物理名ではなく column01column50 の連番キーで返却されます。ただし実際に返却されるキーの数は、そのクライアントで設定されているカスタムフィールドの数分のみです(上記例では column16 まで。50個すべてが常に返却されるわけではありません)。

レスポンス例(with_column_key=true 時)

{
  "member": {
    "id": "b4f3a1c2-7e9d-4c6a-8f2b-1d3e5a7c9b0d",
    "unique_id": "A00000000012345B",
    "pin": null,
    "login_id": "sato.hanako@example.com",
    "rank": "silver",
    "column01": "山田太郎",
    "column02": "test",
    "column03": null,
    "column04": null,
    "column05": null,
    "column06": null,
    "column07": null,
    "column08": null,
    "column09": null,
    "column10": null,
    "column11": null,
    "column12": null,
    "column13": null,
    "column14": null,
    "column15": null,
    "column16": null,
    "secret_question": null,
    "secret_answer": null,
    "point": 0,
    "total_point": 1010,
    "logined": 0,
    "enabled": 1,
    "memo": null,
    "ud_id": "1a2b3c4d5e6f7g8h",
    "point_geted_at": "2026-01-12 13:42:47",
    "point_used_at": "2026-01-12",
    "point_expired_at": "--",
    "point_expired_point": "--",
    "last_name": "山田太郎",
    "first_name": "test",
    "survey_opt_in": null,
    "purchase_amount": null,
    "external_reference_id": null,
    "birth_date": null,
    "phone_number": null,
    "membership_period": null,
    "password_changed_flag": null,
    "last_login_flag": null,
    "registration_channel": null,
    "total_purchase_amount": null,
    "gold_rank_flag": null,
    "silver_rank_flag": null,
    "sample_date_field": null,
    "favorite_categories": null,
    "external_ids": {
      "example_id1": "66",
      "example_id2": "88"
    },
    "logined_at": "2026-01-16 08:43:08",
    "created_at": "2025-03-13 13:56:45",
    "updated_at": "2026-07-13 00:06:44"
  }
}

with_column_key=true の場合、column01〜(クライアントで設定されている数まで)の連番キーはそのまま維持された上で、point_expired_point の後・external_ids の前の位置に、実際にYappliCRMの管理画面で設定されているカスタムフィールドの物理名(キー名)をキーとした同じ値のフィールドが追加されます(上記例の last_namefavorite_categories が該当)。

物理名フィールドが追加されるのは、そのクライアントで実際に設定・利用されているカスタムフィールドの分のみです(上記例では16個のカスタムフィールドが設定されているクライアントを想定しています)。未設定のカスタムフィールドについては、columnNN ・物理名のいずれのキーも追加されません。

Member Object(顧客詳細)

顧客詳細のMember Objectは、顧客一覧のMember Objectと共通のフィールドに加え、以下のフィールドが追加で含まれます。

フィールド 説明
point_used_at Date / String 初回ポイント使用日。「最終使用日」ではなく最も古い(初回の)使用日が返却されます。未設定時は null ではなく "--" という文字列で返却されます
point_expired_at String 今後失効するポイントのうち、もっとも近い有効期限日(YYYY-MM-DD 形式。期間の制限を受けません)。今後失効する予定のポイントが1件もない場合は "--" という文字列で返却されます(例:ポイントの獲得履歴がない、保有ポイントを使い切っている、有効期限付きのポイントがすべて期限切れ、有効期限のないポイントのみを保有している、のいずれかに該当する場合)
point_expired_point String 管理画面の「直近失効ポイント表示」設定で指定した期間内に失効するポイント数の合計。デフォルト設定(「直近」)の場合は、もっとも近い失効日に失効するポイント数です。値がある場合も常に文字列型で返却され、1,000以上の場合はカンマ区切り(例:"1,234")になります。該当するポイントがない場合は同様に "--" という文字列で返却されます
external_ids Object {外部連携キー: 外部連携ID} 形式のオブジェクト。詳細は カスタムフィールド設計ガイド を参照

point_used_at / point_expired_at / point_expired_point の3項目は、ポイント付与(加算・減算)APIのレスポンスとしても返却されます。この3項目が返却されるのはYappliCRMのポイント機能を利用しているクライアントのみで、ポイント機能を利用していないクライアントでは "--" ではなくキー自体がレスポンスに含まれません。

point_expired_atpoint_expired_point は、集計する範囲が異なるため、必ずセットで値が入る・"--" になるわけではありません。point_expired_point の集計期間(「直近失効ポイント表示」設定)よりも先の日付にしか失効ポイントがない場合、point_expired_at には日付が入っていても point_expired_point"--" になります(例:設定が「直近30日」で、もっとも近い失効日が2ヶ月先の場合、point_expired_at は日付を返しつつ point_expired_point"--" になります)。
point_used_at / point_expired_at / point_expired_point は、該当する値がない場合 null ではなく "--" という文字列で返却されます。パース処理では、この文字列パターンに加え、point_expired_point のカンマ区切り表記も考慮した実装にしてください。

レスポンス(失敗時)

HTTPステータス400

{
  "status": false,
  "errors": "Member is not found"
}

指定した id の顧客が存在しない場合に返却されます。アクセストークンが無効な場合の挙動は顧客一覧と同様です。詳細は エラーコード一覧 を参照してください。


顧客詳細(ユニークID)

GET/api/ext/users/unique_id/{unique_id}

会員証の読み取り等により、id ではなく unique_id から顧客を特定したい場合に使用します。

パスパラメータ

パラメータ 必須 説明
unique_id String 外部システムでユニークな会員証番号等のID

クエリパラメータ

パラメータ 必須 説明 デフォルト
with_column_key Boolean - カスタムフィールドを物理名で取得するか false

レスポンスの構造・失敗時のエラー(Member is not found 等)は顧客詳細と同様です。


顧客詳細(外部連携ID)

GET/api/ext/users/external_id/{external_key}/{external_id}

事前に外部連携IDを連携済みの場合に使用します。

パスパラメータ

パラメータ 必須 説明
external_key String 事前にYappliCRMの管理画面で設定した外部連携IDのキー名
external_id String 外部システム独自のID

external_key は任意の値を自由に設定できるものではなく、YappliCRMの管理画面から当社担当者が事前に設定する必要があります。クライアント側で直接設定することはできないため、設定が必要な場合は当社担当者までご連絡ください(詳細は カスタムフィールド設計ガイド を参照)。

レスポンスの構造は顧客詳細と同様です。失敗時はMember is not foundエラーが返却されますが、これはexternal_key自体が未設定の場合と、該当するexternal_idの顧客が存在しない場合のいずれでも同じエラーになります(詳細は エラーコード一覧 を参照)。


顧客登録

POST/api/ext/users

リクエストパラメータ

パラメータ 必須 説明
unique_id String - 外部システムでユニークな会員証番号等のID。半角文字、最大255文字、重複不可。省略時はエラーになりません(自動採番が有効なクライアントでは自動採番された値が設定され、無効なクライアントでは null のまま登録されます)。空文字 "" を送信した場合はエラーになります(※「必須パラメータについて」を参照)
login_id String - ログインID。半角文字、1〜255文字、重複不可
password String - パスワード。半角文字、4〜255文字(※「必須パラメータについて」を参照)
rank String - ランク。最大255文字(※「必須パラメータについて」を参照)
column01column50 String / mixed - カスタムフィールド(型については カスタムフィールドの件数と型 を参照)
secret_question String - 秘密の質問(最大255文字)
secret_answer String - 秘密の質問の答え(最大255文字)
logined Integer - ログイン状態(0/1
enabled Integer - 利用可否(0/1。デフォルト 1
logined_at String 最終ログイン日時(Y-m-d H:i:s 形式)。logined=1 の場合は必須
ud_id String - ユーザーデバイスID(最大255文字)
with_column_key Boolean - カスタムフィールドを物理名で送信するか(デフォルト false
external_ids Object - 外部連携ID({external_key: external_id} 形式。詳細は カスタムフィールド設計ガイド
必須パラメータについて:本APIには必須パラメータはありません。リクエストボディを空({})にして送信しても、エラーにならず顧客登録がおこなえます(unique_id は自動採番、rank はデフォルト値が設定されます)。ただし、passwordrankunique_id は、パラメータ自体を送らなければエラーになりませんが、空文字 "" を送信した場合はエラーpasswordは必須です。 等)になります。login_id は空文字を送信してもエラーになりません。また、logined=1 を指定した場合のみ logined_at が必須になります。

リクエスト例

curl -X POST "{{APP_URL}}/api/ext/users" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "login_id": "user@example.com",
    "password": "password123",
    "unique_id": "U12345",
    "rank": "bronze",
    "column01": "2000-01-01",
    "enabled": 1,
    "external_ids": {
      "example_id1": "1001",
      "example_id2": "2002"
    }
  }'

レスポンス(成功時)

HTTPステータス200

{
  "member": {
    "id": "a2580159-bc70-481c-a7c7-ffde97a85218",
    "unique_id": "U12345",
    "pin": null,
    "login_id": "user@example.com",
    "rank": "bronze",
    "column01": "2000-01-01",
    "column02": null,
    "column03": null,
    "column04": null,
    "column05": null,
    "column06": null,
    "column07": null,
    "column08": null,
    "column09": null,
    "column10": null,
    "column11": null,
    "column12": null,
    "column13": null,
    "column14": null,
    "column15": null,
    "column16": null,
    "secret_question": null,
    "secret_answer": null,
    "point": 0,
    "total_point": 0,
    "logined": 0,
    "enabled": 1,
    "memo": null,
    "ud_id": null,
    "point_geted_at": null,
    "point_used_at": "--",
    "point_expired_at": "--",
    "point_expired_point": "--",
    "external_ids": {
      "example_id1": "1001",
      "example_id2": "2002"
    },
    "logined_at": null,
    "created_at": "2026-02-02 12:34:56",
    "updated_at": "2026-02-02 12:34:56"
  }
}

レスポンスは member オブジェクトでラップされる点に注意してください(顧客一覧Member Object とは異なり、キーが1段ネストしています)。フィールド構成は 顧客詳細のMember Objectと同じで、point_used_at / point_expired_at / point_expired_point / external_ids も含まれます(id はString型のUUIDで返却され、pin は「指定発番」というID発番方式を利用している場合のみ値が設定されます)。

column01column50のうち実際に返却されるのは、そのクライアントで設定されているカスタムフィールドの数分のみです(上記例のクライアントでは column16 まで)。全クライアントで常に50個分すべてが返却されるとは限らない点に注意してください。

レスポンス(エラー時)

エラー時は status: falseerrors を含むJSONが返却されます。errors はケースによって「配列」または「文字列」のいずれかの型で返るため、パース処理は両方を考慮してください。

{
  "status": false,
  "errors": [
    "指定のunique idは既に使用されています。",
    "指定のlogin idは既に使用されています。"
  ]
}
{
  "status": false,
  "errors": "Not contracted"
}
エラーメッセージ 意味
指定のunique idは既に使用されています。 unique_id が重複
指定のlogin idは既に使用されています。 login_id が重複
external_ids.〇〇の値は既に使用されています。 指定した外部連携ID(external_ids)の値が、同一クライアント内の他の顧客と重複
passwordは必須です。 passwordrankunique_id に空文字 "" を送信した場合(パラメータ自体を省略した場合はエラーになりません)
loginedが1の場合、logined atを指定してください。 logined=1 を指定したが logined_at が未指定
会員情報の保持に必要なカスタムフィールドの設定がありません。 カスタムフィールドの設定不足
Not contracted クライアント(契約)が無効。errors が文字列で返る点に注意

アクセストークンが無効な場合の挙動は顧客一覧と同様です。詳細は エラーコード一覧 を参照してください。


顧客更新

PUT/api/ext/users/{id}

パスパラメータ

パラメータ 必須 説明
id String YappliCRMの顧客ID

リクエストパラメータ

パラメータ 必須 説明
unique_id String - 外部システムでユニークな会員証番号等のID。半角文字、最大255文字、重複不可。指定した場合は既存の値が上書きされ、省略した場合は既存の値が維持されます(自動採番は再実行されません)
login_id String - ログインID。半角文字、1〜255文字、重複不可
password String - パスワード。半角文字、4〜255文字。省略時はエラーになりませんが、空文字 "" を送信した場合はエラーになります
rank String - ランク。最大255文字
column01column50 String / mixed - カスタムフィールド(型については カスタムフィールドの件数と型 を参照)
secret_question String - 秘密の質問(最大255文字)
secret_answer String - 秘密の質問の答え(最大255文字)
logined Integer - ログイン状態(0/1
enabled Integer - 利用可否(0/1
logined_at String 最終ログイン日時(Y-m-d H:i:s 形式)。logined=1 の場合は必須
ud_id String - ユーザーデバイスID(最大255文字)
with_column_key Boolean - カスタムフィールドを物理名で送信するか(デフォルト false
external_ids Object - 外部連携ID({external_key: external_id} 形式。詳細は カスタムフィールド設計ガイド

パラメータの内容は顧客登録と同じです。バリデーションエラーの形式も顧客登録と同様です。

リクエスト例

curl -X PUT "{{APP_URL}}/api/ext/users/{id}" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "column01": "更新後の値"
  }'

レスポンス(成功時)

HTTPステータス200

{
  "member": {
    "id": "a2580442-cad7-4cdf-8bcf-081c23eee430",
    "unique_id": "U12345",
    "pin": null,
    "login_id": "user@example.com",
    "rank": "gold",
    "column01": "更新後の値",
    "column02": null,
    "column03": null,
    "column04": null,
    "column05": null,
    "column06": null,
    "column07": null,
    "column08": null,
    "column09": null,
    "column10": null,
    "column11": null,
    "column12": null,
    "column13": null,
    "column14": null,
    "column15": null,
    "column16": null,
    "secret_question": null,
    "secret_answer": null,
    "point": 330,
    "total_point": 360,
    "logined": 0,
    "enabled": 1,
    "memo": null,
    "ud_id": null,
    "point_geted_at": "2026-07-27 15:33:41",
    "point_used_at": "2026-07-27",
    "point_expired_at": "2027-01-15",
    "point_expired_point": "--",
    "external_ids": {},
    "logined_at": "2026-07-27 10:57:45",
    "created_at": "2026-07-25 23:18:43",
    "updated_at": "2026-07-27 15:38:19"
  }
}

更新した項目(この例ではcolumn01)だけでなく、常に顧客情報全体が返却されます。レスポンス構造は顧客登録顧客詳細と同じです。

レスポンス(失敗時)

HTTPステータス400

{
  "status": false,
  "errors": "Member is not found"
}

指定した id の顧客が存在しない場合に返却されます。バリデーションエラーの形式は顧客登録と同様です。詳細は エラーコード一覧 を参照してください。

カスタムフィールド更新時の注意点

このエンドポイントでカスタムフィールドの値を変更すると、YappliCRM側で設定されている「指定カラム変化トリガー」が発火する場合があります。詳細は カスタムフィールド設計ガイド を参照してください。


外部連携ID削除

DELETE/api/ext/users/{id}/external_ids/{key}

指定した顧客から、特定の外部連携IDの紐付けを削除します。

パスパラメータ

パラメータ 必須 説明
id String YappliCRMの顧客ID
key String 削除対象の外部連携IDのキー名

レスポンス(成功時)

HTTPステータス204 No Content(レスポンスボディは空)

レスポンス(失敗時)

HTTPステータス404

{
  "status": false,
  "errors": "Page Not Found",
  "all_errors": ["Page Not Found"],
  "error_code": "API-OPENAPI08"
}

指定した id の顧客が存在しない場合に返却されます。他のエンドポイントの Member is not found400)とは異なるエラー形式である点に注意してください。

HTTPステータス400

{
  "status": false,
  "errors": "External ID not found"
}

顧客は存在するが、指定した key の外部連携IDが登録されていない場合に返却されます。

詳細は エラーコード一覧 を参照してください。


ログイン

POST/api/ext/users/login

ログインIDとパスワードを指定して、顧客のログイン処理をおこないます。

このエンドポイントは、multipart/form-data 形式(-F オプション)でのリクエストも受け付けます。他の多くのエンドポイントで使用する application/json 形式に統一したい場合は、そちらも利用できます。

リクエストパラメータ

パラメータ 必須 説明
login_id String ログインID
password String パスワード

リクエスト例

curl -X POST "{{APP_URL}}/api/ext/users/login" \
  -H "Authorization: Bearer {access_token}" \
  -F "login_id=user@example.com" \
  -F "password=password123"

レスポンス(成功時)

HTTPステータス200

{
  "member": {
    "id": "a2580442-cad7-4cdf-8bcf-081c23eee430",
    "unique_id": "U12345",
    "pin": null,
    "login_id": "user@example.com",
    "rank": "bronze",
    "column01": null,
    "column02": null,
    "column03": null,
    "column04": null,
    "column05": null,
    "column06": null,
    "column07": null,
    "column08": null,
    "column09": null,
    "column10": null,
    "column11": null,
    "column12": null,
    "column13": null,
    "column14": null,
    "column15": null,
    "column16": null,
    "secret_question": null,
    "secret_answer": null,
    "point": 0,
    "total_point": 0,
    "logined": 1,
    "enabled": 1,
    "memo": null,
    "ud_id": null,
    "point_geted_at": null,
    "point_used_at": "--",
    "point_expired_at": "--",
    "point_expired_point": "--",
    "logined_at": "2026-07-27 10:57:45",
    "created_at": "2026-02-02 12:34:56",
    "updated_at": "2026-02-02 12:34:56"
  }
}

レスポンスは顧客詳細と同じMember Object構造ですが、external_ids は含まれません。ログインに成功すると、logined1 に、logined_at は現在時刻に自動更新されます(ただし、認証メールを利用するクライアントでは、この更新はおこなわれません)。

レスポンス(失敗時)

HTTPステータス400

{
  "status": false,
  "errors": "ログインIDまたはパスワードが間違っています。"
}
エラーメッセージ 意味
ログインIDまたはパスワードが間違っています。 login_id が存在しない、または login_id / password の組み合わせが一致しない(存在しない login_id を指定した場合も、顧客の存在有無を区別せずこのメッセージが返却されます)
アカウントがロックされています。 対象顧客が利用不可(enabled = 0)の状態
このアカウントは機種変更手続き中です。 対象顧客が機種変更手続き中の状態
login idは、必ず指定してください。errors は配列) login_id / password が未指定

詳細は エラーコード一覧 を参照してください。


ログアウト

POST/api/ext/users/{id}/logout

指定した顧客のログイン状態(logined)を未ログイン(0)に更新します。

パスパラメータ

パラメータ 必須 説明
id String YappliCRMの顧客ID

リクエスト例

curl -X POST "{{APP_URL}}/api/ext/users/{id}/logout" \
  -H "Authorization: Bearer {access_token}"

レスポンス(成功時)

HTTPステータス200

{
  "status": true
}

レスポンス(失敗時)

HTTPステータス400

{
  "status": false,
  "errors": "Member is not found"
}

指定した id の顧客が存在しない場合、上記のエラーが返却されます。詳細は エラーコード一覧 を参照してください。


退会

DELETE/api/ext/users/{id}/resign

登録されている顧客の退会処理をおこないます。

退会処理後は、対象の顧客IDに対して顧客詳細(GET)等を実行すると Member is not found エラーが返却され、通常のAPIからは取得できなくなります。

パスパラメータ

パラメータ 必須 説明
id String YappliCRMの顧客ID

リクエストパラメータ

パラメータ 必須 説明
column01column50 String - カスタムフィールド。退会にあわせて、ダミーデータへの置き換えなど値を更新したいカスタムフィールドがある場合に指定します

このエンドポイントも、ログインと同様に multipart/form-data 形式でのリクエストを受け付けます。application/json 形式に統一したい場合は、そちらも利用できます。

リクエスト例

curl -X DELETE "{{APP_URL}}/api/ext/users/{id}/resign" \
  -H "Authorization: Bearer {access_token}" \
  -F "column01=退会済み"

レスポンス(成功時)

HTTPステータス204 No Content(レスポンスボディは空)

レスポンス(失敗時)

HTTPステータス400

{
  "status": false,
  "errors": "Member is not found"
}

指定した id の顧客が存在しない場合に返却されます。詳細は エラーコード一覧 を参照してください。