Pular para o conteúdo

Referência da API

API pública do Axiospec

Versão 1.0.0

Conteúdo

Visão geral

A API pública do Axiospec permite ler e escrever o seu programa de calibração a partir dos seus próprios sistemas: listar e criar instrumentos, registrar calibrações no livro de registros com detecção de adulteração e ler as suas unidades e as normas de conformidade que você selecionou.

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

Autenticação. Crie uma chave no app, em Configurações e depois Chaves de API (apenas administradores do espaço de trabalho). Envie a chave em toda requisição 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. 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 término do acesso já passou, a chave recebe 403 ACCESS_ENDED.

Escopos. Uma chave tem o escopo read ou o escopo write (que inclui read). Uma chave somente leitura que tenta escrever recebe 403 INSUFFICIENT_SCOPE.

Idempotência. Registrar uma calibração (POST /instruments/{id}/calibrations) exige o cabeçalho Idempotency-Key. O livro de registros só aceita acréscimos, então uma requisição repetida com a mesma chave devolve o registro original em vez de gravar 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. Registrar um PASS ou PASS_WITH_ADJUSTMENT cuja leitura final fica fora de nominal_value +/- tolerance exige um motivo curto por escrito em out_of_tolerance_impact. A leitura final é as_left_reading, ou as_found_reading quando nenhuma leitura após o ajuste foi enviada, então um instrumento encontrado fora da tolerância e ajustado de volta para dentro da faixa não precisa de nada a mais. Sem o motivo, a gravação é rejeitada com 422 PASS_OVER_TOLERANCE_REASON_REQUIRED e details.field = out_of_tolerance_impact. Tudo o que o servidor não consegue comparar é aceito: sem valor nominal, sem tolerância, sem leitura numérica ou com leituras em unidades diferentes.

Produção
https://axiospec.com

Autenticação

Toda requisição precisa de uma chave de API. Envie a chave 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 Configurações e depois Chaves de API. Envie 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
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrão: 0
    • Mínimo: 0
  • statusstring | null

    Filtra pelo status do ativo (sem diferenciar maiúsculas e minúsculas), por exemplo in_service, out_of_service, OUT_FOR_CALIBRATION ou REFERENCE_ONLY. Um instrumento REFERENCE_ONLY continua no inventário, mas nunca é calibrado: ele informa next_due_at null, fica fora da lista de vencimentos e nunca corresponde a um filtro compliance_status.

    • No máximo 64 caracteres
  • site_idstring | null

    Filtra por uma única unidade (UUID).

  • location_idstring | null

    Filtra por um único local (UUID).

  • updated_sincestring | null

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

  • sortstring | null

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

  • asset_tagstring | null

    Busca exata pela etiqueta do ativo (para associar o seu próprio identificador ao nosso registro).

    • No máximo 255 caracteres
  • serial_numberstring | null

    Busca exata pelo número de série.

    • No máximo 255 caracteres
  • compliance_statusstring | null

    Filtra pelo token de conformidade: NOT_CALIBRATED, COMPLIANT, WARNING, NON_COMPLIANT ou OUT_FOR_CALIBRATION. Um token desconhecido retorna 422. Instrumentos REFERENCE_ONLY nunca correspondem (eles não têm estado de conformidade). O servidor calcula este filtro para cada instrumento, então, quando os outros filtros ainda deixam um conjunto muito grande, a requisição retorna 422. Restrinja antes com status, location_id, site_id ou updated_since.

    • No máximo 32 caracteres
  • next_due_beforestring | null

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

  • includestring | null

    Marcas de exclusão opcionais para a sincronização delta. include=retired também devolve os instrumentos desativados (fora de serviço), sinalizados com deleted=true e um timestamp retired_at. Assim um espelho fica sabendo que um instrumento foi desativado, em vez de vê-lo sumir sem aviso da lista de ativos. Quando omitido, apenas os instrumentos ativos são devolvidos.

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 requisição

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 que você escolhe para esta requisição, como um UUID, com até 128 caracteres. Uma requisição repetida com a mesma chave devolve o instrumento que a primeira requisição criou, em vez de criar um duplicado. Enquanto a primeira requisição ainda está sendo processada, uma nova tentativa retorna 503; tente de novo em instantes.

Corpo da requisição Obrigatório

application/json InstrumentCreate

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

    Um entre days, months, years.

    • Padrã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 informada, um registro de referência aprovado é criado e a conformidade é calculada a partir dele. Quando omitida, o instrumento informa NOT_CALIBRATED até que a primeira calibração seja registrada.

  • customFieldsmap<string, string>

    Campos personalizados opcionais definidos pelo espaço de trabalho, como um mapa simples de rótulo -> valor. Os rótulos são armazenados exatamente como enviados. Um valor em branco é descartado em vez de armazenado.

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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 requisição

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 da requisição Obrigatório

application/json InstrumentUpdate

  • namestring | null
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • manufacturerstring | null
    • No máximo 255 caracteres
  • modelstring | null
    • No máximo 255 caracteres
  • serial_numberstring | null
    • No máximo 255 caracteres
  • categorystring | null
    • No máximo 255 caracteres
  • departmentstring | null
    • No máximo 255 caracteres
  • locationstring | null
    • No máximo 255 caracteres
  • tolerance_specstring | null
    • No máximo 255 caracteres
  • notesstring | null
    • No máximo 10000 caracteres
  • unit_of_measurestring | null
    • No máximo 64 caracteres
  • 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

    Por que o intervalo de calibração está mudando. Aplica-se quando o instrumento já tem um intervalo e o valor ou a unidade que você envia é diferente. A mudança é sempre gravada no registro de atividades do espaço de trabalho com este motivo. Se o motivo é obrigatório depende da configuração CHANGE_REASON_RULES_ENFORCED da implantação: quando ela está ligada, a requisição sem motivo falha com 422 e o código interval_change_reason_required; quando está desligada, a mudança é aceita e registrada sem motivo. Envie um motivo desde já e a sua integração não vai quebrar quando a regra for ligada. Não é necessário quando o intervalo não muda.

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

    Campos personalizados definidos pelo espaço de trabalho a serem gravados, como um mapa simples de rótulo -> valor. São MESCLADOS aos campos personalizados que o instrumento já tem: rótulos que você não envia ficam como estão, e enviar um valor em branco remove aquele rótulo. Omita a chave por completo, ou envie null, para não mudar nada.

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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

Desativar um instrumento (tirar de serviço) #

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

Registra que um instrumento saiu de serviço ativo.

O registro permanece. O status passa a retired e retired_at é preenchido. O instrumento mantém o histórico de calibração e continua legível por esta API. O livro de registros não é alterado. Nada é apagado, e esta API não tem DELETE definitivo para instrumentos.

A desativação impede novos trabalhos no instrumento. Depois dela, os endpoints de escrita (atualizar um instrumento, registrar uma calibração, enviar um documento) retornam 409 ASSET_RETIRED. As leituras continuam funcionando.

A chave precisa do escopo write, e o dono dela precisa ser administrador ou gerente do espaço de trabalho. Qualquer outra chave recebe 403. Um instrument_id malformado retorna 422. Um instrumento que não está no seu espaço de trabalho retorna 404.

A desativação é idempotente. Desativar um instrumento que já está desativado retorna 200 com o mesmo detalhe, e o retired_at original é mantido.

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 requisição

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

Calibrações

Listar os registros 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
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrão: 0
    • Mínimo: 0
  • updated_sincestring | null

    Sincronização incremental: apenas registros acrescentados neste timestamp ISO-8601 ou depois dele.

  • performed_afterstring | null

    Apenas registros realizados neste timestamp ISO-8601 ou depois dele.

  • performed_beforestring | null

    Apenas registros realizados neste timestamp ISO-8601 ou antes dele.

  • resultstring | null

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

  • sortstring | null

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

  • includestring | null

    Marcas de exclusão opcionais para a sincronização delta. include=voided também devolve os registros de anulação (record_type='void', com voids_id apontando para a calibração que ele invalida), para que um espelho fique sabendo que uma calibração foi invalidada. Quando omitido, os registros 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 requisição

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

Registrar 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 que você escolhe para esta calibração, como um UUID, com até 128 caracteres. O livro de registros só aceita acréscimos, então uma requisição repetida com a mesma chave devolve o registro original em vez de gravar um duplicado. Use uma chave nova para cada nova calibração. Uma requisição sem o cabeçalho retorna 400 IDEMPOTENCY_KEY_REQUIRED. Enquanto a primeira requisição ainda está sendo processada, uma nova tentativa retorna 503; tente de novo em instantes.

Corpo da requisição Obrigatório

application/json CalibrationLogRequest

  • resultstringObrigatório

    Um entre 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 omitido, usa o momento atual (UTC).

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

    'in_house' quando a sua equipe mediu o instrumento, 'external_certificate' quando um laboratório ou fornecedor o calibrou e você está registrando o certificado dele. No caminho 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 caracteres
  • coverage_factorstring | null
    • No máximo 40 caracteres
  • confidence_levelstring | null
    • No máximo 40 caracteres
  • decision_rulestring | null
    • No máximo 120 caracteres
  • conformity_statementstring | null
    • No máximo 4000 caracteres
  • reference_standard_certificate_numberstring | null
    • No máximo 120 caracteres
  • restriction_notesstring | null
    • No máximo 4000 caracteres
  • out_of_tolerance_impactstring | null
    • No máximo 4000 caracteres
  • notesstring | null
    • No máximo 4000 caracteres

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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 registros de calibração do espaço de trabalho #

GET /api/public/v1/calibrations

Todos os registros de calibração do seu espaço de trabalho, de todos os instrumentos, em um único feed paginado. Use para uma rotina de data warehouse ou de BI que busca "todas as calibrações desde X" sem fazer uma chamada por instrumento.

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

Parâmetros de consulta

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

    Sincronização incremental: apenas registros acrescentados neste timestamp ISO-8601 ou depois dele.

  • performed_afterstring | null

    Apenas registros realizados neste timestamp ISO-8601 ou depois dele.

  • performed_beforestring | null

    Apenas registros realizados neste timestamp 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írgula, sem diferenciar maiúsculas e minúsculas): PASS, PASS_WITH_ADJUSTMENT, LIMITED_CALIBRATION, FAIL ou DAMAGED. Um token desconhecido retorna 422.

  • sortstring | null

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

  • includestring | null

    Marcas de exclusão opcionais para a sincronização delta. include=voided também devolve os registros de anulação (record_type='void', com voids_id apontando para a calibração que ele invalida) de todo o espaço de trabalho. É assim que um espelho completo fica sabendo que calibrações foram invalidadas. Quando omitido, os registros 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 requisição

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

Obter um registro 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 requisição

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

Baixar o certificado de calibração em PDF de um registro de calibração #

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

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

É o mesmo certificado que o app emite para o registro. Ele é armazenado na primeira vez em que é gerado, então os downloads seguintes devolvem o mesmo documento, a menos que o certificado seja reemitido no app. Uma mudança no idioma dos documentos do espaço de trabalho também o reemite: o próximo download o devolve no novo idioma. Os certificados continuam disponíveis depois que o instrumento é desativado.

Erros: 422 quando calibration_id não é um UUID. 404 quando o registro não está no seu espaço de trabalho ou não é uma calibração. 404 CERTIFICATE_UNAVAILABLE quando o registro 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 requisição

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

Documentos

Obter uma URL pré-assinada para enviar um documento #

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

Parâmetros de caminho

  • instrument_idstringObrigatório

Corpo da requisição Obrigatório

application/json DocumentUploadUrlRequest

  • file_namestringObrigatório
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • content_typestring

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

    • Padrão: application/octet-stream
    • No máximo 255 caracteres
  • size_bytesinteger | null

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

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

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrã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 entre certificate, report, procedure, photo, other).

  • uploaded_sincestring | null

    Sincronização incremental: apenas documentos enviados neste timestamp ISO-8601 ou depois dele. Observe que este é um cursor de envios NOVOS baseado em upload_date e não reflete mudanças posteriores de arquivamento ou exclusão lógica.

  • sortstring | null

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

  • include_archivedboolean

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

    • Padrã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 requisição

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

Registrar um documento enviado #

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

Parâmetros de caminho

  • instrument_idstringObrigatório

Corpo da requisição Obrigatório

application/json DocumentRegisterRequest

  • keystringObrigatório
    • No mínimo 1 caracteres
    • No máximo 512 caracteres
  • file_namestringObrigatório
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • document_typestring

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

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

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

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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 uma URL de download 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 requisição

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). Tudo o que vence dentro desse número de dias é incluído; o que já está vencido é incluído SEMPRE, independentemente desse valor.

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

    Filtra por uma única unidade (UUID). Vale dentro das unidades a que você tem acesso.

  • statusstring | null

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

    • No máximo 32 caracteres
  • limitinteger
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrã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 requisição

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 assinar.

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 requisição

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
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrã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 requisição

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

Inscrever um endpoint de webhook #

POST /api/public/v1/webhooks

Corpo da requisição Obrigatório

application/json WebhookCreate

  • urlstringObrigatório

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

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

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

  • descriptionstring | null

    Rótulo opcional, legível por pessoas, para este endpoint.

    • No máximo 500 caracteres

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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 requisição

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 da requisição Obrigatório

application/json WebhookUpdate

  • urlstring | null

    Nova URL de entrega HTTPS (validada de novo contra SSRF quando muda).

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

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

  • descriptionstring | null

    Rótulo que substitui o atual.

    • No máximo 500 caracteres
  • is_activeboolean | null

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

Campos que não estão listados aqui são rejeitados.

Exemplo de corpo da requisição
{
  "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 requisição

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 inscriçã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 requisição

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

Trocar 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 requisição

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

Listar o log 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 status da entrega: pending, failed, succeeded, exhausted.

    • No máximo 32 caracteres
  • limitinteger
    • Padrão: 50
    • Mínimo: 1
    • Máximo: 100
  • offsetinteger
    • Padrã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 requisição

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

Reenviar uma entrega manualmente #

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 requisição

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

Unidades

Listar as unidades 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 requisição

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

Locais

Listar os locais do espaço de trabalho #

GET /api/public/v1/locations

Parâmetros de consulta

  • site_idstring | null

    Filtra por uma única unidade (UUID). Vale dentro das unidades a que você 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 requisição

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 requisição

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írgula, para uma PRÉVIA (ex.: 'iso_17025,as9100'). Omita para refletir as normas selecionadas no espaço de trabalho (é contra elas que o POST público de calibração é realmente avaliado). Uma chave desconhecida retorna 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 requisição

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. Nomes de campo, tipos e valores de enumeração aparecem exatamente como a API os envia e espera.

CalibrationLogRequest #

Corpo da requisição para registrar uma calibração. Campos desconhecidos são rejeitados (422).

O registro é acrescentado ao livro de registros com detecção de adulteração com as mesmas regras de validação e aprovação de uma calibração registrada no app. Um resultado FAIL ou DAMAGED coloca o instrumento em quarentena, como acontece no app. Os campos exigidos pelas normas selecionadas no seu espaço de trabalho são obrigatórios: um corpo que deixa um deles de fora é rejeitado com 422 FIELD_REQUIREMENTS_UNMET. Confira esses campos antes com GET /standards/field-requirements.

Um PASS ou PASS_WITH_ADJUSTMENT cuja leitura final fica fora de nominal_value +/- tolerance também precisa de um motivo curto por escrito em out_of_tolerance_impact; sem ele, a gravação é rejeitada com 422 PASS_OVER_TOLERANCE_REASON_REQUIRED. A leitura final é as_left_reading, ou as_found_reading quando nenhuma leitura após o ajuste foi enviada, então um instrumento encontrado fora da tolerância e ajustado de volta para dentro da faixa não precisa de nada a mais. Tudo o que o servidor não consegue comparar é aceito.

Campos

  • resultstringObrigatório

    Um entre 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 omitido, usa o momento atual (UTC).

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

    'in_house' quando a sua equipe mediu o instrumento, 'external_certificate' quando um laboratório ou fornecedor o calibrou e você está registrando o certificado dele. No caminho 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 caracteres
  • coverage_factorstring | null
    • No máximo 40 caracteres
  • confidence_levelstring | null
    • No máximo 40 caracteres
  • decision_rulestring | null
    • No máximo 120 caracteres
  • conformity_statementstring | null
    • No máximo 4000 caracteres
  • reference_standard_certificate_numberstring | null
    • No máximo 120 caracteres
  • restriction_notesstring | null
    • No máximo 4000 caracteres
  • out_of_tolerance_impactstring | null
    • No máximo 4000 caracteres
  • notesstring | null
    • No máximo 4000 caracteres

Campos que não estão listados aqui são rejeitados.

CalibrationRecord #

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

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', conforme registrado. Null quando o registro 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 registro normal, ou 'void' para uma marca de anulação acrescentada (exibida com ?include=voided).

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

    Em uma marca de anulação (record_type='void'): o id do registro de calibração que esta anulação invalida. Null em um registro normal.

  • voided_by_idstring (uuid) | null

    Em uma calibração original ainda visível que foi anulada depois: o id da marca de anulação que a invalidou. Null quando o registro não está anulado.

  • created_atstring | null

DocumentDownloadResponse #

Uma URL de download de curta duração para um documento. A URL sempre baixa o arquivo em vez de exibi-lo no navegador, e expira depois de expires_in segundos (em expires_at). Peça uma URL nova sempre que precisar do arquivo, em vez de guardar uma.

Campos

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

DocumentRecord #

Um documento anexado a um instrumento, somente leitura. Os documentos são identificados pelo id. Para obter o arquivo, peça uma URL de curta duração em 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 registro de calibração ao qual este documento está anexado, ou null.

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

DocumentRegisterRequest #

Corpo da requisição para registrar como documento deste instrumento um arquivo que você enviou com o POST pré-assinado, opcionalmente anexado a um dos registros de calibração dele.

key precisa ser exatamente a chave que a chamada upload-url devolveu para este instrumento. Qualquer outra chave é rejeitada (422 INVALID_REQUEST), e uma chave sem arquivo enviado retorna 409 OBJECT_NOT_UPLOADED.

Campos

  • keystringObrigatório
    • No mínimo 1 caracteres
    • No máximo 512 caracteres
  • file_namestringObrigatório
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • document_typestring

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

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

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

Campos que não estão listados aqui são rejeitados.

DocumentUploadUrlRequest #

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

O servidor monta a key do objeto; você não pode escolhê-la. Qualquer parte de diretório em file_name é descartada.

Campos

  • file_namestringObrigatório
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • content_typestring

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

    • Padrão: application/octet-stream
    • No máximo 255 caracteres
  • size_bytesinteger | null

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

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

Campos que não estão listados aqui são rejeitados.

DocumentUploadUrlResponse #

Um POST pré-assinado do S3 para enviar o arquivo. Envie um POST multipart/form-data para upload_url com todas as entradas de fields e, por último, o próprio arquivo. Depois do envio, passe key para POST /instruments/{instrument_id}/documents para registrar o documento.

Campos

  • methodstring
    • Padrã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 solicitado ou que já está vencido.

compliance_status é um entre 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, em um fornecedor, um valor que os endpoints de instrumentos não devolvem em compliance_status.

due_date é YYYY-MM-DD no fuso horário da unidade do instrumento. Agrupe as linhas por esse valor, em vez de derivar 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 vencendo agora, 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 trazer.

Campos

FieldRequirement #

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

requirement é o nível mais rigoroso entre as normas resolvidas (required > recommended > optional > hidden). required_by lista os rótulos das normas resolvidas que tornam o campo OBRIGATÓRIO (vazio quando só o mínimo básico o exige); corresponde a required_by em missing_fields de um erro 422 FIELD_REQUIREMENTS_UNMET. request_field (apenas no escopo de calibração) é a chave do corpo do POST que atende ao campo, ou null quando ele é definido pelo servidor ou não pode ser definido pela 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 conferir uma gravação de calibração (ou de instrumento) antes de enviá-la, em vez de esperar o servidor rejeitá-la.

source é workspace quando os requisitos refletem as normas selecionadas no espaço de trabalho, ou query quando mostram uma prévia de 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 escopo (calibração ou ativo).

enforced indica se o servidor rejeita uma gravação que deixa de fora um campo OBRIGATÓRIO. Registrar uma calibração rejeita (422 FIELD_REQUIREMENTS_UNMET). POST /instruments não: os requisitos de ativo são apenas orientativos, então não conte com uma rejeição ali.

Campos

InstrumentCreate #

Corpo da requisição para criar um instrumento com POST /instruments. Campos desconhecidos são rejeitados (422). O intervalo de calibração é obrigatório porque inicia o cronograma de calibração do instrumento.

Campos

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

    Um entre days, months, years.

    • Padrã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 informada, um registro de referência aprovado é criado e a conformidade é calculada a partir dele. Quando omitida, o instrumento informa NOT_CALIBRATED até que a primeira calibração seja registrada.

  • customFieldsmap<string, string>

    Campos personalizados opcionais definidos pelo espaço de trabalho, como um mapa simples de rótulo -> valor. Os rótulos são armazenados exatamente como enviados. Um valor em branco é descartado em vez de armazenado.

Campos que não estão listados aqui são rejeitados.

InstrumentDetail #

Um único instrumento: tudo o que está no resumo, mais os 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
    • Padrão: false
  • site_idstring (uuid) | null
  • location_idstring (uuid) | null
  • compliance_statusstring | null
  • last_calibration_atstring | null
  • next_due_atstring | null
  • retired_atstring | null

    Marca de exclusão: o instante ISO-8601 em que este instrumento foi desativado (tirado de serviço), ou null enquanto está ativo. Preenchido nas linhas desativadas exibidas com ?include=retired.

  • deletedboolean

    Marca de exclusão: true quando este instrumento foi desativado e um espelho deve tratá-lo como removido. Sempre false na lista padrão, que traz apenas os ativos.

    • Padrã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 há nenhuma ou quando uma calibração mais recente a substituiu. next_due_at já considera essa prorrogação.

  • categorystring | null
  • departmentstring | null
  • locationstring | null
  • tolerance_specstring | null
  • notesstring | null
  • unit_of_measurestring | null
  • is_reference_standardboolean
    • Padrão: false
  • requires_electronic_signatureboolean
    • Padrã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 rótulo -> valor. Devolvidos apenas no detalhe de um instrumento (não na listagem).

  • created_atstring | null
  • updated_atstring | null

InstrumentSummary #

Um instrumento como aparece em uma listagem: a identidade e o estado de conformidade dele, o suficiente para mostrar uma linha sem uma segunda requisição.

Campos

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

    Marca de exclusão: o instante ISO-8601 em que este instrumento foi desativado (tirado de serviço), ou null enquanto está ativo. Preenchido nas linhas desativadas exibidas com ?include=retired.

  • deletedboolean

    Marca de exclusão: true quando este instrumento foi desativado e um espelho deve tratá-lo como removido. Sempre false na lista padrão, que traz apenas os ativos.

    • Padrã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 há nenhuma ou quando uma calibração mais recente a substituiu. next_due_at já considera essa prorrogação.

InstrumentUpdate #

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

Campos

  • namestring | null
    • No mínimo 1 caracteres
    • No máximo 255 caracteres
  • manufacturerstring | null
    • No máximo 255 caracteres
  • modelstring | null
    • No máximo 255 caracteres
  • serial_numberstring | null
    • No máximo 255 caracteres
  • categorystring | null
    • No máximo 255 caracteres
  • departmentstring | null
    • No máximo 255 caracteres
  • locationstring | null
    • No máximo 255 caracteres
  • tolerance_specstring | null
    • No máximo 255 caracteres
  • notesstring | null
    • No máximo 10000 caracteres
  • unit_of_measurestring | null
    • No máximo 64 caracteres
  • 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

    Por que o intervalo de calibração está mudando. Aplica-se quando o instrumento já tem um intervalo e o valor ou a unidade que você envia é diferente. A mudança é sempre gravada no registro de atividades do espaço de trabalho com este motivo. Se o motivo é obrigatório depende da configuração CHANGE_REASON_RULES_ENFORCED da implantação: quando ela está ligada, a requisição sem motivo falha com 422 e o código interval_change_reason_required; quando está desligada, a mudança é aceita e registrada sem motivo. Envie um motivo desde já e a sua integração não vai quebrar quando a regra for ligada. Não é necessário quando o intervalo não muda.

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

    Campos personalizados definidos pelo espaço de trabalho a serem gravados, como um mapa simples de rótulo -> valor. São MESCLADOS aos campos personalizados que o instrumento já tem: rótulos que você não envia ficam como estão, e enviar um valor em branco remove aquele rótulo. Omita a chave por completo, ou envie null, para não mudar nada.

Campos que não estão listados aqui são rejeitados.

LocationSummary #

Um local do seu espaço de trabalho. Use para identificar o location_id que as respostas de instrumentos devolvem e que o filtro location_id aceita. Cada local pertence a uma unidade, indicada por site_id.

Campos

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

Pagination #

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

Campos

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

SecretRotatedResponse #

A resposta da troca de segredo: o novo secret em texto puro, exibido uma única vez.

Campos

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

    O novo segredo de assinatura, exibido SOMENTE aqui.

  • secret_prefixstring | null

SiteSummary #

Campos

  • idstring (uuid)Obrigatório
  • namestring | null
  • is_defaultboolean
    • Padrã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 #

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

Campos

  • urlstringObrigatório

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

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

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

  • descriptionstring | null

    Rótulo opcional, legível por pessoas, para este endpoint.

    • No máximo 500 caracteres

Campos que não estão listados aqui são rejeitados.

WebhookCreatedResponse #

A resposta da inscrição. Traz o secret em texto puro EXATAMENTE UMA VEZ.

Campos

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

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

  • descriptionstring | null
  • is_activeboolean
    • Padrão: true
  • secret_prefixstring | null

    Trecho inicial não secreto do segredo de assinatura (somente para exibição).

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

    O segredo de assinatura HMAC, exibido SOMENTE aqui. Guarde-o agora. Ele não pode ser recuperado depois. Use-o para verificar o cabeçalho Axiospec-Signature.

WebhookDeliveryRead #

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

Nunca traz o segredo de assinatura nem os cabeçalhos da requisição; response_snippet é um trecho 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
    • Padrã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 assinados, ou null para todos os eventos do catálogo.

  • descriptionstring | null
  • is_activeboolean
    • Padrão: true
  • secret_prefixstring | null

    Trecho inicial não secreto do segredo de assinatura (somente para exibição).

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

WebhookUpdate #

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

Campos

  • urlstring | null

    Nova URL de entrega HTTPS (validada de novo contra SSRF quando muda).

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

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

  • descriptionstring | null

    Rótulo que substitui o atual.

    • No máximo 500 caracteres
  • is_activeboolean | null

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

Campos que não estão listados aqui são rejeitados.