Skip to content

Pagination & Sorting

All list endpoints in the Flowstate API return paginated results. This page covers how to navigate pages, control page size, sort results, and search records.

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-indexed)
limitinteger20Records per page (min: 1, max: 200)
searchstringFull-text search across name/email fields
sortBystringvariesField to sort by (see per-entity tables)
sortDirstringascSort direction: asc or desc

Response Metadata

Every list response includes a meta object alongside the data array:

json
{
  "data": [ ... ],
  "meta": {
    "page": 2,
    "limit": 20,
    "total": 142,
    "hasNextPage": true
  }
}
FieldTypeDescription
pageintegerCurrent page number
limitintegerNumber of records per page
totalintegerTotal number of matching records
hasNextPagebooleanWhether another page of results exists

Pagination Example

Fetch the second page of employees with 50 records per page:

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/employees?page=2&limit=50" \
  -H "Authorization: Bearer private_..."

To iterate through all pages programmatically, keep incrementing page until hasNextPage is false:

javascript
let page = 1;
let hasNextPage = true;

while (hasNextPage) {
  const response = await fetch(
    `https://{tenant}.flowstate.inc/api/v1/org/${orgId}/employees?page=${page}&limit=100`,
    { headers: { "Authorization": `Bearer ${apiKey}` } }
  );
  const body = await response.json();

  // Process body.data
  processEmployees(body.data);

  hasNextPage = body.meta.hasNextPage;
  page += 1;
}

Sorting

Use sortBy and sortDir to control the order of results:

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/employees?sortBy=lastName&sortDir=asc" \
  -H "Authorization: Bearer private_..."

Available Sort Fields

Employees

sortBy ValueDescription
firstNameFirst name (A-Z)
lastNameLast name (A-Z)
emailEmail address
startDateEmployment start
createdAtRecord creation
updatedAtLast modification

Contractors

sortBy ValueDescription
nameContractor name
emailEmail address
startDateContract start
rateHourly/daily rate
createdAtRecord creation
updatedAtLast modification

Vacancies

sortBy ValueDescription
roleRole title
statusVacancy status
targetStartDateTarget start date
targetFillDateExpected fill date
createdAtRecord creation
updatedAtLast modification

Teams

sortBy ValueDescription
nameTeam name
createdAtRecord creation
updatedAtLast modification

Projects

sortBy ValueDescription
nameProject name
startDateProject start
endDateProject end
statusProject status
createdAtRecord creation
updatedAtLast modification

Assignments

sortBy ValueDescription
startDateAssignment start
endDateAssignment end
fteFTE allocation
createdAtRecord creation

Cost Centres

sortBy ValueDescription
nameCost centre name
codeCost centre code
sortOrderDisplay order
createdAtRecord creation

Value Streams

sortBy ValueDescription
nameValue stream name
sortOrderDisplay order
createdAtRecord creation

Work Types

sortBy ValueDescription
nameWork type name
sortOrderDisplay order
createdAtRecord creation

Drivers

sortBy ValueDescription
nameDriver name
categoryDriver category
sortOrderDisplay order
createdAtRecord creation

Lifecycle Stages

sortBy ValueDescription
nameStage name
categoryStage category
sortOrderDisplay order
createdAtRecord creation

Exchange Rates

sortBy ValueDescription
fromCurrencySource currency
toCurrencyTarget currency
rateConversion rate
effectiveFromEffective date
createdAtRecord creation

Locations

sortBy ValueDescription
nameLocation name
countryCodeCountry code
sortOrderDisplay order
createdAtRecord creation

Use the search parameter for full-text search across relevant text fields:

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/employees?search=chen" \
  -H "Authorization: Bearer private_..."

Search queries are case-insensitive and match partial strings. The fields searched depend on the entity:

EntitySearched Fields
EmployeesfirstName, lastName, email
Contractorsname, email
Vacanciesrole, description
Teamsname, description
Projectsname, description
Cost Centresname, description
Value Streamsname, description
Work Typesname, description
Driversname, description
Lifecycle Stagesname
Exchange RatesfromCurrency, toCurrency
Locationsname, region

Combining Parameters

All query parameters can be combined:

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/employees?search=engineering&sortBy=lastName&sortDir=asc&page=1&limit=25&scenarioId=cls_abc123" \
  -H "Authorization: Bearer private_..."

Flowstate Documentation