Skip to main content
POST
/
graphql#ListBookings
List bookings
curl --request POST \
  --url 'https://clarus-api.com/graphql#ListBookings' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'X-Clarus-Subdomain: <api-key>' \
  --data '
{
  "query": "query($filter: BookingFilterType) { bookings { all(filter: $filter) { edges { node { id booking_reference account_reference status direction start_time end_time haulier notes account { id code name } } } } } }"
}
'
{
  "data": {
    "bookings": {
      "all": {
        "edges": [
          {
            "node": {
              "id": "1",
              "booking_reference": "BK-001",
              "account_reference": "PO-12345",
              "status": "confirmed",
              "direction": "inbound",
              "start_time": "2026-03-10T09:00:00Z",
              "end_time": "2026-03-10T10:00:00Z",
              "haulier": "Express Logistics",
              "notes": null,
              "account": {
                "id": "1",
                "code": "ACME",
                "name": "Acme Corporation"
              }
            }
          }
        ]
      }
    }
  }
}

Query Structure

query($filter: BookingFilterType) {
  bookings {
    all(filter: $filter) {
      edges {
        node {
          id
          booking_reference
          account_reference
          status
          direction
          start_time
          end_time
          haulier
          notes
          account {
            id
            code
            name
          }
        }
      }
    }
  }
}

Filter Argument

All filters are passed inside the filter argument. Each filter field accepts an input object with operators:
{
  "filter": {
    "status": {
      "eq": "confirmed"
    }
  }
}

Available Filters

FilterInput TypeOperatorsDescription
booking_referenceStringInputTypeeq, ilike, like, in, betweenBooking reference
statusStringInputTypeeq, ilike, like, in, betweenBooking status
directionStringInputTypeeq, ilike, like, in, betweenDirection (inbound/outbound)
account_idIdInputTypeeq, gt, gteq, lt, lteq, in, filledFilter by account ID
start_timeDatetimeInputTypeeq, from, to, betweenFilter by start time

Filter Operators

Input TypeOperators
StringInputTypeeq (exact), ilike (case-insensitive partial), like (case-sensitive partial), in (array match), between (range)
IntegerInputTypeeq, gt, gteq, lt, lteq, between
DatetimeInputTypeeq, from, to, between
BooleanInputTypeeq (required)
IdInputTypeeq, gt, gteq, lt, lteq, in, filled
More fields and filters available via GraphQL introspection.

Authorizations

Authorization
string
header
required

OAuth 2.0 authentication. Use the client credentials or authorization code flow to obtain an access token.

X-Clarus-Subdomain
string
header
required

The subdomain/tenant name identifying which tenant's data to access. Required for all API requests.

Body

application/json
query
string<textarea>
required

GraphQL query string

Example:

"query($filter: BookingFilterType) { bookings { all(filter: $filter) { edges { node { id booking_reference account_reference status direction start_time end_time haulier notes account { id code name } } } } } }"

variables
object

Query variables including the filter object

Example:
{
"filter": { "status": { "eq": "confirmed" } }
}

Response

Successful GraphQL response

data
object

Query result data

errors
object[]

GraphQL errors, if any