Chatwoot Contacts API API

Public contact APIs

OpenAPI Specification

chatwoot-contacts-api-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Chatwoot Account AgentBots Contacts API API
  description: This is the API documentation for Chatwoot server.
  version: 1.1.0
  termsOfService: https://www.chatwoot.com/terms-of-service/
  contact:
    email: hello@chatwoot.com
  license:
    name: MIT License
    url: https://opensource.org/licenses/MIT
servers:
- url: https://app.chatwoot.com/
tags:
- name: Contacts API
  description: Public contact APIs
paths:
  /public/api/v1/inboxes/{inbox_identifier}/contacts:
    parameters:
    - $ref: '#/components/parameters/public_inbox_identifier'
    post:
      tags:
      - Contacts API
      operationId: create-a-contact
      summary: Create a contact
      description: Create a contact
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/public_contact_create_update_payload'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/public_contact'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
  /public/api/v1/inboxes/{inbox_identifier}/contacts/{contact_identifier}:
    parameters:
    - $ref: '#/components/parameters/public_inbox_identifier'
    - $ref: '#/components/parameters/public_contact_identifier'
    get:
      tags:
      - Contacts API
      operationId: get-details-of-a-contact
      summary: Get a contact
      description: Get the details of a contact
      security: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/public_contact'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
        '404':
          description: The given contact does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
    patch:
      tags:
      - Contacts API
      operationId: update-a-contact
      summary: Update a contact
      description: Update a contact's attributes
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/public_contact_create_update_payload'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/public_contact_record'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bad_request_error'
components:
  schemas:
    public_contact_record:
      type: object
      additionalProperties: true
      description: Full serialized contact record returned when the public API renders a Contact model directly.
      properties:
        id:
          type: integer
          description: Id of the contact
        name:
          nullable: true
          type: string
          description: Name of the contact when available
        email:
          nullable: true
          type: string
          description: Email of the contact
        phone_number:
          nullable: true
          type: string
          description: Phone number of the contact
        identifier:
          nullable: true
          type: string
          description: Identifier of the contact
        blocked:
          type: boolean
          description: Whether the contact is blocked
        additional_attributes:
          nullable: true
          type: object
          description: Additional attributes of the contact when present
        custom_attributes:
          nullable: true
          type: object
          description: Custom attributes of the contact when present
        contact_type:
          nullable: true
          type: string
          description: Contact type of the contact when available
        country_code:
          nullable: true
          type: string
          description: Country code of the contact
        last_activity_at:
          nullable: true
          type: string
          description: Last activity timestamp of the contact in ISO 8601 format
        created_at:
          nullable: true
          type: string
          description: Created timestamp of the contact in ISO 8601 format
        updated_at:
          nullable: true
          type: string
          description: Updated timestamp of the contact in ISO 8601 format
        last_name:
          nullable: true
          type: string
          description: Last name of the contact
        middle_name:
          nullable: true
          type: string
          description: Middle name of the contact
        location:
          nullable: true
          type: string
          description: Location of the contact
        account_id:
          type: integer
          description: Account id of the contact
        company_id:
          nullable: true
          type: integer
          description: Company id of the contact
        label_list:
          type: array
          description: Labels applied to the contact
          items:
            type: string
    bad_request_error:
      title: data
      type: object
      properties:
        description:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/request_error'
    request_error:
      type: object
      properties:
        field:
          type: string
        message:
          type: string
        code:
          type: string
    public_contact_create_update_payload:
      type: object
      properties:
        identifier:
          type: string
          description: External identifier of the contact
          example: '1234567890'
        identifier_hash:
          type: string
          description: Identifier hash prepared for HMAC authentication
          example: e93275d4eba0e5679ad55f5360af00444e2a888df9b0afa3e8b691c3173725f9
        email:
          type: string
          description: Email of the contact
          example: alice@acme.inc
        name:
          type: string
          description: Name of the contact
          example: Alice
        phone_number:
          type: string
          description: Phone number of the contact
          example: '+123456789'
        avatar:
          type: string
          format: binary
          description: Send the form data with the avatar image binary or use the avatar_url
        custom_attributes:
          type: object
          description: Custom attributes of the customer
          example: {}
    public_contact:
      type: object
      properties:
        id:
          type: integer
          description: Id of the contact
        source_id:
          type: string
          description: The session identifier of the contact
        name:
          nullable: true
          type: string
          description: Name of the contact when available
        email:
          nullable: true
          type: string
          description: Email of the contact
        phone_number:
          nullable: true
          type: string
          description: Phone number of the contact
        pubsub_token:
          type: string
          description: The token to be used to connect to chatwoot websocket
  parameters:
    public_contact_identifier:
      in: path
      name: contact_identifier
      schema:
        type: string
      required: true
      description: The source id of contact obtained on contact create
    public_inbox_identifier:
      in: path
      name: inbox_identifier
      schema:
        type: string
      required: true
      description: The identifier obtained from API inbox channel
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: This token can be obtained by visiting the profile page or via rails console. Provides access to  endpoints based on the user permissions levels. This token can be saved by an external system when user is created via API, to perform activities on behalf of the user.
    agentBotApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: This token should be provided by system admin or obtained via rails console. This token can be used to build bot integrations and can only access limited apis.
    platformAppApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: This token can be obtained by the system admin after creating a platformApp. This token should be used to provision agent bots, accounts, users and their roles.
x-tagGroups:
- name: Platform
  tags:
  - Accounts
  - Account Users
  - AgentBots
  - Users
- name: Application
  tags:
  - Account AgentBots
  - Account
  - Agents
  - Audit Logs
  - Canned Responses
  - Contacts
  - Contact Labels
  - Conversation Assignments
  - Conversation Labels
  - Conversations
  - Custom Attributes
  - Custom Filters
  - Inboxes
  - Integrations
  - Labels
  - Messages
  - Profile
  - Reports
  - Teams
  - Webhooks
  - Automation Rule
  - Help Center
- name: Client
  tags:
  - Contacts API
  - Conversations API
  - Messages API
- name: Others
  tags:
  - CSAT Survey Page