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

# Labours

> Manage labours in Exsited: labours, labour profiles and their sessions, availability, booking windows and orders.

Labours are the people or resources you book on orders, and labour profiles set their prices, sessions and availability. You can manage labours and profiles, set availability, find labours free to book and list the orders that book a labour. This area has 19 endpoints, each available in all seven SDKs.

> [!WARNING]
>
> **A booked labour cannot be deleted, and deletes cannot be undone.** To take a booked labour out of use, cancel it instead; a labour profile that a booked labour uses cannot be deleted either. After a delete, reading the labour or labour profile returns `404`.

## At a glance

| Endpoint | Method | Path | What it does |
| - | - | - | - |
| [List labour availability](https://exsited.mintlify.site/api-reference/labours/list-labour-availability.md) | GET | `/labour_availability` | Lists each labour with its schedule and sessions for a date range. |
| [List labour profiles](https://exsited.mintlify.site/api-reference/labours/list-labour-profiles.md) | GET | `/labour_profiles` | Lists labour profiles, one page at a time. |
| [Create a labour profile](https://exsited.mintlify.site/api-reference/labours/create-a-labour-profile.md) | POST | `/labour_profiles` | Creates a labour profile with its sessions, prices and availability. |
| [List labours](https://exsited.mintlify.site/api-reference/labours/list-labours.md) | GET | `/labours` | Lists labours, one page at a time. |
| [Create a labour](https://exsited.mintlify.site/api-reference/labours/create-a-labour.md) | POST | `/labours` | Creates a labour on a labour profile and returns it under `labour`. |
| [Retrieve a labour profile](https://exsited.mintlify.site/api-reference/labours/retrieve-a-labour-profile.md) | GET | `/labour_profiles/{labour_profile_id}` | Retrieves one labour profile with its sessions and labours. |
| [Update a labour profile](https://exsited.mintlify.site/api-reference/labours/update-a-labour-profile.md) | PATCH | `/labour_profiles/{labour_profile_id}` | Updates a labour profile's details. |
| [Delete a labour profile](https://exsited.mintlify.site/api-reference/labours/delete-a-labour-profile.md) | DELETE | `/labour_profiles/{labour_profile_id}` | Deletes a labour profile. |
| [List labours available for booking](https://exsited.mintlify.site/api-reference/labours/list-labours-available-for-booking.md) | GET | `/labours/available_for_booking` | Lists the labours free to book in a time window. |
| [Update a labour](https://exsited.mintlify.site/api-reference/labours/update-a-labour.md) | PATCH | `/labours/{labour_uuid}` | Updates a labour and returns it under `labour`. |
| [Delete a labour](https://exsited.mintlify.site/api-reference/labours/delete-a-labour.md) | DELETE | `/labours/{labour_uuid}` | Deletes a labour; the response has no body. |
| [Retrieve a labour](https://exsited.mintlify.site/api-reference/labours/retrieve-a-labour.md) | GET | `/labours/{labour_uuid}` | Retrieves one labour with its profile, contacts and availability. |
| [Cancel a labour](https://exsited.mintlify.site/api-reference/labours/cancel-a-labour.md) | POST | `/labours/{labour_id}/cancel` | Makes a labour inactive and returns it under `labour`. |
| [Reactivate a labour](https://exsited.mintlify.site/api-reference/labours/reactivate-a-labour.md) | POST | `/labours/{labour_id}/reactivate` | Makes a cancelled labour active again and returns it under `labour`. |
| [List a labour's orders](https://exsited.mintlify.site/api-reference/labours/list-a-labours-orders.md) | GET | `/labours/{labour_uuid}/orders` | Lists the orders that book one labour. |
| [Update labour availability in bulk](https://exsited.mintlify.site/api-reference/labours/update-labour-availability-in-bulk.md) | PATCH | `/labour_availability` | Sets the availability slots of one or more labours in one call. |
| [List a labour profile's sessions](https://exsited.mintlify.site/api-reference/labours/list-a-labour-profiles-sessions.md) | GET | `/labour_profiles/{labour_profile_id}/sessions` | Lists the sessions of one labour profile. |
| [Retrieve a labour profile session](https://exsited.mintlify.site/api-reference/labours/retrieve-a-labour-profile-session.md) | GET | `/labour_profiles/{labour_profile_id}/sessions/{session_id}` | Retrieves one session of a labour profile. |
| [Retrieve a labour's availability calendar](https://exsited.mintlify.site/api-reference/labours/retrieve-a-labours-availability-calendar.md) | GET | `/labours/{labour_id}/availability` | Retrieves one labour's availability calendar. |

## Before you call

Register your API credentials once when your app starts, as shown in
[Authentication](https://exsited.mintlify.site/authentication.md). Every SDK sample on these pages then gets its client in one line.
With cURL, send the access token in an `Authorization` header: `Authorization: Bearer $ACCESS_TOKEN`.

## Things to know

* **Requests and responses use a wrapper key.** Labours go under `labour`, profiles under `labour_profile`, and the bulk availability update under `labours`; single records come back under `labour`, `labour_profile`, `labour_profile_session` or `labour_calendar`.
* **A new labour profile needs at least one session.** A create without `labour_profile_sessions` is refused with `400`.
* **A labour names its profile by `name`.** Send the profile's `name` as `labour.labour_profile` when you create a labour.
* **Cancel and reactivate take an empty JSON object.** Cancel sets `status` to `inactive`, reactivate sets it to `active`, and reactivating an active labour is refused.
* **Some routes take the labour's `code`.** The orders route takes the `code`, the calendar takes the `id` or the `code`, and the other labour routes take the `id`.
* **Date ranges are query parameters.** The availability list takes `start_date` and `end_date` as `YYYY-MM-DD`; the booking search takes them as `YYYY-MM-DD HH:MM`.


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