Skip to main content
Star OpenZiti on GitHub Star
Version: Active LTS (2.0.x)

Shared API Capabilities

API Response Envelopes​

All responses from APIs have the following outer envelope:

{
"data": ...,
"meta": {...},
"error": {...}
}

The data and error fields are mutually exclusive. Responses are either a data response or an error. The data section represents the subject or output information of the client's request. The meta section contains additional information about the requested entity that may be useful to clients (e.g. pagination, sortable fields, etc.).

The error section contains errors in the following format:

{
"code": "string constant error code",
"message": "string human readable value",
"cause": ... //[nested error|field error]
}

The cause field can either be another nested error or a field error:

{
"field": "the name of the field",
"reason": "a message explaining the issue",
"value": ... //the provided value
}

Filtering, Sorting, & Pagination​

API support rich filtering, sorting and pagination on queries that return lists/arrays of objects in the data fields. On list responses the meta section contains a list of sortableFields which can filtered and sorted upon. All values are provided in the filter URL query field.

Example: https://my-controller/edge/v1/management/identities?filter=<filterValue>

The value of filter (denoted by <filterValue>) is defined by the ZitiQl grammar definition.

Pagination​

Data can be paginated through by providing a filter value with skip and/or limit clauses. For example to show:

  • the first page of 10 items: filter=skip 0 limit 10
  • the second page of 10 items: filter=skip 10 limit 10

Sorting​

Data can be sorted on fields by providing a sort by clause:

  • sort by name ascending: filter=sort by name asc
    • sort by name descending: filter=sort by name dsc

Filtering​

Logical Operations​

The following comparisons are allowed:

OperationExample
=, !=name = "myName", "isOnline" = true
<, >, <=, >=precident > 0
contains, not containsname contains "hi"

Logical Conjunctions​

ConjunctionExample
andfirstName = "bob" and lastName = "builder"
orfirstName = "bob" or firstName = "jim"

Complex conjunction grouping and nesting is supported via ( and ).

Example: firstName = "bob" or (firstName = "jim" and lastName = "john" or ("isOnline" = false))

Types​

TypeExample
string"this is a string"
number1, 1.555, 2e5
booltrue, false
date_time (RFC3339) (datetime(2019-10-12T07:20:50.52+07:00)
array["str", "str"], [1,2,3.5], [datetime(...), datetime(...)]