API reference / Admin

post/v1/admin/applications/{id}/submission

Record a government submission

Operation
adminRecordSubmission
Authentication
API key

**This is a human action, not an automated one.** An operator submits through the official portal by hand and records the reference number here. It is the audit trail for that act, and it remains the default path for every destination — see the `enqueue` route alongside this one, which queues the same filing for a destination whose portal has been walked.

Request

Parameters

idpathrequiredstring

Body

channelstring

`manual` until a destination exposes a real submission API.

reference_numberstringrequired

The reference the government portal returned. The audit trail hangs off this.

notesstring

Responses

200Recorded.
applicationApplicationrequired
productobjectnullrequired
document_requestsobject[]required
requirement_recordsobject[]required
documentsobject[]required
account_emailstringnullrequired

The per-application mailbox the government account is registered under, recorded on the row by accountEmailFor. It is where a portal sends an activation link, and the only durable route back into an account whose password is deliberately never stored. Null for a destination with no applicant account.

portal_urlstringrequired

The government’s own portal, from the captured flow data. Ops files every application by hand, so the correct URL — rather than a search that ends at a look-alike site — is the most useful thing this screen can give them.

paymentsobject[]required
submissionsobject[]required

Every attempt to file this application, newest first.

status_checksobject[]required

What the authority last said about this application, and what we made of it. One row per application, so this is a list for shape rather than for history — what changed over time is in the timeline.

government_paymentobjectnullrequired

Paying the government, after the applicant has paid us. Null until somebody asks for it.

400The request body or query failed validation.
errorobjectrequired
401No key, an unknown key, a revoked key, or a key whose tenant is not active. All four return an identical body on purpose: distinguishing them would let a caller discover which partners we have.
errorobjectrequired
403`projects:write` is required. No partner key is ever issued this scope.
errorobjectrequired
404Not found, or not yours. A resource belonging to another tenant answers 404 rather than 403, because 403 would confirm the record exists.
errorobjectrequired

Example

curl
curl -X POST https://api.haavisa.com/v1/admin/applications/<id>/submission \
  -H "Authorization: Bearer $HAAVISA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "reference_number": "<reference_number>"
  }'

More in Admin

Something unclear? The eligibility guide explains the model behind the answers; the errors guide covers the envelope.