> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corsair.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Rentman API reference

> API reference for the Rentman plugin in Corsair: every `rentman.api.*` operation with its input and output types, taken from the plugin's Zod schemas.

> [!NOTE]
>
> **New to Corsair?** See [API access](https://docs.corsair.dev/concepts/api.md), [authentication](https://docs.corsair.dev/concepts/auth.md), and [error handling](https://docs.corsair.dev/concepts/error-handling).

## Appointments

### get

`appointments.get`

Fetch one appointment with its start, end, location and recurrence settings

**Risk:** `read`

```ts theme={null}
await corsair.rentman.api.appointments.get({ appointment_id: 55 });
```

**Input**

| 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. |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `appointment` | `object` | Yes | — |

> [accordion] appointment full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.appointments.list({ start: { gte: '2026-07-01' } });
```

**Input**

| 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 | — |

The date operators are `lt`, `gt`, `lte`, `gte` and `neq`.

> [accordion] start full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] end full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] appointments full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.contacts.create({ name: 'Acme Inc', type: 'company', email: 'info@acme.example', mailing_address: { street: 'Damrak', city: 'Amsterdam', country: 'nl' } });
```

**Input**

| 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 | — |

The three address blocks are folded into `mailing_`, `visit_` and `invoice_` prefixed fields; the visit address country is sent as `country`.

> [accordion] mailing\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

> [accordion] visit\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

> [accordion] invoice\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `contact` | `object` | Yes | — |

> [accordion] contact full type
>
> ```ts theme={null}
> {
>   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**

```ts theme={null}
await corsair.rentman.api.contacts.delete({ contact_id: 12 });
```

**Input**

| Name | Type | Required | Description |
| - | - | - | - |
| `contact_id` | `number` | Yes | — |

Permanent; the API has no undo.

**Output**

| 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`

```ts theme={null}
await corsair.rentman.api.contacts.get({ contact_id: 12, expand: ['default_person'] });
```

**Input**

| 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. |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `contact` | `object` | Yes | — |

> [accordion] contact full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.contacts.list({ country: 'nl', fields: ['displayname', 'email_1'], limit: 100 });
```

**Input**

| 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 | — |

The operator keys are percent-encoded brackets, such as `modified[gte]`.

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] contacts full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.contacts.update({ contact_id: 12, name: 'Acme B.V.' });
```

**Input**

| 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 | — |

> [accordion] mailing\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

> [accordion] visit\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

> [accordion] invoice\_address full type
>
> ```ts theme={null}
> {
>   street?: string,
>   number?: string,
>   unit_number?: string,
>   district?: string,
>   extra_address_line?: string,
>   postalcode?: string,
>   city?: string,
>   state?: string,
>   country?: string
> }
> ```

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `contact` | `object` | Yes | — |

> [accordion] contact full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.crew.get({ crew_id: 44 });
```

**Input**

| 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. |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `crew` | `object` | Yes | — |

> [accordion] crew full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.crew.list({ active: true, sort: '+lastname' });
```

**Input**

| 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 | — |

> [accordion] name full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] crew full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.equipment.create({ name: 'Yamaha QL5 Mixer', code: 'AUD-001', price: 150, list_price: 12000 });
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `equipment` | `object` | Yes | — |

> [accordion] equipment full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.equipment.get({ equipment_id: 33 });
```

**Input**

| 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. |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `equipment` | `object` | Yes | — |

> [accordion] equipment full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.equipment.list({ in_shop: true, name: { eq: 'Yamaha QL5 Mixer' } });
```

**Input**

| 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 | — |

Equipment has no `active` flag; availability is `in_shop`, `in_planner` and `in_archive`.

> [accordion] name full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] code full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] equipment full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.equipment.update({ equipment_id: 33, price: 165 });
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `equipment` | `object` | Yes | — |

> [accordion] equipment full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.invoices.get({ invoice_id: 66 });
```

**Input**

| 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. |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `invoice` | `object` | Yes | — |

> [accordion] invoice full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.invoices.list({ project: 201, number: { eq: 'F-2026-001' } });
```

**Input**

| 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 | — |

> [accordion] number full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] invoices full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.projects.create({ name: 'Festival 2026', number: 'P-2026-001', account_manager: 44 });
```

**Input**

| 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 | — |

Rentman refuses a customer on project writes; set it in the Rentman app.

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `project` | `object` | Yes | — |

> [accordion] project full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.projects.get({ project_id: 201, expand: ['customer'] });
```

**Input**

| 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. |

A linked item is a path like `/contacts/12` unless `expand` inlines it.

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `project` | `object` | Yes | — |

> [accordion] project full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.projects.list({ name: { eq: 'Festival 2026' }, limit: 50 });
```

**Input**

| 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 | — |

> [accordion] name full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] number full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

> [accordion] modified full type
>
> ```ts theme={null}
> {
>   eq?: string,
>   neq?: string,
>   lt?: string,
>   gt?: string,
>   lte?: string,
>   gte?: string
> }
> ```

**Output**

| 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 | — |

> [accordion] projects full type
>
> ```ts theme={null}
> {
>   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`

```ts theme={null}
await corsair.rentman.api.projects.update({ project_id: 201, reference: 'PO-9988' });
```

**Input**

| 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 | — |

**Output**

| Name | Type | Required | Description |
| - | - | - | - |
| `project` | `object` | Yes | — |

> [accordion] project full type
>
> ```ts theme={null}
> {
>   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
> }
> ```

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.