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

# Carregar casos em uma campanha

> Mediante el método PUT se envían casos en formato JSON.
La ‘clave’ del objeto principal corresponde al código de identificación del cliente (código del caso) y en su ‘valor’ se envían los datos necesarios, tal como se especifica en el esquema.

**Recomendación:** máximo de 1000 casos por request, con 1 segundo entre llamadas.

**Aclaración Importante sobre los números de teléfono:**
- Los teléfonos deben estar completos (característica + número), sin cero “0” y sin el quince “15”.
- `phone_settings.phone_list` debe tener al menos un número y como máximo el valor indicado en la creación de la campaña por `max_phone_priority`. Ese valor representa el último índice de la lista (p.ej., `max_phone_priority = 2` → hasta 3 teléfonos: [posición_0, posición_1, posición_2]).



## OpenAPI

````yaml PUT /api/v2/create_campaign/{campaign_id}/
openapi: 3.0.0
info:
  title: API Inceptia
  description: API para la consulta de campañas, casos y llamadas de un bot.
  version: 2.0.0
servers:
  - url: https://admintest.inceptia.ai/
    description: Ambiente de pruebas
  - url: https://admin.inceptia.ai/
    description: Ambiente productivo
security: []
tags:
  - name: Autenticación
    description: Endpoints para la autenticación de usuarios y gestión de tokens.
  - name: Bots
    description: Endpoints para operaciones relacionadas con los bots.
  - name: Campañas
    description: Endpoints para operaciones relacionadas con las campañas.
  - name: Casos de campaña
    description: Endpoints para operaciones relacionadas con los casos de campaña.
  - name: Llamadas de campaña
    description: Endpoints para operaciones relacionadas con las llamadas de campaña.
  - name: Casos de inbound
    description: Endpoints para operaciones relacionadas con los casos de inbound.
paths:
  /api/v2/create_campaign/{campaign_id}/:
    put:
      tags:
        - Casos de campaña
      summary: Cargar casos a una campaña
      description: >-
        Mediante el método PUT se envían casos en formato JSON.

        La ‘clave’ del objeto principal corresponde al código de identificación
        del cliente (código del caso) y en su ‘valor’ se envían los datos
        necesarios, tal como se especifica en el esquema.


        **Recomendación:** máximo de 1000 casos por request, con 1 segundo entre
        llamadas.


        **Aclaración Importante sobre los números de teléfono:**

        - Los teléfonos deben estar completos (característica + número), sin
        cero “0” y sin el quince “15”.

        - `phone_settings.phone_list` debe tener al menos un número y como
        máximo el valor indicado en la creación de la campaña por
        `max_phone_priority`. Ese valor representa el último índice de la lista
        (p.ej., `max_phone_priority = 2` → hasta 3 teléfonos: [posición_0,
        posición_1, posición_2]).
      parameters:
        - name: campaign_id
          in: path
          required: true
          schema:
            type: integer
            minimum: 1
          description: ID de la campaña.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties:
                $ref: '#/components/schemas/CasePayload'
            examples:
              monoproducto:
                summary: Carga monoproducto
                value:
                  '00001':
                    products:
                      - debt_code: 00001A
                        pid: Tarjeta de crédito
                        sub_id: Visa
                        debt: '10000.00'
                        expiration: '2021-12-01'
                    params:
                      inbound: '01159999999'
                      minimum_amount: '1000.00'
                    first_name: Gustavo
                    last_name: Capart
                    phone_settings:
                      phone_list:
                        - '3425111111'
                        - '3425222222'
                        - '3425333333'
              multiproducto_por_pid:
                summary: Carga multiproducto usando params.product_info por pid
                value:
                  '00002':
                    products:
                      - debt_code: '565259752'
                        pid: Mastercard
                        sub_id: '-'
                        debt: '3494.80'
                        expiration: '2025-10-01'
                      - debt_code: '12345678'
                        pid: Visa
                        sub_id: '-'
                        debt: '5000.00'
                        expiration: '2025-10-02'
                    params:
                      inbound: '01159999999'
                      product_info:
                        Mastercard:
                          porc_promesa: 70%
                          min_pay: '1494.80'
                        Visa:
                          porc_promesa: 50%
                          min_pay: '1000.00'
                    first_name: Francisco
                    last_name: Mendoza
                    phone_settings:
                      phone_list:
                        - '3425444444'
                        - '3425555555'
      responses:
        '200':
          description: Todos los casos fueron procesados y cargados exitosamente.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje de éxito resumiendo la carga.
              example:
                message: 'Campaign id: 12345 > 150 cases were uploaded succcessfully'
        '202':
          description: >-
            Carga parcial. La solicitud fue aceptada, pero algunos casos
            contenían errores y fueron rechazados.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Mensaje resumiendo la carga parcial.
                  Errors:
                    type: array
                    description: Lista de errores encontrados en los casos rechazados.
                    items: {}
              example:
                message: >-
                  Campaign id: 12345 > 140 cases were uploaded - 10 contain
                  errors
                Errors:
                  - case_code_xyz: Error detail...
        '400':
          description: >-
            Error de validación o de lógica. La solicitud está mal formada, no
            se pudieron cargar casos, o hubo un error al procesar la lógica de
            la campaña.
          content:
            application/json:
              schema:
                type: object
                description: >-
                  El cuerpo del error puede variar. Puede contener 'message' y
                  'Errors' (si falla la validación) o solo 'error' (si falla la
                  lógica interna).
                properties:
                  message:
                    type: string
                  Errors:
                    type: array
                    items: {}
                  error:
                    type: string
              examples:
                validation_error:
                  summary: Error de validación
                  value:
                    message: >-
                      No cases could be loaded > Campaign id: 12345 | Validation
                      failed
                    Errors:
                      - case_code_abc: Missing required field 'first_name'
                logic_error:
                  summary: Error de lógica (RequestErrorException)
                  value:
                    error: No se pudo reiniciar la campaña.
                no_cases_loaded:
                  summary: Sin casos cargados (con errores)
                  value:
                    message: 'No cases could be loaded > Campaign id: 12345'
                    Errors:
                      - case_code_xyz: Error detail...
        '401':
          description: >-
            No autorizado. No se proveyeron credenciales de autenticación
            válidas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: >-
            Prohibido. El usuario está autenticado pero no tiene permisos para
            modificar esta campaña.
        '404':
          description: Campaña no encontrada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No encontrado.
        '413':
          description: >-
            Request Entity Too Large. El payload enviado (el cuerpo de la
            solicitud) supera el límite máximo permitido por el servidor.
        '500':
          description: Error interno del servidor (AttributeError o similar).
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  Errors:
                    type: string
              example:
                message: Internal Server Error
                Errors: ''
      security:
        - jwtAuth: []
components:
  schemas:
    CasePayload:
      type: object
      properties:
        products:
          type: array
          items:
            $ref: '#/components/schemas/CaseProduct'
        params:
          $ref: '#/components/schemas/CaseParams'
        first_name:
          type: string
          description: Nombre del caso.
        last_name:
          type: string
          description: Apellido del caso.
        phone_settings:
          type: object
          properties:
            phone_list:
              type: array
              items:
                type: string
              description: Teléfonos asociados al caso.
          required:
            - phone_list
      required:
        - products
        - params
        - first_name
        - last_name
        - phone_settings
    UnauthorizedError:
      type: object
      properties:
        token:
          type: string
      example:
        token: El token es inválido o ha expirado
    CaseProduct:
      type: object
      properties:
        debt_code:
          type: string
          description: Código interno del cliente.
        pid:
          type: string
          description: Nombre del producto a pronunciar.
        sub_id:
          type: string
          description: Subproducto (si aplica).
        debt:
          type: string
          description: Monto de la deuda (punto decimal).
          example: '10000.00'
        expiration:
          type: string
          format: date
          description: Fecha de vencimiento (YYYY-MM-DD).
      required:
        - debt_code
        - pid
        - debt
        - expiration
    CaseParams:
      type: object
      description: >-
        Un objeto para enviar parámetros dinámicos definidos cuyo contenido y
        estructura varían según la configuración de cada bot. **Obligatorio:**
        Debe enviarse siempre, como mínimo un objeto vacío (`{}`).
      additionalProperties: true
      example:
        inbound: '01159999999'
        minimum_amount: '1000.00'
        product_info:
          Mastercard:
            porc_promesa: 70%
            min_pay: '1494.80'
          Visa:
            porc_promesa: 50%
            min_pay: '1000.00'
  securitySchemes:
    jwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Token de acceso JWT. Debe ser enviado como 'Bearer {token}'.

````