Skip to main content
Version: 1.0.0

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​

PropertyValue
URLGET /germany/archive/{companyId}/download/{archiveId}
MethodGET
AuthR-Auth: <company-jwt>
Base URLStage 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​

ParameterTypeRequiredDescription
companyIdUUIDYesCompany UUID
archiveIdUUIDYesArchive 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​

HTTPerrorTypeMeaning
400GERMANY_ARCHIVE_NOT_AVAILABLEThe company is not archived under the German GoBD rules
403AUTHORIZATION_FAILEDCaller may not view this row's invoice direction, or has no view rights at all
403GERMANY_AUDITOR_ACCESS_EXPIREDCaller'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​

PropertyValue
URLPOST /germany/archive/{companyId}/verify/{archiveId}
MethodPOST
AuthR-Auth: <company-jwt>
Base URLStage 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​

ParameterTypeRequiredDescription
companyIdUUIDYesCompany UUID
archiveIdUUIDYesArchive row UUID, from Archive listing

Response​

"VERIFIED"

A plain string, one of:

ValueDescription
VERIFIEDThe re-computed checksum matches the recorded one
VIOLATIONThe re-computed checksum does not match the recorded one
FILE_MISSINGThe archived copy could not be read from the archive bucket
NOT_ARCHIVEDThe row is not yet ARCHIVED, so there is nothing to verify

Error responses​

HTTPerrorTypeMeaning
400GERMANY_ARCHIVE_NOT_AVAILABLEThe company is not archived under the German GoBD rules
403AUTHORIZATION_FAILEDCaller may not view this row's invoice direction, or has no view rights at all
403GERMANY_AUDITOR_ACCESS_EXPIREDCaller's time-limited auditor access (Z1) has ended
404—No archive row with this archiveId for this company