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

# Obtener metadatos de plantillas

> Obtén metadatos detallados a nivel de campo de la plantilla de un método de pago, incluidas reglas de validación, tipos de texto y listas de opciones desplegables.

Mientras que `/v2/payments/templates` devuelve un esqueleto simple de clave-valor, este endpoint proporciona todos los metadatos que tu interfaz necesita para mostrar y validar cada campo correctamente. Para cada campo recibes su índice de posición, un `indexCode` único (úsalo como clave en `fieldJson` cuando no esté vacío), un título para mostrar, el tipo de texto esperado, los límites mínimo y máximo de caracteres, si el campo es opcional y cualquier opción de lista desplegable codificada en `extendInfo`. Usa este endpoint para construir dinámicamente formularios de creación de beneficiarios sin codificar las reglas de los campos.

## Endpoint

```text theme={null}
GET https://api.velafi.com/v2/payments/templates/metamessage
```

> [!NOTE]
>
> Usa `https://api-test.velafi.com/v2/payments/templates/metamessage` para hacer pruebas en sandbox.

## Parámetros de la solicitud

**paymentId** `integer` *required*

El ID numérico del método de pago cuyos metadatos de campos quieres obtener.

## Campos de la respuesta

**code** `integer`

Código de estado de la respuesta. `200` indica éxito.

**msg** `string`

Mensaje de respuesta legible, por ejemplo `"SUCCESS"`.

**data** `object`

Objeto de metadatos del método de pago.

**campos de data**

**data.id** `integer`

El ID del método de pago.

**data.paymentName** `string`

Nombre para mostrar del método de pago (por ejemplo, `"Wire (CPN)"`).

**data.paymentType** `integer`

Código numérico que representa la categoría del tipo de pago.

**data.trench** `string`

El canal de pago o proveedor subyacente (por ejemplo, `"Circle Payment Network"`).

**data.fieldList** `array`

Lista ordenada de descriptores de campo. Cada elemento describe un campo de entrada.

**campos de cada elemento de fieldList**

**index** `integer`

Posición secuencial del campo en el formulario.

**indexCode** `string`

Código único de este campo. Cuando no está vacío, usa este valor como clave en `fieldJson` al agregar un beneficiario. Cuando está vacío, usa en su lugar el valor de `title`.

**title** `string`

Etiqueta legible que se muestra para el campo.

**textType** `integer`

Código numérico que describe el formato de entrada esperado. Consulta la tabla de tipos de texto más abajo.

**promptText** `string`

Texto de marcador de posición o de instrucciones que se muestra dentro del campo de entrada.

**minLimit** `integer`

Longitud mínima de caracteres o valor numérico mínimo permitido.

**maxLimit** `integer`

Longitud máxima de caracteres o valor numérico máximo permitido.

**isOptional** `boolean`

`true` si el campo se puede omitir; `false` si es obligatorio.

**isAccount** `boolean`

`true` si este campo representa el número o identificador de cuenta.

**extendInfo** `string`

Cadena JSON con metadatos adicionales. Para `textType` 10 (lista desplegable), contiene el arreglo de opciones, por ejemplo `[{"code":"B2B","name":"B2B"},{"code":"B2C","name":"B2C"}]`. Cadena vacía para los demás tipos.

## Referencia de tipos de texto

| Valor | Tipo | Descripción |
| - | - | - |
| 1 | number | Solo caracteres numéricos (0–9) |
| 2 | letter | Solo caracteres alfabéticos (A–Z, a–z) |
| 3 | alphanumeric | Solo letras y números |
| 4 | string | Cualquier cadena de texto libre |
| 5 | image | Datos de imagen. Súbela mediante `/v2/base/file/upload` y envía la ruta devuelta. Separa varias rutas con comas. |
| 6 | ISO 3166-1 | Código de país (por ejemplo, `US`, `CN`) |
| 7 | ISO 3166-2 | Código de subdivisión (por ejemplo, `US-CA`) |
| 8 | international dialing code | Código de marcación del país (por ejemplo, `1`, `86`) |
| 9 | date | Fecha en formato `yyyy-MM-dd` |
| 10 | dropdown list | Valor enumerado; las opciones están codificadas como JSON en `extendInfo` |

## Ejemplo

```bash theme={null}
curl -X GET "https://api.velafi.com/v2/payments/templates/metamessage?paymentId=120" \
  -H "X-BH-TOKEN: YOUR_TOKEN"
```

```json theme={null}
{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "id": 120,
    "paymentName": "Wire (CPN)",
    "paymentType": 5,
    "trench": "Circle Payment Network",
    "fieldList": [
      {
        "index": 1,
        "indexCode": "beneficiaryName",
        "textType": 4,
        "title": "Beneficiary Name",
        "promptText": "Please enter Beneficiary Name",
        "minLimit": 1,
        "maxLimit": 300,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 3,
        "indexCode": "country",
        "textType": 6,
        "title": "Nationality",
        "promptText": "Please select Nationality",
        "minLimit": 1,
        "maxLimit": 300,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 9,
        "indexCode": "dateOfBirth",
        "textType": 9,
        "title": "Date of Birth / Date of Incorporation",
        "promptText": "Please enter Date of Birth / Date of Incorporation (yyyy-MM-dd)",
        "minLimit": 1,
        "maxLimit": 10,
        "isOptional": true,
        "isAccount": false,
        "extendInfo": ""
      },
      {
        "index": 13,
        "indexCode": "useCase",
        "textType": 10,
        "title": "Use Case",
        "promptText": "Please select Use Case",
        "minLimit": 1,
        "maxLimit": 100,
        "isOptional": false,
        "isAccount": false,
        "extendInfo": "[{\"code\":\"B2B\",\"name\":\"B2B\"},{\"code\":\"B2C\",\"name\":\"B2C\"},{\"code\":\"C2B\",\"name\":\"C2B\"},{\"code\":\"C2C\",\"name\":\"C2C\"}]"
      },
      {
        "index": 24,
        "indexCode": "accountNumber",
        "textType": 3,
        "title": "Account Number",
        "promptText": "Please enter Account Number",
        "minLimit": 1,
        "maxLimit": 34,
        "isOptional": false,
        "isAccount": true,
        "extendInfo": ""
      }
    ]
  }
}
```

> [!TIP]
>
> Cuando `indexCode` no está vacío, úsalo como clave en el cuerpo de tu `fieldJson`. Cuando `indexCode` está vacío, usa en su lugar la cadena de `title` como clave.


## Related topics

- [Registro de cambios](https://docs.velafi.com/es/docs/changelog.md)
- [Obtener plantillas de métodos de pago](https://docs.velafi.com/es/api-reference/beneficiary/get-payment-templates.md)
- [Administrar beneficiarios](https://docs.velafi.com/es/docs/guides/managing-beneficiaries.md)
- [Listar métodos de pago compatibles](https://docs.velafi.com/es/api-reference/beneficiary/get-supported-payment-methods.md)
- [Obtener una orden](https://docs.velafi.com/es/api-reference/order/retrieve-a-specific-order.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.