Saltar al contenido principal

API del Credential Issuer

Base URL:

EntornoURL
Producciónhttps://identity-credentials-issuer.pro.cloud-w.envs.redisbe.com
Preproducciónhttps://identity-credentials-issuer.pre.cloud-w.envs.redisbe.com

Documentación interactiva (Swagger): GET <base-url>/swagger

Endpoints de operación

GET /health

Devuelve el estado de salud del servicio.

Autenticación: ninguna.

Respuesta 200 OK:

{
"status": "ok"
}

POST /issuance/representative

Solicita la emisión de una IsbePortalLearCredential para el propio representante autenticado. Devuelve un código QR (imagen PNG) que el representante debe escanear con su wallet.

Autenticación: Authorization: Bearer <token_keycloak>

El token debe incluir los claims organization_identifier, organization, user_identifier y email.

Body (JSON):

{
"power": [
{
"type": "domain",
"domain": "ISBE",
"function": "onboarding",
"action": ["execute"]
}
]
}
CampoTipoObligatorioDescripción
powerarrayLista de poderes a incluir en la credencial. Cada elemento debe estar autorizado para la organización del solicitante.
power[].typestringTipo de poder (p. ej. "domain").
power[].domainstringDominio al que aplica el poder (p. ej. "ISBE").
power[].functionstringFunción dentro del dominio (p. ej. "onboarding").
power[].actionarray de stringAcciones permitidas (p. ej. ["execute"]). Al menos un elemento.

Respuesta 200 OK:

Content-Type: image/png
<binary PNG del código QR>

Errores:

CódigoCausa
401 UnauthorizedToken de Keycloak inválido o expirado.
400 Bad RequestClaims faltantes en el token, o poderes solicitados no autorizados para la organización.
500 Internal Server ErrorError interno (tipo de VC no configurado, perfil de Connector no configurado, error al contactar con el Connector).

POST /issuance/employee

Solicita la emisión de una IsbePortalLearCredential para un empleado de la organización. El QR de oferta de credencial se envía por email al empleado; la respuesta HTTP confirma el envío.

Autenticación: Authorization: Bearer <token_keycloak>

Body (JSON):

{
"email": "empleado@empresa.es",
"power": [
{
"type": "domain",
"domain": "ISBE",
"function": "onboarding",
"action": ["execute"]
}
]
}
CampoTipoObligatorioDescripción
emailstringEmail del empleado destinatario.
powerarrayLista de poderes a incluir en la credencial del empleado.

Respuesta 200 OK:

{
"message": "Email sent to empleado@empresa.es"
}

Errores: mismos que POST /issuance/representative.


POST /issuance/identifiers

Devuelve los vc_types para los que el subject_id indicado tiene permisos de emisión según la configuración del Issuer.

Autenticación: Authorization: Bearer <token_keycloak>

Body (JSON):

{
"subject_id": "ES-B12345678_20260115120000"
}

Respuesta 200 OK:

{
"vc_types": ["IsbePortalLearCredential"]
}

POST /issuance/credential

Recupera el listado de credenciales emitidas para una o varias organizaciones.

Autenticación: Authorization: Bearer <token_keycloak>

Body (JSON):

{
"organization_identifiers": ["ES-B12345678", "ES-A87654321"]
}

Respuesta 200 OK: array de objetos IssuedCredential con los campos: id, vc_type, subject_id, organization_identifier, status, credential_id, creation_at, update_at.


POST /issuance/credential/revoke

Revoca una credencial previamente emitida. La revocación es permanente.

Autenticación: Authorization: Bearer <token_keycloak>

Body (JSON):

{
"credential_id": "urn:uuid:8d475485-1617-42f3-b402-9c95117ad72b"
}

Respuesta 200 OK: confirmación de revocación.

Errores:

CódigoCausa
404 Not FoundEl credential_id no existe en la base de datos del Issuer.
400 Bad RequestLa credencial ya estaba revocada.
500 Internal Server ErrorError interno al procesar la revocación.