Skip to content

Presentación Verificable ​

Descripción General ​

Esta API permite la creación y gestión de solicitudes de presentación verificable para flujos de trabajo de verificación de credenciales.

Postman collection

Primeros Pasos ​

URL Base ​

https://message-manager-production.up.railway.app

Autenticación ​

Todas las solicitudes requieren una clave API pasada en el encabezado x-api-key.

Referencia de API ​

Crear Solicitud de Presentación ​

Crea una nueva solicitud de presentación con requisitos específicos de verificación de campos.

Endpoint: POST /message

Encabezados:

  • Content-Type: application/json
  • x-api-key: TU_CLAVE_API

Cuerpo de la Solicitud:

json
{
  "goalCode": "streamlined-vp",
  "presentationData": [
    {
      "id": "schema-fields-verification",
      "name": "Verificación de Campos del Esquema",
      "purpose": "Para verificar los campos de nombre y startup de una credencial.",
      "constraints": {
        "fields": [
          {
            "path": ["$.credentialSubject.givenName"],
            "filter": {
              "type": "string"
            }
          },
          {
            "path": ["$.credentialSubject.familyName"],
            "filter": {
              "type": "string"
            }
          }
        ]
      },
      "webhookUrl": "https://webhook.site/TU_ID_WEBHOOK"
    }
  ]
}

Respuesta: Devuelve un objeto de solicitud de presentación que puede convertirse en una invitación DIDComm.

Verificación de Campos ​

Expresiones JSONPath Soportadas ​

El sistema soporta expresiones JSONPath para la verificación de campos:

  • $.credentialSubject.givenName - Verifica el campo de nombre
  • $.credentialSubject.familyName - Verifica el campo de apellido

Estos elementos son para las credenciales de Crecimiento y DevConnect. Esencialmente estamos solicitando al cliente que muestre al usuario sus credenciales que satisfacen estas propiedades. Si emitiste tu credencial, puedes especificar las propiedades utilizadas en tu esquema.

Tipos de Filtro ​

Tipos de filtro actualmente soportados:

  • string - Valida que el campo contenga un valor de cadena

Integración DIDComm ​

Convertir Respuesta a Invitación DIDComm ​

Después de recibir una respuesta exitosa, convertirla a una invitación DIDComm:

javascript
const responseJson = pm.response.json();

// Convertir respuesta a invitación codificada en base64
const invitationString = JSON.stringify(responseJson);
const base64Invitation = Buffer.from(invitationString)
  .toString('base64')
  .replace(/\+/g, '-')
  .replace(/\//g, '_')
  .replace(/=/g, '');

// Crear invitación DIDComm formateada
const formattedResponse = {
  invitationId: responseJson.id,
  oobContentData: `didcomm://?_oob=${base64Invitation}`
};

Ejemplo Completo ​

Implementación en Node.js ​

javascript
const axios = require('axios');

const data = JSON.stringify({
  "goalCode": "streamlined-vp",
  "presentationData": [
    {
      "id": "schema-fields-verification",
      "name": "Verificación de Campos del Esquema",
      "purpose": "Para verificar los campos de nombre y startup de una credencial.",
      "constraints": {
        "fields": [
          {
            "path": ["$.credentialSubject.givenName"],
            "filter": { "type": "string" }
          },
          {
            "path": ["$.credentialSubject.familyName"],
            "filter": { "type": "string" }
          }
        ]
      },
      "webhookUrl": "https://webhook.site/TU_ID_WEBHOOK"
    }
  ]
});

const config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'https://message-manager-production.up.railway.app/message',
  headers: { 
    'Content-Type': 'application/json', 
    'x-api-key': 'TU_CLAVE_API'
  },
  data: data
};

axios.request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });

Integración de Webhook ​

Configuración del Webhook ​

Configura tu URL de webhook para recibir resultados de verificación de presentación:

json
{
  "webhookUrl": "https://tu-dominio.com/webhook/resultado-presentacion"
}

Carga Útil del Webhook ​

Tu webhook recibirá resultados de verificación cuando se complete el proceso de presentación.

Manejo de Errores ​

Escenarios de error comunes y cómo manejarlos:

  • 401 No Autorizado: Clave API inválida o faltante
  • 400 Solicitud Incorrecta: Carga útil de solicitud inválida
  • 500 Error Interno del Servidor: Error de procesamiento del lado del servidor

Mejores Prácticas ​

  1. Seguridad: Siempre usa HTTPS para URLs de webhook
  2. Validación: Valida todos los campos requeridos antes de enviar solicitudes
  3. Manejo de Errores: Implementa manejo adecuado de errores para todas las llamadas a la API
  4. Limitación de Tasa: Respeta los límites de tasa de la API (contacta soporte para límites actuales)