API HTTP

Asset Core expone APIs HTTP a través de dos daemons: el daemon de escritura para commits y el daemon de lectura para consultas.

Visión general

La API es RESTful con cargas útiles en JSON. Ambos demonios proporcionan puntos finales de salud para monitoreo, y las respuestas incluyen metadatos de frescura cuando es aplicable.

La especificación completa está disponible en openapi.json en el paquete de distribución.

Estructura

Escribir Puntos Finales del Daemon

MétodoRutaDescripción
POST/v1/commitEnviar una transacción
POST/v1/register/classRegistrar una nueva clase de activo
POST/v1/register/class-shapeRegistrar una forma para una clase
GET/v1/healthVerificación de salud con estado del registro de confirmaciones
GET/v1/metricsMétricas de Prometheus

Leer Puntos Finales del Daemon

MétodoRutaDescripción
GET/v1/read/container/{id}Obtener metadatos del contenedor
GET/v1/read/container/{id}/balancesObtener saldos del contenedor
GET/v1/read/container/{id}/slotsObtener espacios del contenedor
GET/v1/read/container/{id}/gridObtener cuadrícula del contenedor
GET/v1/read/class/{id}Obtener detalles de la clase
GET/v1/read/classesListar clases registradas
GET/v1/read/class/{id}/shapesObtener formas de la clase
GET/v1/read/class/{id}/statsObtener estadísticas de la clase
GET/v1/read/freshnessObtener metadatos de frescura
GET/v1/healthVerificación de salud

Campos

Encabezados de Solicitud

EncabezadoRequeridoDescripción
Content-TypeDebe ser application/json para solicitudes POST
X-Idempotency-KeyNoAlternativa al campo del cuerpo de la solicitud

Encabezados de Respuesta

EncabezadoDescripción
X-Asset-Idempotencyhit si la respuesta fue almacenada en caché
Content-TypeSiempre application/json

Campos de Respuesta Comunes

Las respuestas de éxito incluyen:

{
  "global_seq": 42,
  "batch_seq": 1,
  "minted_instances": [9001, 9002],
  "metadata": { ... }
}

Las respuestas a las consultas incluyen frescura:

{
  "data": { ... },
  "freshness": {
    "checkpoint_seq": 42,
    "commit_log_seq": 45
  }
}

Ejemplos

Enviar una Transacción

curl -X POST http://localhost:8080/v1/commit \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      {
        "op": "CreateContainer",
        "args": {
          "container_id": 1001,
          "kind": "Standard",
          "owner": null
        }
      }
    ],
    "idempotency_key": "create-container-1001"
  }'

Respuesta:

{
  "global_seq": 1,
  "batch_seq": 1,
  "minted_instances": [],
  "metadata": {
    "idempotency_key": "create-container-1001"
  }
}

Consultar Saldos de Contenedores

curl http://localhost:8081/v1/read/container/1001/balances

Respuesta:

{
  "container_id": 1001,
  "balances": [
    {
      "class_id": 100,
      "key": 1,
      "quantity": 500
    }
  ],
  "freshness": {
    "checkpoint_seq": 1,
    "commit_log_seq": 1
  }
}

Verificar Salud

curl http://localhost:8080/v1/health

Respuesta:

{
  "status": "healthy",
  "commit_log": {
    "end_seq": 100,
    "checkpoint_seq": 100,
    "lag": 0,
    "driver": {
      "name": "file",
      "path": "/var/lib/assetcore/commit_log.log"
    }
  }
}

Referencias relacionadas