curl --request GET \
--url https://api.usenexio.com/connections/{id}/tables/{table} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenexio.com/connections/{id}/tables/{table}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenexio.com/connections/{id}/tables/{table}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"row_key": "<string>",
"source_columns": {}
}
],
"page": {
"cursor": "<string>",
"limit": 123,
"next": "<string>",
"prev": "<string>",
"offset": 123
},
"request_id": "<string>",
"source": {
"actor": {
"impersonation_kind": "act_as",
"impersonator": "<string>",
"member": "<string>"
},
"connection": "<string>",
"family": "<string>",
"freshness": "<string>",
"id": "<string>",
"kind": "warehouse",
"origin": "default",
"snapshot_at": "2023-11-07T05:31:56Z",
"subject": {
"scope": "<string>",
"selection": [
"<string>"
],
"selection_kind": "<string>",
"selection_source": "<string>",
"member": {
"display_name": "<string>",
"id": "<string>",
"scope": "<string>"
}
},
"system": "warehouse",
"elapsed_ms": 123,
"reason": {
"kind": "<string>",
"note": "<string>",
"ref": "<string>"
},
"snapshot_id": "<string>",
"stale_since": "2023-11-07T05:31:56Z"
},
"unreachable": [
{
"part": "<string>",
"reason": "<string>",
"detail": "<string>",
"ref": "<string>"
}
],
"warnings": [
{
"code": "<string>",
"detail": "<string>"
}
],
"facets": {},
"total": {
"exact": true,
"value": 123
}
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}List a table's rows
Read one page of a registered source table by its own name, narrowed to its owner or its match filter.
curl --request GET \
--url https://api.usenexio.com/connections/{id}/tables/{table} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.usenexio.com/connections/{id}/tables/{table}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.usenexio.com/connections/{id}/tables/{table}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"row_key": "<string>",
"source_columns": {}
}
],
"page": {
"cursor": "<string>",
"limit": 123,
"next": "<string>",
"prev": "<string>",
"offset": 123
},
"request_id": "<string>",
"source": {
"actor": {
"impersonation_kind": "act_as",
"impersonator": "<string>",
"member": "<string>"
},
"connection": "<string>",
"family": "<string>",
"freshness": "<string>",
"id": "<string>",
"kind": "warehouse",
"origin": "default",
"snapshot_at": "2023-11-07T05:31:56Z",
"subject": {
"scope": "<string>",
"selection": [
"<string>"
],
"selection_kind": "<string>",
"selection_source": "<string>",
"member": {
"display_name": "<string>",
"id": "<string>",
"scope": "<string>"
}
},
"system": "warehouse",
"elapsed_ms": 123,
"reason": {
"kind": "<string>",
"note": "<string>",
"ref": "<string>"
},
"snapshot_id": "<string>",
"stale_since": "2023-11-07T05:31:56Z"
},
"unreachable": [
{
"part": "<string>",
"reason": "<string>",
"detail": "<string>",
"ref": "<string>"
}
],
"warnings": [
{
"code": "<string>",
"detail": "<string>"
}
],
"facets": {},
"total": {
"exact": true,
"value": 123
}
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}{
"code": "INVALID_ARGUMENT",
"request_id": "<string>",
"status": 123,
"title": "<string>",
"type": "<string>",
"detail": "<string>",
"details": "<unknown>",
"errors": [
{
"message": "<string>",
"location": "<string>",
"value": "<unknown>"
}
],
"instance": "<string>",
"reason": "<string>",
"retry_after_ms": 123
}Behavior
The response is the one list envelope:data holds one object per row, each with row_key (the row’s opaque, stable identity) and source_columns (every registered column as text, keyed <OBJECT>.<COLUMN>, with NULL values left out), beside page, source, unreachable, warnings and request_id.
The table’s registration decides the filters it takes. List a connection’s tables shows them for every table.
- Owner filter. A table whose owner is
policy,accountorclaimis read one owner at a time: sendpolicy_id,account_idorclaim_idas an instance key. A missing owner filter answers 400INVALID_ARGUMENT, reasonFILTER_REQUIRED; another owner’s filter answers reasonFILTER_NOT_TAKEN. A table whose owner isnoneis read whole and takes no owner filter. - Match filter. A table with a match column takes one filter named after that column, lower case, such as
cocode=orcustid=. Where the listing marks the filter as required, a read without it answers reasonFILTER_REQUIRED. There is no genericmatch=parameter: it is refused with 400INVALID_ARGUMENT, reasonFILTER_NOT_TAKEN, and the detail names the table’s own match filter. - Paging.
limitdefaults to 25; a value above 200 is coerced to 200 with aLIMIT_COERCEDwarning. Followpage.nextwithcursor; the cursor fixes the table and its filters. A cursor the read can no longer continue from answers reasonCURSOR_EXPIRED, as on every Records list: start again from the first page.
NOT_VISIBLE_OR_ABSENT, the same as an unregistered table or a connection that is not your organization’s. A table whose requirement the person’s access policy does not grant, such as an accounting table without the accounting dataset, answers 403 CAPABILITY_DENIED, reason DATASET_DENIED. Direct identifiers are served only on a read narrowed to one owner. Send the person the request is for in Nexio-Act-As and Nexio-Act-As-Email, and the signed Nexio-Assertion when your organization enforces it.
This route is for lineage, operators and proofs. Product code reads collections under /records. See Source tables.Authorizations
Send the key as Authorization: Bearer <key>. Two kinds of key exist.
Organization keys are issued in the portal (Settings, then API keys),
each bound to one environment, shaped nx_<environment slug>_<64 hex>. They carry
no capabilities and pass every capability check, with one exception:
routes under /records, /actions, /operations,
/api/v1/engines/{id}/opportunities, /api/v1/graph and
/api/v1/catalog/documents accept an
organization key only when its environment is live, and refuse any
other with 403 scoped_key_required. Revocation takes effect within 60
seconds.
Scoped keys are issued by Nexio on request, shaped
nxsk_v1_<24 hex key id>_<43 character secret>. Each is bound to one
org, one environment, a set of engines and a set of capabilities. A
malformed, unknown or revoked nxsk_ key fails with 401 and is never
retried as an organization key. Revocation takes effect on the next
request. A scoped key without a route's capability gets 403
insufficient_capability; a scoped key not bound to the engine gets 403
engine_binding_forbidden.
Key-grantable capabilities: engines:read, runs:write, runs:read,
runs:defensibility:read, runs:test, catalog:read,
catalog:documents:read, webhooks:manage, conversations:use,
conversations:export, records:read, records:opportunities:run,
actions:write, actions:read, graph:read, records:analyze.
Routes that accept organization keys only (every scoped key gets 403
insufficient_capability): environment management, engine create,
update, configuration and publish, and conversation instance
authoring. Each operation description names the capability a scoped
key needs.
Headers
The person the request is for, as your identity provider's stable user id. Unset keeps the org-wide posture the key alone grants. The retired X-Nexio-* identity headers are refused on this route with 400 INVALID_ARGUMENT, reason LEGACY_HEADER.
The acting person's verified sign-in email, lowercased. Ignored without Nexio-Act-As.
The signed assertion over the identity headers (v1..).
A caller-chosen request id, echoed in the Nexio-Request-Id response header.
The caller's remaining budget for this request, in whole milliseconds (1 to 10 digits, greater than zero), relative to receipt. The engine stops work at the shorter of this and the route's own budget, and answers 504 request_timeout when it expires. A value above the route budget is capped to it; a malformed value is ignored.
Path Parameters
The connection: one of the organization's connection ids, or sandbox for the sandbox seat's view of it. Any other id answers 404 NOT_VISIBLE_OR_ABSENT.
The table: the system of record's own object name as the registry spells it, lower case. An AMS360 table is its name without the AFW_ prefix (company, custcontact, 146schedequip). An unregistered table answers 404 NOT_VISIBLE_OR_ABSENT.
^[a-z0-9_]+$Query Parameters
The policy id, as an instance key. Required on a table whose owner is policy; refused on any other.
The account id, as an instance key. Required on a table whose owner is account; refused on any other.
The claim id, as an instance key. Required on a table whose owner is claim; refused on any other.
Rows whose ATTACHID equals this value, on a table whose match column is ATTACHID (journalmemo, payee).
Rows whose ATTRCODE equals this value, on a table whose match column is ATTRCODE (prstring).
Rows whose BANKCODE equals this value, on a table whose match column is BANKCODE (bankaccount, bankrecstatement, cashdisbursment and 3 more).
Rows whose BROKERCODE equals this value, on a table whose match column is BROKERCODE (broker).
Rows whose BRSID equals this value, on a table whose match column is BRSID (bankreccleared).
Rows whose CHARGECODE equals this value, on a table whose match column is CHARGECODE (commissionie).
Rows whose CHECKLISTNAME equals this value, on a table whose match column is CHECKLISTNAME (agencychecklist).
Rows whose COCODE equals this value, on a table whose match column is COCODE (agent, aptinsurer, benefitcarrier and 13 more).
Rows whose CPNPLISTID equals this value, on a table whose match column is CPNPLISTID (targetlistbpol, targetlistcustomer, targetlistlob and 3 more).
Rows whose CRHID equals this value, on a table whose match column is CRHID (cashreceiptdeposit).
Rows whose CUSTID equals this value, on a table whose match column is CUSTID (generalledgertransaction, onaccountinvoice, pendingcheckglt).
Rows whose DBDHID equals this value, on a table whose match column is DBDHID (directbilldownloaddetail).
Rows whose DBEHID equals this value, on a table whose match column is DBEHID (directbillentrycommission, directbillentrycommissionbuabreakout, directbillentrydetail).
Rows whose DBSHID equals this value, on a table whose match column is DBSHID (directbillstmtdetail).
Rows whose ELFFORMTYPEID equals this value, on a table whose match column is ELFFORMTYPEID (elfformversion).
Rows whose EMPCODE equals this value, on a table whose match column is EMPCODE (benefitemployee, emplicense, employee and 1 more).
Rows whose ENTITYID equals this value, on a table whose match column is ENTITYID (refgroup).
Rows whose GJID equals this value, on a table whose match column is GJID (generaljournalrelation).
Rows whose GLDIVCODE equals this value, on a table whose match column is GLDIVCODE (directbilldownloadheader, directbillentryheader, directbillstmtheader and 3 more).
Rows whose INVID equals this value, on a table whose match column is INVID (directbillstmtautorec, invoicebatch, invoicebillingevent and 7 more).
Rows whose ISTID equals this value, on a table whose match column is ISTID (invoicesplitallocation).
Rows whose LLDID equals this value, on a table whose match column is LLDID (leadlistdefdetail).
Rows whose PLANID equals this value, on a table whose match column is PLANID (equineage, equinebreed, equinecovuse and 8 more).
Rows whose POLID equals this value, on a table whose match column is POLID (invoicesplittemplate).
Rows whose PSHID equals this value, on a table whose match column is PSHID (paystatementdetail).
Rows whose QUEID equals this value, on a table whose match column is QUEID (queidquestions).
Rows whose RELATIONSHIPTYPEID equals this value, on a table whose match column is RELATIONSHIPTYPEID (relationship).
Rows whose RLHID equals this value, on a table whose match column is RLHID (renewallistcc).
Rows whose TTSHID equals this value, on a table whose match column is TTSHID (trusttransferstatementdetail).
Rows whose VENDORCODE equals this value, on a table whose match column is VENDORCODE (vendor, vendorinvoice, vendorinvoicetemplate).
Rows whose VINVID equals this value, on a table whose match column is VINVID (vendorinvoicetransaction, vendorpayment).
Not a filter: refused with 400 INVALID_ARGUMENT, reason FILTER_NOT_TAKEN. A table's match filter is named after its column (cocode, brokercode), as the listing shows it under filter.
Page size. Defaults to 25; a value above 200 is coerced to 200 with a LIMIT_COERCED warning.
x >= 1The opaque page.next of the previous page. The table and its filters are fixed inside it.
Response
OK
One page of the collection, in the requested sort order.
Hide child attributes
Hide child attributes
The row's identity in its table, opaque and stable: the order pages follow.
Hide child attributes
Hide child attributes
The cursor that produced this page; null for the first page.
The page size the platform applied, after any coercion (see warnings).
The cursor of the following page; null at the end of the collection.
The cursor of the preceding page; null on the first page.
The rows skipped before this page, echoed only when the request sent offset (a register's page jump).
The request id, as echoed in the Nexio-Request-Id response header.
Hide child attributes
Hide child attributes
The id of the connection that answered; empty when the read had no connection.
The registry family that answered.
fresh, cached, stale, live or stale_after_write.
The registry source id (warehouse, ams360_ems, ...), empty when absent.
The kind of source that answered: the warehouse, the customer's system of record (whichever vendor; the vendor is in id), the platform's own store, or absent when no source serves the family.
warehouse, system, store, absent Which input decided the source.
default, connection, seat The instant the rows were read at: the warehouse pin, or the live call's time.
Hide child attributes
Hide child attributes
The scope kind the acting seat resolved to (self, office, all, ...).
The subject selection served, as subject= tokens (own, book:, producer:<code|me>, client_manager:<code|me>, member:). Empty when none was sent.
own, code, client_manager, account, boundary or whole: what the served relation is.
request when the caller chose the selection; none when it chose nothing.
Deprecated: read kind instead. The system behind the source.
warehouse, ams360, store, absent A live source's call time for this read.
The warehouse snapshot the rows came from, when one names them.
When the snapshot stopped being current, for a stale read.
Parts of the answer no source could fill, each with its reason. Empty when every part was filled.
Hide child attributes
Hide child attributes