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

# Obtener esquema de contactos

> Consulta los campos configurados para crear, actualizar y buscar contactos.

Obtén la definición de los campos disponibles para los contactos de tu cuenta. Consulta este esquema antes de crear filtros para [Buscar contactos](/contactos/buscar-contactos).

## Endpoint

```text theme={null}
GET /tenants/{tenantId}/schemas/contact
```

## Parámetros de ruta

| Parámetro  | Tipo     | Requerido | Descripción                                                                  |
| ---------- | -------- | --------- | ---------------------------------------------------------------------------- |
| `tenantId` | `string` | Sí        | Identificador de tu cuenta. Solicítalo junto con tu API key si no lo tienes. |

## Ejemplo de solicitud

```bash theme={null}
curl "https://api.insuranceboosters.com/api/v1/tenants/{tenantId}/schemas/contact" \
  -H "x-ib-api-key: TU_API_KEY"
```

## Respuesta exitosa (`200`)

```json theme={null}
{
  "entityType": "contact",
  "version": 3,
  "fields": [
    {
      "id": "email",
      "jsonSchema": {
        "type": "string",
        "format": "email",
        "description": "Correo electrónico del contacto"
      },
      "ui": {
        "label": "Correo electrónico",
        "order": 4,
        "visible": true
      },
      "readOnly": false
    },
    {
      "id": "status",
      "jsonSchema": {
        "type": "string",
        "enum": ["Prospecto", "Cliente"]
      },
      "ui": {
        "label": "Estatus",
        "order": 5,
        "visible": true
      },
      "readOnly": false
    }
  ]
}
```

La respuesta puede incluir metadatos adicionales. Para integrar contactos utiliza:

| Campo                 | Descripción                                                                                          |
| --------------------- | ---------------------------------------------------------------------------------------------------- |
| `version`             | Versión actual del esquema. Actualiza tu configuración cuando cambie.                                |
| `fields[].id`         | Identificador técnico que debes enviar como propiedad del contacto y usar en filtros u ordenamiento. |
| `fields[].jsonSchema` | Tipo, formato, valores permitidos y demás reglas de validación.                                      |
| `fields[].ui.label`   | Nombre visible del campo. No lo uses como identificador en solicitudes.                              |
| `fields[].readOnly`   | Indica si la API administra el valor. No envíes campos de solo lectura al crear o actualizar.        |

## Usar el esquema en una búsqueda

Para una coincidencia exacta sobre un campo de texto, toma su `id` y agrega `.keyword`:

```json theme={null}
{
  "esQuery": {
    "term": {
      "email.keyword": "contacto@example.com"
    }
  }
}
```

Para ordenar, usa el `id` sin modificar:

```json theme={null}
{
  "sort": [
    {
      "property": "email",
      "direction": "ascending"
    }
  ]
}
```

<Warning>
  Usa siempre `fields[].id`. Las etiquetas de `ui.label` pueden cambiar y no son propiedades válidas del contacto.
</Warning>

## Errores frecuentes

| HTTP  | Qué significa                                  | Qué hacer                                 |
| ----- | ---------------------------------------------- | ----------------------------------------- |
| `401` | API key inválida o faltante.                   | Verifica `x-ib-api-key`.                  |
| `403` | El `tenantId` no corresponde a la API key.     | Confirma el identificador de tu cuenta.   |
| `404` | No existe un esquema de contactos configurado. | Contacta a tu ejecutivo de cuenta.        |
| `500` | No fue posible consultar el esquema.           | Reintenta; si continúa, contacta soporte. |


## OpenAPI

````yaml openapi/contactos-v1.yaml GET /tenants/{tenantId}/schemas/contact
openapi: 3.1.0
info:
  title: Insurance Boosters API — Contactos
  version: 1.0.0
  description: >-
    API pública para consultar el esquema y crear, listar, buscar, actualizar o
    eliminar contactos.
  license:
    name: Propietaria
    url: https://insuranceboosters.com
servers:
  - url: https://api.insuranceboosters.com/api/v1
    description: Producción
security:
  - IbApiKey: []
tags:
  - name: Contactos
    description: Administración de contactos.
paths:
  /tenants/{tenantId}/schemas/contact:
    get:
      tags:
        - Contactos
      summary: Obtener esquema de contactos
      operationId: getContactSchema
      parameters:
        - $ref: '#/components/parameters/TenantId'
      responses:
        '200':
          description: Esquema configurado para los contactos de la cuenta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContactSchema'
              example:
                entityType: contact
                version: 3
                fields:
                  - id: email
                    jsonSchema:
                      type: string
                      format: email
                      description: Correo electrónico del contacto
                    ui:
                      label: Correo electrónico
                      order: 4
                      visible: true
                    readOnly: false
                  - id: status
                    jsonSchema:
                      type: string
                      enum:
                        - Prospecto
                        - Cliente
                    ui:
                      label: Estatus
                      order: 5
                      visible: true
                    readOnly: false
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/SchemaNotFound'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  parameters:
    TenantId:
      name: tenantId
      in: path
      required: true
      description: Identificador de la cuenta asociado a la API key.
      schema:
        type: string
  schemas:
    ContactSchema:
      type: object
      required:
        - entityType
        - fields
        - version
      additionalProperties: true
      properties:
        entityType:
          type: string
          const: contact
        fields:
          type: array
          items:
            $ref: '#/components/schemas/ContactSchemaField'
        version:
          type: integer
          minimum: 1
    ContactSchemaField:
      type: object
      required:
        - id
        - jsonSchema
        - ui
      additionalProperties: true
      properties:
        id:
          type: string
          description: Identificador técnico e inmutable del campo.
        jsonSchema:
          type: object
          description: Tipo, formato y reglas de validación del campo.
          additionalProperties: true
        ui:
          $ref: '#/components/schemas/ContactSchemaFieldUi'
        readOnly:
          type: boolean
          default: false
          description: Indica si la API administra el valor.
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
    ContactSchemaFieldUi:
      type: object
      required:
        - label
        - order
        - visible
      additionalProperties: true
      properties:
        label:
          type: string
          description: Nombre visible del campo.
        order:
          type: integer
          minimum: 1
        visible:
          type: boolean
  responses:
    Unauthorized:
      description: API key inválida o faltante.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: La integración no tiene acceso al contacto.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    SchemaNotFound:
      description: No existe un esquema de contactos configurado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    InternalError:
      description: Error inesperado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    IbApiKey:
      type: apiKey
      in: header
      name: x-ib-api-key

````