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

# Informacion complementaria

Endpoint para solicitar información complementaria en un expediente KYB existente. Permite agregar nuevas secciones basándose en un flujo diferente y notificar al usuario sobre la documentación adicional requerida.

## Funcionalidad

* Compara las secciones actuales del documento con las del nuevo flujo y agrega solo las faltantes.
* Maneja formularios dinámicos identificados por un GUID único.
* Actualiza `FlowSections` con las nuevas secciones y crea reglas de validación cruzada.
* Puede notificar al usuario por email y SMS (opcional).

## Secciones soportadas

* Información Fiscal (CSF, Opinión de Cumplimiento)
* Comprobante de Domicilio
* Representante Legal
* Persona Física
* Acta Constitutiva (solo Persona Moral)
* Estado de Cuenta Bancario
* Sucursales
* Carta de Condiciones
* Formularios Dinámicos (identificados por GUID)
* Listas Negras
* Información Crediticia
* Términos y Condiciones

## Restricciones

* El tipo de persona del documento debe coincidir con el del flujo.
* Persona Física no puede tener secciones de Persona Moral (Acta, Poderes) y viceversa.
* No se permite agregar formularios que ya existen (mismo GUID).
* No se eliminan ni modifican secciones existentes.

## Request

* Headers requeridos: `NUFI-API-KEY`, `X-Workspace`
* Body (application/json):

```json theme={null}
{
  "documentId": "550e8400-e29b-41d4-a716-446655440000",
  "flowId": "FLOW-002",
  "notificarUsuario": true,
  "mensajeAdicional": "Se requiere información fiscal adicional para completar la revisión de su expediente"
}
```

## Respuesta 200

```json theme={null}
{
  "Code": 200,
  "Status": "success",
  "Message": "Operación exitosa",
  "Data": {
    "documentId": "ec30e1d9-b052-4479-a4a5-3414dce78d07",
    "sectionsAdded": [
      "TaxInformations",
      "PersonaFisica"
    ],
    "message": "Se agregaron 2 secciones nuevas al documento"
  }
}
```


## OpenAPI

````yaml POST /expedientes/informacion-complementaria
openapi: 3.0.0
info:
  title: KYB API
  version: 1.0.0
servers:
  - url: https://nufi.azure-api.net/kyb
    description: Productivo
  - url: https://nufi.azure-api.net/kyb/dev
    description: Sandbox
  - url: https://nufi-kyb-services-staging-azurefunction.azurewebsites.net/api
    description: Staging
security: []
paths:
  /expedientes/informacion-complementaria:
    post:
      tags:
        - default
      summary: solicitar información complementaria
      operationId: requestAdditionalInfo
      parameters:
        - name: NUFI-API-KEY
          in: header
          required: true
          schema:
            type: string
          example: '{{NUFI_API_KEY}}'
        - name: X-Workspace
          in: header
          required: true
          schema:
            type: string
          example: '{{WORKSPACE_ID}}'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - documentId
                - flowId
              properties:
                documentId:
                  type: string
                  format: uuid
                  description: ID único del documento/expediente existente.
                flowId:
                  type: string
                  description: >-
                    Identificador del CustomerFlow que contiene las secciones a
                    agregar.
                notificarUsuario:
                  type: boolean
                  default: true
                  description: >-
                    Enviar notificación al usuario (email/SMS) si hay datos de
                    contacto configurados.
                mensajeAdicional:
                  type: string
                  maxLength: 1000
                  description: >-
                    Mensaje adicional para explicar por qué se solicita
                    información complementaria.
            examples:
              default:
                value:
                  documentId: 550e8400-e29b-41d4-a716-446655440000
                  flowId: FLOW-002
                  notificarUsuario: true
                  mensajeAdicional: >-
                    Se requiere información fiscal adicional para completar la
                    revisión de su expediente
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: integer
                    example: 200
                  Status:
                    type: string
                    example: success
                  Message:
                    type: string
                    example: Operación exitosa
                  Data:
                    oneOf:
                      - type: object
                      - type: array
                        items:
                          type: string
                    nullable: true
              examples:
                success:
                  value:
                    Code: 200
                    Status: success
                    Message: Operación exitosa
                    Data:
                      documentId: ec30e1d9-b052-4479-a4a5-3414dce78d07
                      sectionsAdded:
                        - TaxInformations
                        - PersonaFisica
                      message: Se agregaron 2 secciones nuevas al documento
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: integer
                    example: 400
                  Status:
                    type: string
                    example: bad_request
                  Message:
                    type: string
                    example: Error de validacion
                  Data:
                    type: array
                    items:
                      type: string
                    nullable: true
              examples:
                validationError:
                  value:
                    Code: 400
                    Status: bad_request
                    Message: Error de validacion
                    Data:
                      - El campo documentId es obligatorio
                      - El campo flowId es obligatorio
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: integer
                    example: 401
                  Status:
                    type: string
                    example: forbidden
                  Message:
                    type: string
                    example: No autorizado - Workspace inválido o API Key incorrecta
                  Data:
                    oneOf:
                      - type: object
                      - type: array
                        items:
                          type: string
                    nullable: true
              examples:
                unauthorized:
                  value:
                    Code: 401
                    Status: forbidden
                    Message: No autorizado - Workspace inválido o API Key incorrecta
                    Data: null
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  Code:
                    type: integer
                    example: 500
                  Status:
                    type: string
                    example: error
                  Message:
                    type: string
                    example: Error interno del servidor
                  Data:
                    oneOf:
                      - type: object
                      - type: array
                        items:
                          type: string
                    nullable: true
              examples:
                serverError:
                  value:
                    Code: 500
                    Status: error
                    Message: Error interno del servidor
                    Data: null

````