Release 26.3 adds new APIs to /v2, to manage packages, retention, package sets, preservation actions, and reports. It also brings a new error body and new roles. Some changes can affect an integration that works with 26.2, so check them first.
Changes that can affect your integration
-
Create a user with
POST /v2/user.PUT /v2/userdoesn't exist anymore, and it gets a405error. -
GET /v2/userreturns one page of users. Instead of an array, you get an object withitems,page,pageSize, andtotal, and thepageandpageSizeparameters now work. Read the users fromitems, and ask for the next pages. -
GET /v2/urlneeds thearchive-ingestrole. Without it, the call gets a403error. If your client doesn't have the role, ask Docbyte. -
Use a metadata schema that the archive knows. A metadata
schemanamespace that the archive doesn't know gets a400error with the reasonMETADATA_SCHEMA_UNKNOWN. -
Don't store download links: they expire. By default, the
urlof each file inrepresentationsworks for 24 hours. You call it with your access token in theAuthorizationheader, and it points to/v2/content/{token}on the API. To get a new link, get the package again. -
Use schema names in the
metadataenricher. Theschemaof each metadata section is now the schema name, such asdublincore, instead of the prefix, such asdc. -
GET /v2/aip/{packageId}checks the read permission. If your client can find a package but isn't allowed to read it, you get a403error with the reasonDOCUMENT_ACCESS_DENIED. -
Check the new error
codevalues if you switch oncode. Every/v2error now hascode,reason,message, anderrorId, and oftenparamsanddetails. Errors describes the body, and the tables after this list show what changed. -
Pick the tenant with the
tenantheader.X-Docbyte-Repositorystill works, but it's deprecated. Without either header, the archive now uses the tenant in your token. Thetenantheader is described in Common headers. -
A SIP from a URL must be on a public address. In
PUT /v2/sipwith the content typeURL, the archive refuses local and internal network addresses.
Error codes that changed
|
Error |
|
|---|---|
|
Request too large |
|
|
A permission error from the archive |
|
|
A link that's gone |
|
|
A |
|
|
The archive is unavailable |
|
Several errors that were a 500 now have a precise status and reason:
|
Case |
Status |
|
|---|---|---|
|
A package under a legal hold |
|
|
|
|
|
|
|
An unknown search configuration |
|
|
New APIs
-
Archive API: manage one package. You can trash or restore it, change its permissions, or transfer it. You can also list the tenants that your client can work in.
-
Audit trail API: search and export the audit trail of the archive or of one package.
-
Retention API: manage retention rules, review deletion lists, and list legal holds.
-
Package sets API: group packages into package sets, and share them.
-
Preservation actions API: run preservation actions on packages, schedule them, and read their reports.
-
Reports API: set up reports, run them, and get the results.
-
Transformations API: set up file format transformations.
-
Notifications API: set up notifications.
-
Statistics API: get the content, storage, and submission statistics of the archive.
New in existing APIs
-
Dissemination API: search with structured criteria, list the fields that you can search on, save search filters, export search results as CSV, and download files or stream them.
-
Ingest API: list SIPs, remove a SIP, reingest a package, and get an upload URL with its key and expiry date. You can also give a metadata file its own
name, so that one schema can have several metadata files. -
Admin API: search for users and groups, and list the archiving profiles.
Other improvements
-
New roles:
archive-content-manager,archive-records-manager,archive-records-reviewer, andarchive-qa. Authentication says what each one allows. -
New enrichers:
retentionstatusandevidence, described in Common headers. -
New package fields: a package now has a
stateand, after a QA review, aqaDecision. If your client rejects values that it doesn't know, allow newstatevalues. -
More detail on failed ingests: a SIP and an ingest status now have
failureReasonandfailureMessagewhen the ingest failed. -
New SIP fields:
title,lastModified,lastContributor, and a filledstatus. -
Metadata validation errors: in an environment where the archive validates metadata documents, a document that doesn't match its schema gets a
400error with the reasonMETADATA_INVALID, instead of a500. -
Larger requests: by default, a request body can now be up to 21 MB.
-
Downloads in parts:
GET /v2/content/{token}supports theRangeheader, so you can resume a download.