A ContractProduct is a product added to a contract that is billed every time the contract is invoiced. Use ContractProduct to append product charges to a specific member’s billing cycle alongside the base plan.
Price — If Price is not set, the price of the underlying product (ProductPrice) is used instead. Set Price to override the product’s default price for this specific contract line.
Billing window — RepeatFrom and RepeatUntil control the date range during which the product is included on invoices. Outside that range the product is silently skipped. Leave both null to bill the product on every invoice.
Pro-rating — ApplyProRating distributes the charge proportionally across the billing period, but only takes effect when the linked location plan has prorating enabled (Tariff.ProrateDaysBefore > 0). If the plan does not have prorating configured, ApplyProRating is ignored.
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
The page number to retrieve.
The number of records per page.
The property name to sort results by (e.g. Name, CreatedOn).
Sort direction. 1 for ascending, -1 for descending.
Filters
ContractProduct_CoworkerContract
Filter by contract to add this product to.
ContractProduct_CoworkerContract_Quantity
Filter by quantity associated with the contract.
ContractProduct_CoworkerContract_FloorPlanDeskIds
Filter by floor plan desk IDs assigned to the contract.
ContractProduct_CoworkerContract_FloorPlanDeskNames
Filter by floor plan desk names assigned to the contract.
ContractProduct_CoworkerContract_Tariff_Name
Filter by coworker contract tariff name.
ContractProduct_CoworkerContract_Coworker_Id
Filter by iD of the member on the contract.
ContractProduct_CoworkerContract_Coworker_FullName
Filter by contract coworker full name.
ContractProduct_CoworkerContract_Coworker_BillingName
Filter by contract coworker billing name.
Filter by product to bill on each contract invoice.
ContractProduct_Product_Name
Filter by product name.
ContractProduct_Product_Price
Filter by product price.
ContractProduct_Product_ApplyProRating
Filter by whether the underlying product applies pro-rating by default.
ContractProduct_Product_Currency_Code
Filter by product currency code.
Filter by price override.
ContractProduct_RepeatFrom
Filter by repeat from date.
ContractProduct_RepeatUntil
Filter by repeat until date.
ContractProduct_ApplyProRating
Filter by apply pro-rating to this product charge. Only takes effect when the location plan has prorating enabled (Tariff.ProrateDaysBefore > 0)..
Range Filters
from_ContractProduct_CoworkerContractQuantity
Filter by quantity associated with the contract greater than or equal to this value.
to_ContractProduct_CoworkerContractQuantity
Filter by quantity associated with the contract less than or equal to this value.
from_ContractProduct_CoworkerContractCoworkerId
Filter by iD of the member on the contract greater than or equal to this value.
to_ContractProduct_CoworkerContractCoworkerId
Filter by iD of the member on the contract less than or equal to this value.
from_ContractProduct_ProductPrice
Filter by product price greater than or equal to this value.
to_ContractProduct_ProductPrice
Filter by product price less than or equal to this value.
from_ContractProduct_Quantity
Filter by quantity greater than or equal to this value.
to_ContractProduct_Quantity
Filter by quantity less than or equal to this value.
from_ContractProduct_Price
Filter by price override greater than or equal to this value.
Filter by price override less than or equal to this value.
from_ContractProduct_RepeatFrom
Filter by repeat from date greater than or equal to this value. Format: YYYY-MM-DDTHH:mm.
to_ContractProduct_RepeatFrom
Filter by repeat from date less than or equal to this value. Format: YYYY-MM-DDTHH:mm.
from_ContractProduct_RepeatUntil
Filter by repeat until date greater than or equal to this value. Format: YYYY-MM-DDTHH:mm.
to_ContractProduct_RepeatUntil
Filter by repeat until date less than or equal to this value. Format: YYYY-MM-DDTHH:mm.
from_ContractProduct_CreatedOn
Filter records created on or after this date. Format: YYYY-MM-DDTHH:mm.
to_ContractProduct_CreatedOn
Filter records created on or before this date. Format: YYYY-MM-DDTHH:mm.
from_ContractProduct_UpdatedOn
Filter records updated on or after this date. Format: YYYY-MM-DDTHH:mm.
to_ContractProduct_UpdatedOn
Filter records updated on or before this date. Format: YYYY-MM-DDTHH:mm.
Code Examples
Simple listing
curl -X GET \
"https://spaces.nexudus.com/api/billing/contractproducts?page=1&size=15&orderBy=CreatedOn&dir=1" \
-H "Authorization: Bearer YOUR_TOKEN"
Filtering by CreatedOn
curl -X GET \
"https://spaces.nexudus.com/api/billing/contractproducts?ContractProduct_CreatedOn=example-value&orderBy=CreatedOn&dir=1" \
-H "Authorization: Bearer YOUR_TOKEN"
Range filters
curl -X GET \
"https://spaces.nexudus.com/api/billing/contractproducts?from_ContractProduct_UpdatedOn=2025-01-01T00:00&to_ContractProduct_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=-1" \
-H "Authorization: Bearer YOUR_TOKEN"
Response
200
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 included 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.
Number of records per page.
The field used for sorting.
The sort direction (1 = ascending, -1 = descending).
Index of the first item on the current page.
Index of the last item on the current page.
Total number of matching records across all pages.
Whether there is a next page of results.
Whether there is a previous page of results.
{
"Records": [
{
"CoworkerContractId": 0,
"CoworkerContractQuantity": null,
"CoworkerContractFloorPlanDeskIds": null,
"CoworkerContractFloorPlanDeskNames": null,
"CoworkerContractTariffName": null,
"CoworkerContractCoworkerId": null,
"CoworkerContractCoworkerFullName": null,
"CoworkerContractCoworkerBillingName": null,
"ProductId": 0,
"ProductName": null,
"ProductPrice": 0,
"ProductApplyProRating": null,
"ProductCurrencyCode": null,
"Notes": null,
"Quantity": 0,
"Price": null,
"RepeatFrom": null,
"RepeatUntil": null,
"ApplyProRating": false,
"Id": 87654321,
"UpdatedOn": "2025-01-15T10:30:00Z",
"CreatedOn": "2025-01-10T08:00:00Z",
"UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"UpdatedBy": "admin@example.com",
"IsNew": false,
"SystemId": null,
"ToStringText": "ContractProduct Example",
"LocalizationDetails": null,
"CustomFields": null
}
],
"CurrentPageSize": 15,
"CurrentPage": 1,
"CurrentOrderField": "CreatedOn",
"CurrentSortDirection": 1,
"FirstItem": 1,
"HasNextPage": false,
"HasPreviousPage": false,
"LastItem": 1,
"PageNumber": 1,
"PageSize": 15,
"TotalItems": 1,
"TotalPages": 1
}