# Completar la inscripción después de la redirección

## ▶️ Uso

Utilice este endpoint para completar el proceso de inscripción después de que el usuario sea redirigido de vuelta desde la institución. El cuerpo de la solicitud debe coincidir con los parámetros recibidos en la URL de callback, ya sea para un callback exitoso o de error.

Endpoint: POST /payments/br/enrollments/complete-redirection/
Version: 1.223.0
Security: basicAuth

## Response 200 fields (application/json):

  - `id` (string)
    Identificador único de Belvo de la inscripción.
    Example: "600f1b4a-1ef9-4f89-b341-1a35f0c32cc0"

  - `created_by` (string)
    El Belvo ID del comerciante que creó la inscripción.
    Example: "dbdce1e9-d089-4b7d-804b-51dd07748202"

  - `created_at` (string)
    La marca de tiempo ISO-8601 de cuando se creó el punto de datos en la base de datos de Belvo.
    Example: "2024-11-26T11:20:57.389056Z"

  - `updated_at` (string)
    La marca de tiempo ISO-8601 de cuándo se actualizó por última vez la inscripción.
    Example: "2024-11-26T11:20:57.389058Z"

  - `external_id` (string)
    Un identificador único adicional para el recurso con fines internos.

{% admonition type="success" name="Altamente Recomendado" %}
  Recomendamos usar este campo para almacenar su propio identificador único para cada recurso (cliente, cuenta bancaria, intención de pago o inscripción). Esto puede ser útil para rastrear el recurso en su sistema y para fines de depuración.
{% /admonition %}
    Example: "4b8a81a0-e33c-45a6-8567-479efb105f73"

  - `type` (string)
    El tipo de inscripción. Para la OFPI de 🇧🇷 Brasil, puede ser:

  - open_finance_biometric_pix: Para pagos biométricos utilizando la red PIX.
    Enum: "open_finance_biometric_pix"

  - `status` (string)
    El estado de la inscripción del dispositivo. Puede ser:

- PENDING: La inscripción está pendiente.
- SUCCEEDED: La inscripción fue exitosa.
- CANCELED: La inscripción fue cancelada.
- FAILED: La inscripción falló.
    Enum: "PENDING", "SUCCEEDED", "CANCELED", "FAILED"

  - `status_reason_code` (string,null)
    Un código legible por máquina que proporciona la razón de una inscripción fallida. Solo está presente cuando status es FAILED.

Valores posibles:
  - send_risk_signals_failed: Inscripción rechazada debido a un tiempo de espera al enviar señales de riesgo.
  - redirection_to_institution_failed: Inscripción rechazada porque la redirección a la institución no se completó con éxito.
  - biometric_registration_failed: Inscripción rechazada porque el registro biométrico no se completó con éxito dentro del tiempo permitido.
  - too_many_device_registration_attempts: Inscripción rechazada debido a demasiados intentos fallidos de registro de dispositivo.
  - rejected_by_user: La inscripción fue cancelada manualmente por el usuario.
  - device_not_supports_biometric_authentication: Inscripción rechazada porque el dispositivo no es compatible con la autenticación biométrica.
  - institution_infra_failed: Inscripción rechazada debido a problemas de infraestructura en la institución.
  - blocked_by_institution_security_policy: Inscripción rechazada debido a decisiones de la política de seguridad de la institución basadas en la evaluación de riesgos.
  - redirection_back_from_institution_failed: Inscripción rechazada porque la redirección de regreso desde la institución no se completó con éxito.
  - biometric_validation_error: Inscripción fallida debido a problemas de validación biométrica o de registro de clave pública.
  - rejected_other: Inscripción rechazada por una razón no especificada.
  - canceled_due_to_expiration: Inscripción cancelada debido a la expiración del período de validez.
    Example: "biometric_registration_failed"

  - `status_reason_message` (string,null)
    Un mensaje legible para humanos que proporciona más detalles sobre la razón de una inscripción fallida. Solo se presenta cuando el status es FAILED. Consulte status_reason_code para ver mensajes de ejemplo para cada código de razón.
    Example: "Enrollment rejected because the biometric registration was not completed successfully within the allowed time."

  - `details` (object)
    Detalles sobre la inscripción

  - `details.status` (string)
    El estado de la inscripción de pagos biométricos. Puede ser:

  - AWAITING_ACCOUNT_HOLDER_VALIDATION: El titular de la cuenta necesita validar la inscripción enviando sus datos biométricos.
  - AWAITING_ENROLLMENT: La información de inscripción ha sido enviada a la institución y está siendo evaluada.
  - AUTHORIZED: La inscripción ha sido autorizada.
  - REJECTED: La institución ha rechazado la inscripción.
  - REVOKED: El usuario o la institución ha revocado la inscripción.
    Enum: "AWAITING_ACCOUNT_HOLDER_VALIDATION", "AWAITING_ENROLLMENT", "AUTHORIZED", "REJECTED", "REVOKED"

  - `details.customer` (string)
    ID único de Belvo para referenciar al cliente.
    Example: "c860809f-e96d-4d50-9588-f40ffab77302"

  - `details.institution` (string)
    El ID único de Belvo para referenciar la institución en la que el dispositivo está registrado.
    Example: "600f1b4a-1ef9-4f89-b341-1a35f0c32cc0"

  - `details.platform` (string)
    La plataforma del dispositivo que se va a inscribir. Puede ser:

  - ANDROID: Para dispositivos Android.
  - BROWSER: Para navegadores web.
  - CROSS_PLATFORM: Para dispositivos multiplataforma.
  - IOS: Para dispositivos iOS.
    Enum: "ANDROID", "BROWSER", "CROSS_PLATFORM", "IOS"

  - `details.name` (string,null)
    Un nombre interno para este registro de dispositivo.
    Example: "600f1b4a-Mobile"

  - `details.callback_url` (string)
    La URL a la que se redirigirá a su usuario después de completar el proceso de inscripción.
    Example: "https://example.com/enrollment-in-progress"

  - `details.redirect_url` (string)
    La URL para redirigir al usuario a completar su inscripción en la institución.
    Example: "https://www.acmecorp.com/checkout/3487321"

  - `details.risk_signals` (string)
    Una cadena ofuscada () utilizada para indicar que se han proporcionado señales de riesgo.
    Example: "******"

  - `details.expires_at` (string)
    La marca de tiempo ISO-8601 de cuándo expirará la inscripción. Después de este tiempo, la inscripción ya no será válida y el status cambiará a CANCELED y el status_reason_code se establecerá en canceled_due_to_expiration.
    Example: "2026-12-26T11:20:57.389056Z"

  - `metadata` (object)
    Objeto opcional y personalizable donde puedes proporcionar cualquier par clave-valor adicional para tus propósitos internos. Por ejemplo, un número de referencia interno para la inscripción.

⚠️ Nota: Solo puedes proporcionar hasta 50 claves (las claves pueden tener hasta 50 caracteres cada una y cada valor puede tener hasta 500 caracteres). No admitimos objetos anidados, solo valores ASCII.
    Example: {"internal_reference_id":"GGq73487w2"}

## Response 400 fields (application/json):

  - `code` (string, required)
    Un código de error único (null, does_not_exist, required, already_registered, invalid_choice, max_length, min_length, blank, null, cancellation_error, idempotency_key_invalid) que te permite clasificar y manejar el error de manera programática.
    Example: "required"

  - `message` (string, required)
    Una breve descripción del error.

La descripción puede ser (entre otras):

  - Este campo es obligatorio.
  - El objeto con nombre=narnia no existe.
  - Este campo no puede ser nulo.
  - Este campo no puede estar en blanco.
  - Este cliente ya está registrado.
  - Asegúrese de que este campo tenga al menos 2 caracteres.
  - Asegúrese de que este campo no tenga más de 4 caracteres.
  - El valor ingresado no es válido.
  - Debe establecer todos los campos obligatorios: username, password, username_type.
  - Payment Intent no puede ser cancelado porque no está SCHEDULED.
  - Payment Intent no puede ser cancelado ya que el tiempo límite (23:59:00) ha pasado.
  - La clave de idempotencia proporcionada no es válida.
    Example: "This field is required."

  - `request_id` (string, required)
    Un ID único de 32 caracteres de la solicitud (que coincide con un patrón regex de: [a-f0-9]{32}). Proporcione este ID al contactar al equipo de soporte de Belvo para acelerar las investigaciones.
    Example: "9e7b283c6efa449c9c028a16b5c249fb"

  - `field` (string,null)
    Nombre del campo donde se encontró el error.

> Nota: Este campo solo está presente cuando el error está relacionado con un campo específico.
    Example: "institution"

## Response 403 fields (application/json):

  - `code` (string)
    Un código de error único (access_to_resource_denied) que te permite clasificar y manejar el error de manera programática.

ℹ️ Consulta nuestro DevPortal para obtener más información sobre cómo manejar 403 access_to_resource_denied.
    Example: "access_to_resource_denied"

  - `message` (string)
    Una breve descripción del error.

Para los errores access_to_resource_denied, la descripción es:

  - You don't have access to this resource..
    Example: "You don't have access to this resource."

  - `request_id` (string)
    Un ID único de 32 caracteres de la solicitud (que coincide con un patrón regex de: [a-f0-9]{32}). Proporcione este ID al contactar al equipo de soporte de Belvo para acelerar las investigaciones.
    Example: "9e7b283c6efa449c9c028a16b5c249fb"

## Response 404 fields (application/json):

  - `code` (string)
    Un código de error único (not_found) que te permite clasificar y manejar el error de manera programática.
    Example: "not_found"

  - `message` (string)
    Una breve descripción del error.

Para errores not_found, la descripción es:

  - Not found
    Example: "Not found"

  - `request_id` (string)
    Un ID único de 32 caracteres de la solicitud (que coincide con un patrón regex de: [a-f0-9]{32}). Proporcione este ID al contactar al equipo de soporte de Belvo para acelerar las investigaciones.
    Example: "9e7b283c6efa449c9c028a16b5c249fb"

## Response 408 fields (application/json):

  - `code` (string)
    Un código de error único (request_timeout) que te permite clasificar y manejar el error de manera programática.

ℹ️ Consulta nuestro DevPortal para obtener más información sobre cómo manejar errores 408 request_timeout.
    Example: "request_timeout"

  - `message` (string)
    Una breve descripción del error.

Para los errores de request_timeout, la descripción es:

  - The request timed out, you can retry asking for less data by changing your query parameters.
    Example: "The request timed out, you can retry asking for less data by changing your query parameters"

  - `request_id` (string)
    Un ID único de 32 caracteres de la solicitud (que coincide con un patrón regex de: [a-f0-9]{32}). Proporcione este ID al contactar al equipo de soporte de Belvo para acelerar las investigaciones.
    Example: "9e7b283c6efa449c9c028a16b5c249fb"

## Response 500 fields (application/json):

  - `code` (string)
    Un código de error único (unexpected_error) que te permite clasificar y manejar el error de manera programática.

ℹ️ Consulta nuestro DevPortal para obtener más información sobre cómo manejar errores 500 unexpected_error.
    Example: "unexpected_error"

  - `message` (string)
    Una breve descripción del error.

Para los errores unexpected_error, la descripción es:

- Belvo no puede procesar la solicitud debido a un problema interno del sistema o a una respuesta no soportada de una institución.
    Example: "Belvo is unable to process the request due to an internal system issue or to an unsupported response from an institution"

  - `request_id` (string)
    Un ID único de 32 caracteres de la solicitud (que coincide con un patrón regex de: [a-f0-9]{32}). Proporcione este ID al contactar al equipo de soporte de Belvo para acelerar las investigaciones.
    Example: "9e7b283c6efa449c9c028a16b5c249fb"


