API reference / Documents

post/v1/documents/{id}/complete

Report that an upload finished, and get the verdict

Operation
completeDocumentUpload
Authentication
API key

Verifies the object and answers with the verdict in the same request. The presigned PUT this follows pins neither content type nor length, so the size and type declared when the slot was requested are claims — this reads them back from storage and checks them against the rules for the document type. A `200` with `status: "invalid"` means the document was seen and rejected; `validation_notes` says why.

Request

Parameters

idpathrequiredstring

Responses

200Recorded.
document_idstringrequired
statusstringrequired

The verdict, read back from the stored object: `valid` or `invalid`. Anything that fails the rules for its document type — a missing object, the wrong content type, too large — is `invalid`, and the reason is in `validation_notes`.

validation_notesstring

Why the document failed, in the applicant’s terms. Present only when `status` is `invalid`.

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
403The key is valid but does not hold the scope this route requires.
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/documents/<id>/complete \
  -H "Authorization: Bearer $HAAVISA_API_KEY"

More in Documents

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