New to Corsair? See API access, authentication, and error handling.
Appointments
get
appointments.get
Fetch one appointment with its start, end, location and recurrence settings
Risk: read
await corsair.rentman.api.appointments.get({ appointment_id: 55 });
| Name | Type | Required | Description |
|---|---|---|---|
appointment_id | number | Yes | — |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
| Name | Type | Required | Description |
|---|---|---|---|
appointment | object | Yes | — |
appointment full type
appointment full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
start?: string | null,
end?: string | null,
color?: string | null,
location?: string | null,
remark?: string | null,
is_public?: boolean | null,
is_plannable?: boolean | null,
recurrence_interval_unit?: string | null,
recurrence_enddate?: string | null,
recurrence_interval?: number | null,
recurrence_group?: number | null,
recurrence_weekdays?: string | null,
synchronization_id?: string | null,
synchronisation_uri?: string | null
}
list
appointments.list
List calendar appointments with start and end filters plus cursor paging
Risk: read
await corsair.rentman.api.appointments.list({ start: { gte: '2026-07-01' } });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
start | object | No | — |
end | object | No | — |
modified | object | No | — |
lt, gt, lte, gte and neq.
start full type
start full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
end full type
end full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
appointments | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
appointments full type
appointments full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
start?: string | null,
end?: string | null,
color?: string | null,
location?: string | null,
remark?: string | null,
is_public?: boolean | null,
is_plannable?: boolean | null,
recurrence_interval_unit?: string | null,
recurrence_enddate?: string | null,
recurrence_interval?: number | null,
recurrence_group?: number | null,
recurrence_weekdays?: string | null,
synchronization_id?: string | null,
synchronisation_uri?: string | null
}[]
Contacts
create
contacts.create
Create a company or person contact with its mailing, visit and invoice addresses
Risk: write
await corsair.rentman.api.contacts.create({ name: 'Acme Inc', type: 'company', email: 'info@acme.example', mailing_address: { street: 'Damrak', city: 'Amsterdam', country: 'nl' } });
| Name | Type | Required | Description |
|---|---|---|---|
folder | string | No | — |
type | private | company | No | company or private (a person); Rentman derives displayname from it. |
ext_name_line | string | No | — |
name | string | No | The company name. |
firstname | string | No | — |
surname | string | No | — |
surfix | string | No | — |
gender | string | No | — |
code | string | No | — |
accounting_code | string | No | — |
vendor_accounting_code | string | No | — |
country | string | No | The visit address country, a two-letter code such as nl. Same as visit_address.country. |
longitude | number | No | — |
latitude | number | No | — |
distance | number | No | — |
travel_time | number | No | — |
email | string | No | The primary email address, stored as email_1. |
phone | string | No | The primary phone number, stored as phone_1. |
mailing_address | object | No | — |
visit_address | object | No | — |
invoice_address | object | No | — |
mailing_, visit_ and invoice_ prefixed fields; the visit address country is sent as country.
mailing_address full type
mailing_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
visit_address full type
visit_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
invoice_address full type
invoice_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
contact | object | Yes | — |
contact full type
contact full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
firstname?: string | null,
surname?: string | null,
ext_name_line?: string | null,
surfix?: string | null,
gender?: string | null,
type?: string | null,
code?: string | null,
accounting_code?: string | null,
vendor_accounting_code?: string | null,
folder?: string | Record<string, any> | null,
country?: string | null,
distance?: number | null,
travel_time?: number | null,
longitude?: number | null,
latitude?: number | null,
email_1?: string | null,
email_2?: string | null,
phone_1?: string | null,
phone_2?: string | null,
website?: string | null,
VAT_code?: string | null,
commerce_code?: string | null,
mailing_street?: string | null,
mailing_number?: string | null,
mailing_unit_number?: string | null,
mailing_district?: string | null,
mailing_extra_address_line?: string | null,
mailing_postalcode?: string | null,
mailing_city?: string | null,
mailing_state?: string | null,
mailing_country?: string | null,
visit_street?: string | null,
visit_number?: string | null,
visit_unit_number?: string | null,
visit_district?: string | null,
visit_extra_address_line?: string | null,
visit_postalcode?: string | null,
visit_city?: string | null,
visit_state?: string | null,
invoice_street?: string | null,
invoice_number?: string | null,
invoice_unit_number?: string | null,
invoice_district?: string | null,
invoice_extra_address_line?: string | null,
invoice_postalcode?: string | null,
invoice_city?: string | null,
invoice_state?: string | null,
invoice_country?: string | null,
default_person?: string | Record<string, any> | null,
admin_contactperson?: string | Record<string, any> | null,
tags?: string | null,
custom?: Record<string, any> | null
}
delete
contacts.delete
Delete a contact permanently
Risk: destructive · Irreversible
await corsair.rentman.api.contacts.delete({ contact_id: 12 });
| Name | Type | Required | Description |
|---|---|---|---|
contact_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
success | boolean | Yes | — |
contact_id | number | Yes | — |
get
contacts.get
Fetch one contact with its address blocks and linked items expanded on request
Risk: read
await corsair.rentman.api.contacts.get({ contact_id: 12, expand: ['default_person'] });
| Name | Type | Required | Description |
|---|---|---|---|
contact_id | number | Yes | The contact id. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
| Name | Type | Required | Description |
|---|---|---|---|
contact | object | Yes | — |
contact full type
contact full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
firstname?: string | null,
surname?: string | null,
ext_name_line?: string | null,
surfix?: string | null,
gender?: string | null,
type?: string | null,
code?: string | null,
accounting_code?: string | null,
vendor_accounting_code?: string | null,
folder?: string | Record<string, any> | null,
country?: string | null,
distance?: number | null,
travel_time?: number | null,
longitude?: number | null,
latitude?: number | null,
email_1?: string | null,
email_2?: string | null,
phone_1?: string | null,
phone_2?: string | null,
website?: string | null,
VAT_code?: string | null,
commerce_code?: string | null,
mailing_street?: string | null,
mailing_number?: string | null,
mailing_unit_number?: string | null,
mailing_district?: string | null,
mailing_extra_address_line?: string | null,
mailing_postalcode?: string | null,
mailing_city?: string | null,
mailing_state?: string | null,
mailing_country?: string | null,
visit_street?: string | null,
visit_number?: string | null,
visit_unit_number?: string | null,
visit_district?: string | null,
visit_extra_address_line?: string | null,
visit_postalcode?: string | null,
visit_city?: string | null,
visit_state?: string | null,
invoice_street?: string | null,
invoice_number?: string | null,
invoice_unit_number?: string | null,
invoice_district?: string | null,
invoice_extra_address_line?: string | null,
invoice_postalcode?: string | null,
invoice_city?: string | null,
invoice_state?: string | null,
invoice_country?: string | null,
default_person?: string | Record<string, any> | null,
admin_contactperson?: string | Record<string, any> | null,
tags?: string | null,
custom?: Record<string, any> | null
}
list
contacts.list
List contacts with country, type and folder filters, field projection and cursor paging
Risk: read
await corsair.rentman.api.contacts.list({ country: 'nl', fields: ['displayname', 'email_1'], limit: 100 });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
country | string | No | A two-letter country code. |
type | private | company | No | The contact type: company or private (a person). |
folder | string | No | The folder a contact is filed under, as a path such as /folders/34. |
modified | object | No | — |
modified[gte].
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
contacts | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
contacts full type
contacts full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
firstname?: string | null,
surname?: string | null,
ext_name_line?: string | null,
surfix?: string | null,
gender?: string | null,
type?: string | null,
code?: string | null,
accounting_code?: string | null,
vendor_accounting_code?: string | null,
folder?: string | Record<string, any> | null,
country?: string | null,
distance?: number | null,
travel_time?: number | null,
longitude?: number | null,
latitude?: number | null,
email_1?: string | null,
email_2?: string | null,
phone_1?: string | null,
phone_2?: string | null,
website?: string | null,
VAT_code?: string | null,
commerce_code?: string | null,
mailing_street?: string | null,
mailing_number?: string | null,
mailing_unit_number?: string | null,
mailing_district?: string | null,
mailing_extra_address_line?: string | null,
mailing_postalcode?: string | null,
mailing_city?: string | null,
mailing_state?: string | null,
mailing_country?: string | null,
visit_street?: string | null,
visit_number?: string | null,
visit_unit_number?: string | null,
visit_district?: string | null,
visit_extra_address_line?: string | null,
visit_postalcode?: string | null,
visit_city?: string | null,
visit_state?: string | null,
invoice_street?: string | null,
invoice_number?: string | null,
invoice_unit_number?: string | null,
invoice_district?: string | null,
invoice_extra_address_line?: string | null,
invoice_postalcode?: string | null,
invoice_city?: string | null,
invoice_state?: string | null,
invoice_country?: string | null,
default_person?: string | Record<string, any> | null,
admin_contactperson?: string | Record<string, any> | null,
tags?: string | null,
custom?: Record<string, any> | null
}[]
update
contacts.update
Update a contact: its name, code, addresses, coordinates or contact details
Risk: write
await corsair.rentman.api.contacts.update({ contact_id: 12, name: 'Acme B.V.' });
| Name | Type | Required | Description |
|---|---|---|---|
folder | string | No | — |
type | private | company | No | company or private (a person); Rentman derives displayname from it. |
ext_name_line | string | No | — |
name | string | No | The company name. |
firstname | string | No | — |
surname | string | No | — |
surfix | string | No | — |
gender | string | No | — |
code | string | No | — |
accounting_code | string | No | — |
vendor_accounting_code | string | No | — |
country | string | No | The visit address country, a two-letter code such as nl. Same as visit_address.country. |
longitude | number | No | — |
latitude | number | No | — |
distance | number | No | — |
travel_time | number | No | — |
email | string | No | The primary email address, stored as email_1. |
phone | string | No | The primary phone number, stored as phone_1. |
mailing_address | object | No | — |
visit_address | object | No | — |
invoice_address | object | No | — |
contact_id | number | Yes | — |
mailing_address full type
mailing_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
visit_address full type
visit_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
invoice_address full type
invoice_address full type
{
street?: string,
number?: string,
unit_number?: string,
district?: string,
extra_address_line?: string,
postalcode?: string,
city?: string,
state?: string,
country?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
contact | object | Yes | — |
contact full type
contact full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
firstname?: string | null,
surname?: string | null,
ext_name_line?: string | null,
surfix?: string | null,
gender?: string | null,
type?: string | null,
code?: string | null,
accounting_code?: string | null,
vendor_accounting_code?: string | null,
folder?: string | Record<string, any> | null,
country?: string | null,
distance?: number | null,
travel_time?: number | null,
longitude?: number | null,
latitude?: number | null,
email_1?: string | null,
email_2?: string | null,
phone_1?: string | null,
phone_2?: string | null,
website?: string | null,
VAT_code?: string | null,
commerce_code?: string | null,
mailing_street?: string | null,
mailing_number?: string | null,
mailing_unit_number?: string | null,
mailing_district?: string | null,
mailing_extra_address_line?: string | null,
mailing_postalcode?: string | null,
mailing_city?: string | null,
mailing_state?: string | null,
mailing_country?: string | null,
visit_street?: string | null,
visit_number?: string | null,
visit_unit_number?: string | null,
visit_district?: string | null,
visit_extra_address_line?: string | null,
visit_postalcode?: string | null,
visit_city?: string | null,
visit_state?: string | null,
invoice_street?: string | null,
invoice_number?: string | null,
invoice_unit_number?: string | null,
invoice_district?: string | null,
invoice_extra_address_line?: string | null,
invoice_postalcode?: string | null,
invoice_city?: string | null,
invoice_state?: string | null,
invoice_country?: string | null,
default_person?: string | Record<string, any> | null,
admin_contactperson?: string | Record<string, any> | null,
tags?: string | null,
custom?: Record<string, any> | null
}
Crew
get
crew.get
Fetch one crew member with their contact details, address and custom fields
Risk: read
await corsair.rentman.api.crew.get({ crew_id: 44 });
| Name | Type | Required | Description |
|---|---|---|---|
crew_id | number | Yes | — |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
| Name | Type | Required | Description |
|---|---|---|---|
crew | object | Yes | — |
crew full type
crew full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
firstname?: string | null,
middle_name?: string | null,
lastname?: string | null,
email?: string | null,
phone?: string | null,
active?: boolean | null,
avatar?: string | Record<string, any> | null,
folder?: string | Record<string, any> | null,
company_name?: string | null,
external_reference?: string | null,
tags?: string | null,
street?: string | null,
housenumber?: string | null,
unit_number?: string | null,
district?: string | null,
city?: string | null,
postal_code?: string | null,
addressline2?: string | null,
extraaddressline?: string | null,
state?: string | null,
country?: string | null,
default_warehouse?: string | Record<string, any> | null,
custom?: Record<string, any> | null
}
list
crew.list
List crew members with name and active filters, field projection and cursor paging
Risk: read
await corsair.rentman.api.crew.list({ active: true, sort: '+lastname' });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
name | object | No | — |
active | boolean | No | — |
modified | object | No | — |
name full type
name full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
crew | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
crew full type
crew full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
firstname?: string | null,
middle_name?: string | null,
lastname?: string | null,
email?: string | null,
phone?: string | null,
active?: boolean | null,
avatar?: string | Record<string, any> | null,
folder?: string | Record<string, any> | null,
company_name?: string | null,
external_reference?: string | null,
tags?: string | null,
street?: string | null,
housenumber?: string | null,
unit_number?: string | null,
district?: string | null,
city?: string | null,
postal_code?: string | null,
addressline2?: string | null,
extraaddressline?: string | null,
state?: string | null,
country?: string | null,
default_warehouse?: string | Record<string, any> | null,
custom?: Record<string, any> | null
}[]
Equipment
create
equipment.create
Create an equipment item with its code, price, replacement value, dimensions and remarks
Risk: write
await corsair.rentman.api.equipment.create({ name: 'Yamaha QL5 Mixer', code: 'AUD-001', price: 150, list_price: 12000 });
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The equipment name. |
code | string | No | — |
in_shop | boolean | No | Whether the item is offered in the shop. Equipment has no active flag. |
folder | string | No | A folder link such as /folders/11. |
type | item | set | case | No | — |
price | number | No | The rental price. |
list_price | number | No | The replacement value. |
weight | number | No | — |
volume | number | No | — |
power | number | No | — |
height | number | No | — |
width | number | No | — |
length | number | No | — |
internal_remark | string | No | — |
external_remark | string | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
equipment | object | Yes | — |
equipment full type
equipment full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
code?: string | null,
folder?: string | Record<string, any> | null,
factor_group?: string | Record<string, any> | null,
unit?: string | null,
type?: string | null,
taxclass?: string | Record<string, any> | null,
ledger?: string | Record<string, any> | null,
ledger_debit?: string | Record<string, any> | null,
defaultgroup?: string | null,
country_of_origin?: string | null,
image?: string | Record<string, any> | null,
in_shop?: boolean | null,
in_planner?: boolean | null,
in_archive?: boolean | null,
rental_sales?: string | null,
is_physical?: string | null,
temporary?: boolean | null,
stock_management?: string | null,
price?: number | null,
list_price?: number | null,
subrental_costs?: number | null,
critical_stock_level?: number | null,
volume?: number | null,
packed_per?: number | null,
height?: number | null,
width?: number | null,
length?: number | null,
weight?: number | null,
empty_weight?: number | null,
power?: number | null,
current?: number | null,
internal_remark?: string | null,
external_remark?: string | null,
custom?: Record<string, any> | null
}
get
equipment.get
Fetch one equipment item with its pricing, dimensions and stock settings
Risk: read
await corsair.rentman.api.equipment.get({ equipment_id: 33 });
| Name | Type | Required | Description |
|---|---|---|---|
equipment_id | number | Yes | — |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
| Name | Type | Required | Description |
|---|---|---|---|
equipment | object | Yes | — |
equipment full type
equipment full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
code?: string | null,
folder?: string | Record<string, any> | null,
factor_group?: string | Record<string, any> | null,
unit?: string | null,
type?: string | null,
taxclass?: string | Record<string, any> | null,
ledger?: string | Record<string, any> | null,
ledger_debit?: string | Record<string, any> | null,
defaultgroup?: string | null,
country_of_origin?: string | null,
image?: string | Record<string, any> | null,
in_shop?: boolean | null,
in_planner?: boolean | null,
in_archive?: boolean | null,
rental_sales?: string | null,
is_physical?: string | null,
temporary?: boolean | null,
stock_management?: string | null,
price?: number | null,
list_price?: number | null,
subrental_costs?: number | null,
critical_stock_level?: number | null,
volume?: number | null,
packed_per?: number | null,
height?: number | null,
width?: number | null,
length?: number | null,
weight?: number | null,
empty_weight?: number | null,
power?: number | null,
current?: number | null,
internal_remark?: string | null,
external_remark?: string | null,
custom?: Record<string, any> | null
}
list
equipment.list
List equipment with name, code and shop-availability filters, field projection and cursor paging
Risk: read
await corsair.rentman.api.equipment.list({ in_shop: true, name: { eq: 'Yamaha QL5 Mixer' } });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
name | object | No | — |
code | object | No | — |
in_shop | boolean | No | — |
folder | string | No | — |
modified | object | No | — |
active flag; availability is in_shop, in_planner and in_archive.
name full type
name full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
code full type
code full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
equipment | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
equipment full type
equipment full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
code?: string | null,
folder?: string | Record<string, any> | null,
factor_group?: string | Record<string, any> | null,
unit?: string | null,
type?: string | null,
taxclass?: string | Record<string, any> | null,
ledger?: string | Record<string, any> | null,
ledger_debit?: string | Record<string, any> | null,
defaultgroup?: string | null,
country_of_origin?: string | null,
image?: string | Record<string, any> | null,
in_shop?: boolean | null,
in_planner?: boolean | null,
in_archive?: boolean | null,
rental_sales?: string | null,
is_physical?: string | null,
temporary?: boolean | null,
stock_management?: string | null,
price?: number | null,
list_price?: number | null,
subrental_costs?: number | null,
critical_stock_level?: number | null,
volume?: number | null,
packed_per?: number | null,
height?: number | null,
width?: number | null,
length?: number | null,
weight?: number | null,
empty_weight?: number | null,
power?: number | null,
current?: number | null,
internal_remark?: string | null,
external_remark?: string | null,
custom?: Record<string, any> | null
}[]
update
equipment.update
Update an equipment item: its name, code, price, dimensions or remarks
Risk: write
await corsair.rentman.api.equipment.update({ equipment_id: 33, price: 165 });
| Name | Type | Required | Description |
|---|---|---|---|
name | string | No | The equipment name. |
code | string | No | — |
in_shop | boolean | No | Whether the item is offered in the shop. Equipment has no active flag. |
folder | string | No | A folder link such as /folders/11. |
type | item | set | case | No | — |
price | number | No | The rental price. |
list_price | number | No | The replacement value. |
weight | number | No | — |
volume | number | No | — |
power | number | No | — |
height | number | No | — |
width | number | No | — |
length | number | No | — |
internal_remark | string | No | — |
external_remark | string | No | — |
equipment_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
equipment | object | Yes | — |
equipment full type
equipment full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
code?: string | null,
folder?: string | Record<string, any> | null,
factor_group?: string | Record<string, any> | null,
unit?: string | null,
type?: string | null,
taxclass?: string | Record<string, any> | null,
ledger?: string | Record<string, any> | null,
ledger_debit?: string | Record<string, any> | null,
defaultgroup?: string | null,
country_of_origin?: string | null,
image?: string | Record<string, any> | null,
in_shop?: boolean | null,
in_planner?: boolean | null,
in_archive?: boolean | null,
rental_sales?: string | null,
is_physical?: string | null,
temporary?: boolean | null,
stock_management?: string | null,
price?: number | null,
list_price?: number | null,
subrental_costs?: number | null,
critical_stock_level?: number | null,
volume?: number | null,
packed_per?: number | null,
height?: number | null,
width?: number | null,
length?: number | null,
weight?: number | null,
empty_weight?: number | null,
power?: number | null,
current?: number | null,
internal_remark?: string | null,
external_remark?: string | null,
custom?: Record<string, any> | null
}
Invoices
get
invoices.get
Fetch one invoice with its totals, balance and payment state
Risk: read
await corsair.rentman.api.invoices.get({ invoice_id: 66 });
| Name | Type | Required | Description |
|---|---|---|---|
invoice_id | number | Yes | — |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
| Name | Type | Required | Description |
|---|---|---|---|
invoice | object | Yes | — |
invoice full type
invoice full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
number?: string | null,
subject?: string | null,
project?: string | Record<string, any> | null,
customer?: string | Record<string, any> | null,
contact?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
date?: string | null,
expiration?: string | null,
invoicetype?: string | null,
finalized?: boolean | null,
price?: number | null,
price_invat?: number | null,
vat_amount?: number | null,
total_paid?: number | null,
outstanding_balance?: number | null,
is_paid?: boolean | null,
date_sent?: string | null,
payment_date?: string | null
}
list
invoices.list
List invoices with number and project filters plus cursor paging
Risk: read
await corsair.rentman.api.invoices.list({ project: 201, number: { eq: 'F-2026-001' } });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
number | object | No | — |
project | number | No | — |
modified | object | No | — |
number full type
number full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
invoices | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
invoices full type
invoices full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
number?: string | null,
subject?: string | null,
project?: string | Record<string, any> | null,
customer?: string | Record<string, any> | null,
contact?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
date?: string | null,
expiration?: string | null,
invoicetype?: string | null,
finalized?: boolean | null,
price?: number | null,
price_invat?: number | null,
vat_amount?: number | null,
total_paid?: number | null,
outstanding_balance?: number | null,
is_paid?: boolean | null,
date_sent?: string | null,
payment_date?: string | null
}[]
Projects
create
projects.create
Create a project with its number, account manager and deposit settings (Rentman sets no customer through the API)
Risk: write
await corsair.rentman.api.projects.create({ name: 'Festival 2026', number: 'P-2026-001', account_manager: 44 });
| Name | Type | Required | Description |
|---|---|---|---|
name | string | Yes | The project name. |
number | string | No | — |
reference | string | No | — |
account_manager | number | No | A crew member id, sent as the link /crew/<id>. |
deposit_status | no_deposit_paid | deposit_paid | deposit_returned | No | — |
color | string | No | — |
conditions | string | No | — |
refundabledeposit | number | No | — |
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
number?: number | string | null,
reference?: string | null,
project_type?: string | Record<string, any> | null,
deposit_status?: string | null,
color?: string | null,
conditions?: string | null,
tags?: string | null,
customer?: string | Record<string, any> | null,
cust_contact?: string | Record<string, any> | null,
loc_contact?: string | Record<string, any> | null,
location?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
usageperiod_start?: string | null,
usageperiod_end?: string | null,
planperiod_start?: string | null,
planperiod_end?: string | null,
equipment_period_from?: string | null,
equipment_period_to?: string | null,
refundabledeposit?: number | null,
project_total_price?: number | null,
project_rental_price?: number | null,
project_sale_price?: number | null,
project_crew_price?: number | null,
project_transport_price?: number | null,
project_other_price?: number | null,
project_insurance_price?: number | null,
project_services_price?: number | null,
estimated_cost?: number | null,
planned_cost?: number | null,
actual_cost?: number | null,
already_invoiced?: number | null,
weight?: number | null,
power?: number | null,
current?: number | null,
purchasecosts?: number | null,
volume?: number | null,
custom?: Record<string, any> | null
}
get
projects.get
Fetch one project with its customer, totals and period fields, expanding linked items on request
Risk: read
await corsair.rentman.api.projects.get({ project_id: 201, expand: ['customer'] });
| Name | Type | Required | Description |
|---|---|---|---|
project_id | number | Yes | — |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
/contacts/12 unless expand inlines it.
Output
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
number?: number | string | null,
reference?: string | null,
project_type?: string | Record<string, any> | null,
deposit_status?: string | null,
color?: string | null,
conditions?: string | null,
tags?: string | null,
customer?: string | Record<string, any> | null,
cust_contact?: string | Record<string, any> | null,
loc_contact?: string | Record<string, any> | null,
location?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
usageperiod_start?: string | null,
usageperiod_end?: string | null,
planperiod_start?: string | null,
planperiod_end?: string | null,
equipment_period_from?: string | null,
equipment_period_to?: string | null,
refundabledeposit?: number | null,
project_total_price?: number | null,
project_rental_price?: number | null,
project_sale_price?: number | null,
project_crew_price?: number | null,
project_transport_price?: number | null,
project_other_price?: number | null,
project_insurance_price?: number | null,
project_services_price?: number | null,
estimated_cost?: number | null,
planned_cost?: number | null,
actual_cost?: number | null,
already_invoiced?: number | null,
weight?: number | null,
power?: number | null,
current?: number | null,
purchasecosts?: number | null,
volume?: number | null,
custom?: Record<string, any> | null
}
list
projects.list
List rental projects with name and number filters, field projection and cursor paging
Risk: read
await corsair.rentman.api.projects.list({ name: { eq: 'Festival 2026' }, limit: 50 });
| Name | Type | Required | Description |
|---|---|---|---|
limit | number | No | Records per page, 1 to 1500. Rentman uses 300 when omitted and carries the value into later pages. |
cursor | string | No | The next_cursor from the previous page, used verbatim. Rentman warns against constructing or editing it. |
fields | string[] | No | Return only these fields. id, created and modified always come back. |
expand | string[] | No | Inline these linked resources instead of returning a path string. Nested links use dot notation and go three levels deep at most. |
sort | string | No | A comma-separated sort, such as +id,-firstname: + ascending, - descending. |
name | object | No | — |
number | object | No | — |
deposit_status | string | No | no_deposit_paid, deposit_paid or deposit_returned. |
modified | object | No | — |
name full type
name full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
number full type
number full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
modified full type
modified full type
{
eq?: string,
neq?: string,
lt?: string,
gt?: string,
lte?: string,
gte?: string
}
| Name | Type | Required | Description |
|---|---|---|---|
projects | object[] | Yes | — |
next_cursor | string | null | Yes | Pass as cursor to read the next page; null on the last. |
next_page_url | string | null | Yes | The absolute next-page URL, for callers that follow it directly. |
item_count | number | Yes | Items in this page. |
limit | number | null | No | — |
projects full type
projects full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
number?: number | string | null,
reference?: string | null,
project_type?: string | Record<string, any> | null,
deposit_status?: string | null,
color?: string | null,
conditions?: string | null,
tags?: string | null,
customer?: string | Record<string, any> | null,
cust_contact?: string | Record<string, any> | null,
loc_contact?: string | Record<string, any> | null,
location?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
usageperiod_start?: string | null,
usageperiod_end?: string | null,
planperiod_start?: string | null,
planperiod_end?: string | null,
equipment_period_from?: string | null,
equipment_period_to?: string | null,
refundabledeposit?: number | null,
project_total_price?: number | null,
project_rental_price?: number | null,
project_sale_price?: number | null,
project_crew_price?: number | null,
project_transport_price?: number | null,
project_other_price?: number | null,
project_insurance_price?: number | null,
project_services_price?: number | null,
estimated_cost?: number | null,
planned_cost?: number | null,
actual_cost?: number | null,
already_invoiced?: number | null,
weight?: number | null,
power?: number | null,
current?: number | null,
purchasecosts?: number | null,
volume?: number | null,
custom?: Record<string, any> | null
}[]
update
projects.update
Update a project: its name, number, reference, account manager or deposit settings
Risk: write
await corsair.rentman.api.projects.update({ project_id: 201, reference: 'PO-9988' });
| Name | Type | Required | Description |
|---|---|---|---|
name | string | No | The project name. |
number | string | No | — |
reference | string | No | — |
account_manager | number | No | A crew member id, sent as the link /crew/<id>. |
deposit_status | no_deposit_paid | deposit_paid | deposit_returned | No | — |
color | string | No | — |
conditions | string | No | — |
refundabledeposit | number | No | — |
project_id | number | Yes | — |
| Name | Type | Required | Description |
|---|---|---|---|
project | object | Yes | — |
project full type
project full type
{
id?: number | null,
created?: string | null,
modified?: string | null,
creator?: string | Record<string, any> | null,
displayname?: string | null,
name?: string | null,
number?: number | string | null,
reference?: string | null,
project_type?: string | Record<string, any> | null,
deposit_status?: string | null,
color?: string | null,
conditions?: string | null,
tags?: string | null,
customer?: string | Record<string, any> | null,
cust_contact?: string | Record<string, any> | null,
loc_contact?: string | Record<string, any> | null,
location?: string | Record<string, any> | null,
account_manager?: string | Record<string, any> | null,
usageperiod_start?: string | null,
usageperiod_end?: string | null,
planperiod_start?: string | null,
planperiod_end?: string | null,
equipment_period_from?: string | null,
equipment_period_to?: string | null,
refundabledeposit?: number | null,
project_total_price?: number | null,
project_rental_price?: number | null,
project_sale_price?: number | null,
project_crew_price?: number | null,
project_transport_price?: number | null,
project_other_price?: number | null,
project_insurance_price?: number | null,
project_services_price?: number | null,
estimated_cost?: number | null,
planned_cost?: number | null,
actual_cost?: number | null,
already_invoiced?: number | null,
weight?: number | null,
power?: number | null,
current?: number | null,
purchasecosts?: number | null,
volume?: number | null,
custom?: Record<string, any> | null
}