26.3.0 26.2.0 26.1.0 25.4.0 25.3.0
26.3.0 26.2.0 26.1.0 25.4.0 25.3.0

Dissemination API

You can use the Dissemination API to find packages in the archive, read their metadata, and download their files. You can retrieve one package by its ID, browse the file plan, or search, either with a search configuration or with your own criteria.

Most calls return package objects with only the basics at first: the ID, the type, the title, the state, and the last QA decision, if there is one. To get more, such as the metadata or the files, you ask for enrichers.

Every call needs the headers in Common headers, and errors use the shape described in Errors. Some calls don't need a specific role. Every user who can call the API can use them, and you only see what your access to the packages allows. For where roles come from, see Authentication.

Ask for more information with enrichers

Send the enrichers that you want in the enrichers header, separated by commas and with no spaces, for example enrichers: metadata,representations.

Enricher

What it adds

Where you can use it

metadata

metadata: the package's descriptive metadata, grouped by schema.

Retrieve, file plan, search

representations

representations: the package's representations and files, with a download link for each file.

Retrieve, file plan, search

breadcrumb

breadcrumb: the path through the file plan, from the root package down to this package.

Retrieve, search

retentionstatus

retentionStatus: whether the package is in the trash, under a legal hold, under a retention rule, or on a deletion list.

Retrieve, file plan, search

evidence

evidence: the package's integrity evidence.

Retrieve, file plan, search

pluginreports

pluginReports: the results of the preservation actions that ran on the package.

Retrieve, file plan, search

permissions

permissions: your permissions on the package.

Retrieve, file plan, search

searchcolumns

searchcolumns: the value of each column of the search configuration.

Search, export

Retrieve a package

You can retrieve one package, with the information that you ask for with enrichers.

GET /v2/aip/{packageId}

Required role: Any role. You need read access to the package.

Name

In

Type

Required

Description

packageId

path

string

Yes

The ID of the package.

enrichers

header

string

No

Comma-separated list of enrichers: metadata, representations, breadcrumb, retentionstatus, evidence, pluginreports, permissions.

Bash
curl "https://archive.example.com/v2/aip/INV-2026-0042" \
  -H "Authorization: Bearer $TOKEN" \
  -H "tenant: example-tenant" \
  -H "enrichers: metadata,representations,retentionstatus"

Response: 200 OK with an AIP object.

JSON
{
  "packageId": "INV-2026-0042",
  "packageType": "AIP",
  "title": "Invoice 2026-0042",
  "state": "approved",
  "metadata": [
    {
      "schema": "dublincore",
      "fields": {
        "title": "Invoice 2026-0042",
        "creator": "Finance department"
      }
    }
  ],
  "representations": [
    {
      "id": "invoice-2026-0042.pdf",
      "data": [
        {
          "name": "invoice-2026-0042.pdf",
          "format": "application/pdf",
          "url": "https://archive.example.com/v2/content/q8Zr2kT0bWv1yXcN4mP7sA",
          "size": 48213
        }
      ]
    }
  ],
  "retentionStatus": {
    "trashed": false,
    "underLegalHold": false,
    "retentionRuleApplied": true,
    "retentionRuleIds": ["5b1e7c2a-0d3f-4a8e-b6c9-2f7a1d0e9b44"],
    "retentionRuleNames": ["Invoices: 7 years"],
    "retainUntil": "2033-10-05T00:00:00.000Z",
    "inDeletionList": false
  }
}
  • 403 DOCUMENT_ACCESS_DENIED: you don't have read access to this package.

  • 404 RESOURCE_NOT_FOUND: there's no package with this ID.

How a download works

You download a file through a link that the archive gives you in the package's details:

  1. Retrieve the package with GET /v2/aip/{packageId} and the header enrichers: representations.

  2. In representations, find the file in a representation's data list. Its url is the download link.

  3. Call GET on that url, with the same Authorization and tenant headers as any other call.

Download a file

You can download the file behind a download link. By default, a link is valid for 24 hours.

GET /v2/content/{token}
GET /v2/content/{token}/stream

Both calls give you the same file. The /stream variant handles many downloads at the same time better, so use it for large files or for many parallel downloads.

Required role: Any role. You need read access to the package.

Name

In

Type

Required

Description

token

path

string

Yes

The token at the end of the download link.

Range

header

string

No

A byte range, for example bytes=0-1048575. Use it to resume a download or to read part of a file.

Response: 200 OK with the file and its Content-Type. If the content store sends them, you also get Content-Length and a Content-Disposition with the file name.

With a Range header, you get 206 Partial Content and a Content-Range header instead.

Bash
curl "https://archive.example.com/v2/content/q8Zr2kT0bWv1yXcN4mP7sA" \
  -H "Authorization: Bearer $TOKEN" \
  -H "tenant: example-tenant" \
  -H "Range: bytes=0-1048575" \
  -o invoice-2026-0042.part

Both calls give these errors:

  • 404 CONTENT_NOT_FOUND: the token isn't valid.

  • 410 CONTENT_LINK_EXPIRED: the link is past its validity. Retrieve the package again to get a new link.

GET /v2/content/{token} also gives these errors:

  • 404 CONTENT_NOT_FOUND: the file doesn't exist.

  • 403 PERMISSION_DENIED: you don't have read access to the package.

  • 416 RANGE_NOT_SATISFIABLE: the range is outside the file.

With /stream, a missing file or a range outside the file returns a plain 404 or 416, without the CONTENT_NOT_FOUND or RANGE_NOT_SATISFIABLE reason.

Browse the file plan

The file plan is the hierarchy that the archive arranges packages in. It starts with the root packages, and each package can have sub-packages.

List the root packages

GET /v2/fileplan

Required role: Any role.

Name

In

Type

Required

Description

page

query

integer

No

The page number, starting at 0. Default: 0.

pageSize

query

integer

No

The number of packages per page. Default: 100.

enrichers

header

string

No

Comma-separated list of enrichers.

Response: 200 OK with an AIPList object.

List the sub-packages of a package

GET /v2/fileplan/{packageId}

Required role: Any role.

Name

In

Type

Required

Description

packageId

path

string

Yes

The ID of the package whose sub-packages you want.

page

query

integer

No

The page number, starting at 0. Default: 0.

pageSize

query

integer

No

The number of packages per page. Default: 100.

enrichers

header

string

No

Comma-separated list of enrichers.

Response: 200 OK with an AIPList object. If the package has no sub-packages, items is empty.

Tip: To see where a package sits in the file plan, retrieve it with the breadcrumb enricher.

Search with a search configuration

A search configuration is a ready-made search for your organization's packages. It decides which filters you can use and which columns each result has. You first list the search configurations, and then run a search with one of them.

List search configurations

GET /v2/search

Required role: Any role.

Response: 200 OK with an array of SearchConfig objects. Each one lists its filters and its columns.

GET /v2/search/{searchConfig}

Required role: Any role.

Name

In

Type

Required

Description

searchConfig

path

string

Yes

The name of the search configuration.

filter.<name>

query

string

No

A filter value. See Filter the results.

page

query

integer

No

The page number, starting at 0. Default: 0.

pageSize

query

integer

No

The number of packages per page. Default: 100.

sortBy

query

string

No

The xpath of a column with sortable: true.

sortOrder

query

string

No

asc or desc.

enrichers

header

string

No

Comma-separated list of enrichers. Add searchcolumns to get each result's column values.

Bash
curl "https://archive.example.com/v2/search/invoices?filter.dc_title=2026&filter.dc_created_min=2026-01-01T00:00:00Z&sortBy=dc:created&sortOrder=desc&pageSize=25" \
  -H "Authorization: Bearer $TOKEN" \
  -H "tenant: example-tenant" \
  -H "enrichers: searchcolumns"

Response: 200 OK with an AIPSearchResult object. If the search configuration has aggregate filters, aggregateBuckets gives the values that you can filter on, with the number of packages for each.

  • 400 UNKNOWN_QUERY_FIELD: a filter name isn't in the search configuration.

  • 400 INVALID_DATE: a date filter has a value that isn't a valid date.

  • 404 SEARCH_CONFIG_NOT_FOUND: there's no search configuration with this name that you can use.

Filter the results

You add a filter as a query parameter, for example filter.dc_title=invoice. The name after filter. comes from the search configuration. Each filter in the search configuration has an operator that decides which name you use:

  • Most operators: use filterName.

  • BETWEEN: use filterMinName for the lower bound and filterMaxName for the upper bound, for example filter.dc_created_min=2026-01-01T00:00:00Z and filter.dc_created_max=2026-12-31T23:59:59Z.

  • AGGREGATE: use filterName, with one of the values from aggregateBuckets. To pick several values, send a JSON array, URL-encoded. For example, ["invoice","credit note"] becomes filter.dc_nature_agg=%5B%22invoice%22,%22credit%20note%22%5D.

When you send several filters, a package must match all of them.

The filter's dataType decides the format of the value:

  • date: a date in ISO 8601 format, for example 2026-10-05.

  • datetime: a date and time in ISO 8601 format, for example 2026-10-05T09:00:00+02:00. Without an offset, the archive uses its own time zone.

Query string values must be URL-encoded. For example, write the + of an offset as %2B. Otherwise it arrives as a space, and you get 400 INVALID_DATE.

Export search results as CSV

You can run the same search and get the results as a CSV file, with one column for each column of the search configuration.

GET /v2/search/{searchConfig}/export

Required role: Any role.

The parameters are the same as for Run a search, without page and pageSize. Send the header enrichers: searchcolumns to fill the rows. Without it, the file holds only the row with the column labels.

Response: 200 OK with the CSV file (text/csv). The first row holds the column labels.

  • 400 UNKNOWN_QUERY_FIELD: a filter name isn't in the search configuration.

  • 404 SEARCH_CONFIG_NOT_FOUND: there's no search configuration with this name that you can use.

Search with your own criteria

When a search configuration doesn't fit, you can build your own query: a tree of rules on package fields, combined with AND and OR. Two calls work together:

  1. Call GET /v2/query-fields to see which fields you can use, and which operators each field takes.

  2. Send your criteria to POST /v2/search/aip.

List the fields that you can query

GET /v2/query-fields

Required role: archive-view

Response: 200 OK with a QueryFieldList. The list holds the columns and filters of the search configurations that you can use, and these fields that every package has:

Field

Label

Data type

aip:packageId

Package ID

string

aip:profile

Profile

string

aip:partitionId

Partition ID

string

aip:METS/name

METS file name

string

aip:METS/length

METS file size

integer

aip:METS/digest

METS digest

string

dc:title

Title

string

dc:created

Created

datetime

dc:modified

Modified

datetime

ecm:uuid

Document ID

string

ecm:path

Path

string

ecm:currentLifeCycleState

Lifecycle state

string

JSON
{
  "items": [
    {
      "field": "dc:created",
      "label": "Created",
      "dataType": "datetime",
      "operators": ["EQ", "GT", "GTEQ", "LT", "LTEQ", "BETWEEN", "IN_LAST", "OLDER_THAN", "IS_NULL", "IS_NOT_NULL"],
      "sources": []
    },
    {
      "field": "inv:supplier",
      "label": "Supplier",
      "dataType": "string",
      "operators": ["EQ", "NEQ", "ILIKE", "IN", "NOT_IN", "IS_NULL", "IS_NOT_NULL"],
      "sources": ["invoices"]
    }
  ]
}

You can also query the files, the preservation actions, the signatures, and the submissions of a package. These fields aren't in the list. A rule on one of them matches when any entry matches. To find packages where no entry matches, use HAS_NONE_OF on the text fields. NEQ and NOT_IN aren't available on them.

Files

Field

What it is

Data type

aip:representations/*/data/*/format/puid

Format PUID of a file

string

aip:representations/*/data/*/format/name

Format name of a file

string

aip:representations/*/data/*/format/version

Format version of a file

string

aip:representations/*/data/*/format/extension-mismatch

Whether a file's extension doesn't match its format

boolean

aip:representations/*/data/*/content/mime-type

MIME type of a file

string

aip:representations/*/data/*/content/length

Size of a file

integer

aip:representations/*/data/*/content/digest

Digest of a file

string

aip:representations/*/data/*/content/name

Name of a file

string

Preservation actions

Field

What it is

Data type

pluginResult

The result of a preservation action. See Rules on preservation results.

string

prep:pluginReports/*/execution-date

When a preservation action ran

datetime

Signatures

Field

What it is

Data type

aip:representations/*/signaturesInfos/*/signatures/*/qualification

Signature qualification

string

aip:representations/*/signaturesInfos/*/signatures/*/indication

Signature indication

string

aip:representations/*/signaturesInfos/*/signatures/*/time

Signature time

datetime

aip:representations/*/signaturesInfos/*/signatures/*/signer/commonName

Signer name

string

aip:representations/*/signaturesInfos/*/signatures/*/signer/organizationName

Signer organization

string

aip:representations/*/signaturesInfos/*/signatures/*/signer/email

Signer email

string

Submissions

Field

What it is

Data type

aip:submissions/*/submitter

Submitter

string

aip:submissions/*/submissionDate

Submission date

datetime

aip:submissions/*/removalDate

Removal date

datetime

You can find the packages that match your criteria, a page at a time.

POST /v2/search/aip

Required role: archive-content-manager

Body: an AipCriteriaSearchRequest.

Name

Type

Required

Description

criteria

QueryCriteria

No

The rules. If you leave it out, you get the packages that you can read that aren't in the trash.

sort

array of SortSpec

No

The fields to sort on, in order. Each field must be a field that you can query.

page

integer

No

The page number, starting at 0. Default: 0.

pageSize

integer

No

The number of packages per page. Default: 50.

Each rule in criteria.rules is either a condition or a nested group:

  • A condition has a field, an operator, and, for most operators, a value.

  • A group has a group with its own combinator and rules. Set negate to true to match the packages that don't match the group.

What you send as the value depends on the operator. The operators for pluginResult are in Rules on preservation results.

Operators

What you send

IN, NOT_IN, HAS_NONE_OF

values: a list of values.

BETWEEN

values: exactly two values, the lower bound and then the upper bound.

IS_NULL, IS_NOT_NULL

No value.

All other operators

value: one value.

Some values need a specific format:

  • ILIKE: finds the text anywhere in the field, in any case. If your value has % or _, the archive uses it as a pattern instead.

  • IN_LAST and OLDER_THAN: a period in ISO 8601 format with one unit: days, weeks, months, or years, for example P7D, P2W, P3M, or P2Y. The archive counts back from the moment that the search runs.

  • Dates: date fields take a date, such as 2026-10-05. datetime fields take a date and time, with or without an offset, or a date alone for the start of that day.

  • Booleans: true or false.

A criteria tree can have up to 100 rules in total, and groups can go up to five levels deep.

Here's a search for invoices from the last 30 days that are PDF files or that had a failed preservation action, newest first:

JSON
{
  "criteria": {
    "combinator": "AND",
    "rules": [
      { "field": "aip:profile", "operator": "EQ", "value": "urn:example:profile:invoices" },
      { "field": "dc:created", "operator": "IN_LAST", "value": "P30D" },
      {
        "group": {
          "combinator": "OR",
          "rules": [
            {
              "field": "aip:representations/*/data/*/content/mime-type",
              "operator": "EQ",
              "value": "application/pdf"
            },
            { "field": "pluginResult", "plugin": "*", "operator": "EQ", "value": "FAILURE" }
          ]
        }
      }
    ]
  },
  "sort": [{ "field": "dc:created", "direction": "DESC" }],
  "page": 0,
  "pageSize": 50
}

Response: 200 OK with an AipCriteriaSearchResult. Each item also gives the values of the fields in your rules, in fields, so that you can show them as columns.

JSON
{
  "totalResults": 2,
  "page": 0,
  "pageSize": 50,
  "items": [
    {
      "packageId": "INV-2026-0042",
      "title": "Invoice 2026-0042",
      "type": "AIP",
      "created": "2026-10-05T09:14:10.000Z",
      "fields": {
        "aip:profile": "urn:example:profile:invoices",
        "aip:representations/*/data/*/content/mime-type": "application/pdf"
      }
    },
    {
      "packageId": "INV-2026-0039",
      "title": "Invoice 2026-0039",
      "type": "AIP",
      "created": "2026-09-28T15:02:51.000Z",
      "fields": {
        "aip:profile": "urn:example:profile:invoices",
        "aip:representations/*/data/*/content/mime-type": "image/tiff"
      }
    }
  ]
}
  • 400 UNKNOWN_QUERY_FIELD: a field or a sort field isn't one that you can query.

  • 400 OPERATOR_NOT_ALLOWED: the field doesn't take this operator.

  • 400 REQUIRED_FIELD: a group has no combinator or no rules, or a condition has no field, operator, or value.

  • 400 INVALID_QUERY_CRITERIA: the tree isn't valid. For example, a rule has both a condition and a group, there are too many rules, or groups are nested too deep. Other causes are a custom field path that isn't well formed, a BETWEEN without two values, and IN, NOT_IN, or HAS_NONE_OF without values.

  • 400 INVALID_VALUE, INVALID_DATE, or INVALID_FORMAT: a value doesn't fit the field's data type, or a period isn't valid.

Rules on preservation results

The pluginResult field matches the result of one preservation action on a package. Two rule fields go with it:

  • plugin: the name of the action, or * for any action.

  • The value: SUCCESS, WARNING, or FAILURE.

It takes these operators:

  • EQ with one value, or IN with values: the action has this result.

  • NEVER_WAS with values: the action never had any of these results.

  • NEVER_RAN: the action never ran on the package. This one needs a real action name, not *.

Rules on other fields

If you need another field, set custom to true on the rule and write the field path yourself, for example inv:costCenter. The path must look like prefix:name, with optional /segment parts, or you get 400 INVALID_QUERY_CRITERIA.

The archive treats a custom field as text. It takes these operators:

EQ, NEQ, ILIKE, STARTSWITH, IN, NOT_IN, HAS_NONE_OF, IS_NULL, and IS_NOT_NULL.

Save search filters

You can save a set of filter values for a search configuration, and use it again later. Saved filters are personal: you only see your own.

List your saved filters

GET /v2/search/saved

Required role: Any role.

Response: 200 OK with an array of SavedFilter objects, newest first.

Save a filter

POST /v2/search/saved

Required role: Any role.

Body: a SavedFilterInput.

JSON
{
  "name": "Invoices from 2026",
  "searchConfig": "invoices",
  "filters": {
    "dc_title": "2026",
    "dc_created_min": "2026-01-01T00:00:00Z"
  }
}

Response: 200 OK with the SavedFilter, with its id.

Update a saved filter

You can replace the name, the search configuration, and the filter values of a saved filter. If you leave out filters, the filter values stay as they are.

PUT /v2/search/saved/{filterId}

Required role: Any role.

Name

In

Type

Required

Description

filterId

path

string

Yes

The id of the saved filter.

Body: a SavedFilterInput.

Response: 200 OK with the updated SavedFilter.

  • 404 RESOURCE_NOT_FOUND: there's no saved filter with this ID.

Delete a saved filter

DELETE /v2/search/saved/{filterId}

Required role: Any role.

Name

In

Type

Required

Description

filterId

path

string

Yes

The id of the saved filter.

Response: 204 No Content.

  • 404 RESOURCE_NOT_FOUND: there's no saved filter with this ID.

Schemas

AIP

A package in the archive.

Field

Type

Description

packageId

string

The ID of the package.

packageType

string

Always AIP.

title

string

The title of the package.

state

string

Where the package is in its lifecycle. See Lifecycle states.

qaDecision

QaDecision

The last QA decision on the package. Missing until a reviewer decides.

metadata

array of MetadataSection

The descriptive metadata. Only with the metadata enricher.

representations

array of Representation

The representations and their files. Only with the representations enricher.

breadcrumb

array of Breadcrumb

The path through the file plan. Only with the breadcrumb enricher.

searchcolumns

object

The search configuration's column values, keyed by the column's xpath. Only in search results, with the searchcolumns enricher.

retentionStatus

RetentionStatus

Whether the package is in the trash, under a legal hold, under a retention rule, or on a deletion list. Only with the retentionstatus enricher.

evidence

AipEvidence

The integrity evidence. Only with the evidence enricher.

pluginReports

array of PluginReport

The results of the preservation actions. Only with the pluginreports enricher.

permissions

array of string

Your permissions on the package. Only with the permissions enricher.

Lifecycle states

The state of a package is one of the following:

  • ingesting: the archive is ingesting the package.

  • pending_qa: the package waits for a QA reviewer.

  • approved: the package passed ingest, and QA if the package needs it.

  • rejected: a QA reviewer rejected the package.

  • failed: the ingest failed.

  • obsolete: the package is marked as obsolete.

  • deleted: the package is deleted.

  • legacy_approved: the package was archived before packages had a lifecycle. Treat it like approved.

QaDecision

Field

Type

Description

decidedBy

string

The user name of the reviewer who approved or rejected the package.

decidedAt

date-time

When the reviewer decided.

reason

string

Why the reviewer rejected the package. Only for a rejection.

MetadataSection

Field

Type

Description

schema

string

The name of the metadata schema, for example dublincore.

fields

object

The metadata, as field names and values.

Representation

Field

Type

Description

id

string

The ID of the representation.

type

string

The type of the representation.

data

array of RepresentationFile

The files of the representation.

RepresentationFile

Field

Type

Description

name

string

The name of the file.

format

string

The MIME type of the file.

url

string

The link to download the file.

size

integer

The size of the file in bytes. Missing when the archive doesn't know the size.

Field

Type

Description

title

string

The title of a package on the path.

packageId

string

The ID of that package.

RetentionStatus

Field

Type

Description

trashed

boolean

Whether the package is in the trash.

underLegalHold

boolean

Whether the package is under a legal hold.

retentionRuleApplied

boolean

Whether a retention rule applies to the package. false for a package that's only under a legal hold.

retentionRuleIds

array of string

The IDs of the retention rules, when retentionRuleApplied is true.

retentionRuleNames

array of string

The names of the retention rules, when retentionRuleApplied is true.

retainUntil

date-time

The date until which the archive keeps the package, when it's under retention.

inDeletionList

boolean

Whether the package is on a deletion list.

deletionListId

string

The ID of the deletion list, when inDeletionList is true.

AipEvidence

The integrity evidence of a package. Which fields you get depends on the evidence that the package has. For the shape of the whole object, see Evidence example.

Field

Type

Description

valid

boolean

Whether the package's RFC 4998 evidence record validates. Missing when the package has no such record.

validationIssue

string

Why the evidence record doesn't validate, when valid is false.

timestampChains

array of objects

The archive timestamp chains of the RFC 4998 evidence record. Each has a timestamps list, with a genTime, an expiryTime, and an issuer for each timestamp.

tree

object

The Merkle proof tree of the package's files. It has a partitionId and a submissions list. Each submission has a timestamp and, for each file, an entry with its hash, index, and proof.

Evidence example

JSON
{
  "valid": true,
  "timestampChains": [
    {
      "timestamps": [
        {
          "genTime": "2026-10-05T09:20:00Z",
          "expiryTime": "2036-10-05T09:20:00Z",
          "issuer": "Example Timestamp Authority"
        }
      ]
    }
  ],
  "tree": {
    "partitionId": "2026-10",
    "submissions": [
      {
        "timestamp": "2026-10-05T09:15:00Z",
        "entries": {
          "invoice-2026-0042.pdf": {
            "hash": "3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b",
            "index": 0,
            "proof": [
              { "sibling": "n4bQgYhMfWWaL+qgxVrQFaO/TxsrC4Is0V1sFbDwCgg=", "position": "right" }
            ]
          }
        }
      }
    ]
  }
}

AIPList

Field

Type

Description

totalResults

number

The number of packages that match, on all pages.

page

number

The page number, starting at 0.

pageSize

number

The number of packages per page.

items

array of AIP

The packages on this page.

AIPSearchResult

An AIPList with one more field:

Field

Type

Description

aggregateBuckets

array of AggregateBucket

One entry for each aggregate filter.

AggregateBucket

Field

Type

Description

filterName

string

The name of the aggregate filter.

values

array of objects

The values that you can filter on. Each has a value and the count of packages.

SearchConfig

Field

Type

Description

name

string

The name of the search configuration. Use it in the search path.

columns

array of SearchColumn

The columns of each result.

filters

array of SearchFilter

The filters that you can use.

linkedSearches

array of LinkedSearch

Other search configurations that a result links to.

roles

array of string

The roles that can use the search configuration. Empty when everyone can.

hidden

boolean

Whether the search configuration is marked as hidden.

limit

integer

The page size that the search configuration is set up with.

offset

integer

The offset that the search configuration is set up with.

fixedPart

string

The condition that the search configuration always applies.

LinkedSearch

Field

Type

Description

id

string

The name of the other search configuration.

links

array of objects

Each has a column of this search configuration and the filter of the other one that the column's value fills.

SearchFilter

Field

Type

Description

filterName

string

The name to use in filter.<name>.

filterMinName

string

For BETWEEN: the name for the lower bound.

filterMaxName

string

For BETWEEN: the name for the upper bound.

label

string

The label of the filter.

dataType

string

string, integer, decimal, boolean, date, or datetime.

operator

string

FULLTEXT, LIKE, ILIKE, EQ, GT, GTEQ, LT, LTEQ, BETWEEN, or AGGREGATE.

aggregateOptions

array of string

For a range aggregate: the keys of the ranges.

fields

array of string

The package fields that the filter searches.

indexField

string

The search index field for a filter on several fields.

SearchColumn

Field

Type

Description

xpath

string

The package field of the column. It's also the key in searchcolumns.

label

string

The label of the column.

dataType

string

string, integer, decimal, boolean, date, datetime, or object.

sortable

boolean

Whether you can sort on the column.

hidden

boolean

Whether the column is hidden.

visibleByDefault

boolean

Whether the column shows by default.

fallbackXpaths

array of string

Other fields that the archive reads, in order, when the package has no value in xpath. The value still goes under the xpath key.

SavedFilter

Field

Type

Description

id

string

The ID of the saved filter.

name

string

The name of the saved filter.

searchConfig

string

The name of the search configuration.

filters

object

The filter names and their values.

createdAt

date-time

When the filter was saved.

SavedFilterInput

Field

Type

Description

name

string

Required. The name of the saved filter.

searchConfig

string

Required. The name of the search configuration.

filters

object

The filter names and their values, as strings.

QueryFieldList

Field

Type

Description

items

array of QueryField

The fields that you can query.

QueryField

Field

Type

Description

field

string

The field path to use in a rule.

label

string

The label of the field.

dataType

string

string, integer, decimal, boolean, date, or datetime.

operators

array of string

The operators that the field takes.

sources

array of string

The search configurations that have this field. Empty for the fields that every package has.

AipCriteriaSearchRequest

The body of Run a criteria search.

QueryCriteria

Field

Type

Description

combinator

string

Required. AND or OR.

negate

boolean

Set to true to match the packages that don't match the group. Default: false.

rules

array of QueryRule

Required. At least one rule.

QueryRule

Has either field and operator, or group.

Field

Type

Description

field

string

The field path.

operator

string

EQ, NEQ, GT, GTEQ, LT, LTEQ, LIKE, ILIKE, NOT_LIKE, IN, NOT_IN, BETWEEN, IS_NULL, IS_NOT_NULL, STARTSWITH, HAS_NONE_OF, NEVER_RAN, NEVER_WAS, IN_LAST, or OLDER_THAN. The field decides which ones you can use.

value

string

The value, for operators that take one value.

values

array of string

The values, for IN, NOT_IN, HAS_NONE_OF, BETWEEN, and NEVER_WAS.

group

QueryCriteria

A nested group.

plugin

string

For pluginResult only: the name of the preservation action, or * for any action.

custom

boolean

Set to true to use a field path that isn't in the list of query fields.

SortSpec

Field

Type

Description

field

string

Required. The field to sort on.

direction

string

ASC or DESC. Default: ASC.

AipCriteriaSearchResult

Field

Type

Description

totalResults

integer

The number of packages that match, on all pages.

page

integer

The page number, starting at 0.

pageSize

integer

The number of packages per page.

items

array of AipSearchItem

The packages on this page.

AipSearchItem

Field

Type

Description

packageId

string

The ID of the package.

title

string

The title of the package.

type

string

The type of the package.

created

date-time

When the package was created.

fields

object

The values of the fields in your rules, as text, keyed by field path. The package ID, title, type, and creation date aren't repeated here, and empty values are left out.