# Developer Docs Documentation > The Developer Docs is where you'll find comprehensive guides and documentation to help you start working with Bob as quickly as possible. Fetch the complete documentation index at: https://apidocs.hibob.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version. ## API Reference: Workforce Planning API - [Workforce Planning](https://apidocs.hibob.com/reference/workforce-planning.md): The Workforce Planning API provides access to positions in your company. - [Get all positions fields](https://apidocs.hibob.com/reference/get_metadata-objects-position.md): Returns a list of all fields of object type position.
- [Get all positions openings fields](https://apidocs.hibob.com/reference/get_positions-position-openings-metadata.md): Returns a list of all fields of object type position opening.
- [Get all position budget fields](https://apidocs.hibob.com/reference/get_positions-position-budget-metadata.md): Returns a list of all fields of object type position budget.
- [Read company positions](https://apidocs.hibob.com/reference/post_objects-position-search.md): This endpoint returns a list of company positions filtered by the specified attributes. Note that this endpoint requires body parameters, which is why it is implemented as a POST request.



**Required permissions**
To access the positions, the service user making the call must have the following permissions:
**Features > Workforce planning > Position management > Manage positions**.
- [Read company positions openings](https://apidocs.hibob.com/reference/post_positions-position-openings-search.md): This endpoint returns a list of company positions openings filtered by the specified attributes. Note that this endpoint requires body parameters, which is why it is implemented as a POST request.

The required body parameters are:
- **Fields**: Specify the fields you want to retrieve. A list of available fields can be found in the 200 response body detailed below.
- **Filters**: Define the filtering conditions. You can filter by the fields defined in the filter section.
- **Pagination**: This endpoint uses cursor-based pagination to handle large number of table entries. To learn more, see Pagination in Bob's API


**Required permissions**
To access the positions, the service user making the call must have the following permissions:
**Features > Workforce planning > Position management > Manage positions**.
- [Read company positions budgets](https://apidocs.hibob.com/reference/post_positions-position-budget-search.md): This endpoint returns a list of company positions budgets filtered by the specified attributes. Note that this endpoint requires body parameters, which is why it is implemented as a POST request.

The required body parameters are:
- **Fields**: Specify the fields you want to retrieve. A list of available fields can be found in the 200 response body detailed below.
- **Filters**: Define the filtering conditions. You can filter by the fields defined in the filter section.
- **Pagination**: This endpoint uses cursor-based pagination to handle large number of table entries. To learn more, see Pagination in Bob's API


**Required permissions**
To access the positions, the service user making the call must have the following permissions:
**Features > Workforce planning > Position management > Manage positions**.
- [Create Position](https://apidocs.hibob.com/reference/post_workforce-planning-positions.md): Creates new positions with associated position opening and optional position budget.

**Limitations:**
- You can create up to 10 positions per request.
- If the request includes more than 10 positions, the operation will fail and return an error.

**Notes:**
- When creating a Position, the position opening is mandatory.
- Position budget is optional and will be created only if the service user has the required permission.
- The endpoint will return the ID of the positions and the position opening that were created. To find out the budget ID you should read the position details.
- Currently, you cannot create "position requests" that require an approval flow, which are not supported via the API.
- This endpoint requires linking the position to a job profile, and can be used only with Job Catalog 2.0. To retrieve the `jobProfile`, use the Job Catalog API.
- For fields that require reference to a list in Bob (e.g. `department`), use the metadata endpoint to fetch list values.
- For custom fields, use the Examples > Request Example, and copy to an external API client tool to add custom fields to the payload.
- [Create Position Opening](https://apidocs.hibob.com/reference/post_workforce-planning-positions-positionid-position-openings.md): Creates a new position opening within a position

**Limitations:**
- You can create up to 10 position openings per request.
- If the request includes more than 10 position openings, the operation will fail and return an error.

**Notes:**
- For fields that require reference to a list in Bob, use the metadata endpoint to fetch list values.
- [Update Position](https://apidocs.hibob.com/reference/patch_workforce-planning-positions-positionid.md): Updates an existing position **Notes:**
- Currently, you cannot use approval flows, which are not supported via the API.
- This endpoint requires linking the position to a job profile, and can be used only with Job Catalog 2.0. To retrieve the `jobProfile`, use the Job Catalog API.
- For fields that require reference to a list in Bob (e.g. `department`), use the metadata endpoint to fetch list values.
- For custom fields, use the Examples > Request Example, and copy to an external API client tool to add custom fields to the payload.
- [Update Position Opening](https://apidocs.hibob.com/reference/patch_workforce-planning-positions-positionid-position-openings-positionopeningid.md): Updates a specific position opening within a position **Notes:**
- For fields that require reference to a list in Bob, use the metadata endpoint to fetch list values.
- [Deletes Position Opening](https://apidocs.hibob.com/reference/delete_workforce-planning-positions-positionid-position-openings-positionopeningid.md): Deletes a position opening - [Create Position Budget](https://apidocs.hibob.com/reference/post_workforce-planning-positions-positionid-position-budget.md): Creates a specific position budget within a position **Limitations:**
- You can create up to 1 budget per request.
- If the request includes more than 1 budget, the operation will fail and return an error.

- [Update Position Budget](https://apidocs.hibob.com/reference/patch_workforce-planning-positions-positionid-position-budget-positionbudgetid.md): Updates a specific position budget within a position - [Schedule Positions Cancellation](https://apidocs.hibob.com/reference/post_workforce-planning-positions-schedule-cancellation.md):

Schedules the cancellation of one or more positions. This endpoint automatically unassigns any employees connected to the position openings before cancellation.

Note:

Limitations:

- [Cancel Position](https://apidocs.hibob.com/reference/patch_workforce-planning-positions-positionid-cancel.md):

Immediately cancels a position and updates its status to cancelled.

Important: This operation will fail if the position is currently filled (i.e., employees are still assigned to its openings).

To cancel filled positions, use the Schedule Positions Cancellation endpoint, which automatically unassigns employees before cancelling the position.

- [Workforce Planning Webhooks](https://apidocs.hibob.com/reference/workforce-planning-webhooks.md): Receive notifications about positions, openings and budgets - [Position created webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-created.md): Webhook sent when a new position is created in the Workforce Planning module. Positions are a core entity of the Workforce Planning module, enabling you to allocate budgets and assign specific roles to positions for your workforce's current and future needs. **Best practice:** Use the event as a notification only, and retrieve the complete position details using the Read company positions API endpoint. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position updated webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-updated.md): Webhook sent when any position fields are modified in the Workforce Planning module. Positions can have various attributes such as department, site, employment type, and manager. The payload includes `fieldUpdatesIds` to indicate which fields were changed. **Best practice:** Use the event as a notification only, and retrieve the complete position details using the Read company positions API endpoint. Use the `fieldUpdatesIds` from the payload to retrieve only the updated field values. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position opening created webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-opening-created.md): Webhook sent when a new position opening is created. Position openings are always linked to a Position in Bob. They allow organizations to plan multiple hiring scenarios under the same position (e.g. maternity leave replacements or organizational growth) without duplicating positions. Each opening can have its recruitment status, expected start date, and opening name. **Best practice:** Use the event as a notification only, and retrieve the complete position opening details using the Read company positions openings API endpoint. Note that position opening events don't include the position ID; you can get it by retrieving the opening details. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position opening updated webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-opening-updated.md): Webhook sent when position opening fields are modified. Position openings are always linked to a Position in Bob. The payload includes `fieldUpdatesIds` to indicate which fields were changed. **Best practice:** Use the event as a notification only, and retrieve the complete position opening details using the Read company positions openings API endpoint. Use the `fieldUpdatesIds` from the payload to retrieve only the updated field values. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position opening deleted webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-opening-deleted.md): Webhook sent when a position opening is removed. Position openings are always linked to a Position in Bob. **Best practice:** Use the event as a notification only, and verify the deletion using the Read company positions openings API endpoint. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position budget created webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-budget-created.md): Webhook sent when a new position budget is created. Position budgets are always linked to a Position in Bob. They allow tracking of the financial allocation for specific roles within the organization. Budget attributes include the budget date (when funding starts), currency, base salary, and variable pay. Budgets are available only if you activate the position cost feature in the workforce planning settings. **Best practice:** Use the event as a notification only, and retrieve the complete position budget details using the Read company positions budgets API endpoint. Note that budget events include the position ID, because budget details don't return it. In the right panel, open **Examples** and select **Payload Example** to see a real payload. - [Position budget updated webhook](https://apidocs.hibob.com/reference/post_webhook_workforce-planning-position-budget-updated.md): Webhook sent when position budget fields are modified. Position budgets are always linked to a Position in Bob. They allow tracking of the financial allocation for specific roles within the organization. The payload includes `fieldUpdatesIds` to indicate which fields were changed. **Best practice:** Use the event as a notification only, and retrieve the complete position budget details using the Read company positions budgets API endpoint. Use the `fieldUpdatesIds` from the payload to retrieve only the updated field values. Note that budget events include the position ID, because budget details don't return it. In the right panel, open **Examples** and select **Payload Example** to see a real payload.