/api/v1/profile/save/ プロファイルを保存する
Adapty Mail にプロファイルを作成または更新します。プロファイルにはユーザーのメールアドレスと属性が含まれ、 Adapty Mail はそれを使用して受信者を識別し、セグメントを構築します。
各ユーザーを一意の external_profile_id で識別してください。同じ external_profile_id を再度送信すると、
重複を作成するのではなく、既存のプロファイルが更新されます。
Request body
アプリまたはバックエンドが所有する、ユーザーの安定した識別子です。Adapty Mail がメールアドレス、クリック、購入を1つのプロファイルに紐付けられるよう、リクエスト間で同じ値を再利用してください。匿名識別子やインストールごとの識別子は使用しないでください。
ISO 8601 形式のユーザー作成日時(例: "2026-06-01T10:30:00Z")。
この日付はセグメントで使用できます。
ユーザーのメールアドレスです。Adapty Mail はこのアドレスにキャンペーンを配信します。 このアドレスは一度のみ書き込み可能です。プロファイル作成時に設定され、以降の保存では上書きされません。
独自システムにおけるユーザーの識別子(Adapty も認識しているものがある場合)。Adapty Mail はこれを使って Adapty SDK 経由でアクセスする同一人物を識別し、同じ人物に重複してメールを送信するプロファイルを生成する代わりに、2つのソースが1つのプロファイルを共有できるようにします。
ユーザーの名前(名)。
ユーザーの名前(姓)。
ユーザーの性別。
ISO 8601 形式のユーザーの生年月日(例: "1990-05-21")。
ISO 3166-1 alpha-2 の2文字コードで表したユーザーの国(例: US)。
ISO 3166-1 alpha-2 の2文字コードで表したユーザーのストアリージョン(例: US)。
マーケティングメール受信に対するユーザーの回答: 同意した場合は true、拒否した場合は false。
Adapty Mail は回答が false のプロファイルにはマーケティングメールを送信せず、ダブルオプトインの確認リクエストも送信しません。その他のトランザクションメールは引き続き届きます。
保存済みの回答を維持するにはこのフィールドを省略してください。回答のないプロファイルにはマーケティングメールが送信されます。
プロファイルに付加する任意のキーと値のペア(文字列または数値)。セグメントの構築に使用します(例: plan、signup_source、trial_days)。
ユーザーが使用しているプラットフォーム。例:iOS または Android。
デバイスモデル。例:iPhone15,2。
オペレーティングシステムのバージョン。例:17.5。
ユーザーのロケール。例:en-US。Adapty Mail はこの値を使用して、ローカライズされたキャンペーンのどの翻訳を送信するかを決定します。ロケールが設定されていないユーザーには英語のメールが送信されます。
ユーザーのタイムゾーン。例:America/New_York。
ユーザーが実行しているアプリのバージョン。例:3.1.0。
Responses
プロファイルが正常に保存されました。レスポンスボディは空のオブジェクトです。
Schema
Example
{} バリデーションに失敗しました — 必須フィールドが欠落しているか無効です。field_name に問題のあるフィールドが示されます。
Schema
標準エラーレスポンス。すべての失敗は、この形式で 4XX ステータスを返します。
エラーの人間が読める説明。
機械可読なエラー識別子。
このエラーの HTTP ステータスコード。
エラーの原因となったリクエストフィールド。エラーがフィールド固有でない場合は null。
Example
{
"errors": [
{
"message": "Field required",
"error_code": "base_error",
"status_code": 400,
"field_name": "email"
}
]
} シークレット API キーが欠落しているか無効です。
Schema
標準エラーレスポンス。すべての失敗は、この形式で 4XX ステータスを返します。
エラーの人間が読める説明。
機械可読なエラー識別子。
このエラーの HTTP ステータスコード。
エラーの原因となったリクエストフィールド。エラーがフィールド固有でない場合は null。
Example
{
"errors": [
{
"message": "Secret key doesn't exist",
"error_code": "secret_key_does_not_exist_error",
"status_code": 403,
"field_name": null
}
]
}