> ## Documentation Index
> Fetch the complete documentation index at: https://docs.multchats.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar ou atualizar campos personalizados

> Cria ou atualiza os campos personalizados de um contato pelo número de telefone. Suporta campos de template e campos extras.



## OpenAPI

````yaml POST /inbox/upsert-custom-fields-by-phone-number
openapi: 3.1.0
info:
  title: OpenAPI Multchats
  description: Multchats API
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.multchats.com/v2
security:
  - bearerAuth: []
paths:
  /inbox/upsert-custom-fields-by-phone-number:
    post:
      tags:
        - Inbox
      summary: Criar ou atualizar campos personalizados
      description: >-
        Cria ou atualiza os campos personalizados de um contato pelo número de
        telefone. Suporta campos de template e campos extras.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpsertCustomFieldsByPhoneNumberRequest'
      responses:
        '200':
          description: Campos personalizados atualizados com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpsertCustomFieldsByPhoneNumberResponse'
        '400':
          description: Erro na requisição
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    UpsertCustomFieldsByPhoneNumberRequest:
      type: object
      required:
        - phoneNumber
        - inputs
      properties:
        phoneNumber:
          description: 'Número de telefone do contato (DDI + DDD + Número) Ex: 5511900000000'
          type: string
          minLength: 8
          maxLength: 30
        inputs:
          description: Lista de campos para criar ou atualizar
          type: array
          minItems: 1
          items:
            oneOf:
              - type: object
                description: Atualizar campo de template
                required:
                  - sourceType
                  - templateFieldId
                  - valueJson
                properties:
                  sourceType:
                    type: string
                    enum:
                      - TEMPLATE_FIELD
                  templateFieldId:
                    description: ID do campo de template
                    type: string
                  valueJson:
                    description: Valor do campo (null para apagar)
                    nullable: true
              - type: object
                description: Atualizar campo extra existente
                required:
                  - sourceType
                  - fieldId
                  - valueJson
                properties:
                  sourceType:
                    type: string
                    enum:
                      - EXTRA_FIELD
                  fieldId:
                    description: ID do campo extra
                    type: string
                  valueJson:
                    description: Valor do campo (null para apagar)
                    nullable: true
              - type: object
                description: Criar novo campo extra
                required:
                  - sourceType
                  - label
                  - fieldType
                  - valueJson
                properties:
                  sourceType:
                    type: string
                    enum:
                      - EXTRA_FIELD
                  label:
                    description: Nome do novo campo
                    type: string
                  fieldType:
                    description: Tipo do campo
                    type: string
                    enum:
                      - TEXT
                      - NUMBER
                      - DATE
                      - SELECT
                      - MULTI_SELECT
                      - CHECKBOX
                      - URL
                      - EMAIL
                      - PHONE
                      - FILE
                  optionsJson:
                    description: Opções do campo (para SELECT/MULTI_SELECT)
                    type: object
                  isRequired:
                    description: Se o campo é obrigatório
                    type: boolean
                  valueJson:
                    description: Valor do campo (null para apagar)
                    nullable: true
    UpsertCustomFieldsByPhoneNumberResponse:
      type: object
      properties:
        success:
          description: Indica se a operação foi bem-sucedida
          type: boolean
        response:
          type: object
          properties:
            customFields:
              description: Campos personalizados atualizados
              type: array
    Error:
      required:
        - success
        - message
      type: object
      properties:
        success:
          description: Indica se a operação foi bem-sucedida
          type: boolean
          default: false
        message:
          description: Mensagem de erro (quando success é false)
          type: string
          default: Erro ao enviar mensagem
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````