Cendyn CRM (PUSHTech) REST API

Token-authenticated REST API for the Cendyn CRM (formerly PUSHTech) hospitality CRM / CDP platform. 67 operations across 15 resources: read the account credit balance, manage contacts and their custom fields, companies, products, purchases, coupon lists, hotel data and audience lists, read campaigns and preview a campaign message for one contact, send email, SMS and push deliveries and track their status, and bulk-ingest contacts and purchases through Sync Data. HMAC-signed webhooks publish activity, delivery, contact, bulk-contact and inbound-SMS events.

Documentation

Specifications

Other Resources

🔗
Overlay
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/overlays/push-cendyn-crm-overlay.yaml
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/asyncapi/push-webhooks.yml
🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/conventions/push-conventions.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/errors/push-problem-types.yml
🔗
DataModel
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/data-model/push-data-model.yml
🔗
Lifecycle
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/lifecycle/push-lifecycle.yml
🔗
Conformance
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/conformance/push-conformance.yml
🔗
AgenticAccess
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/agentic-access/push-agentic-access.yml
🔗
AgentSkill
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/skills/_index.yml
🔗
APIsJSON
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/apis.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/arazzo/_index.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/arazzo/push-load-catalog-and-purchase-history.yml
🔗
Arazzo
https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/arazzo/push-onboard-and-welcome-guest.yml

OpenAPI Specification

push-cendyn-crm-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Cendyn CRM (PUSHTech) REST API
  version: v2
  description: 'Token-authenticated REST API for the Cendyn CRM (formerly PUSHTech) hospitality CRM /
    CDP platform. Manage account balance, contacts and contact custom fields, companies, products, coupon
    lists, purchases, hotel data, audience lists and campaigns, and send email, SMS and push deliveries.


    This document was DERIVED by API Evangelist from the provider''s own published, server-rendered API
    reference at https://developers.cendyncrm.com/api/docs (Apitome / rspec_api_documentation). Cendyn
    CRM does not publish an OpenAPI document; every path, HTTP method, parameter name, parameter description
    and example payload here is copied verbatim from that reference. Nothing was invented.'
  contact:
    name: Cendyn
    url: https://www.cendyn.com/contact-us/
  termsOfService: https://www.cendyn.com/terms-of-use/
  x-provenance:
    publisher: API Evangelist
    method: derived
    derived_from: https://developers.cendyncrm.com/api/docs
    provider_published_openapi: false
    note: NOT published by Cendyn. Derived from the provider's public HTML API reference; verify against
      the live docs before production use.
externalDocs:
  description: Cendyn CRM Developers Central
  url: https://developers.cendyncrm.com/api
servers:
- url: https://api.eu.cendyncrm.com
  description: EU data center
- url: https://api.us.cendyncrm.com
  description: US data center
tags:
- name: Account
- name: Sync Data
- name: Contact
- name: Contact Custom fields
- name: Company
- name: Company custom fields
- name: Campaigns
- name: Product
- name: Product custom fields
- name: Coupon lists
- name: Purchase
- name: Hotel Data
- name: Hotel Data custom fields
- name: Deliveries
- name: Audience List
security:
- accountToken: []
components:
  securitySchemes:
    accountToken:
      type: apiKey
      in: header
      name: Authorization
      description: 'Account token authentication. Send `Authorization: Token token={account.secret}`.
        Some operations require the account master secret (`Token token={account.master_secret}`).'
paths:
  /v2/account/{account_id}/balance/current:
    get:
      operationId: currentBalanceAccount
      summary: Current Balance — Account
      tags:
      - Account
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/account/current_balance
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: id of the account
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                balance: '582.84660'
                currency: eur5
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /account/{account_id}/sync_data:
    post:
      operationId: createSyncData
      summary: Create — Sync Data
      tags:
      - Sync Data
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/sync_data/create
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                origin:
                  description: 'String field to indicate the origin of the Contact(s) and Purchase. Example:
                    “PMS”'
                options:
                  description: Options to validate contacts email and receive webhook response information
                    when the request has been processed
                contacts:
                  description: Array of contact data. Maximum 1000 contacts per request.
                purchase:
                  description: Booking and Stay information for the contacts that are in the same request.
                options[email_validation[validate]]:
                  type: boolean
                  description: 'If true, validate all contact´s emails of the bulk. This service has an
                    extra cost and will use credits from your Cendyn CRM account. If not enough credits
                    the import will be processed without email validation. By default: false'
                options[email_validation[create_if_invalid]]:
                  type: boolean
                  description: 'If true, the contact will be created unless the email is invalid. By default:
                    false'
                options[email_validation[create_if_no_credit]]:
                  description: 'If not enough credits the import will be processed without email validation.
                    By default: false'
                options[webhook[url]]:
                  description: URL where the webhook will send information
                options[webhook[contacts_extra_fields]]:
                  description: 'Array that contain extra fields needed to be sent by the webhook.By default
                    it will be sent by the webhook the following fields: _id, user_id, email, phone_countrycode,
                    phone_number'
                options[webhook[purchase_extra_fields]]:
                  description: 'Array that contain extra fields need to be sent by the webhook. By default
                    it will be sent by the webhook the following fields: transaction_code, _id'
                contacts[name_first]:
                  description: Name of the contact
                contacts[name_last]:
                  description: Last name of the contact
                contacts[email]:
                  description: Email of the contact
                contacts[user_id]:
                  description: Unique identifier of contact in your backend
                contacts[phone_countrycode]:
                  description: 'Country code of the contact phone. Example: “+34”'
                contacts[phone_number]:
                  description: Phone number without country code of the contact
                contacts[phone]:
                  description: Full phone number with country code of the contact
                contacts[city]:
                  description: City of the contact
                contacts[country]:
                  description: Country of the contact
                contacts[region]:
                  description: Region of the contact
                contacts[zip]:
                  description: Zip code of the contact
                contacts[full_address]:
                  description: Address of the contact
                contacts[born_date]:
                  type: string
                  format: date-time
                  description: 'The date of the birthday in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                contacts[gender]:
                  description: Gender of the contact (MALE or FEMALE)
                contacts[language]:
                  description: 'Language of the contact in ISO-2 format, Example: ES'
                contacts[facebook_id]:
                  description: Facebook id of the contact
                contacts[facebook_friends]:
                  type: number
                  description: Number of the friends in facebook of the contact
                contacts[twitter_id]:
                  description: Twitter id of the contact
                contacts[twitter_followers]:
                  type: number
                  description: Number of the followers in twitter of the contact
                contacts[tags]:
                  description: Array containing tags for this contact
                contacts[list_subscriptions[list_id]]:
                  description: Id of audience list
                contacts[list_subscriptions[subscribed]]:
                  type: boolean
                  description: If true, subscribe from this list
                contacts[channel_subscriptions[channel]]:
                  description: 'Name of channel. Options: [email, sms, push]'
                contacts[channel_subscriptions[blacklisted]]:
                  type: boolean
                  description: If true, blacklist this channel
                contacts[gdpr_accept_terms]:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted your terms'
                contacts[gdpr_marketing_consent]:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted marketing consent'
                contacts[gdpr_date]:
                  type: string
                  format: date-time
                  description: 'Date for GDPR changes in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                contacts[gdpr_remote_ip]:
                  description: 'String type: Contact IP when accepted GDPR'
                contacts[[custom field]]:
                  description: You can create a custom field and use in every contact, only add parameter
                    in the json with the name of custom (no label)
                purchase[campaign_id]:
                  description: Id of the campaign
                purchase[UUID]:
                  description: Universally unique identifier (UUID) of the product
                purchase[transaction_code]:
                  description: Transaction code of the product purchase of your backend (unique)
                purchase[price]:
                  description: Price of the purchase transaction
                purchase[currency]:
                  description: Currency of the purchase transaction in ISO 4217 format. For example USD,
                    EUR
                purchase[status]:
                  description: 'Status of purchases of the product, please use only the following status:
                    add_cart, purchase, remove_cart, product_view, product_refund, purchase_failed, canceled,
                    no_show, no_paid, check_in, check_out, reserved, confirmed'
                purchase[redeem_coupon_code]:
                  description: Coupon code used in the purchase
                purchase[name]:
                  description: Name of the purchase transaction
                purchase[description]:
                  description: Description of the purchase transaction
                purchase[Purchase custom field]:
                  description: 'You can create Purchase custom field with a specific type and use it within
                    your API request: ''https://www.cendyncrm.com/settings/product_custom_fields'''
              required:
              - origin
              - purchase[UUID]
              - purchase[transaction_code]
              - purchase[price]
              - purchase[currency]
            example:
              origin: PMS
              options:
                email_validation:
                  validate: true
                  create_if_invalid: true
                  create_if_no_credit: true
                webhook:
                  url: https://xxxxxx.xxx
                  contacts_extra_fields:
                  - name_first
                  purchase_extra_fields:
                  - price
              contacts:
              - email: '[email protected]'
                name_first: Jhon
                name_last: Doe
                user_id: '[email protected]'
                born_date: '1990-01-01T00:00:00Z'
                language: EN
                country: Germany
                city: Berlin
                gender: male
              purchase:
                transaction_code: transaction_code_xxxx
                currency: USD
                price: 340
                product_uuid: uuid_product_xxxxx
                status: check_in
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              example:
                _id: xxxxxxxxxxxxxxxxxxxxxxxx
                number_of_contacts: 1
                number_of_purchase: 1
                validate_emails: true
                contacts_extra_fields:
                - name_first
                purchase_extra_fields:
                - price
                webhook_url: https://xxxxxx.xxx
                status: queued
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /account/{account_id}/sync_data/{id}:
    get:
      operationId: showSyncData
      summary: Show — Sync Data
      tags:
      - Sync Data
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/sync_data/show
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      - name: id
        in: path
        required: true
        schema:
          type: string
        description: SyncData ID
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                _id: xxxxxxxxxxxxxxxxxxxxxxxx
                number_of_contacts: 1
                number_of_purchase: 1
                validate_emails: true
                contacts_extra_fields:
                - name_first
                purchase_extra_fields:
                - price
                webhook_url: https://xxxxxx.xxx
                status: queued
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /v2/account/{account_id}/contact:
    post:
      operationId: createContact
      summary: Create — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/create
      x-source-path: /v2/account/{account_id}/contact/
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                device_id:
                  description: Contact associated device_id
                name_first:
                  description: Name of the contact
                name_last:
                  description: Last name of the contact
                email:
                  description: Email of the contact
                phone_countrycode:
                  description: Country code of the contact phone
                phone_number:
                  description: Phone number without country code of the contact
                phone:
                  description: Full phone number with country code of the contact
                city:
                  description: City of the contact
                country:
                  description: Country of the contact
                region:
                  description: Region of the contact
                zip:
                  description: Zip code of the contact
                full_address:
                  description: Address of the contact
                born_date:
                  type: string
                  format: date-time
                  description: 'The date of the birthday in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                gender:
                  description: Gender of the contact (MALE or FEMALE)
                language:
                  description: 'Language of the contact in ISO-2 format, Example: ES'
                user_id:
                  description: Unique identifier of contact in your backend
                facebook_id:
                  description: Facebook id of the contact
                facebook_friends:
                  type: number
                  description: Number of the friends in facebook of the contact
                google_id:
                  description: Google+ id of the contact
                twitter_id:
                  description: Twitter id of the contact
                twitter_followers:
                  type: number
                  description: Number of the followers in twitter of the contact
                gdpr_date:
                  type: string
                  format: date-time
                  description: 'Date for GDPR changes in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                last_latitude:
                  type: number
                  description: 'Last GPS latitude, Number, example: 27.994401'
                last_longitude:
                  type: number
                  description: 'Last GPS longitude, Number, example: -81.726896'
                '[custom field]':
                  description: You can create a custom field and use in every contact, only add parameter
                    in the json with the name of custom ( no label)
                list_subscriptions[list_id]:
                  description: Id of audience list
                list_subscriptions[subscribed]:
                  type: boolean
                  description: If true, subscribe in this list
                gdpr_marketing_consent:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted marketing consent'
                gdpr_accept_terms:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted your terms'
                gdpr_remote_ip:
                  description: 'String type: Contact IP when accepted GDPR'
                email_validation:
                  description: Json with email_validation parameters
                email_validation[validate]:
                  type: boolean
                  description: 'Boolean, if true, validate contact Email, Default: false'
                email_validation[create_if_invalid]:
                  type: boolean
                  description: 'Boolean: If true, the contact contact will be created if Email is not
                    valid, Default: false'
                email_validation[create_if_no_credit]:
                  type: boolean
                  description: 'Boolean: If true, create contact if the account hasn''t credit for validation,
                    Default: false'
            example:
              name_first: John
              name_last: Doe
              email: '[email protected]'
              phone_countrycode: '44'
              phone_number: '7712345678'
              tags:
              - tag1
              - tag2
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              example:
                id: 550aac3da096734ce5000001
                name_first: John
                name_last: Doe
                phone_countrycode: '44'
                phone_number: '7712345678'
                email: '[email protected]'
                tags:
                - tag1
                - tag2
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
    get:
      operationId: listContact
      summary: List — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/list
      x-source-path: /v2/account/{account_id}/contact/
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      - name: user_id
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Contact user_id'
      - name: device_id
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Contact associated device_id'
      - name: name_first
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Name of the contact'
      - name: name_last
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Last name of the contact'
      - name: email
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Email fo the contact'
      - name: phone_countrycode
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Country code of the contact phone'
      - name: phone_number
        in: query
        required: false
        schema:
          type: string
        description: 'Search by: Phone number without country code of the contact'
      - name: limit
        in: query
        required: false
        schema:
          type: string
        description: 'limit of number contacts returns, default: 200'
      - name: contact_id_from
        in: query
        required: false
        schema:
          type: string
        description: Contact id to start the list
      - name: order
        in: query
        required: false
        schema:
          type: string
        description: 'creation_date order asc or desc, default: asc'
      responses:
        '200':
          description: Successful response
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /v2/account/{account_id}/contact/bulk:
    post:
      operationId: createBulkContact
      summary: Create Bulk — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/create_bulk
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                contacts:
                  description: Array of contact data. Maximum of 5000 contacts per request.
                match_contact_user_id:
                  type: boolean
                  description: 'If true, update the contact who have this user_id on the Cendyn CRM platform,
                    else create a new one. By default: false'
                webhook_url:
                  description: A URL designated to receive notifications or data via webhook transmissions.
                validate_emails:
                  type: boolean
                  description: 'If true, validate all contact´s emails of the bulk. This service has an
                    extra cost and will use credits of your Pushtech account. If not enought credits the
                    import will be processed without emails validation. By default: false'
                contacts_webhook_extra_fields:
                  description: 'Array that contain extra fields needed to be sent by the webhook. By default
                    it is sent by the webhook the following fields: _id, user_id, email, phone_countrycode,
                    phone_number'
                contacts[device_id]:
                  description: Contact associated device_id
                contacts[name_first]:
                  description: Name of the contact
                contacts[name_last]:
                  description: Last name of the contact
                contacts[email]:
                  description: Email of the contact
                contacts[phone_countrycode]:
                  description: Country code of the contact phone
                contacts[phone_number]:
                  description: Phone number without country code of the contact
                contacts[phone]:
                  description: Full phone number with country code of the contact
                contacts[city]:
                  description: City of the contact
                contacts[country]:
                  description: Country of the contact
                contacts[region]:
                  description: Region of the contact
                contacts[zip]:
                  description: Zip code of the contact
                contacts[full_address]:
                  description: Address of the contact
                contacts[born_date]:
                  type: string
                  format: date-time
                  description: 'The date of the birthday in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                contacts[gender]:
                  description: Gender of the contact (MALE or FEMALE)
                contacts[language]:
                  description: 'Language of the contact in ISO-2 format, Example: ES'
                contacts[user_id]:
                  description: Unique identifier of contact in your backend
                contacts[facebook_id]:
                  description: Facebook id of the contact
                contacts[facebook_friends]:
                  type: number
                  description: Number of the friends in facebook of the contact
                contacts[google_id]:
                  description: Google+ id of the contact
                contacts[twitter_id]:
                  description: Twitter id of the contact
                contacts[twitter_followers]:
                  type: number
                  description: Number of the followers in twitter of the contact
                contacts[tags]:
                  description: Array containing tags for this contact
                contacts[list_subscriptions[list_id]]:
                  description: Id of audience list
                contacts[list_subscriptions[subscribed]]:
                  type: boolean
                  description: If true, subscribe from this list
                contacts[channel_subscriptions[channel]]:
                  description: 'Name of channel. Options: [email, sms, push]'
                contacts[channel_subscriptions[blacklisted]]:
                  type: boolean
                  description: If true, blacklist this channel
                contacts[gdpr_accept_terms]:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted your terms'
                contacts[gdpr_marketing_consent]:
                  type: boolean
                  description: 'Boolean type: If true, the contact accepted marketing consent'
                contacts[gdpr_date]:
                  type: string
                  format: date-time
                  description: 'Date for GDPR changes in ISO_8601 format, Example: 1990-01-01T00:00:00Z'
                contacts[gdpr_remote_ip]:
                  description: 'String type: Contact IP when accepted GDPR'
                contacts[[custom field]]:
                  description: You can create a custom field and use in every contact, only add parameter
                    in the json with the name of custom (no label)
              required:
              - contacts
            example:
              webhook_url: https://requestb.in/qxvaw0qx
              match_contact_user_id: false
              validate_emails: false
              contacts_webhook_extra_fields:
              - name_first
              contacts:
              - name_first: John
                name_last: Doe
                email: '[email protected]'
                phone_countrycode: '44'
                phone_number: '7712345678'
              - name_first: John
                name_last: Doe
                email: '[email protected]'
                phone_countrycode: '44'
                phone_number: '7712345678'
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              example:
                bulk:
                  _id: 550aac3da096734ce5000001
                  number_of_contacts: 2
                  match_contact_user_id: false
                  validate_emails: false
                  contacts_webhook_extra_fields:
                  - name_first
                  webhook_url: https://requestb.in/qxvaw0qx
                  status: queue
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /v2/account/{account_id}/contact/bulk/{bulk_id}:
    get:
      operationId: getBulkContact
      summary: Get Bulk — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/get_bulk
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      - name: bulk_id
        in: path
        required: true
        schema:
          type: string
        description: Bulk id
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                bulk:
                  _id: 550aac3da096734ce5000001
                  number_of_contacts: 2
                  match_contact_user_id: false
                  validate_emails: false
                  contacts_webhook_extra_fields:
                  - name_first
                  webhook_url: https://requestb.in/qxvaw0qx
                  status: queue
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
  /v2/account/{account_id}/contact/{contact_id}:
    get:
      operationId: showContact
      summary: Show — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/show
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      - name: contact_id
        in: path
        required: true
        schema:
          type: string
        description: Id of the contact to be showed
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              example:
                id: 550aac3da096734ce5000001
                name_first: John
                name_last: Doe
                phone_countrycode: '44'
                phone_number: '7712345678'
                email: '[email protected]'
                tags:
                - tag1
                - tag2
        '401':
          description: 'Unauthorized — missing or invalid `Authorization: Token token=...` header.'
    put:
      operationId: updateContact
      summary: Update — Contact
      tags:
      - Contact
      externalDocs:
        description: Cendyn CRM API reference
        url: https://developers.cendyncrm.com/api/docs/contact/update
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          type: string
        description: Your account unique identifier to access API.
      - name: contact_id
        in: path
        required: true
        schema:
          type: string
        description: Id of the contact to be updated
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                device_id:
                  description: Contact associated device_id
                name_first:
                  description: Name of the contact
                name_last:
                  description: Last name of the contact
                email:
                  description: Email fo the contact
                phone_countrycode:
                  description: Country code of the contact phone
                phone_number:
                  description: Phone number without country code of the contact
                phone:
                  description: Full phone number with country code of the contact
           

# --- truncated at 32 KB (149 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/push/refs/heads/main/openapi/push-cendyn-crm-openapi.yml