Skip to main content
GET
Search ContractProducts
A contract product (internally known as ContractProduct) is a recurring product line on a customer’s contract, billed with plan invoices and optionally controlled by a price override and billing window. When the product includes passes, booking time credit, monetary credit, or printing credit, those benefits are released as each contract invoice is created; configure the product’s credit expiration separately, either aligned with or independent of the billing cycle. A negative product price creates a discount shown as a negative invoice line; use ContractSchedule for a future contract price change instead. Do not use a contract product for a deposit: use ContractDeposit so it is invoiced only at contract start and can be refunded when appropriate.

Authentication

This endpoint requires OAuth2 authentication. Include a valid bearer token in the Authorization header. The authenticated user must be a full unrestricted administrator or have the ContractProduct-List role.

Query Parameters

Pagination & Sorting

integer
default:"1"
The page number to retrieve.
integer
default:"25"
The number of records per page.
string
The property name to sort results by (e.g. Name, CreatedOn).
integer
Sort direction. 0 for ascending, 1 for descending.

Filters

integer
Filter by iD of the customer’s contract; it determines the location and billing cycle that will receive this recurring product line..
integer
Filter by display value for CoworkerContract.Quantity..
string
Filter by display value for CoworkerContract.FloorPlanDeskIds..
string
Filter by display value for CoworkerContract.FloorPlanDeskNames..
string
Filter by display value for CoworkerContract.Tariff.Name..
integer
Filter by display value for CoworkerContract.Coworker.Id..
string
Filter by display value for CoworkerContract.Coworker.FullName..
string
Filter by display value for CoworkerContract.Coworker.BillingName..
integer
Filter by iD of the location product billed on the contract’s invoices; its current price is used when this line has no price override..
string
Filter by display value for Product.Name..
number
Filter by display value for Product.Price..
boolean
Filter by display value for Product.ApplyProRating..
string
Filter by display value for Product.Currency.Code..
string
Filter by optional operator notes about this recurring product line..
integer
Filter by number of product units billed in each contract billing cycle; must be at least 1..
number
Filter by optional per-unit price override in the location’s currency; when null, the linked product’s price is used..
string
Filter by optional UTC date and time for the first invoice period that includes this product line; inclusive, and null starts billing immediately..
string
Filter by optional UTC date and time for the first invoice period that excludes this product line; exclusive, and null continues billing indefinitely..
boolean
Filter by whether this line requests prorating when it ends during an invoice period; the product’s setting can also enable prorating, and the contract plan must have ProrateDaysBefore configured..

Range Filters

integer
Filter by display value for CoworkerContract.Quantity. greater than or equal to this value.
integer
Filter by display value for CoworkerContract.Quantity. less than or equal to this value.
integer
Filter by display value for CoworkerContract.Coworker.Id. greater than or equal to this value.
integer
Filter by display value for CoworkerContract.Coworker.Id. less than or equal to this value.
number
Filter by display value for Product.Price. greater than or equal to this value.
number
Filter by display value for Product.Price. less than or equal to this value.
integer
Filter by number of product units billed in each contract billing cycle; must be at least 1. greater than or equal to this value.
integer
Filter by number of product units billed in each contract billing cycle; must be at least 1. less than or equal to this value.
number
Filter by optional per-unit price override in the location’s currency; when null, the linked product’s price is used. greater than or equal to this value.
number
Filter by optional per-unit price override in the location’s currency; when null, the linked product’s price is used. less than or equal to this value.
string
Filter by optional UTC date and time for the first invoice period that includes this product line; inclusive, and null starts billing immediately. greater than or equal to this value. Format: YYYY-MM-DDTHH:mm.
string
Filter by optional UTC date and time for the first invoice period that includes this product line; inclusive, and null starts billing immediately. less than or equal to this value. Format: YYYY-MM-DDTHH:mm.
string
Filter by optional UTC date and time for the first invoice period that excludes this product line; exclusive, and null continues billing indefinitely. greater than or equal to this value. Format: YYYY-MM-DDTHH:mm.
string
Filter by optional UTC date and time for the first invoice period that excludes this product line; exclusive, and null continues billing indefinitely. less than or equal to this value. Format: YYYY-MM-DDTHH:mm.
string
Filter records created on or after this date. Format: YYYY-MM-DDTHH:mm.
string
Filter records created on or before this date. Format: YYYY-MM-DDTHH:mm.
string
Filter records updated on or after this date. Format: YYYY-MM-DDTHH:mm.
string
Filter records updated on or before this date. Format: YYYY-MM-DDTHH:mm.

Code Examples

Simple listing

Filtering by CreatedOn

Range filters

Response

200

ContractProduct[]
The list of ContractProduct records matching the query. See the Get one ContractProduct endpoint for the full list of properties returned for each record.
Partial records — The listing endpoint returns a summary representation of each ContractProduct. The following fields are not populated in the Records[] response: Notes.To get all fields, fetch the full record using the Get one ContractProduct endpoint.Important for updates: When updating a record via PUT, always retrieve the full record with a GET request first, apply your changes to that complete data, and then send the updated record. Do not use data from a listing response as the base for a PUT request, as missing fields may be unintentionally cleared.
integer
Current page number.
integer
Number of records per page.
string
The field used for sorting.
integer
The sort direction (0 = ascending, 1 = descending).
integer
Index of the first item on the current page.
integer
Index of the last item on the current page.
integer
Total number of matching records across all pages.
integer
Total number of pages.
boolean
Whether there is a next page of results.
boolean
Whether there is a previous page of results.
Example Response