A ProductExtraService links an ExtraService to a Product. The meaning of UsesIncluded depends on the type of the linked extra service:
- Booking time (ExtraService with
IsPrintingCredit = false) — customers receive an allowance of booking time for the resource type(s) associated with that extra service. For example, a product called “Hot Desk Bundle” might include 2 hours of meeting room usage — achieved by linking a “Meeting Room Hourly” extra service with “UsesIncluded 120.
- Printing credit (ExtraService with
IsPrintingCredit = true) — customers receive a number of print jobs/pages. UsesIncluded is the number of printing credits included. The linked extra service must have ChargePeriod = 5 (Uses) and Price = 1.
Always check IsPrintingCredit on the linked extra service before interpreting UsesIncluded.
For booking-time extra services, the unit of UsesIncluded is determined by the ChargePeriod of the linked ExtraService:
| ExtraService ChargePeriod | UsesIncluded unit |
|---|
| 1 (Minutes) | Minutes |
| 2 (Days) | Days |
| 3 (Weeks) | Weeks |
| 4 (Months) | Months |
| 5 (Uses) | Individual uses |
| 6 (FourWeekMonths) | 4-week periods |
So “UsesIncluded 60 on a minutes extra service means 60 minutes of booking time included. On a daily extra service it means 60 full days.
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 ProductExtraService-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
Filter by Extra Service Id.
Filter by extra service name.
Filter by charge period of the linked extra service.
Filter by benefit is booking credit.
Filter by benefit is printing credit.
Filter by Expire Time In Months.
Filter by Expire Time In Weeks.
Filter by expiration type.
Range Filters
Filter by uses included greater than or equal to this value.
Filter by uses included less than or equal to this value.
Filter by expire time in months greater than or equal to this value.
Filter by expire time in months less than or equal to this value.
Filter by expire time in weeks greater than or equal to this value.
Filter by expire time in weeks less than or equal to this value.
Filter by expires in greater than or equal to this value.
Filter by expires in less than or equal to this value.
Filter records created on or after this date. Format: YYYY-MM-DDTHH:mm.
Filter records created on or before this date. Format: YYYY-MM-DDTHH:mm.
Filter records updated on or after this date. Format: YYYY-MM-DDTHH:mm.
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/productextraservices?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/productextraservices?ProductExtraService_CreatedOn=example-value&orderBy=CreatedOn&dir=1" \
-H "Authorization: Bearer YOUR_TOKEN"
Range filters
curl -X GET \
"https://spaces.nexudus.com/api/billing/productextraservices?from_ProductExtraService_UpdatedOn=2025-01-01T00:00&to_ProductExtraService_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=-1" \
-H "Authorization: Bearer YOUR_TOKEN"
Response
200
The list of ProductExtraService records matching the query. See the Get one ProductExtraService endpoint for the full list of properties returned for each record.
Partial records — The listing endpoint returns a summary representation of each ProductExtraService. The following fields are not included in the Records[] response: ExpireTimeInMonths, ExpireTimeInWeeks, ExpiresIn.To get all fields, fetch the full record using the Get one ProductExtraService 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": [
{
"ProductId": 0,
"ProductName": null,
"ExtraServiceId": 0,
"ExtraServiceName": null,
"ExtraServiceChargePeriod": null,
"ExtraServiceIsBookingCredit": false,
"ExtraServiceIsPrintingCredit": false,
"UsesIncluded": 0,
"ExpireTimeInMonths": null,
"ExpireTimeInWeeks": null,
"ExpirationType": 0,
"ExpiresIn": null,
"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": "ProductExtraService 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
}