← Files YCloud Developer KitARCHIVED FILE

skills/ycloud-whatsapp-phone-numbers/references/openapi.md

54.1 KB · Oct 5, 2026 · 18:33 UTC

↓ Download file

<!-- Generated by scripts/build_openapi_skill_references.py; do not edit. -->
# OpenAPI contract: WhatsApp phone numbers

## Provenance

- Source: `ycloud-api-v2.yaml` (pinned release snapshot).
- Source SHA-256: `8592bd4cc37186655a480dd86ce6bac6731543727327a2871d9103a0b8ed9e81`
- OpenAPI version: `3.0.0`
- API info.version: `v2`
- This derived reference does not replace the upstream API Owner's canonical source.
- Generated deterministically from normalized JSON; do not edit this file by hand.

## Scope and handoff

- These fifteen operations cover phone-number registration, profile, settings, commerce, business username, and contact-book boundaries. Mutations remain mock-only.
- Operation coverage: `15`

## Operations

### `DELETE /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/businessUsername` — `whatsapp_phone_number-delete-business-username`

- Summary: Delete a phone number business username
- Description:
  > Deletes the active Business Username for a WhatsApp business phone number.
  > This operation removes the currently active Business Username. It does not cancel or remove a reserved Business Username request. If a reserved request still exists after deletion, the returned `businessUsernameStatus` remains `reserved`; otherwise it becomes `not_set`.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully deleted the business username.
    - `application/json`: `#/components/schemas/WhatsappBusinessUsernameDeleteResult`
      - `$ref`: `#/components/schemas/WhatsappBusinessUsernameDeleteResult`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `DELETE /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/contactBook/{bsuid}` — `whatsapp_phone_number-delete-contact-book-entry`

- Summary: Delete a Meta contact book entry
- Description:
  > Deletes the Meta contact book entry that associates a WhatsApp business phone number with a customer's WhatsApp Business-scoped user ID (BSUID).
  >
  > Only standard BSUIDs such as `US.11815799212886844830` are supported. Parent BSUIDs such as `US.ENT.11815799212886844830` are not supported. The BSUID must be scoped to the same Meta business portfolio as the phone number. The specified WABA must belong to the authenticated YCloud account and be available, and the phone number must be bound to that WABA in YCloud. Use the YCloud account API key in the `X-API-Key` header. Developer App API keys are not supported and return HTTP 403.
  >
  > An HTTP 200 response always has `success=true`. `deleted=true` means Meta reports that it deleted a matching contact book entry. `deleted=false` means Meta processed the request but found no matching entry to delete. This operation does not delete or modify YCloud Contact, message, or BSUID business records, and it does not bypass Meta's 30-day caching behavior. A later WhatsApp interaction between the same business phone number and customer may cause Meta to create the entry again.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format, bound to the specified WABA in YCloud. When constructing the path manually, URL-encode the leading `+` as `%2B`.
    - Constraints: example="+16315551111"
  - `bsuid` (path, required): `string`
    > Standard WhatsApp Business-scoped user ID (BSUID) from the same Meta business portfolio as the phone number. Parent BSUIDs containing `.ENT.` are not supported.
    - Constraints: pattern="^[A-Z]{2}\\.[0-9]+$"; example="US.11815799212886844830"
- Request body: none
- Responses:
  - `200`: The delete request was processed successfully.
    - `application/json`: `#/components/schemas/WhatsappContactBookEntryDeleteResult`
      - `$ref`: `#/components/schemas/WhatsappContactBookEntryDeleteResult`
  - `400`: One or more path parameters are invalid, or Meta returned HTTP 400 for the delete request.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`
  - `403`: The API key is not permitted to call this endpoint, the specified WABA is unavailable to the authenticated YCloud account, the phone number is unavailable or not bound to that WABA in YCloud, or Meta returned HTTP 403.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`
  - `404`: Meta returned HTTP 404 for the phone number's upstream contact book resource. This status is not used when no matching contact book entry exists; that case returns HTTP 200 with `deleted=false`.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers` — `whatsapp_phone_number-list`

- Summary: List phone numbers
- Description:
  > Returns a paginated list of WhatsApp business phone numbers you've registered.
- Parameters:
  - `page` (query, optional): `integer (int32)`
    > Page number of the results to be returned, 1-based.
    - Constraints: minimum=1; maximum=100; default=1
  - `limit` (query, optional): `integer (int32)`
    > A limit on the number of results to be returned, or number of results per page, between 1 and 100, defaults to 10.
    - Constraints: minimum=1; maximum=100; default=10
  - `includeTotal` (query, optional): `boolean`
    > Return results inside an object that contains the total result count or not.
    - Constraints: default=false
  - `filter.wabaId` (query, optional): `string`
    > **Required if you have more than 100 WABAs.**
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
- Request body: none
- Responses:
  - `200`: Successfully retrieved a paginated list of objects.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumberPage`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumberPage`

### `POST /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/register` — `whatsapp_phone_number-register`

- Summary: Register a phone number
- Description:
  > Registers a WhatsApp business phone number.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number ID.
    - Constraints: example="1234567890123456"
- Request body: none
- Responses:
  - `200`: Successfully registered the phone number.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumber`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumber`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}` — `whatsapp_phone_number-retrieve`

- Summary: Retrieve a phone number
- Description:
  > Retrieves a WhatsApp business phone number you've registered.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully retrieved the object.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumber`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumber`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/businessUsername` — `whatsapp_phone_number-retrieve-business-username`

- Summary: Retrieve a phone number business username
- Description:
  > Retrieves the Business Username state for a WhatsApp business phone number.
  > The response reflects YCloud's latest known phone number state. If the phone number has no locally stored Business Username state, YCloud may sync the current username state from Meta before returning the response.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully retrieved the object.
    - `application/json`: `#/components/schemas/WhatsappBusinessUsername`
      - `$ref`: `#/components/schemas/WhatsappBusinessUsername`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/businessUsername/suggestions` — `whatsapp_phone_number-retrieve-business-username-suggestions`

- Summary: Retrieve phone number business username suggestions
- Description:
  > Retrieves reserved Business Username suggestions for a WhatsApp business phone number.
  > The response flattens Meta username suggestions into a string array. If no suggestions are available, `data` is an empty array.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully retrieved the suggestions.
    - `application/json`: `#/components/schemas/WhatsappBusinessUsernameSuggestions`
      - `$ref`: `#/components/schemas/WhatsappBusinessUsernameSuggestions`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/whatsappCommerceSettings` — `whatsapp_phone_number-retrieve-commerce-settings`

- Summary: Retrieve commerce settings
- Description:
  > Retrieves a WhatsApp business phone number's commerce settings.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully retrieved the object.
    - `application/json`: `#/components/schemas/WhatsappCommerceSettings`
      - `$ref`: `#/components/schemas/WhatsappCommerceSettings`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/profile` — `whatsapp_phone_number-retrieve-profile`

- Summary: Retrieve a phone number profile
- Description:
  > Retrieves a WhatsApp business phone number's profile. Customers can view your business profile by clicking your business's name or number in a conversation thread.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: none
- Responses:
  - `200`: Successfully retrieved the object.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumberProfile`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumberProfile`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `GET /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/settings` — `whatsapp_phone_number-retrieve-settings`

- Summary: Retrieve phone number settings
- Description:
  > Retrieves phone number specific settings.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+6283138205170"
  - `type` (query, optional): `string`
    > Set to `capture` to retrieve only Calling recording and transcription capture settings. Omit it or set it to `calling` to retrieve the existing Calling settings response.
    - Constraints: enum=["capture", "calling"]
- Request body: none
- Responses:
  - `200`: Successfully retrieved the phone number settings.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumberSettings`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumberSettings`
  - `400`: Bad request. The settings type is unsupported.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `POST /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/settings` — `whatsapp_phone_number-save-settings`

- Summary: Save phone number settings
- Description:
  > Saves phone number specific settings. Send `calling`, `capture`, or both.
  > When both are supplied, the service independently attempts both saves after shared
  > authorization and phone-number validation. A failure in either branch does not prevent
  > the other branch from being attempted. If either branch fails, the existing error response
  > is returned and the other setting may already have been saved.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+6283138205150"
- Request body: required
  - `application/json`: `#/components/schemas/WhatsappPhoneNumberSettings`
    - `$ref`: `#/components/schemas/WhatsappPhoneNumberSettings`
- Responses:
  - `200`: Successfully saved the phone number settings.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumberSettings`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumberSettings`
  - `400`: Bad request. A Calling or Capture setting is invalid. For a combined request, the other setting may already have been saved.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `PATCH /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/businessUsername` — `whatsapp_phone_number-update-business-username`

- Summary: Update a phone number business username
- Description:
  > Requests a Business Username update for a WhatsApp business phone number.
  > The requested username may require Meta review before it becomes active. If Meta accepts or reserves the request for review, the response status is usually `reserved`; `pending_review` is kept only as a legacy compatibility value. If Meta returns an error, YCloud returns the error and does not change the stored Business Username state.
  >
  > The `username` value is a plain username without `@`. YCloud trims leading and trailing whitespace and normalizes the value to lowercase before validation and submission.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: required
  - `application/json`: `#/components/schemas/WhatsappBusinessUsernameUpdateRequest`
    - `$ref`: `#/components/schemas/WhatsappBusinessUsernameUpdateRequest`
- Responses:
  - `200`: Successfully submitted the update request.
    - `application/json`: `#/components/schemas/WhatsappBusinessUsername`
      - `$ref`: `#/components/schemas/WhatsappBusinessUsername`
  - `400`: Bad request. Invalid request parameters.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `PATCH /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/whatsappCommerceSettings` — `whatsapp_phone_number-update-commerce-settings`

- Summary: Update commerce settings
- Description:
  > Updates a WhatsApp business phone number's commerce settings.
  > Use this endpoint to enable or disable the shopping cart or the product catalog for a specific business phone number.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: required
  - `application/json`: `#/components/schemas/WhatsappCommerceSettingsUpdateRequest`
    - `$ref`: `#/components/schemas/WhatsappCommerceSettingsUpdateRequest`
- Responses:
  - `200`: Successfully updated the object.
    - `application/json`: `#/components/schemas/WhatsappCommerceSettings`
      - `$ref`: `#/components/schemas/WhatsappCommerceSettings`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `PATCH /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/displayName` — `whatsapp_phone_number-update-displayName`

- Summary: Update a phone number display name
- Description:
  > Updates a WhatsApp business phone number display name.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: required
  - `application/json`: `#/components/schemas/WhatsappPhoneNameUpdateRequest`
    - `$ref`: `#/components/schemas/WhatsappPhoneNameUpdateRequest`
- Responses:
  - `200`: Successfully updated the object.
    - `application/json`: `#/components/schemas/WhatsappPhoneNameUpdateResponse`
      - `$ref`: `#/components/schemas/WhatsappPhoneNameUpdateResponse`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

### `PATCH /whatsapp/phoneNumbers/{wabaId}/{phoneNumber}/profile` — `whatsapp_phone_number-update-profile`

- Summary: Update a phone number profile
- Description:
  > Updates a WhatsApp business phone number profile.
- Parameters:
  - `wabaId` (path, required): `string`
    > WhatsApp Business Account ID.
    - Constraints: example="whatsapp-business-account-id"
  - `phoneNumber` (path, required): `string`
    > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
    - Constraints: example="+16315551111"
- Request body: required
  - `application/json`: `#/components/schemas/WhatsappPhoneNumberProfileUpdateRequest`
    - `$ref`: `#/components/schemas/WhatsappPhoneNumberProfileUpdateRequest`
- Responses:
  - `200`: Successfully updated the object.
    - `application/json`: `#/components/schemas/WhatsappPhoneNumberProfile`
      - `$ref`: `#/components/schemas/WhatsappPhoneNumberProfile`
  - `404`: The requested resource does not exist.
    - `application/json`: `#/components/schemas/ErrorResponse`
      - `$ref`: `#/components/schemas/ErrorResponse`

## Referenced schema and parameter shapes

### `filter_wabaId`

- Reference: `#/components/parameters/filter_wabaId`
- Parameter name: `filter.wabaId`
- Location: `query`
- Required: `false`
- Description:
  > **Required if you have more than 100 WABAs.**
  > WhatsApp Business Account ID.
- Schema: `string`
  - Constraints: example="whatsapp-business-account-id"

### `includeTotal`

- Reference: `#/components/parameters/includeTotal`
- Parameter name: `includeTotal`
- Location: `query`
- Required: `false`
- Description:
  > Return results inside an object that contains the total result count or not.
- Schema: `boolean`
  - Constraints: default=false

### `limit`

- Reference: `#/components/parameters/limit`
- Parameter name: `limit`
- Location: `query`
- Required: `false`
- Description:
  > A limit on the number of results to be returned, or number of results per page, between 1 and 100, defaults to 10.
- Schema: `integer (int32)`
  - Constraints: minimum=1; maximum=100; default=10

### `page`

- Reference: `#/components/parameters/page`
- Parameter name: `page`
- Location: `query`
- Required: `false`
- Description:
  > Page number of the results to be returned, 1-based.
- Schema: `integer (int32)`
  - Constraints: minimum=1; maximum=100; default=1

### `CallingCaptureSettings`

- Reference: `#/components/schemas/CallingCaptureSettings`
- Shape: `object`
  - Description:
    > Phone-number-level recording and transcription capture settings used for new WhatsApp calls.
  - Properties:
    - `announcementLanguage`: `string`
      - Description:
        > Meta-supported announcement language. Required when either capture switch is enabled.
      - Constraints: enum=["en", "en_US", "en_AU", "en_CA", "en_GB", "en_IN", "en_NZ", "nl", "fr", "de", "hi", "it", "kn", "pt", "es", "es_ES", "te", "vi"]; example="en_US"
    - `purpose`: `string`
      - Description:
        > Customer-defined capture purpose passed to the Calling provider configuration. Required when either capture switch is enabled.
      - Constraints: maxLength=250; example="quality_assurance"
    - `recordingEnabled`: `boolean`
      - Description:
        > Whether recording capture is enabled.
    - `transcriptionEnabled`: `boolean`
      - Description:
        > Whether transcription capture is enabled.

### `Error`

- Reference: `#/components/schemas/Error`
- Shape: `object`
  - Required properties: `status`, `code`
  - Properties:
    - `code`: `string` (required)
      - Description:
        > One of a server-defined error codes. Some `4xx` errors that could be handled programmatically include an error code that briefly explains the error reported.
      - Constraints: example="NOT_FOUND"
    - `docUrl`: `string`
      - Description:
        > A URL to more information about the error.
      - Constraints: example=""
    - `message`: `string`
      - Description:
        > A human-readable representation of the error. It is intended as an aid to developers and is not suitable for exposure to end users.
      - Constraints: example="The requested resource does not exist."
    - `requestId`: `string`
      - Description:
        > Each API request has an associated request ID. It conveys the response header `YCloud-Request-ID` used for the convenience of the consumer.
      - Constraints: example="req_1KjtKI80IKoaJNa6n6p"
    - `status`: `integer (int32)` (required)
      - Description:
        > HTTP status code, [RFC 7231, Section 6](https://datatracker.ietf.org/doc/html/rfc7231#section-6). It conveys the HTTP status code used for the convenience of the consumer.
      - Constraints: pattern="[45]\\d{2}"; example=404
    - `target`: `string`
      - Description:
        > The target of the error.
      - Constraints: example=""
    - `whatsappApiError`: `#/components/schemas/WhatsappApiError`
      - Description:
        > The original error object returned by WhatsApp. See [Handling Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling), [Cloud API Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
        >
        > Note: This field is returned if we tried to request the WhatsApp Business API and got an error response.

### `ErrorResponse`

- Reference: `#/components/schemas/ErrorResponse`
- Shape: `object`
  - Required properties: `error`
  - Properties:
    - `error`: `#/components/schemas/Error` (required)

### `Page`

- Reference: `#/components/schemas/Page`
- Shape: `object`
  - Description:
    > Represents a given page of items.
  - Required properties: `offset`, `limit`, `length`
  - Properties:
    - `items`: `array`
      - Items: `object`
    - `length`: `integer (int32)` (required)
      - Description:
        > The actual number of items in the page.
      - Constraints: minimum=0
    - `limit`: `integer (int32)` (required)
      - Description:
        > A limit on the number of items to be returned, between 1 and 100, defaults to 10.
      - Constraints: minimum=1
    - `offset`: `integer (int32)` (required)
      - Description:
        > The position of the item this page starts from, zero-based. e.g., the 11th item is at offset 10.
      - Constraints: minimum=0
    - `total`: `integer (int32)`
      - Description:
        > The total number of items. This field is returned only when the request parameter `includeTotal` is set to `true`.
      - Constraints: minimum=0

### `WhatsappApiError`

- Reference: `#/components/schemas/WhatsappApiError`
- Shape: `object`
  - Description:
    > The original error object returned by WhatsApp. See [Handling Errors](https://developers.facebook.com/docs/graph-api/guides/error-handling), [Cloud API Error Codes](https://developers.facebook.com/docs/whatsapp/cloud-api/support/error-codes).
  - Required properties: `message`, `code`
  - Properties:
    - `code`: `string` (required)
      - Description:
        > An error code.
      - Constraints: example=200002
    - `error_data`: `object`
      - Description:
        > Additional data about the error. A string or map.
        > - For template APIs, this field is a string describing the reason for the error.
        > - For message APIs, this field is a map with property `details` describing the reason for the error.
    - `error_subcode`: `string`
      - Description:
        > Additional code about the error.
      - Constraints: example=2388109
    - `error_user_msg`: `string`
      - Description:
        > The message to display to the user. The language of the message is based on the locale of the API request.
      - Constraints: example="This message template cannot be created."
    - `error_user_title`: `string`
      - Description:
        > The title of the dialog, if shown. The language of the message is based on the locale of the API request.
      - Constraints: example="Message Cannot Be Submitted"
    - `fbtrace_id`: `string`
      - Description:
        > Internal support identifier. When reporting a bug related to a Graph API call, include the fbtrace_id to help us find log data for debugging.
      - Constraints: example="AVGjJ7ia2zJkrHG"
    - `is_transient`: `boolean`
      - Description:
        > Whether the error is transient.
      - Constraints: example=false
    - `message`: `string` (required)
      - Description:
        > A human-readable description of the error.
      - Constraints: example="HSM Template creation failed"
    - `type`: `string`
      - Description:
        > Error type.
      - Constraints: example="OAuthException"

### `WhatsappBusinessUsername`

- Reference: `#/components/schemas/WhatsappBusinessUsername`
- Shape: `object`
  - Description:
    > Business Username state for a WhatsApp business phone number.
  - Properties:
    - `businessUsername`: `string`
      - Description:
        > Active Business Username. The value is a plain username without `@`.
      - Constraints: example="acme.support"
    - `businessUsernameStatus`: `#/components/schemas/WhatsappBusinessUsernameStatus`
    - `businessUsernameUpdatedAt`: `string (date-time)`
      - Description:
        > The time when the Business Username state was last updated.
      - Constraints: example="2026-05-26T12:00:00.000Z"
    - `displayPhoneNumber`: `string`
      - Description:
        > Display phone number.
      - Constraints: example="+1 631-555-1111"
    - `id`: `string`
      - Description:
        > Phone number ID.
      - Constraints: example="1234567890123456"
    - `phoneNumber`: `string`
      - Description:
        > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
      - Constraints: example="+16315551111"
    - `requestedBusinessUsername`: `string`
      - Description:
        > Last requested Business Username that is still under review. This value can coexist with an active `businessUsername` while the new request is pending.
      - Constraints: example="acme.help"
    - `wabaId`: `string`
      - Description:
        > WhatsApp Business Account ID.
      - Constraints: example="whatsapp-business-account-id"

### `WhatsappBusinessUsernameDeleteResult`

- Reference: `#/components/schemas/WhatsappBusinessUsernameDeleteResult`
- Shape: `object`
  - Description:
    > Business Username deletion result.
    > Deleting the active username does not cancel a reserved Business Username request. If a reserved request still exists, the returned `businessUsernameStatus` is `reserved`; otherwise it is `not_set`.
  - Properties:
    - `businessUsernameStatus`: `#/components/schemas/WhatsappBusinessUsernameStatus`
    - `businessUsernameUpdatedAt`: `string (date-time)`
      - Description:
        > The time when the Business Username state was last updated.
      - Constraints: example="2026-05-26T12:00:00.000Z"
    - `id`: `string`
      - Description:
        > Phone number ID.
      - Constraints: example="1234567890123456"
    - `phoneNumber`: `string`
      - Description:
        > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
      - Constraints: example="+16315551111"
    - `success`: `boolean`
      - Description:
        > Whether the delete request was accepted.
      - Constraints: example=true
    - `wabaId`: `string`
      - Description:
        > WhatsApp Business Account ID.
      - Constraints: example="whatsapp-business-account-id"

### `WhatsappBusinessUsernameStatus`

- Reference: `#/components/schemas/WhatsappBusinessUsernameStatus`
- Shape: `string`
  - Description:
    > Business Username state for a WhatsApp business phone number.
    > - `not_set`: No active or pending Business Username exists.
    > - `active`: A Business Username is active.
    > - `reserved`: A requested Business Username is reserved by Meta and may still be under review.
    > - `pending_review`: Legacy compatibility value for an under-review request. New writes use `reserved`.
    > If an active username exists while a new request is reserved or under review, `businessUsernameStatus` is `reserved`, `businessUsername` contains the still-active username, and `requestedBusinessUsername` contains the requested username.
  - Constraints: enum=["not_set", "active", "pending_review", "reserved"]

### `WhatsappBusinessUsernameSuggestions`

- Reference: `#/components/schemas/WhatsappBusinessUsernameSuggestions`
- Shape: `object`
  - Description:
    > Reserved Business Username suggestions.
  - Properties:
    - `data`: `array`
      - Constraints: example=["acme.support", "acme.help"]
      - Items: `string`

### `WhatsappBusinessUsernameUpdateRequest`

- Reference: `#/components/schemas/WhatsappBusinessUsernameUpdateRequest`
- Shape: `object`
  - Required properties: `username`
  - Properties:
    - `username`: `string` (required)
      - Description:
        > Business Username to request for the phone number. Send the plain username without `@`.
        >
        > YCloud trims leading and trailing whitespace and normalizes the value to lowercase before validation and submission. The value must be 3-35 characters, contain only English letters, numbers, periods, and underscores, and contain at least one English letter. It must not start or end with a period, contain consecutive periods, start with `www`, or end with common domain suffixes such as `.com`, `.org`, `.net`, `.int`, `.edu`, `.gov`, `.mil`, `.us`, `.in`, or `.html`.
      - Constraints: minLength=3; maxLength=35; pattern="^[A-Za-z0-9._]+$"; example="acme.support"

### `WhatsappCommerceSettings`

- Reference: `#/components/schemas/WhatsappCommerceSettings`
- Shape: `object`
  - Description:
    > WhatsApp business phone number's commerce settings.
  - Properties:
    - `id`: `string`
      - Description:
        > Unique ID for the object.
    - `isCartEnabled`: `boolean`
      - Description:
        > When enabled, cart-related buttons appear in the conversation, catalog, and product details views.
        > When the cart is disabled, customers can see products and their details, but all cart related buttons will not appear in any view.
    - `isCatalogVisible`: `boolean`
      - Description:
        > When enabled, the catalog storefront icon and catalog-related buttons appear in conversation and business profile views.
        > When the catalog is disabled, the storefront icon and catalog-related buttons will not appear in any views and the catalog preview with thumbnails will not appear in the business profile view.

### `WhatsappCommerceSettingsUpdateRequest`

- Reference: `#/components/schemas/WhatsappCommerceSettingsUpdateRequest`
- Shape: `object`
  - Properties:
    - `isCartEnabled`: `boolean`
      - Description:
        > When enabled, cart-related buttons appear in the conversation, catalog, and product details views.
        > When the cart is disabled, customers can see products and their details, but all cart related buttons will not appear in any view.
    - `isCatalogVisible`: `boolean`
      - Description:
        > When enabled, the catalog storefront icon and catalog-related buttons appear in conversation and business profile views.
        > When the catalog is disabled, the storefront icon and catalog-related buttons will not appear in any views and the catalog preview with thumbnails will not appear in the business profile view.

### `WhatsappContactBookEntryDeleteResult`

- Reference: `#/components/schemas/WhatsappContactBookEntryDeleteResult`
- Shape: `object`
  - Description:
    > Meta's contact book entry deletion result returned by YCloud.
  - Required properties: `success`, `deleted`
  - Properties:
    - `deleted`: `boolean` (required)
      - Description:
        > Meta's deletion result. `true` means Meta reports that it deleted a matching entry. `false` means Meta processed the request but found no matching entry to delete.
      - Constraints: example=true
    - `success`: `boolean` (required)
      - Description:
        > Always `true` in an HTTP 200 response.
      - Constraints: example=true

### `WhatsappPhoneNameUpdateRequest`

- Reference: `#/components/schemas/WhatsappPhoneNameUpdateRequest`
- Shape: `object`
  - Description:
    > WhatsApp Phone Number Display Name
  - Properties:
    - `newName`: `string`
      - Description:
        > The new name you want to modify
      - Constraints: minLength=3; maxLength=150; example="newName"

### `WhatsappPhoneNameUpdateResponse`

- Reference: `#/components/schemas/WhatsappPhoneNameUpdateResponse`
- Shape: `object`
  - Description:
    > WhatsApp Phone Number Display Name Modify Result
  - Properties:
    - `nameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
    - `newName`: `string`
      - Description:
        > The new name you want to modify
      - Constraints: minLength=3; maxLength=150; example="newName"
    - `newNameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
    - `verifiedName`: `string`
      - Description:
        > The verified name
      - Constraints: minLength=3; maxLength=150; example="verifiedName"

### `WhatsappPhoneNumber`

- Reference: `#/components/schemas/WhatsappPhoneNumber`
- Shape: `object`
  - Description:
    > See [WhatsApp Business Phone Number](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers)
  - Properties:
    - `businessUsername`: `string`
      - Description:
        > Active Business Username for this phone number. The value is a plain username without `@`.
      - Constraints: example="acme.support"
    - `businessUsernameStatus`: `#/components/schemas/WhatsappBusinessUsernameStatus`
    - `businessUsernameUpdatedAt`: `string (date-time)`
      - Description:
        > The time when the Business Username state was last updated.
      - Constraints: example="2026-05-26T12:00:00.000Z"
    - `codeVerificationStatus`: `#/components/schemas/WhatsappPhoneNumberCodeVerificationStatus`
    - `decision`: `#/components/schemas/WhatsappReviewDecision`
      - Description:
        > Review decision made on this phone number. One of `APPROVED` or `REJECTED` or `DEFERRED`.
    - `displayPhoneNumber`: `string`
      - Description:
        > Display phone number.
      - Constraints: example="+1 631-555-1111"
    - `id`: `string`
      - Description:
        > Phone number ID.
      - Constraints: example="1234567890123456"
    - `isOfficialBusinessAccount`: `boolean`
      - Description:
        > Whether this phone number is an official business account or not.
        > An official business account has a green checkmark badge in its profile and chat thread headers. See [Official Business Account](https://developers.facebook.com/docs/whatsapp/overview/business-accounts#official-business-account) for more information.
    - `messagingLimit`: `string`
      - Description:
        > Messaging limits determine the maximum number of business-initiated conversations each phone number can start in a rolling 24-hour period. See also [Messaging Limits](https://developers.facebook.com/docs/whatsapp/messaging-limits).
        > - `TIER_NOT_SET`: Unknown limit.
        > - `TIER_50`: 50 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_250`: 250 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_1K`: 1K business-initiated conversations with unique customers in a rolling 24-hour period.
        > - `TIER_10K`: 10K business-initiated conversations with unique customers in a rolling 24-hour period.
        > - `TIER_100K`: 100K business-initiated conversations with unique customers in a rolling 24-hour period.
        > - `TIER_UNLIMITED`: An unlimited number of business-initiated conversations in a rolling 24-hour period.
      - Constraints: example="TIER_1K"
    - `nameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
    - `newName`: `string`
      - Description:
        > The modified name
      - Constraints: example="John's Cake"
    - `newNameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
      - Description:
        > The review status of the new display name request.
        > See also [Get Display Name Status](https://developers.facebook.com/docs/whatsapp/business-management-api/manage-phone-numbers#get-display-name-status--beta-).
    - `phoneNumber`: `string`
      - Description:
        > Phone number in [E.164](https://en.wikipedia.org/wiki/E.164) format.
      - Constraints: example="+16315551111"
    - `qualityRating`: `#/components/schemas/WhatsappPhoneNumberQualityRating`
    - `qualityUpdateEvent`: `#/components/schemas/WhatsappPhoneNumberQualityUpdateEventEnum`
    - `rejectionReason`: `string`
      - Description:
        > Rejection reason.
    - `requestedBusinessUsername`: `string`
      - Description:
        > Last requested Business Username that is still under review. This value can coexist with an active `businessUsername` while the new request is pending.
      - Constraints: example="acme.help"
    - `requestedVerifiedName`: `string`
      - Description:
        > Last requested verified name.
    - `status`: `#/components/schemas/WhatsappPhoneNumberStatus`
    - `throughputLevel`: `string`
      - Description:
        > Current Meta throughput level of the WhatsApp phone number.
        > - `STANDARD`: Default Cloud API throughput level, currently up to 80 messages per second.
        > - `HIGH`: Upgraded Cloud API throughput level, currently up to 1,000 messages per second, subject to Meta's current Cloud API throughput rules.
        > - `NOT_APPLICABLE`: Throughput level is not applicable to this phone number.
      - Constraints: enum=["STANDARD", "HIGH", "NOT_APPLICABLE"]; example="HIGH"
    - `updateEvent`: `string`
      - Description:
        > Account update event that triggered this phone number status change.
      - Constraints: enum=["ACCOUNT_RECONNECTED", "ACCOUNT_OFFBOARDED"]; example="ACCOUNT_OFFBOARDED"
    - `verifiedName`: `string`
      - Description:
        > Verified name.
      - Constraints: example="John's Cake Shop"
    - `wabaId`: `string`
      - Description:
        > WhatsApp Business Account ID.
      - Constraints: example="whatsapp-business-account-id"
    - `whatsappBusinessManagerMessagingLimit`: `string`
      - Description:
        > The owning business portfolio's messaging limit. Starting October 7, 2025, messaging limits will instead be calculated and set on a business portfolio basis, and will be shared by all business phone numbers within each portfolio. See also [phone_number_quality_update webhook reference](https://developers.facebook.com/docs/whatsapp/cloud-api/webhooks/reference/phone_number_quality_update).
        > - `TIER_NOT_SET`: The business phone number has not been used to send a message yet.
        > - `TIER_50`: Messaging limit of 50 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_250`: Messaging limit of 250 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_2K`: Messaging limit of 2,000 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_10K`: Messaging limit of 10,000 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_100K`: Messaging limit of 100,000 business-initiated conversations in a rolling 24-hour period.
        > - `TIER_UNLIMITED`: The business phone number has higher throughput with unlimited business-initiated conversations.
      - Constraints: example="TIER_2K"
    - `ycloudName`: `string`
      - Description:
        > Optional remark name assigned to this phone number in YCloud. It is populated by the phone-number list, retrieve, and profile GET APIs, and omitted when no remark name is set.
      - Constraints: readOnly=true; example="Support line"

### `WhatsappPhoneNumberCodeVerificationStatus`

- Reference: `#/components/schemas/WhatsappPhoneNumberCodeVerificationStatus`
- Shape: `string`
  - Description:
    > To see if a phone number has been verified via OTP (one-time password).
  - Constraints: enum=["VERIFIED", "NOT_VERIFIED", "EXPIRED"]

### `WhatsappPhoneNumberNameStatus`

- Reference: `#/components/schemas/WhatsappPhoneNumberNameStatus`
- Shape: `string`
  - Description:
    > The review status of the current display name request. See also [Get Display Name Status](https://developers.facebook.com/docs/whatsapp/business-management-api/manage-phone-numbers#get-display-name-status--beta-).
    > - `APPROVED`: The name has been approved. You can download your certificate now.
    > - `AVAILABLE_WITHOUT_REVIEW`: The certificate for the phone is available and display name is ready to use without review.
    > - `DECLINED`: The name has not been approved. You cannot download your certificate.
    > - `EXPIRED`: Your certificate has expire and can no longer be downloaded.
    > - `PENDING_REVIEW`: Your name request is under review. You cannot download your certificate.
    > - `NONE`: No certificate is available.
  - Constraints: enum=["APPROVED", "AVAILABLE_WITHOUT_REVIEW", "DECLINED", "EXPIRED", "PENDING_REVIEW", "NONE"]

### `WhatsappPhoneNumberPage`

- Reference: `#/components/schemas/WhatsappPhoneNumberPage`
- Shape: `object`
  - Description:
    > Represents a given page of WhatsApp phone numbers.
  - `allOf` composition (preserved; not inferred SDK inheritance):
    - `#/components/schemas/Page`
      - `$ref`: `#/components/schemas/Page`
  - Properties:
    - `items`: `array`
      - Description:
        > An array containing WhatsApp phone number objects.
      - Items: `#/components/schemas/WhatsappPhoneNumber`
  - Effective wire object after merging `allOf` (use this shape in response adapters):
    - Required properties: `offset`, `limit`, `length`
    - Properties:
      - `items`: `array`
        - Items: `#/components/schemas/WhatsappPhoneNumber`
      - `length`: `integer (int32)` (required)
      - `limit`: `integer (int32)` (required)
      - `offset`: `integer (int32)` (required)
      - `total`: `integer (int32)`

### `WhatsappPhoneNumberProfile`

- Reference: `#/components/schemas/WhatsappPhoneNumberProfile`
- Shape: `object`
  - Description:
    > WhatsApp Phone Number Business Profile. Customers can view your business profile by clicking your business's name or number in a conversation thread.
  - Properties:
    - `about`: `string`
      - Description:
        > The business's **About** text. This text appears in the business's profile, beneath its profile image, phone number, and contact buttons.
      - Constraints: example="ABOUT"
    - `address`: `string`
      - Description:
        > Address of the business. Character limit 256.
      - Constraints: maxLength=256; example="ADDRESS"
    - `description`: `string`
      - Description:
        > Description of the business. Character limit 512.
      - Constraints: maxLength=512; example="DESCRIPTION"
    - `email`: `string`
      - Description:
        > The contact email address (in valid email format) of the business. Character limit 128.
      - Constraints: maxLength=128; example="tom@example.com"
    - `nameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
    - `newName`: `string`
      - Description:
        > The modified name
      - Constraints: example="John's Cake"
    - `newNameStatus`: `#/components/schemas/WhatsappPhoneNumberNameStatus`
    - `profilePictureUrl`: `string`
      - Description:
        > URL of the profile picture used to upload to Meta.
      - Constraints: example="https://URL"
    - `verifiedName`: `string`
      - Description:
        > The verified name
      - Constraints: example="verifiedName"
    - `vertical`: `#/components/schemas/WhatsappPhoneNumberProfileVertical`
    - `websites`: `array`
      - Description:
        > The URLs associated with the business. For instance, a website, Facebook Page, or Instagram. You must include the http:// or https:// portion of the URL.
        > There is a maximum of 2 websites with a maximum of 255 characters each.
      - Constraints: maxItems=2
      - Items: `string`
    - `ycloudName`: `string`
      - Description:
        > Optional remark name assigned to this phone number in YCloud. It is populated by the profile GET API and omitted when no remark name is set.
      - Constraints: readOnly=true; example="Support line"

### `WhatsappPhoneNumberProfileUpdateRequest`

- Reference: `#/components/schemas/WhatsappPhoneNumberProfileUpdateRequest`
- Shape: `object`
  - Description:
    > WhatsApp Phone Number Business Profile. Customers can view your business profile by clicking your business's name or number in a conversation thread.
  - Properties:
    - `about`: `string`
      - Description:
        > The business's **About** text. This text appears in the business's profile, beneath its profile image, phone number, and contact buttons.
        > - String cannot be empty.
        > - Strings must be between 1 and 139 characters.
        > - Rendered emojis are supported however their unicode values are not. Emoji unicode values must be Java- or JavaScript-escape encoded.
        > - Hyperlinks can be included but will not render as clickable links.
        > - Markdown is not supported.
      - Constraints: minLength=1; maxLength=139; example="ABOUT"
    - `address`: `string`
      - Description:
        > Address of the business. Character limit 256.
      - Constraints: maxLength=256; example="ADDRESS"
    - `description`: `string`
      - Description:
        > Description of the business. Character limit 512.
      - Constraints: maxLength=512; example="DESCRIPTION"
    - `email`: `string`
      - Description:
        > The contact email address (in valid email format) of the business. Character limit 128.
      - Constraints: maxLength=128; example="tom@example.com"
    - `profilePictureUrl`: `string`
      - Description:
        > URL of the profile picture that was uploaded to Meta.
      - Constraints: example="https://PICTURE-URL"
    - `vertical`: `#/components/schemas/WhatsappPhoneNumberProfileVertical`
    - `websites`: `array`
      - Description:
        > The URLs associated with the business. For instance, a website, Facebook Page, or Instagram. You must include the http:// or https:// portion of the URL.
        > There is a maximum of 2 websites with a maximum of 255 characters each.
      - Constraints: maxItems=2
      - Items: `string`

### `WhatsappPhoneNumberProfileVertical`

- Reference: `#/components/schemas/WhatsappPhoneNumberProfileVertical`
- Shape: `string`
  - Description:
    > Industry of the WhatsApp phone number business profile. This can be either an empty string or one of the accepted values.
  - Constraints: enum=["OTHER", "AUTO", "BEAUTY", "APPAREL", "EDU", "ENTERTAIN", "EVENT_PLAN", "FINANCE", "GROCERY", "GOVT", "HOTEL", "HEALTH", "NONPROFIT", "PROF_SERVICES", "RETAIL", "TRAVEL", "RESTAURANT"]; example="OTHER"

### `WhatsappPhoneNumberQualityRating`

- Reference: `#/components/schemas/WhatsappPhoneNumberQualityRating`
- Shape: `string`
  - Description:
    > Quality rating. One of `GREEN`, `YELLOW`, `RED`, or `UNKNOWN`. See also [Phone Number Quality Rating](https://www.facebook.com/business/help/896873687365001).
    > - `GREEN`: High quality.
    > - `YELLOW`: Medium quality.
    > - `RED`: Low quality.
    > - `UNKNOWN`: Unknown quality.
  - Constraints: enum=["GREEN", "YELLOW", "RED", "UNKNOWN"]

### `WhatsappPhoneNumberQualityUpdateEventEnum`

- Reference: `#/components/schemas/WhatsappPhoneNumberQualityUpdateEventEnum`
- Shape: `string`
  - Description:
    > Indicates the update event type of WhatsApp phone number quality when a notification is sent to you.
    > - `ONBOARDING`: Typically when the messaging limit changes from `TIER_NOT_SET` to another tier.
    > - `UPGRADE`: Messaging limit tier upgraded.
    > - `DOWNGRADE`: Messaging limit tier downgraded.
    > - `FLAGGED`: Flagged status occurs when the quality rating reaches a low state. If the message quality improves to a high or medium state and maintains this for 7 days, your status will return to Connected. If the quality rating doesn't improve, your status will still return to Connected, but you'll be placed in a lower messaging limit tier. Learn more on [Phone Number Quality Rating](https://www.facebook.com/business/help/896873687365001) docs.
    > - `UNFLAGGED`: Phone number status changes from `FLAGGED` to `CONNECTED`.
  - Constraints: enum=["ONBOARDING", "UPGRADE", "DOWNGRADE", "FLAGGED", "UNFLAGGED"]

### `WhatsappPhoneNumberSettings`

- Reference: `#/components/schemas/WhatsappPhoneNumberSettings`
- Shape: `object`
  - Description:
    > WhatsApp business phone number settings.
  - Properties:
    - `calling`: `object`
      - Description:
        > Calling feature settings for the phone number.
    - `capture`: `#/components/schemas/CallingCaptureSettings`

### `WhatsappPhoneNumberStatus`

- Reference: `#/components/schemas/WhatsappPhoneNumberStatus`
- Shape: `string`
  - Description:
    > The status of a WhatsApp business phone number.
    > - `PENDING`: Pending. Phone number is newly added. Verify and register this phone number so it can be connected to your account.
    > - `UNVERIFIED`: Unverified. Verify this phone number to start sending messages.
    > - `MANUAL_REVIEW`: Being reviewed. Phone number is currently being reviewed for connection to your account.
    > - `DISCONNECTED`: Offline. Phone number is currently not reachable by WhatsApp servers.
    > - `CONNECTED`: Connected. Phone number is associated with this account and working properly.
    > - `FLAGGED`: Flagged. This phone number has been flagged due to low quality messages.
    > - `WARNED`: Warned. A warning has been issued for this number, potentially due to spam reports.
    > - `RATE_LIMITED`: Rate limited. The number of messages you can send from this phone number may be restricted.
    > - `BANNED`: Banned. Phone number cannot be used with a WhatsApp account.
    > - `RESTRICTED`: Restricted. This phone number has reached its 24-hour messaging limit and can no longer send messages to customers. Please wait until the messaging limit is reset to send messages.
    > - `BLOCKED`: Message limit reached. The limit has been reached for this 24-hour period.
    > - `MIGRATED`: Transferred. This phone number has been transferred to another WhatsApp Business account.
    > - `UNKNOWN`: Unavailable. The status of this phone number can't be determined right now.
  - Constraints: enum=["PENDING", "UNVERIFIED", "MANUAL_REVIEW", "DISCONNECTED", "CONNECTED", "FLAGGED", "WARNED", "RATE_LIMITED", "BANNED", "RESTRICTED", "BLOCKED", "MIGRATED", "UNKNOWN"]

### `WhatsappReviewDecision`

- Reference: `#/components/schemas/WhatsappReviewDecision`
- Shape: `string`
  - Description:
    > Used if a decision about WhatsApp accounts or phone numbers has been made.
  - Constraints: enum=["APPROVED", "REJECTED", "DEFERRED"]

## Codegen interpretation and unknowns

- `operationId` identifies the OpenAPI operation; it is not an SDK method name.
- `allOf` is wire-level schema composition. Response adapters must merge inherited and local properties; generated model inheritance/flattening is only a codegen shape, not additional API behavior.
- `x-group-parameters`, `x-enum-varnames`, and `x-enum-descriptions` are generator hints, not business rules.
- Description-only constraints (including conditional fields, precedence, and endpoint-specific behavior) remain verbatim above.
- This OpenAPI snapshot does not confirm cross-cutting error, retry/`Retry-After`, rate-limit, idempotency, delivery, or webhook-signature behavior. Consult the reviewed `runtime.md`; if neither source confirms a fact, do not fill it in.

SHA-256: 8ffbab9c5966fd4da272d6657eaef0a9a02fde8c4be7d6f2ffce822a32eb7240