Ignite Procurement Export API (2.0.0)

Download OpenAPI specification:Download

Exporting data from Ignite Procurement. Note: Legacy JSON Web Tokens (JWTs) are no longer supported. Generate a new API token and pass it using Bearer authorization.

List available export tables and columns

Lists the available export tables and the columns available for filtering and projection. Classification result tables expose spend_id plus the available level_N_id / level_N_name columns from the tenant's classification tree; the schema supports levels 1 through 10, with deeper levels nullable when not used.

Columns whose dataType is STRING_ARRAY (repeated string values) support only the array operators contains_any, contains_all, is_empty, and is_not_empty. Array columns are not part of the default response fields, so request them explicitly via fields to include their values in a rows response.

updated_at semantics: The updated_at column on suppliers and contracts reflects when the core record was last modified in Ignite. It does not advance when enrichment data is refreshed or when custom fields are edited. Consumers relying on updated_at for incremental sync will miss those changes; use the async export endpoint (POST /tables/{entity}/exports) for a complete point-in-time snapshot instead.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Fetch rows from an export table

Fetches scalar rows from an export table using optional field projection, typed filters, and opaque cursor pagination. Use GET /tables/ first to discover valid table ids, column names, data types, and supported filter operators. Classification result rows are identified by spend_id and contain the available level_N_id / level_N_name columns, with deeper levels nullable when not used. When fields is omitted, the endpoint returns every scalar column of the table; array (STRING_ARRAY) columns are excluded unless you request them explicitly in fields. For stable pagination, repeat the same request body and pass the previous response's nextPageToken as pageToken.

Authorizations:
bearerAuth
path Parameters
entity
required
string
Enum: "spend" "suppliers" "contracts" "classification_business_units" "classification_spend_categories"
Example: spend

The export table to read, given as the id returned by GET /tables/.

Request Body schema: application/json
fields
Array of strings

Column names to include. When omitted, all scalar columns of the table are returned.

object

Conjunctive filters keyed by column name (all conditions must match). Supported operators depend on the column metadata returned by GET /tables/. eq, gte, and lte take a single scalar value, in takes an array of scalar values, and between takes a two-item inclusive range. STRING_ARRAY columns instead support contains_any / contains_all (an array of up to 100 strings) and is_empty / is_not_empty (the boolean true).

Scalar value formats: STRING values are JSON strings; NUMBER and MONETARY_AMOUNT are JSON numbers; BOOL is a JSON boolean; DATE is a YYYY-MM-DD string; TIMESTAMP is an RFC 3339 UTC string (e.g. 2026-01-15T00:00:00Z).

pageSize
integer [ 1 .. 100000 ]
Default: 1000

Maximum number of rows to return. The service may return fewer rows and provides nextPageToken when more rows are available.

pageToken
string

Opaque cursor returned as nextPageToken from the previous response. Send the same request body as the previous page except for pageToken; do not change fields, filters, pageSize, or keyBy. Cursors are valid for 24 hours; an expired cursor returns 410 page_token_expired, after which pagination must restart from the first page.

keyBy
string
Default: "name"
Enum: "name" "label"

Selects the key used in each returned row object. name (the default) keys by the column name (column.name from GET /tables/); label keys by the human-readable label (column.label). The fields projection and filters always reference column names regardless of keyBy.

Under keyBy: label, keys are made unique across the table in GET /tables/ column order: (1) the first column with a given label keeps that label as its key; (2) subsequent columns with the same label get "<label> (<name>)"; (3) any remaining collision gets an integer suffix #2, #3, … appended until unique. The response key for a given column does not depend on the fields projection.

Responses

Request samples

Content type
application/json
Example
{
  • "pageSize": 1000
}

Response samples

Content type
application/json
Example
{
  • "data": [
    ],
  • "nextPageToken": "AoF3kZ9vQ2tBxLmN7rPwYc1dHs5gJ0eU4iT6bWx"
}

Start an asynchronous table export

Starts an asynchronous export for a table. The returned export id can be used to poll status until the export is ready for download.

Authorizations:
bearerAuth
path Parameters
entity
required
string
Enum: "spend" "suppliers" "contracts" "classification_business_units" "classification_spend_categories"
Example: spend

The export table to read, given as the id returned by GET /tables/.

Request Body schema: application/json
fields
Array of strings

Column names to include. When omitted, all scalar columns of the table are exported.

object

Conjunctive filters keyed by column name. Supported operators depend on the column metadata returned by GET /tables/ — scalar columns accept eq, in, gte, lte, and between; STRING_ARRAY columns accept contains_any, contains_all, is_empty, and is_not_empty.

format
string
Enum: "json" "parquet"

Output file format. Send the lowercase value json or parquet (other casings are also accepted). Defaults to json when omitted. A large export may be split into several files; each file's extension matches the chosen format (.json or .parquet).

Responses

Request samples

Content type
application/json
Example
{ }

Response samples

Content type
application/json
{
  • "id": "95e90b56-5cd0-4d9a-a07b-52f5205731ac",
  • "entity": "spend",
  • "status": "queued",
  • "format": "json",
  • "estimatedBytesProcessed": 123456789,
  • "createdAt": "2026-05-06T07:20:00Z",
  • "updatedAt": "2026-05-06T07:20:00Z"
}

Get asynchronous export status

Polls the current status of an asynchronous export. When status is succeeded, the response includes time-limited download URLs. Download URLs are valid for 1 hour; poll this endpoint again to obtain fresh URLs. Exported files are automatically deleted after 7 days.

Authorizations:
bearerAuth
path Parameters
id
required
string <uuid>
Example: 95e90b56-5cd0-4d9a-a07b-52f5205731ac

Responses

Response samples

Content type
application/json
Example
{
  • "id": "95e90b56-5cd0-4d9a-a07b-52f5205731ac",
  • "entity": "spend",
  • "status": "running",
  • "format": "json",
  • "estimatedBytesProcessed": 123456789,
  • "createdAt": "2026-05-06T07:20:00Z",
  • "updatedAt": "2026-05-06T07:20:03Z"
}

List all data tables and their data columns Deprecated

Deprecated table metadata endpoint. Use GET /tables/ for the export table registry.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Extract rows from data table Deprecated

Deprecated export endpoint. Extracts rows from the data table, up to 10 000 per iteration. Each entry in the data property of the response will be an object consisting of key value pairs, where the key will be the label of the corresponding column.

Authorizations:
bearerAuth
query Parameters
dataTableId
required
string
Example: dataTableId=12ab5182-jh73-9876-b77e-e71235a123a0

Responses

Response samples

Content type
application/json
{}

Extract rows from data table Deprecated

Deprecated export endpoint. Extracts rows from the data table, up to 10 000 per iteration. Each entry in the data property of the response will be an object consisting of key value pairs, where the key will be the label of the corresponding column.

Authorizations:
bearerAuth
query Parameters
dataTableId
required
string
Example: dataTableId=12ab5182-jh73-9876-b77e-e71235a123a0
Request Body schema: application/json

Optional body for filtering rows and/or columns

size
integer

Number of rows to extract per iteration. Max 10 000

object

For filtering out unwanted columns of the table

object

For extracting rows based on when they were last modified in Ignite. Accepted formats: YYYY-MM-DD or relative date queries like now-1M (today minus one month). Accepted units: y = Years, M = Months, w = Weeks, d = Days, h = Hours, H = Hours, m = Minutes, s = Seconds

Responses

Request samples

Content type
application/json
{
  • "size": 10000,
  • "columnFilter": {
    },
  • "lastModifiedDateFilter": {
    }
}

Response samples

Content type
application/json
{}