Skip to main content
GET
List Milestones

Authorizations

Authorization
string
header
required

OAuth 2.0 client credentials. The access token from POST /oauth/token is sent as a bearer token. Request only the scopes you need.

zivio-tenant-id
string
header
required

Your Zivio organisation identifier. The regional API endpoints serve every Zivio organisation, so each request must identify yours.

Query Parameters

page
integer
default:1

Page number for pagination

limit
integer
default:20

Number of results per page (max 100)

Required range: x <= 100
filter[<attribute>]
object

Filterable attributes:

integer (operators: eq, not_eq, in, not_in, gt, gte, lt, lte, between): approved_by_id, id, level_1_approved_by_id, original_id, project_id, purchase_order_line_id, rejected_by_id datetime (operators: eq, not_eq, gt, gte, lt, lte, between): approved_at, created_at, delivered_on, due_on, interim_valuation_date, level_1_approved_at, rejected_at, submitted_at, updated_at string (operators: eq, not_eq, in, not_in, like, not_like): comments, details, notes, rate_ccy, status (one of: open = open and not yet submitted to client; submitted = submitted to client; approved = fully approved. final state.; rejected = rejected by client; change_requested = change requested by client; on_hold = on hold. not currently active.; draft = saved by supplier, not yet submitted to client; cancelled = cancelled by client; level_1_approved = passed first-level approval, awaiting final approval; closed = closed by client), title money (operators: eq, not_eq, in, not_in, gt, gte, lt, lte, between): original_rate, rate, tiered_markup_fee boolean (operators: eq, not_eq): active (one of: true = in flight — status open, submitted, rejected, change_requested or level_1_approved; false = finalised or not in flight — status approved, cancelled, closed, draft or on_hold), client_suggested, close_project, final_claim (one of: true = supplier declared this the final claim; the milestone is settled at the claimed amount (which may be less than the original) with no remainder; false = interim claim; the unclaimed remainder was split off into a new milestone), mandatory, overdue (one of: true = active milestone (open, submitted, rejected, change_requested or level_1_approved) whose due date has passed; false = not overdue — either not active, or due on/after today)

Note: money values are in minor currency units (e.g. pence for GBP). Use 1000000 for £10,000.00.

Note: like is a case-insensitive substring match — pass the bare term (filter[title][like]=redesign). Do not add % wildcards; they are not needed.

or[group]
object

OR condition groups. Filters within a group are ANDed; groups are ORed.

Syntax: or[group_key][<attribute>]=value or or[group_key][<attribute>][operator]=value

Examples:

  • Simple OR: or[1][state]=draft&or[2][state]=pending
  • Complex: or[1][state]=draft&or[1][budget][gte]=50000&or[2][state]=closed
  • With custom fields: or[1][cf][priority]=high&or[2][state]=pending

Group keys can be any string (1, 2, a, b, etc.) - they just need to be unique.

cf[key]
object

Custom field filters using concise syntax.

Syntax:

  • Equality: cf[key]=value
  • With operator: cf[key][operator]=value

Operators: eq (default), not_eq, in, not_in, contains, not_contains, exists, not_exists

Examples:

  • cf[priority]=high - exact match
  • cf[department][in]=eng,design - matches any
  • cf[priority][not_eq]=low - not equal
  • cf[notes][contains]=urgent - contains text
  • cf[legacy_field][exists]= - field exists (value ignored)
  • cf[deprecated][not_exists]= - field does not exist
or[group][cf][key]
object

Custom field filters within OR condition groups.

Syntax: or[group][cf][key]=value or or[group][cf][key][operator]=value

Example: or[1][cf][priority]=high&or[2][state]=pending

sort[<attribute>]
object

Sort results by attribute. Direction defaults to ascending.

Syntax: sort[<attribute>]= (ascending) or sort[<attribute>]=desc (descending)

Sortable attributes: active, approved_at, approved_by_id, client_suggested, close_project, comments, created_at, delivered_on, details, due_on, final_claim, id, interim_valuation_date, level_1_approved_at, level_1_approved_by_id, mandatory, notes, original_id, original_rate, overdue, project_id, purchase_order_line_id, rate, rate_ccy, rejected_at, rejected_by_id, status, submitted_at, tiered_markup_fee, title, updated_at

Examples:

  • Ascending: sort[created_at]= or sort[created_at]=asc
  • Descending: sort[created_at]=desc

Response

List of milestones

milestones
object[]