# プロファイルを削除する

> プロファイルの個人データを消去し、スケジュールされたメールをキャンセルします。削除権（忘れられる権利）のリクエストを処理するために使用します。
>
> `external_profile_id`、`customer_user_id`、`email` のいずれかの組み合わせでプロファイルを識別します — Adapty Mail は保存時と同じ方法でプロファイルを解決します。
>
> 消去は最終的なものです。同じ識別子を持つ後続の [プロファイルを保存する](#operation/saveProfile) リクエストはプロファイルを再作成しません。
>
> `external_profile_id` または `customer_user_id` による削除を繰り返すと、何も変更せずに再度成功します。`email` のみを含む削除を繰り返すと `404` が返されます：消去により保存されたアドレスがクリアされるため、メールアドレスには一致するものが残りません。

## OpenAPI

```yaml
/api-specs/adapty-mail-api.yaml post /api/v1/profile/delete/
openapi: 3.1.0
info:
  title: Adapty Mail API
  version: 1.0.0
  description: |
    Adapty Mail API を使用すると、Adapty SDK を経由せずに、サーバーから直接ユーザープロファイルとトランザクションイベントを Adapty Mail に送信できます。

    以下の用途に使用します：

    - まだ Adapty Mail にベースがない場合にサブスクライバーを追加する。
    - 他のアプリのサブスクライバーベースを再利用する。
    - バックエンドを信頼できる情報源として、Adapty Mail にサーバー間でデータを送信する。

    メールアドレスを持つプロファイルは **never purchased** フローに十分です。その他のすべてのフロー（renewal cancelled、billing issue、expired、refunded）は購入履歴によって駆動されるため、それらのプロファイルも適切なフローに配置されるためにトランザクションイベントが必要です。

    手順を追ったガイドについては、[Adapty Mail API 経由でメールとトランザクションを送信する](/docs/mail-send-data-via-api) を参照してください。
servers:
  - url: https://api-mail.adapty.io
    description: プロダクションサーバー
paths:
  /api/v1/profile/delete/:
    post:
      summary: プロファイルを削除する
      description: |
        プロファイルの個人データを消去し、スケジュールされたメールをキャンセルします。削除権（忘れられる権利）のリクエストを処理するために使用します。

        `external_profile_id`、`customer_user_id`、`email` のいずれかの組み合わせでプロファイルを識別します — Adapty Mail は保存時と同じ方法でプロファイルを解決します。

        消去は最終的なものです。同じ識別子を持つ後続の [プロファイルを保存する](#operation/saveProfile) リクエストはプロファイルを再作成しません。

        `external_profile_id` または `customer_user_id` による削除を繰り返すと、何も変更せずに再度成功します。`email` のみを含む削除を繰り返すと `404` が返されます：消去により保存されたアドレスがクリアされるため、メールアドレスには一致するものが残りません。
      operationId: deleteProfile
      security:
        - apikeyAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProfileDeleteDTO"
            examples:
              byExternalProfileId:
                summary: プロファイル保存時に送信した識別子で削除する
                value:
                  external_profile_id: user_12345
              byEmail:
                summary: メールアドレスで削除する
                value:
                  email: jane@example.com
      responses:
        "204":
          description: プロファイルが削除されました。レスポンスのボディはありません。
        "400":
          description: 識別子が提供されませんでした。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: At least one of external_profile_id, customer_user_id or email must be provided
                        error_code: missing_identifier
                        status_code: 400
                        field_name: null
        "403":
          description: シークレット API キーが存在しないか無効です。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: Secret key doesn't exist
                        error_code: secret_key_does_not_exist_error
                        status_code: 403
                        field_name: null
        "404":
          description: 送信した識別子に一致するプロファイルがありません。
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Errors"
              examples:
                default:
                  value:
                    errors:
                      - message: Profile not found
                        error_code: profile_not_found_error
                        status_code: 404
                        field_name: null
components:
  schemas:
    ProfileDeleteDTO:
      type: object
      description: |
        削除するプロファイルの識別子。`external_profile_id`、`customer_user_id`、`email` のいずれか少なくとも1つを送信してください。
      anyOf:
        - required:
            - external_profile_id
        - required:
            - customer_user_id
        - required:
            - email
      properties:
        external_profile_id:
          type: string
          description: プロファイルを保存する際に送信した識別子。
        customer_user_id:
          type: string
          description: お客様自身のシステムにおけるユーザーの識別子。
        email:
          type: string
          format: email
          description: プロファイルに登録されているメールアドレス。
    Errors:
      type: object
      description: 標準エラーレスポンス。すべての失敗は、この形式で 4XX ステータスを返します。
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
                description: エラーの人間が読める説明。
              error_code:
                type: string
                description: 機械可読なエラー識別子。
              status_code:
                type: integer
                description: このエラーの HTTP ステータスコード。
              field_name:
                type: string
                description: エラーの原因となったリクエストフィールド。エラーがフィールド固有でない場合は `null`。
  securitySchemes:
    apikeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: |
        すべてのリクエストをAdapty Mailのシークレットシークレットキーで認証します。**Authorization**ヘッダーに`Bearer {your_secret_api_key}`の形式（例：`Bearer secret_live_...`）で送信してください。

        このキーはAdapty Mailの**設定**で確認できます。キーはプロジェクト固有であり、データが属するプロジェクトを識別するため、プロファイルおよびトランザクションのエンドポイントにプロジェクトIDは不要です。
```
