uChecker · AsyncAPI Specification

Uchecker Webhooks

Version

View Spec View on GitHub email-verificationemailsmtpdnsdeliverabilitymxspfdkimdmarcmcpagent-nativedata-qualityAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-16'
method: derived
source: >-
  openapi/_original/uchecker-openapi.json — SingleValidationDto.webhook_url,
  BulkValidationDto.webhook_url and websocket_id; info.description task-lifecycle section
docs: https://api.uchecker.net/docs
name: uChecker event surface
asyncapi_published: false
asyncapi_probe:
  - url: https://api.uchecker.net/asyncapi.yaml
    note: not served — api.uchecker.net returns text/plain 404 for unknown paths
  - url: https://api.uchecker.net/asyncapi.json
    note: not served
note: >-
  uChecker ships NO AsyncAPI document. It does document a real push surface — a
  caller-supplied webhook URL invoked on task completion, plus a WebSocket progress channel
  used by its own dashboard — so this artifact captures the webhook catalog and the
  apis.yml pointer emitted is `Webhooks`, not `AsyncAPI`. Nothing here is fabricated: the
  payload shape is deliberately left unspecified because the provider does not publish it.

delivery:
  style: caller-registered callback URL, per task
  registration: >-
    Set `webhook_url` in the request body of POST /api/v1/validate/single or
    POST /api/v1/validate/bulk. There is no webhook management API, no endpoint registry,
    and no per-account default — the URL is supplied on every submission.
  transport: HTTPS POST
  expected_response: HTTP 200
  reachability_requirement: >-
    "URL должен быть доступен извне и возвращать HTTP 200" — the URL must be publicly
    reachable and must answer 200.
  retries: not documented
  timeout: not documented
  ordering: not documented
  signing:
    supported: false
    note: >-
      No HMAC signature, no shared secret, no timestamp header and no source IP range are
      documented. A receiver has no published way to verify that a callback came from
      uChecker, which means the callback URL itself is the only secret. Treat it as a
      bearer capability and verify results out-of-band via GET /api/v1/tasks/{taskId}.

event_count: 1
events:
  - name: validation.task.completed
    naming: derived label — uChecker does not name or type its callback
    trigger: >-
      A validation task finishes. For POST /validate/single the callback fires when the
      single address has been checked; for POST /validate/bulk when the whole task
      completes.
    payload: >-
      "POST-запрос с результатами всех проверок" — the results of all checks. The precise
      body schema is NOT published; there is no component schema for the callback payload
      and no `webhooks:` or `callbacks:` block in the OpenAPI 3.0 document. Expect the
      task's results, but confirm against a live delivery before depending on field names.
    payload_schema: unpublished
    related_pull_operations:
      - ValidationController_getTask
      - ValidationController_getTaskResults
      - ValidationController_getTaskAnalytics
    failure_event: >-
      Whether a task that ends in the `failed` state (-1) also fires the callback is not
      documented.

streaming:
  - name: task progress
    transport: websocket
    registration_field: websocket_id (BulkValidationDto)
    documented: false
    note: >-
      `websocket_id` is described as "WebSocket ID для получения обновлений в реальном
      времени. Используется веб-интерфейсом для отображения прогресса без polling" — used by
      the web interface to show progress without polling. The WebSocket URL, handshake,
      message schema and auth are NOT published, so this channel is effectively internal.
      Recorded because it exists in the public contract, not because a third party can use it.

polling_fallback:
  operation: ValidationController_getTask
  path: GET /api/v1/tasks/{taskId}
  recommended_interval: 5-10 seconds
  progress_field: progress_percent
  note: >-
    The provider recommends polling as the default and the webhook as the alternative
    ("Или укажите `webhook_url`…"). For agents, uChecker's own MCP guidance is to run
    validation as a background task rather than a synchronous step.

gaps_for_the_provider:
  - Publish the callback payload schema (an OpenAPI 3.1 `webhooks:` block, or an AsyncAPI 3.0 document).
  - Sign callbacks (HMAC over the body with a per-account secret) so receivers can verify origin.
  - Document retry and timeout behaviour, and whether `failed` tasks fire a callback.
  - Document the WebSocket channel, or drop websocket_id from the public contract.