Saltar para o conteúdo

Referência da API

API Pública do Axiospec

Versão 1.0.0

Índice

Visão geral

A API Pública do Axiospec permite-lhe ler e escrever o seu programa de calibração a partir dos seus próprios sistemas: listar e criar instrumentos, registar calibrações no livro de registos com deteção de adulteração, e ler os seus locais e as normas de conformidade que selecionou.

URL de base: https://axiospec.com/api/public/v1

Autenticação. Crie uma chave na aplicação, em Definições e depois Chaves de API (apenas administradores do espaço de trabalho). Envie-a em todos os pedidos como Authorization: Bearer <key> ou como X-API-Key: <key>. As chaves têm o prefixo ctk_.

Acesso. A API está disponível nos planos Professional e Scale. As chaves dos planos Free ou Starter recebem 403 API_ACCESS_TIER_REQUIRED. Uma chave age como a pessoa que a criou. Quando essa pessoa é um auditor cuja data de fim do acesso já passou, a chave recebe 403 ACCESS_ENDED.

Âmbitos. Uma chave tem o âmbito read ou o âmbito write (que implica read). Uma chave só de leitura que tente uma escrita recebe 403 INSUFFICIENT_SCOPE.

Idempotência. Registar uma calibração (POST /instruments/{id}/calibrations) exige um cabeçalho Idempotency-Key. O livro de registos só aceita acréscimos, por isso um pedido repetido com a mesma chave devolve o registo original em vez de escrever um duplicado. Criar um instrumento (POST /instruments) aceita o mesmo cabeçalho como opção.

Paginação. Os endpoints de listagem devolvem {data: [...], pagination: {limit, offset, total, has_more}}. Pagine com limit e offset.

Erros. Os erros são JSON com um code legível por máquina, uma message legível por pessoas e details opcionais (por exemplo, a lista missing_fields em 422 FIELD_REQUIREMENTS_UNMET, ou o field em 422 PASS_OVER_TOLERANCE_REASON_REQUIRED).

Aprovar fora da tolerância. Registar um PASS ou um PASS_WITH_ADJUSTMENT cuja leitura final fique fora de nominal_value +/- tolerance exige um motivo breve por escrito em out_of_tolerance_impact. A leitura final é as_left_reading, ou as_found_reading quando não foi enviada nenhuma leitura após o ajuste, por isso um instrumento encontrado fora da tolerância e ajustado de volta para dentro da banda não precisa de mais nada. Sem o motivo, a escrita é rejeitada com 422 PASS_OVER_TOLERANCE_REASON_REQUIRED e details.field = out_of_tolerance_impact. Tudo o que o servidor não consegue comparar é aceite: sem valor nominal, sem tolerância, sem leitura numérica, ou leituras com unidades que não coincidem.

Produção
https://axiospec.com

Autenticação

Todos os pedidos precisam de uma chave de API. Envie-a de uma destas duas formas.

Token Bearer no cabeçalho Authorization

Uma chave de API por espaço de trabalho (com o prefixo ctk_), criada em Definições e depois Chaves de API. Envie-a como Authorization: Bearer <key>.

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Chave de API no cabeçalho X-API-Key

A mesma chave de API, enviada no cabeçalho X-API-Key em vez de Authorization: Bearer.

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "X-API-Key: $AXIOSPEC_API_KEY"

Instrumentos

Listar instrumentos (paginado) #

GET /api/public/v1/instruments

Parâmetros de consulta

  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0
  • statusstring | null

    Filtra pelo estado do ativo (sem distinguir maiúsculas de minúsculas), por exemplo in_service, out_of_service, OUT_FOR_CALIBRATION ou REFERENCE_ONLY. Um instrumento REFERENCE_ONLY mantém-se no inventário mas nunca é calibrado: indica next_due_at null, fica fora da lista de vencimentos e nunca corresponde a um filtro compliance_status.

    • No máximo 64 carateres
  • site_idstring | null

    Filtra por um único local (UUID).

  • location_idstring | null

    Filtra por uma única localização (UUID).

  • updated_sincestring | null

    Sincronização incremental: apenas os instrumentos modificados neste carimbo temporal ISO-8601 ou depois dele.

  • sortstring | null

    Ordenação: um de created_at, -created_at, updated_at, -updated_at.

  • asset_tagstring | null

    Pesquisa exata pela etiqueta do ativo (para fazer corresponder o seu próprio identificador ao nosso registo).

    • No máximo 255 carateres
  • serial_numberstring | null

    Pesquisa exata pelo número de série.

    • No máximo 255 carateres
  • compliance_statusstring | null

    Filtra pelo token de conformidade: NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT ou OUT_FOR_CALIBRATION. Um token desconhecido devolve 422. Os instrumentos REFERENCE_ONLY nunca correspondem (não têm estado de conformidade). O servidor calcula este filtro para cada instrumento, por isso, quando os outros filtros ainda deixam um conjunto muito grande, o pedido devolve 422. Restrinja primeiro com status, location_id, site_id ou updated_since.

    • No máximo 32 carateres
  • next_due_beforestring | null

    Apenas os instrumentos cuja próxima calibração vence antes desta data ISO. Tal como compliance_status, este filtro é calculado para cada instrumento, por isso um conjunto muito grande devolve 422. Restrinja primeiro com status, location_id, site_id ou updated_since.

  • includestring | null

    Marcadores de eliminação opcionais para a sincronização delta. include=retired devolve também os instrumentos retirados (fora de serviço), assinalados com deleted=true e um carimbo temporal retired_at. Assim, um espelho fica a saber que um instrumento foi retirado, em vez de o ver desaparecer sem aviso da lista de ativos. Quando omitido, só são devolvidos os instrumentos ativos.

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_InstrumentSummary_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "asset_tag": "string",
          "name": "string",
          "manufacturer": "string",
          "model": "string",
          "serial_number": "string",
          "status": "string",
          "is_quarantined": false,
          "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "compliance_status": "string",
          "last_calibration_at": "string",
          "next_due_at": "string",
          "retired_at": "string",
          "deleted": false,
          "due_extension": {
            "until": "string",
            "reason": "string",
            "extended_at": "string",
            "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Criar um instrumento #

POST /api/public/v1/instruments

Parâmetros de cabeçalho

  • Idempotency-Keystring | null

    Opcional. Um valor único escolhido por si para este pedido, como um UUID, com até 128 carateres. Um pedido repetido com a mesma chave devolve o instrumento criado pelo primeiro pedido em vez de criar um duplicado. Enquanto o primeiro pedido ainda está a ser processado, uma repetição devolve 503; volte a tentar dentro de instantes.

Corpo do pedido Obrigatório

application/json InstrumentCreate

  • asset_tagstringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • manufacturerstring | null
    • No máximo 255 carateres
  • modelstring | null
    • No máximo 255 carateres
  • serial_numberstring | null
    • No máximo 255 carateres
  • categorystring | null
    • No máximo 255 carateres
  • departmentstring | null
    • No máximo 255 carateres
  • locationstring | null
    • No máximo 255 carateres
  • tolerance_specstring | null
    • No máximo 255 carateres
  • notesstring | null
    • No máximo 10000 carateres
  • unit_of_measurestring | null
    • No máximo 64 carateres
  • is_reference_standardboolean
    • Predefinição: false
  • calibration_interval_valueintegerObrigatório
    • Mínimo: 1
    • Máximo: 100000
  • calibration_interval_unitstring

    Um de days, months, years.

    • Predefinição: months
    • Valores permitidos: days, months, years
  • last_calibration_datestring (date-time) | null

    Referência inicial opcional: quando o instrumento foi calibrado pela última vez. Quando indicada, é criado um registo de referência aprovado e a conformidade é calculada a partir dele. Quando omitida, o instrumento indica NOT_CALIBRATED até ser registada a sua primeira calibração.

  • customFieldsmap<string, string>

    Campos personalizados opcionais definidos pelo espaço de trabalho, como um mapa simples de etiqueta -> valor. As etiquetas são guardadas exatamente como enviadas. Um valor em branco é descartado em vez de guardado.

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "asset_tag": "string",
  "name": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "category": "string",
  "department": "string",
  "location": "string",
  "tolerance_spec": "string",
  "notes": "string",
  "unit_of_measure": "string",
  "is_reference_standard": false,
  "calibration_interval_value": 1,
  "calibration_interval_unit": "days",
  "last_calibration_date": "2026-01-15T14:30:00Z",
  "customFields": {
    "key": "string"
  }
}

Respostas

  • 201 Resposta bem-sucedida

    application/json InstrumentDetail

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/instruments" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asset_tag":"string","name":"string","calibration_interval_value":1}'

Obter um instrumento #

GET /api/public/v1/instruments/{instrument_id}

Parâmetros de caminho

  • instrument_idstringObrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json InstrumentDetail

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Atualizar um instrumento (parcial) #

PATCH /api/public/v1/instruments/{instrument_id}

Parâmetros de caminho

  • instrument_idstringObrigatório

Corpo do pedido Obrigatório

application/json InstrumentUpdate

  • namestring | null
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • manufacturerstring | null
    • No máximo 255 carateres
  • modelstring | null
    • No máximo 255 carateres
  • serial_numberstring | null
    • No máximo 255 carateres
  • categorystring | null
    • No máximo 255 carateres
  • departmentstring | null
    • No máximo 255 carateres
  • locationstring | null
    • No máximo 255 carateres
  • tolerance_specstring | null
    • No máximo 255 carateres
  • notesstring | null
    • No máximo 10000 carateres
  • unit_of_measurestring | null
    • No máximo 64 carateres
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Mínimo: 1
    • Máximo: 100000
  • calibration_interval_unitstring | null
    • Valores permitidos: days, months, years
  • calibration_interval_change_reasonstring | null

    Porque é que o intervalo de calibração está a mudar. Aplica-se quando o instrumento já tem um intervalo e o valor ou a unidade que envia é diferente. A alteração é sempre escrita no registo de atividade do espaço de trabalho com este motivo. Se o motivo é obrigatório depende da definição CHANGE_REASON_RULES_ENFORCED da instalação: quando está ativa, o pedido sem motivo falha com 422 e o código interval_change_reason_required; quando está desativada, a alteração é aceite e registada sem motivo. Envie já um motivo e a sua integração não deixará de funcionar quando a definição for ativada. Não é necessário quando o intervalo não muda.

    • No máximo 1000 carateres
  • customFieldsmap<string, string> | null

    Campos personalizados definidos pelo espaço de trabalho a definir, como um mapa simples de etiqueta -> valor. São FUNDIDOS com os campos personalizados que o instrumento já tem: as etiquetas que não enviar ficam como estão, e enviar um valor em branco remove essa etiqueta. Omita a chave por completo, ou envie null, para não alterar nada.

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "name": "string",
  "manufacturer": "string",
  "model": "string",
  "serial_number": "string",
  "category": "string",
  "department": "string",
  "location": "string",
  "tolerance_spec": "string",
  "notes": "string",
  "unit_of_measure": "string",
  "is_reference_standard": true,
  "calibration_interval_value": 1,
  "calibration_interval_unit": "days",
  "calibration_interval_change_reason": "string",
  "customFields": {
    "key": "string"
  }
}

Respostas

  • 200 Resposta bem-sucedida

    application/json InstrumentDetail

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X PATCH "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"string"}'

Retirar um instrumento (tirá-lo de serviço) #

POST /api/public/v1/instruments/{instrument_id}/retire

Regista que um instrumento saiu do serviço ativo.

O registo mantém-se. O status passa a retired e retired_at é preenchido. O instrumento mantém o seu histórico de calibração e continua legível através desta API. O livro de registos não é alterado. Nada é apagado, e esta API não tem um DELETE definitivo para instrumentos.

Retirar impede novos trabalhos no instrumento. A partir daí, os endpoints de escrita (atualizar um instrumento, registar uma calibração, carregar um documento) devolvem 409 ASSET_RETIRED. As leituras continuam a funcionar.

A chave precisa do âmbito write, e o seu proprietário tem de ser administrador ou gestor do espaço de trabalho. Qualquer outra chave recebe 403. Um instrument_id mal formado devolve 422. Um instrumento que não pertence ao seu espaço de trabalho devolve 404.

Retirar é idempotente. Retirar um instrumento que já está retirado devolve 200 com o mesmo detalhe, e o retired_at original mantém-se.

Parâmetros de caminho

  • instrument_idstringObrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json InstrumentDetail

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "asset_tag": "string",
      "name": "string",
      "manufacturer": "string",
      "model": "string",
      "serial_number": "string",
      "status": "string",
      "is_quarantined": false,
      "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "location_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "compliance_status": "string",
      "last_calibration_at": "string",
      "next_due_at": "string",
      "retired_at": "string",
      "deleted": false,
      "due_extension": {
        "until": "string",
        "reason": "string",
        "extended_at": "string",
        "extended_by_user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      },
      "category": "string",
      "department": "string",
      "location": "string",
      "tolerance_spec": "string",
      "notes": "string",
      "unit_of_measure": "string",
      "is_reference_standard": false,
      "requires_electronic_signature": false,
      "requires_electronic_signature_override": true,
      "calibration_interval_value": 0,
      "calibration_interval_unit": "string",
      "grace_days": 0,
      "customFields": {
        "key": "string"
      },
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/retire" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Calibrações

Listar os registos de calibração de um instrumento (paginado) #

GET /api/public/v1/instruments/{instrument_id}/calibrations

Parâmetros de caminho

  • instrument_idstringObrigatório

Parâmetros de consulta

  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0
  • updated_sincestring | null

    Sincronização incremental: apenas os registos acrescentados neste carimbo temporal ISO-8601 ou depois dele.

  • performed_afterstring | null

    Apenas os registos realizados neste carimbo temporal ISO-8601 ou depois dele.

  • performed_beforestring | null

    Apenas os registos realizados neste carimbo temporal ISO-8601 ou antes dele.

  • resultstring | null

    Restringe a um ou mais resultados de calibração (separados por vírgulas, sem distinguir maiúsculas de minúsculas): PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED. Um token desconhecido devolve 422.

  • sortstring | null

    Ordenação: um de performed_at, -performed_at, updated_at, -updated_at.

  • includestring | null

    Marcadores de eliminação opcionais para a sincronização delta. include=voided devolve também os registos de anulação (record_type='void', com voids_id a apontar para a calibração que invalida), para que um espelho fique a saber que uma calibração foi invalidada. Quando omitido, os registos de anulação ficam de fora.

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_CalibrationRecord_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "result": "string",
          "performed_at": "string",
          "performed_by": "string",
          "nominal_value": "string",
          "tolerance": "string",
          "as_found_reading": "string",
          "as_left_reading": "string",
          "reference_standard": "string",
          "certificate_number": "string",
          "traceability_reference": "string",
          "service_provider": "string",
          "measurement_uncertainty": "string",
          "coverage_factor": "string",
          "confidence_level": "string",
          "decision_rule": "string",
          "conformity_statement": "string",
          "notes": "string",
          "calibration_type": "in_house",
          "approval_status": "string",
          "status": "string",
          "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "record_type": "calibration",
          "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "created_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Registar uma calibração de um instrumento #

POST /api/public/v1/instruments/{instrument_id}/calibrations

Parâmetros de caminho

  • instrument_idstringObrigatório

Parâmetros de cabeçalho

  • Idempotency-Keystring | nullObrigatório

    Obrigatório. Um valor único escolhido por si para esta calibração, como um UUID, com até 128 carateres. O livro de registos só aceita acréscimos, por isso um pedido repetido com a mesma chave devolve o registo original em vez de escrever um duplicado. Use uma chave nova para cada nova calibração. Um pedido sem o cabeçalho devolve 400 IDEMPOTENCY_KEY_REQUIRED. Enquanto o primeiro pedido ainda está a ser processado, uma repetição devolve 503; volte a tentar dentro de instantes.

Corpo do pedido Obrigatório

application/json CalibrationLogRequest

  • resultstringObrigatório

    Um de PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED.

    • Valores permitidos: PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Quando a calibração foi realizada. Se for omitido, assume o momento atual (UTC).

  • nominal_valuestring | null
    • No máximo 255 carateres
  • tolerancestring | null
    • No máximo 255 carateres
  • as_found_readingstring | null
    • No máximo 255 carateres
  • as_left_readingstring | null
    • No máximo 255 carateres
  • temperaturestring | null
    • No máximo 64 carateres
  • humiditystring | null
    • No máximo 64 carateres
  • reference_standardstring | null
    • No máximo 255 carateres
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • No máximo 255 carateres
  • traceability_referencestring | null
    • No máximo 255 carateres
  • service_providerstring | null
    • No máximo 255 carateres
  • calibration_typestring | null

    'in_house' quando a sua equipa mediu o instrumento, 'external_certificate' quando um laboratório ou fornecedor o calibrou e está a registar o certificado dele. No percurso externo, o mínimo é result, performed_at e certificate_number; os campos de leitura não são obrigatórios.

    • Valores permitidos: in_house, external_certificate
  • measurement_uncertaintystring | null
    • No máximo 120 carateres
  • coverage_factorstring | null
    • No máximo 40 carateres
  • confidence_levelstring | null
    • No máximo 40 carateres
  • decision_rulestring | null
    • No máximo 120 carateres
  • conformity_statementstring | null
    • No máximo 4000 carateres
  • reference_standard_certificate_numberstring | null
    • No máximo 120 carateres
  • restriction_notesstring | null
    • No máximo 4000 carateres
  • out_of_tolerance_impactstring | null
    • No máximo 4000 carateres
  • notesstring | null
    • No máximo 4000 carateres

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "result": "PASS",
  "performed_at": "2026-01-15T14:30:00Z",
  "nominal_value": "string",
  "tolerance": "string",
  "as_found_reading": "string",
  "as_left_reading": "string",
  "temperature": "string",
  "humidity": "string",
  "reference_standard": "string",
  "reference_standard_asset_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "certificate_number": "string",
  "traceability_reference": "string",
  "service_provider": "string",
  "calibration_type": "in_house",
  "measurement_uncertainty": "string",
  "coverage_factor": "string",
  "confidence_level": "string",
  "decision_rule": "string",
  "conformity_statement": "string",
  "reference_standard_certificate_number": "string",
  "restriction_notes": "string",
  "out_of_tolerance_impact": "string",
  "notes": "string"
}

Respostas

  • 201 Resposta bem-sucedida

    application/json CalibrationRecord

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "result": "string",
      "performed_at": "string",
      "performed_by": "string",
      "nominal_value": "string",
      "tolerance": "string",
      "as_found_reading": "string",
      "as_left_reading": "string",
      "reference_standard": "string",
      "certificate_number": "string",
      "traceability_reference": "string",
      "service_provider": "string",
      "measurement_uncertainty": "string",
      "coverage_factor": "string",
      "confidence_level": "string",
      "decision_rule": "string",
      "conformity_statement": "string",
      "notes": "string",
      "calibration_type": "in_house",
      "approval_status": "string",
      "status": "string",
      "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "record_type": "calibration",
      "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "created_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"result":"PASS"}'

Listar todos os registos de calibração do espaço de trabalho #

GET /api/public/v1/calibrations

Todos os registos de calibração do seu espaço de trabalho, de todos os instrumentos, num único feed paginado. Use-o para uma tarefa de data warehouse ou de BI que obtém "todas as calibrações desde X" sem fazer uma chamada por instrumento.

Para a sincronização incremental, passe updated_since com sort=updated_at e percorra as páginas com limit e offset. Acrescente include=voided para receber também os registos de anulação, para que um espelho possa descartar as calibrações que foram invalidadas.

Parâmetros de consulta

  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0
  • updated_sincestring | null

    Sincronização incremental: apenas os registos acrescentados neste carimbo temporal ISO-8601 ou depois dele.

  • performed_afterstring | null

    Apenas os registos realizados neste carimbo temporal ISO-8601 ou depois dele.

  • performed_beforestring | null

    Apenas os registos realizados neste carimbo temporal ISO-8601 ou antes dele.

  • instrument_idstring | null

    Restringe o feed a um único instrumento (UUID).

  • resultstring | null

    Restringe a um ou mais resultados de calibração (separados por vírgulas, sem distinguir maiúsculas de minúsculas): PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED. Um token desconhecido devolve 422.

  • sortstring | null

    Ordenação: um de performed_at, -performed_at, updated_at, -updated_at.

  • includestring | null

    Marcadores de eliminação opcionais para a sincronização delta. include=voided devolve também os registos de anulação (record_type='void', com voids_id a apontar para a calibração que invalida) de todo o espaço de trabalho. É assim que um espelho completo fica a saber que houve calibrações invalidadas. Quando omitido, os registos de anulação ficam de fora.

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_CalibrationRecord_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "result": "string",
          "performed_at": "string",
          "performed_by": "string",
          "nominal_value": "string",
          "tolerance": "string",
          "as_found_reading": "string",
          "as_left_reading": "string",
          "reference_standard": "string",
          "certificate_number": "string",
          "traceability_reference": "string",
          "service_provider": "string",
          "measurement_uncertainty": "string",
          "coverage_factor": "string",
          "confidence_level": "string",
          "decision_rule": "string",
          "conformity_statement": "string",
          "notes": "string",
          "calibration_type": "in_house",
          "approval_status": "string",
          "status": "string",
          "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "record_type": "calibration",
          "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "created_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/calibrations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Obter um registo de calibração #

GET /api/public/v1/calibrations/{calibration_id}

Parâmetros de caminho

  • calibration_idstringObrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json CalibrationRecord

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "result": "string",
      "performed_at": "string",
      "performed_by": "string",
      "nominal_value": "string",
      "tolerance": "string",
      "as_found_reading": "string",
      "as_left_reading": "string",
      "reference_standard": "string",
      "certificate_number": "string",
      "traceability_reference": "string",
      "service_provider": "string",
      "measurement_uncertainty": "string",
      "coverage_factor": "string",
      "confidence_level": "string",
      "decision_rule": "string",
      "conformity_statement": "string",
      "notes": "string",
      "calibration_type": "in_house",
      "approval_status": "string",
      "status": "string",
      "superseded_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "record_type": "calibration",
      "voids_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "voided_by_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "created_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/calibrations/CALIBRATION_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Transferir o certificado de calibração em PDF de um registo de calibração #

GET /api/public/v1/calibrations/{calibration_id}/certificate

Transfere em PDF o certificado de um registo de calibração (application/pdf, enviado como anexo).

É o mesmo certificado que a aplicação emite para o registo. É guardado na primeira vez que é gerado, por isso as transferências seguintes devolvem o mesmo documento, a menos que o certificado seja reemitido na aplicação. Uma alteração do idioma dos documentos do espaço de trabalho também o reemite: a transferência seguinte devolve-o no novo idioma. Os certificados continuam disponíveis depois de o instrumento ser retirado.

Erros: 422 quando calibration_id não é um UUID. 404 quando o registo não pertence ao seu espaço de trabalho ou não é uma calibração. 404 CERTIFICATE_UNAVAILABLE quando o registo existe mas não pode ser certificado porque foi anulado, foi substituído por uma correção ou não está aprovado.

Parâmetros de caminho

  • calibration_idstringObrigatório

Respostas

  • 200 Certificado em PDF

    application/pdf

  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/calibrations/CALIBRATION_ID/certificate" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -o certificate.pdf

Documentos

Obter um URL pré-assinado para carregar um documento #

POST /api/public/v1/instruments/{instrument_id}/documents/upload-url

Parâmetros de caminho

  • instrument_idstringObrigatório

Corpo do pedido Obrigatório

application/json DocumentUploadUrlRequest

  • file_namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • content_typestring

    Tipo MIME do ficheiro. Tem de ser um tipo permitido (PDF ou uma imagem); o conteúdo ativo, como text/html ou image/svg+xml, é rejeitado.

    • Predefinição: application/octet-stream
    • No máximo 255 carateres
  • size_bytesinteger | null

    Tamanho do ficheiro declarado, opcional. É rejeitado (422) se exceder o máximo; o POST pré-assinado também limita o carregamento real no S3.

    • Mínimo: 1
    • Máximo: 26214400

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "file_name": "string",
  "content_type": "application/octet-stream",
  "size_bytes": 1
}

Respostas

  • 200 Resposta bem-sucedida

    application/json DocumentUploadUrlResponse

    Exemplo de resposta
    {
      "method": "POST",
      "upload_url": "string",
      "fields": {
        "key": "string"
      },
      "key": "string",
      "expires_in": 0,
      "max_size_bytes": 0
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents/upload-url" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_name":"string"}'

Listar os documentos de um instrumento #

GET /api/public/v1/instruments/{instrument_id}/documents

Parâmetros de caminho

  • instrument_idstringObrigatório

Parâmetros de consulta

  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0
  • calibration_idstring | null

    Filtra pelos documentos de uma calibração (UUID).

  • document_typestring | null

    Filtra por um tipo de documento (um de certificate, report, procedure, photo, other).

  • uploaded_sincestring | null

    Sincronização incremental: apenas os documentos carregados neste carimbo temporal ISO-8601 ou depois dele. Atenção: é um cursor de carregamentos NOVOS baseado em upload_date e não reflete alterações posteriores de arquivo ou eliminação lógica.

  • sortstring | null

    Ordenação: upload_date ou -upload_date (predefinição: -upload_date).

  • include_archivedboolean

    Inclui os documentos arquivados (predefinição: apenas os ativos).

    • Predefinição: false

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_DocumentRecord_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "file_name": "string",
          "document_type": "string",
          "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "uploaded_at": "string",
          "uploaded_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "is_archived": false
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Registar um documento carregado #

POST /api/public/v1/instruments/{instrument_id}/documents

Parâmetros de caminho

  • instrument_idstringObrigatório

Corpo do pedido Obrigatório

application/json DocumentRegisterRequest

  • keystringObrigatório
    • Pelo menos 1 carateres
    • No máximo 512 carateres
  • file_namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • document_typestring

    Um de certificate, report, procedure, photo, other.

    • Predefinição: other
    • Valores permitidos: certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Opcional: anexa o documento a um registo de calibração específico DESTE instrumento. Tem de ser um id de calibração que pertença a este instrumento.

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "key": "string",
  "file_name": "string",
  "document_type": "certificate",
  "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Respostas

  • 201 Resposta bem-sucedida

    application/json DocumentRecord

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "instrument_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "file_name": "string",
      "document_type": "string",
      "calibration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "uploaded_at": "string",
      "uploaded_by": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "is_archived": false
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"key":"string","file_name":"string"}'

Obter um URL de transferência de curta duração para um documento #

GET /api/public/v1/instruments/{instrument_id}/documents/{document_id}/download

Parâmetros de caminho

  • instrument_idstringObrigatório
  • document_idstring (uuid)Obrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json DocumentDownloadResponse

    Exemplo de resposta
    {
      "download_url": "string",
      "expires_in": 0,
      "expires_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/instruments/INSTRUMENT_ID/documents/DOCUMENT_ID/download" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Lista de vencimentos

Listar instrumentos a vencer e vencidos (lista de trabalho) #

GET /api/public/v1/due

Parâmetros de consulta

  • horizon_daysinteger

    Janela futura em dias (1-365). É incluído tudo o que vence dentro desse número de dias; o que já está vencido é incluído SEMPRE, independentemente deste valor.

    • Predefinição: 30
    • Mínimo: 1
    • Máximo: 365
  • site_idstring | null

    Filtra por um único local (UUID). Aplica-se dentro dos locais a que tem acesso.

  • statusstring | null

    Filtra pelo token de conformidade (sem distinguir maiúsculas de minúsculas): NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT ou OUT_FOR_CALIBRATION.

    • No máximo 32 carateres
  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_DueInstrument_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "asset_tag": "string",
          "name": "string",
          "due_at": "string",
          "due_date": "string",
          "compliance_status": "string",
          "interval_label": "string",
          "site_name": "string",
          "location_name": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/due" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Webhooks

Listar o catálogo de eventos de webhook #

GET /api/public/v1/webhooks/events

O vocabulário de eventos v1, legível por máquina, que um endpoint pode subscrever.

Respostas

  • 200 Resposta bem-sucedida

    application/json EventCatalogResponse

    Exemplo de resposta
    {
      "events": [
        {
          "type": "string",
          "description": "string"
        }
      ]
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/webhooks/events" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Listar endpoints de webhook #

GET /api/public/v1/webhooks

Parâmetros de consulta

  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_WebhookRead_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "url": "string",
          "events": [
            "string"
          ],
          "description": "string",
          "is_active": true,
          "secret_prefix": "string",
          "disabled_at": "string",
          "created_at": "string",
          "updated_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/webhooks" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Subscrever um endpoint de webhook #

POST /api/public/v1/webhooks

Corpo do pedido Obrigatório

application/json WebhookCreate

  • urlstringObrigatório

    URL de entrega HTTPS. Validado contra SSRF (tem de resolver para um endereço público; os destinos privados, de loopback, link-local ou de metadados são rejeitados).

    • No máximo 2048 carateres
  • eventsarray[string] | null

    Subconjunto do catálogo de eventos v1 a receber. Omita-o ou envie uma lista vazia para subscrever TODOS os eventos. Os tipos desconhecidos são rejeitados (422).

  • descriptionstring | null

    Etiqueta opcional, legível por pessoas, para este endpoint.

    • No máximo 500 carateres

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string"
}

Respostas

  • 201 Resposta bem-sucedida

    application/json WebhookCreatedResponse

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string",
      "secret": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/webhooks" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"string"}'

Obter um endpoint de webhook #

GET /api/public/v1/webhooks/{endpoint_id}

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json WebhookRead

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Atualizar um endpoint de webhook #

PATCH /api/public/v1/webhooks/{endpoint_id}

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório

Corpo do pedido Obrigatório

application/json WebhookUpdate

  • urlstring | null

    Novo URL de entrega HTTPS (validado de novo contra SSRF quando muda).

    • No máximo 2048 carateres
  • eventsarray[string] | null

    Subconjunto de eventos que substitui o atual (vazio/null = todos os eventos).

  • descriptionstring | null

    Etiqueta que substitui a atual.

    • No máximo 500 carateres
  • is_activeboolean | null

    Ativa (true) ou desativa (false) a entrega a este endpoint.

Os campos que não constam desta lista são rejeitados.

Exemplo de corpo do pedido
{
  "url": "string",
  "events": [
    "string"
  ],
  "description": "string",
  "is_active": true
}

Respostas

  • 200 Resposta bem-sucedida

    application/json WebhookRead

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "url": "string",
      "events": [
        "string"
      ],
      "description": "string",
      "is_active": true,
      "secret_prefix": "string",
      "disabled_at": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X PATCH "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"string"}'

Cancelar a subscrição de um endpoint de webhook (desativação lógica) #

DELETE /api/public/v1/webhooks/{endpoint_id}

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório

Respostas

  • 204 Resposta bem-sucedida

    Sem conteúdo

  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X DELETE "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Rodar o segredo de assinatura de um endpoint de webhook #

POST /api/public/v1/webhooks/{endpoint_id}/rotate-secret

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório

Respostas

  • 200 Resposta bem-sucedida

    application/json SecretRotatedResponse

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "secret": "string",
      "secret_prefix": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/rotate-secret" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Listar o registo de entregas de um endpoint #

GET /api/public/v1/webhooks/{endpoint_id}/deliveries

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório

Parâmetros de consulta

  • statusstring | null

    Filtra pelo estado da entrega: pending, failed, succeeded, exhausted.

    • No máximo 32 carateres
  • limitinteger
    • Predefinição: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Predefinição: 0
    • Mínimo: 0

Respostas

  • 200 Resposta bem-sucedida

    application/json Page_WebhookDeliveryRead_

    Exemplo de resposta
    {
      "data": [
        {
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "event_type": "string",
          "status": "string",
          "attempt_count": 0,
          "next_attempt_at": "string",
          "last_attempt_at": "string",
          "last_status_code": 0,
          "last_error": "string",
          "response_snippet": "string",
          "created_at": "string",
          "updated_at": "string"
        }
      ],
      "pagination": {
        "limit": 0,
        "offset": 0,
        "total": 0,
        "has_more": true
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/deliveries" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Reenviar manualmente uma entrega #

POST /api/public/v1/webhooks/{endpoint_id}/deliveries/{delivery_id}/retry

Parâmetros de caminho

  • endpoint_idstring (uuid)Obrigatório
  • delivery_idstring (uuid)Obrigatório

Respostas

  • 202 Resposta bem-sucedida

    application/json WebhookDeliveryRead

    Exemplo de resposta
    {
      "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "event_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "event_type": "string",
      "status": "string",
      "attempt_count": 0,
      "next_attempt_at": "string",
      "last_attempt_at": "string",
      "last_status_code": 0,
      "last_error": "string",
      "response_snippet": "string",
      "created_at": "string",
      "updated_at": "string"
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl -X POST "https://axiospec.com/api/public/v1/webhooks/ENDPOINT_ID/deliveries/DELIVERY_ID/retry" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Locais

Listar os locais do espaço de trabalho #

GET /api/public/v1/sites

Respostas

  • 200 Resposta bem-sucedida

    application/json array[SiteSummary]

    Exemplo de resposta
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "is_default": false,
        "timezone": "string"
      }
    ]
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/sites" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Localizações

Listar as localizações do espaço de trabalho #

GET /api/public/v1/locations

Parâmetros de consulta

  • site_idstring | null

    Filtra por um único local (UUID). Aplica-se dentro dos locais a que tem acesso.

Respostas

  • 200 Resposta bem-sucedida

    application/json array[LocationSummary]

    Exemplo de resposta
    [
      {
        "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "name": "string",
        "site_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
      }
    ]
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/locations" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Normas de conformidade

Listar as normas de conformidade que este espaço de trabalho selecionou #

GET /api/public/v1/standards

Respostas

  • 200 Resposta bem-sucedida

    application/json array[StandardSummary]

    Exemplo de resposta
    [
      {
        "key": "string",
        "label": "string"
      }
    ]
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/standards" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Os requisitos de campo definidos pelas normas para uma calibração ou um instrumento #

GET /api/public/v1/standards/field-requirements

Parâmetros de consulta

  • standardsstring | null

    Chaves de norma opcionais, separadas por vírgulas, para uma PRÉ-VISUALIZAÇÃO (p. ex., 'iso_17025,as9100'). Omita-as para refletir as normas selecionadas do espaço de trabalho (as que o POST público de calibração tem realmente de cumprir). Uma chave desconhecida devolve 422.

Respostas

  • 200 Resposta bem-sucedida

    application/json FieldRequirementsResponse

    Exemplo de resposta
    {
      "version": 0,
      "source": "workspace",
      "standards": [
        {
          "key": "string",
          "label": "string"
        }
      ],
      "available_standards": [
        {
          "key": "string",
          "label": "string"
        }
      ],
      "calibration": {
        "enforced": true,
        "fields": [
          {
            "field": "string",
            "label": "string",
            "requirement": "string",
            "required_by": [
              "string"
            ],
            "request_field": "string",
            "note": "string"
          }
        ]
      },
      "asset": {
        "enforced": true,
        "fields": [
          {
            "field": "string",
            "label": "string",
            "requirement": "string",
            "required_by": [
              "string"
            ],
            "request_field": "string",
            "note": "string"
          }
        ]
      }
    }
  • 422 Erro de validação

    application/json HTTPValidationError

Exemplo de pedido

curl "https://axiospec.com/api/public/v1/standards/field-requirements" \
  -H "Authorization: Bearer $AXIOSPEC_API_KEY"

Esquemas

Os objetos que os endpoints aceitam e devolvem. Os nomes de campo, os tipos e os valores de enumeração são apresentados exatamente como a API os envia e espera.

CalibrationLogRequest #

Corpo do pedido para registar uma calibração. Os campos desconhecidos são rejeitados (422).

O registo é acrescentado ao livro de registos com deteção de adulteração, com as mesmas regras de validação e aprovação de uma calibração registada na aplicação. Um resultado FAIL ou DAMAGED coloca o instrumento em quarentena, tal como na aplicação. Os campos exigidos pelas normas selecionadas no seu espaço de trabalho são obrigatórios: um corpo que omita um deles é rejeitado com 422 FIELD_REQUIREMENTS_UNMET. Consulte-os antes com GET /standards/field-requirements.

Um PASS ou PASS_WITH_ADJUSTMENT cuja leitura final fique fora de nominal_value +/- tolerance precisa também de um motivo breve por escrito em out_of_tolerance_impact; caso contrário, a escrita é rejeitada com 422 PASS_OVER_TOLERANCE_REASON_REQUIRED. A leitura final é as_left_reading, ou as_found_reading quando não foi enviada nenhuma leitura após o ajuste, por isso um instrumento encontrado fora da tolerância e ajustado de volta para dentro da banda não precisa de mais nada. Tudo o que o servidor não consegue comparar é aceite.

Campos

  • resultstringObrigatório

    Um de PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED.

    • Valores permitidos: PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL, DAMAGED
  • performed_atstring (date-time) | null

    Quando a calibração foi realizada. Se for omitido, assume o momento atual (UTC).

  • nominal_valuestring | null
    • No máximo 255 carateres
  • tolerancestring | null
    • No máximo 255 carateres
  • as_found_readingstring | null
    • No máximo 255 carateres
  • as_left_readingstring | null
    • No máximo 255 carateres
  • temperaturestring | null
    • No máximo 64 carateres
  • humiditystring | null
    • No máximo 64 carateres
  • reference_standardstring | null
    • No máximo 255 carateres
  • reference_standard_asset_idstring (uuid) | null
  • certificate_numberstring | null
    • No máximo 255 carateres
  • traceability_referencestring | null
    • No máximo 255 carateres
  • service_providerstring | null
    • No máximo 255 carateres
  • calibration_typestring | null

    'in_house' quando a sua equipa mediu o instrumento, 'external_certificate' quando um laboratório ou fornecedor o calibrou e está a registar o certificado dele. No percurso externo, o mínimo é result, performed_at e certificate_number; os campos de leitura não são obrigatórios.

    • Valores permitidos: in_house, external_certificate
  • measurement_uncertaintystring | null
    • No máximo 120 carateres
  • coverage_factorstring | null
    • No máximo 40 carateres
  • confidence_levelstring | null
    • No máximo 40 carateres
  • decision_rulestring | null
    • No máximo 120 carateres
  • conformity_statementstring | null
    • No máximo 4000 carateres
  • reference_standard_certificate_numberstring | null
    • No máximo 120 carateres
  • restriction_notesstring | null
    • No máximo 4000 carateres
  • out_of_tolerance_impactstring | null
    • No máximo 4000 carateres
  • notesstring | null
    • No máximo 4000 carateres

Os campos que não constam desta lista são rejeitados.

CalibrationRecord #

Um registo de calibração do livro de registos, só de leitura. Os registos do livro nunca são editados nem apagados: uma correção ou uma anulação é acrescentada como um novo registo.

Campos

  • idstring (uuid)Obrigatório
  • instrument_idstring (uuid)Obrigatório
  • resultstring | null
  • performed_atstring | null
  • performed_bystring | null
  • nominal_valuestring | null
  • tolerancestring | null
  • as_found_readingstring | null
  • as_left_readingstring | null
  • reference_standardstring | null
  • certificate_numberstring | null
  • traceability_referencestring | null
  • service_providerstring | null
  • measurement_uncertaintystring | null
  • coverage_factorstring | null
  • confidence_levelstring | null
  • decision_rulestring | null
  • conformity_statementstring | null
  • notesstring | null
  • calibration_typestring | null

    'in_house' ou 'external_certificate', tal como registado. Null quando o registo não tem tipo.

    • Valores permitidos: in_house, external_certificate
  • approval_statusstring | null
  • statusstring | null
  • superseded_by_idstring (uuid) | null
  • record_typestring

    'calibration' para um registo normal, ou 'void' para um marcador de anulação acrescentado (apresentado com ?include=voided).

    • Predefinição: calibration
    • Valores permitidos: calibration, void
  • voids_idstring (uuid) | null

    Num marcador de anulação (record_type='void'): o id do registo de calibração que esta anulação invalida. Null num registo normal.

  • voided_by_idstring (uuid) | null

    Numa calibração original ainda visível que foi entretanto anulada: o id do marcador de anulação que a invalidou. Null quando o registo não está anulado.

  • created_atstring | null

DocumentDownloadResponse #

Um URL de transferência de curta duração para um documento. O URL transfere sempre o ficheiro em vez de o apresentar no navegador, e expira ao fim de expires_in segundos (em expires_at). Peça um URL novo sempre que precisar do ficheiro, em vez de guardar um.

Campos

  • download_urlstringObrigatório
  • expires_inintegerObrigatório
  • expires_atstringObrigatório

DocumentRecord #

Um documento anexado a um instrumento, só de leitura. Os documentos são identificados pelo seu id. Para obter o ficheiro, peça um URL de curta duração a GET /instruments/{instrument_id}/documents/{document_id}/download.

Campos

  • idstring (uuid)Obrigatório
  • instrument_idstring (uuid)Obrigatório
  • file_namestring | null
  • document_typestring | null
  • calibration_idstring (uuid) | null

    O registo de calibração a que este documento está anexado, ou null.

  • uploaded_atstring | null
  • uploaded_bystring (uuid) | null
  • is_archivedboolean
    • Predefinição: false

DocumentRegisterRequest #

Corpo do pedido para registar como documento deste instrumento um ficheiro que carregou com o POST pré-assinado, opcionalmente anexado a um dos seus registos de calibração.

key tem de ser exatamente a chave que a chamada upload-url devolveu para este instrumento. Qualquer outra chave é rejeitada (422 INVALID_REQUEST), e uma chave sem ficheiro carregado devolve 409 OBJECT_NOT_UPLOADED.

Campos

  • keystringObrigatório
    • Pelo menos 1 carateres
    • No máximo 512 carateres
  • file_namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • document_typestring

    Um de certificate, report, procedure, photo, other.

    • Predefinição: other
    • Valores permitidos: certificate, report, procedure, photo, other
  • calibration_idstring (uuid) | null

    Opcional: anexa o documento a um registo de calibração específico DESTE instrumento. Tem de ser um id de calibração que pertença a este instrumento.

Os campos que não constam desta lista são rejeitados.

DocumentUploadUrlRequest #

Corpo do pedido para um URL de carregamento: um POST pré-assinado do S3, de curta duração e com tamanho limitado, para um documento.

O servidor constrói a key do objeto; não a pode escolher. Qualquer parte de diretório em file_name é descartada.

Campos

  • file_namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • content_typestring

    Tipo MIME do ficheiro. Tem de ser um tipo permitido (PDF ou uma imagem); o conteúdo ativo, como text/html ou image/svg+xml, é rejeitado.

    • Predefinição: application/octet-stream
    • No máximo 255 carateres
  • size_bytesinteger | null

    Tamanho do ficheiro declarado, opcional. É rejeitado (422) se exceder o máximo; o POST pré-assinado também limita o carregamento real no S3.

    • Mínimo: 1
    • Máximo: 26214400

Os campos que não constam desta lista são rejeitados.

DocumentUploadUrlResponse #

Um POST pré-assinado do S3 para carregar o ficheiro. Envie um POST multipart/form-data para upload_url com todas as entradas de fields e, por fim, o próprio ficheiro. Depois do carregamento, passe key a POST /instruments/{instrument_id}/documents para registar o documento.

Campos

  • methodstring
    • Predefinição: POST
    • Sempre POST
  • upload_urlstringObrigatório
  • fieldsmap<string, string>Obrigatório
  • keystringObrigatório
  • expires_inintegerObrigatório
  • max_size_bytesintegerObrigatório

DueExtension #

Campos

  • untilstringObrigatório
  • reasonstring | null
  • extended_atstring | null
  • extended_by_user_idstring (uuid) | null

DueInstrument #

Uma linha da lista de trabalho: um instrumento que vence dentro do horizonte pedido, ou que já está vencido.

compliance_status é um de COMPLIANT, WARNING, NON_COMPLIANT ou NOT_CALIBRATED, os mesmos valores que os endpoints de instrumentos devolvem. Também pode ser OUT_FOR_CALIBRATION enquanto o instrumento está fora, num fornecedor, um valor que os endpoints de instrumentos não devolvem em compliance_status.

due_date é YYYY-MM-DD no fuso horário do local do instrumento. Agrupe as linhas por este valor em vez de deduzir um dia a partir de due_at no seu próprio fuso horário. due_at é o instante ISO-8601 completo em UTC. Um instrumento que tem um plano de calibração ativo mas nunca foi calibrado aparece como a vencer já, com NOT_CALIBRATED.

Campos

  • idstring (uuid)Obrigatório
  • asset_tagstring | null
  • namestring | null
  • due_atstring | null
  • due_datestringObrigatório
  • compliance_statusstringObrigatório
  • interval_labelstring | null
  • site_namestring | null
  • location_namestring | null

EventCatalogEntry #

Um descritor de tipo de evento, legível por máquina, para o integrador descobrir os eventos.

Campos

  • typestringObrigatório
  • descriptionstringObrigatório

EventCatalogResponse #

O catálogo de eventos v1: o conjunto completo de valores type que um webhook pode transportar.

Campos

FieldRequirement #

Como um campo definido pelas normas é tratado para as normas resolvidas.

requirement é o nível mais exigente entre as normas resolvidas (required > recommended > optional > hidden). required_by lista as etiquetas das normas resolvidas que o tornam OBRIGATÓRIO (vazio quando só o mínimo de base o exige); corresponde a required_by nos missing_fields de um erro 422 FIELD_REQUIREMENTS_UNMET. request_field (apenas no âmbito de calibração) é a chave do corpo do POST que satisfaz o campo, ou null quando é definido pelo servidor ou não pode ser definido através da API pública; note explica esses casos.

Campos

  • fieldstringObrigatório
  • labelstringObrigatório
  • requirementstringObrigatório
  • required_byarray[string]
  • request_fieldstring | null
  • notestring | null

FieldRequirementsResponse #

Os requisitos de campo definidos pelas normas, legíveis por máquina. Use-os para verificar uma escrita de calibração (ou de instrumento) antes de a enviar, em vez de esperar que o servidor a rejeite.

source é workspace quando os requisitos refletem as normas selecionadas do espaço de trabalho, ou query quando pré-visualizam um conjunto ?standards= explícito. available_standards é o catálogo completo de normas selecionáveis (para descobrir chaves ?standards= válidas).

Campos

FieldRequirementsScope #

Os requisitos de campo de um âmbito (calibração ou ativo).

enforced indica se o servidor rejeita uma escrita que omita um campo OBRIGATÓRIO. Registar uma calibração rejeita (422 FIELD_REQUIREMENTS_UNMET). POST /instruments não: os requisitos de ativo são apenas indicativos, por isso não conte com uma rejeição aí.

Campos

InstrumentCreate #

Corpo do pedido para criar um instrumento com POST /instruments. Os campos desconhecidos são rejeitados (422). O intervalo de calibração é obrigatório porque inicia o calendário de calibração do instrumento.

Campos

  • asset_tagstringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • namestringObrigatório
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • manufacturerstring | null
    • No máximo 255 carateres
  • modelstring | null
    • No máximo 255 carateres
  • serial_numberstring | null
    • No máximo 255 carateres
  • categorystring | null
    • No máximo 255 carateres
  • departmentstring | null
    • No máximo 255 carateres
  • locationstring | null
    • No máximo 255 carateres
  • tolerance_specstring | null
    • No máximo 255 carateres
  • notesstring | null
    • No máximo 10000 carateres
  • unit_of_measurestring | null
    • No máximo 64 carateres
  • is_reference_standardboolean
    • Predefinição: false
  • calibration_interval_valueintegerObrigatório
    • Mínimo: 1
    • Máximo: 100000
  • calibration_interval_unitstring

    Um de days, months, years.

    • Predefinição: months
    • Valores permitidos: days, months, years
  • last_calibration_datestring (date-time) | null

    Referência inicial opcional: quando o instrumento foi calibrado pela última vez. Quando indicada, é criado um registo de referência aprovado e a conformidade é calculada a partir dele. Quando omitida, o instrumento indica NOT_CALIBRATED até ser registada a sua primeira calibração.

  • customFieldsmap<string, string>

    Campos personalizados opcionais definidos pelo espaço de trabalho, como um mapa simples de etiqueta -> valor. As etiquetas são guardadas exatamente como enviadas. Um valor em branco é descartado em vez de guardado.

Os campos que não constam desta lista são rejeitados.

InstrumentDetail #

Um único instrumento: tudo o que está no resumo, mais os seus campos descritivos e de agendamento.

Campos

  • idstring (uuid)Obrigatório
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Predefinição: false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Marcador de eliminação: o instante ISO-8601 em que este instrumento foi retirado (tirado de serviço), ou null enquanto está ativo. Preenchido nas linhas retiradas apresentadas com ?include=retired.

  • deletedboolean

    Marcador de eliminação: true quando este instrumento foi retirado e um espelho o deve tratar como removido. Sempre false na lista predefinida, que só inclui ativos.

    • Predefinição: false
  • due_extensionDueExtension | null

    A prorrogação ativa da data de vencimento (until, reason, extended_at, extended_by_user_id), ou null quando não existe nenhuma ou uma calibração mais recente a substituiu. next_due_at já a tem em conta.

  • categorystring | null
  • departmentstring | null
  • locationstring | null
  • tolerance_specstring | null
  • notesstring | null
  • unit_of_measurestring | null
  • is_reference_standardboolean
    • Predefinição: false
  • requires_electronic_signatureboolean
    • Predefinição: false
  • requires_electronic_signature_overrideboolean | null
  • calibration_interval_valueinteger | null
  • calibration_interval_unitstring | null
  • grace_daysinteger | null
  • customFieldsmap<string, string>

    Campos personalizados definidos pelo espaço de trabalho, como um mapa simples de etiqueta -> valor. Devolvidos apenas no detalhe de um instrumento (não na listagem).

  • created_atstring | null
  • updated_atstring | null

InstrumentSummary #

Um instrumento tal como aparece numa listagem: a sua identidade e o seu estado de conformidade, o suficiente para mostrar uma linha sem um segundo pedido.

Campos

  • idstring (uuid)Obrigatório
  • asset_tagstring | null
  • namestring | null
  • manufacturerstring | null
  • modelstring | null
  • serial_numberstring | null
  • statusstring | null
  • is_quarantinedboolean
    • Predefinição: false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Marcador de eliminação: o instante ISO-8601 em que este instrumento foi retirado (tirado de serviço), ou null enquanto está ativo. Preenchido nas linhas retiradas apresentadas com ?include=retired.

  • deletedboolean

    Marcador de eliminação: true quando este instrumento foi retirado e um espelho o deve tratar como removido. Sempre false na lista predefinida, que só inclui ativos.

    • Predefinição: false
  • due_extensionDueExtension | null

    A prorrogação ativa da data de vencimento (until, reason, extended_at, extended_by_user_id), ou null quando não existe nenhuma ou uma calibração mais recente a substituiu. next_due_at já a tem em conta.

InstrumentUpdate #

Corpo de atualização parcial para PATCH /instruments/{instrument_id}. Só mudam os campos que enviar; os campos desconhecidos são rejeitados (422).

Campos

  • namestring | null
    • Pelo menos 1 carateres
    • No máximo 255 carateres
  • manufacturerstring | null
    • No máximo 255 carateres
  • modelstring | null
    • No máximo 255 carateres
  • serial_numberstring | null
    • No máximo 255 carateres
  • categorystring | null
    • No máximo 255 carateres
  • departmentstring | null
    • No máximo 255 carateres
  • locationstring | null
    • No máximo 255 carateres
  • tolerance_specstring | null
    • No máximo 255 carateres
  • notesstring | null
    • No máximo 10000 carateres
  • unit_of_measurestring | null
    • No máximo 64 carateres
  • is_reference_standardboolean | null
  • calibration_interval_valueinteger | null
    • Mínimo: 1
    • Máximo: 100000
  • calibration_interval_unitstring | null
    • Valores permitidos: days, months, years
  • calibration_interval_change_reasonstring | null

    Porque é que o intervalo de calibração está a mudar. Aplica-se quando o instrumento já tem um intervalo e o valor ou a unidade que envia é diferente. A alteração é sempre escrita no registo de atividade do espaço de trabalho com este motivo. Se o motivo é obrigatório depende da definição CHANGE_REASON_RULES_ENFORCED da instalação: quando está ativa, o pedido sem motivo falha com 422 e o código interval_change_reason_required; quando está desativada, a alteração é aceite e registada sem motivo. Envie já um motivo e a sua integração não deixará de funcionar quando a definição for ativada. Não é necessário quando o intervalo não muda.

    • No máximo 1000 carateres
  • customFieldsmap<string, string> | null

    Campos personalizados definidos pelo espaço de trabalho a definir, como um mapa simples de etiqueta -> valor. São FUNDIDOS com os campos personalizados que o instrumento já tem: as etiquetas que não enviar ficam como estão, e enviar um valor em branco remove essa etiqueta. Omita a chave por completo, ou envie null, para não alterar nada.

Os campos que não constam desta lista são rejeitados.

LocationSummary #

Uma localização do seu espaço de trabalho. Use-a para identificar o location_id que as respostas de instrumentos devolvem e que o filtro location_id aceita. Cada localização pertence a um local, indicado por site_id.

Campos

  • idstring (uuid)Obrigatório
  • namestring | null
  • site_idstring (uuid) | null

Pagination #

Metadados de paginação offset/limit devolvidos juntamente com cada listagem.

Campos

  • limitintegerObrigatório
  • offsetintegerObrigatório
  • totalintegerObrigatório
  • has_morebooleanObrigatório

SecretRotatedResponse #

A resposta da rotação do segredo: o novo secret em texto simples, mostrado uma única vez.

Campos

  • idstring (uuid)Obrigatório
  • secretstringObrigatório

    O novo segredo de assinatura, mostrado APENAS aqui.

  • secret_prefixstring | null

SiteSummary #

Campos

  • idstring (uuid)Obrigatório
  • namestring | null
  • is_defaultboolean
    • Predefinição: false
  • timezonestring | null

StandardSummary #

Uma norma de conformidade que o espaço de trabalho selecionou.

Campos

  • keystringObrigatório
  • labelstringObrigatório

ValidationError #

Campos

  • locarray[string | integer]Obrigatório
  • msgstringObrigatório
  • typestringObrigatório
  • inputany
  • ctxobject

WebhookCreate #

Pedido de subscrição. events omitido ou vazio significa "todos os eventos do catálogo".

Campos

  • urlstringObrigatório

    URL de entrega HTTPS. Validado contra SSRF (tem de resolver para um endereço público; os destinos privados, de loopback, link-local ou de metadados são rejeitados).

    • No máximo 2048 carateres
  • eventsarray[string] | null

    Subconjunto do catálogo de eventos v1 a receber. Omita-o ou envie uma lista vazia para subscrever TODOS os eventos. Os tipos desconhecidos são rejeitados (422).

  • descriptionstring | null

    Etiqueta opcional, legível por pessoas, para este endpoint.

    • No máximo 500 carateres

Os campos que não constam desta lista são rejeitados.

WebhookCreatedResponse #

A resposta da subscrição. Traz o secret em texto simples EXATAMENTE UMA VEZ.

Campos

  • idstring (uuid)Obrigatório
  • urlstringObrigatório
  • eventsarray[string] | null

    Tipos de evento subscritos, ou null para todos os eventos do catálogo.

  • descriptionstring | null
  • is_activeboolean
    • Predefinição: true
  • secret_prefixstring | null

    Fragmento inicial não secreto do segredo de assinatura (apenas para apresentação).

  • disabled_atstring | null
  • created_atstring | null
  • updated_atstring | null
  • secretstringObrigatório

    O segredo de assinatura HMAC, mostrado APENAS aqui. Guarde-o agora. Não pode ser recuperado mais tarde. Use-o para verificar o cabeçalho Axiospec-Signature.

WebhookDeliveryRead #

Uma linha do registo de entregas de cada endpoint (observabilidade e depuração).

Nunca inclui o segredo de assinatura nem os cabeçalhos do pedido; response_snippet é um excerto truncado, sem segredos, do corpo da resposta do consumidor.

Campos

  • idstring (uuid)Obrigatório
  • event_idstring (uuid)Obrigatório
  • event_typestringObrigatório
  • statusstringObrigatório

    Um destes valores: pending | failed | succeeded | exhausted.

  • attempt_countinteger
    • Predefinição: 0
  • next_attempt_atstring | null
  • last_attempt_atstring | null
  • last_status_codeinteger | null
  • last_errorstring | null
  • response_snippetstring | null
  • created_atstring | null
  • updated_atstring | null

WebhookRead #

A projeção segura do endpoint. NUNCA inclui secret_key.

Campos

  • idstring (uuid)Obrigatório
  • urlstringObrigatório
  • eventsarray[string] | null

    Tipos de evento subscritos, ou null para todos os eventos do catálogo.

  • descriptionstring | null
  • is_activeboolean
    • Predefinição: true
  • secret_prefixstring | null

    Fragmento inicial não secreto do segredo de assinatura (apenas para apresentação).

  • disabled_atstring | null
  • created_atstring | null
  • updated_atstring | null

WebhookUpdate #

Pedido PATCH. Só são aplicados os campos enviados (semântica exclude-unset).

Campos

  • urlstring | null

    Novo URL de entrega HTTPS (validado de novo contra SSRF quando muda).

    • No máximo 2048 carateres
  • eventsarray[string] | null

    Subconjunto de eventos que substitui o atual (vazio/null = todos os eventos).

  • descriptionstring | null

    Etiqueta que substitui a atual.

    • No máximo 500 carateres
  • is_activeboolean | null

    Ativa (true) ou desativa (false) a entrega a este endpoint.

Os campos que não constam desta lista são rejeitados.