Download & Verification
Download an archived document and verify its integrity against the checksum recorded at archiving time. Every download and every verification is written to the row's audit trail.
Download archived document
Endpoint
| Property | Value |
|---|---|
| URL | GET /germany/archive/{companyId}/download/{archiveId} |
| Method | GET |
| Auth | R-Auth: <company-jwt> |
| Base URL | Stage Environment https://api-stage.docnova.ai/ Production Environment https://api.docnova.ai/ |
Example Request
curl --location '{{baseUrl}}/germany/archive/{{companyId}}/download/{{archiveId}}' \
--header 'R-Auth: {{companyJwt}}' \
--output archived-document
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
companyId | UUID | Yes | Company UUID |
archiveId | UUID | Yes | Archive row UUID, from Archive listing |
Response
The archived file's raw bytes, verified against the recorded SHA-256 checksum before being returned.
200 OK
Content-Type: application/pdf | application/xml | application/octet-stream
Content-Disposition: attachment; filename="<archiveId>.<extension>"
The content type and file extension are detected from the archived bytes themselves, not stored separately.
Error responses
| HTTP | errorType | Meaning |
|---|---|---|
400 | GERMANY_ARCHIVE_NOT_AVAILABLE | The company is not archived under the German GoBD rules |
403 | AUTHORIZATION_FAILED | Caller may not view this row's invoice direction, or has no view rights at all |
403 | GERMANY_AUDITOR_ACCESS_EXPIRED | Caller's time-limited auditor access (Z1) has ended |
404 | — | No archive row with this archiveId for this company |
Verify integrity
Re-hash the archived copy now and compare it against the SHA-256 checksum recorded when it was archived. The result is written to the audit trail whether it matches or not; this never modifies the archived copy.
Endpoint
| Property | Value |
|---|---|
| URL | POST /germany/archive/{companyId}/verify/{archiveId} |
| Method | POST |
| Auth | R-Auth: <company-jwt> |
| Base URL | Stage Environment https://api-stage.docnova.ai/ Production Environment https://api.docnova.ai/ |
Example Request
curl --location --request POST '{{baseUrl}}/germany/archive/{{companyId}}/verify/{{archiveId}}' \
--header 'R-Auth: {{companyJwt}}'
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
companyId | UUID | Yes | Company UUID |
archiveId | UUID | Yes | Archive row UUID, from Archive listing |
Response
"VERIFIED"
A plain string, one of:
| Value | Description |
|---|---|
VERIFIED | The re-computed checksum matches the recorded one |
VIOLATION | The re-computed checksum does not match the recorded one |
FILE_MISSING | The archived copy could not be read from the archive bucket |
NOT_ARCHIVED | The row is not yet ARCHIVED, so there is nothing to verify |
Error responses
| HTTP | errorType | Meaning |
|---|---|---|
400 | GERMANY_ARCHIVE_NOT_AVAILABLE | The company is not archived under the German GoBD rules |
403 | AUTHORIZATION_FAILED | Caller may not view this row's invoice direction, or has no view rights at all |
403 | GERMANY_AUDITOR_ACCESS_EXPIRED | Caller's time-limited auditor access (Z1) has ended |
404 | — | No archive row with this archiveId for this company |