API HTTP

Asset Core exposa APIs HTTP a través de dos daemons: el daemon d’escriptura per a commits i el daemon de lectura per a consultes.

Visió general

L’API és RESTful amb càrregues útils JSON. Ambdós daemons proporcionen punts d’extrem de salut per al monitoratge, i les respostes inclouen metadades de frescor quan és aplicable.

La especificació completa està disponible a openapi.json en el paquet de distribució.

Estructura

Escriure punts finals del daemon

MètodeRutaDescripció
POST/v1/commitEnviar una transacció
POST/v1/register/classRegistrar una nova classe d’actius
POST/v1/register/class-shapeRegistrar una forma per a una classe
GET/v1/healthComprovació de salut amb l’estat del registre de transaccions
GET/v1/metricsMètriques de Prometheus

Llegir els punts finals del daemon

MètodeRutaDescripció
GET/v1/read/container/{id}Obtenir metadades del contenidor
GET/v1/read/container/{id}/balancesObtenir balances del contenidor
GET/v1/read/container/{id}/slotsObtenir espais del contenidor
GET/v1/read/container/{id}/gridObtenir graella del contenidor
GET/v1/read/class/{id}Obtenir detalls de la classe
GET/v1/read/classesLlistar classes registrades
GET/v1/read/class/{id}/shapesObtenir formes de la classe
GET/v1/read/class/{id}/statsObtenir estadístiques de la classe
GET/v1/read/freshnessObtenir metadades de frescor
GET/v1/healthComprovació de salut

Camps

Encapsulaments de sol·licitud

HeaderRequiredDescription
Content-TypeHa de ser application/json per a les sol·licituds POST
X-Idempotency-KeyNoAlternativa al camp del cos de la sol·licitud

Encapsulaments de resposta

HeaderDescripció
X-Asset-Idempotencyhit si la resposta va ser emmagatzemada
Content-TypeSempre application/json

Camps de resposta comuns

Les respostes d’èxit inclouen:

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

Les respostes de consulta inclouen frescor:

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

Exemples

Enviar una transacció

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"
  }'

Resposta:

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

Consulta de Saldo de Contenidors

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

Resposta:

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

Comprovar la salut

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

Resposta:

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

Referències relacionades