{
    "openapi": "3.0.3",
    "info": {
        "title": "TimePerformance API",
        "version": "4",
        "description": "## Introduction\n\nWelcome to the official documentation of the TimePerformance API — the application programming interface for [TimePerformance, the project and portfolio management software](http://timeperformance.com).\n\nThis API enables programmatic access to project, task, resource, and time-tracking data, making it easy to:\n- Generate custom reports\n- Synchronize data with external systems (e.g., ERP, HRIS, CRM)\n- Import data from other platforms\n- Build backups or archives\n\nThe API is defined using the [OpenAPI format](https://www.openapis.org/), which ensures compatibility with a wide range of tools and generators.  \nYou can [download the OpenAPI definition file](https://pma.timeperformance.com/apidoc/api/openapi.json) used to generate this documentation.  \nThis machine-readable file (in JSON format) can be used with tools such as code generators, API clients, or linters.\n\nIf you have any questions or need assistance, please contact the TimePerformance Support Team.\n\n## Technology\n\n- **API type**: REST for CRUD operations, RPC for business logic  \n- **Data format**: JSON only  \n- **Base URL**: [https://pma.timeperformance.com/api/v4/](https://pma.timeperformance.com/api/v4/) (also available on localhost)  \n- **Authentication**: OAuth 2.1 Bearer tokens (recommended) or HTTP Basic Authentication  \n- **User credentials**: Read-only (`GET`), limited to user permissions  \n- **Back-office credentials**: Full access (read/write) to all data  \n- **Usage limits**: 1 request per second and 1 concurrent request per user (back-office credentials lift the rate limit)\n\n## Authentication & Authorization – FAQ\n\n**Which authentication methods are supported?**  \nThe API supports two authentication schemes; pick the one that matches your integration:\n\n- **OAuth 2.1 Bearer tokens** (recommended) — the access token is sent as `Authorization: Bearer <jwt>` on every API call. Suitable for both end-user integrations (authorization code flow with PKCE) and service-to-service integrations (`client_credentials` grant).\n- **HTTP Basic Authentication** — legacy scheme, still supported for service-to-service integrations and scripts.\n\nIn both cases, **never use your personal email and password** — API access always relies on dedicated credentials or tokens.\n\n> **Recommended migration:** if you currently use HTTP Basic Authentication for a server-to-server integration, replace it by requesting a Bearer token at `POST https://pma.timeperformance.com/oauth2/token` with `grant_type=client_credentials`. Your existing API credentials are reused as the `client_id` / `client_secret` pair sent via the `Authorization: Basic …` header of the token request (RFC 6749 §2.3.1). You then call the API with `Authorization: Bearer <jwt>` instead of sending Basic credentials on every request — which improves security (credentials are exchanged once for a short-lived token) and aligns with OAuth 2.1.\n\n### HTTP Basic Authentication\n\n**Where do I find my API credentials?**  \n- **User credentials**: Each user can generate and retrieve their own credentials in the web app under *Settings*.  \n- **Back-office credentials**: Generated in the *Administration* module.\n\n**Why is the Back-Office API menu disabled in the Administration module?**  \n- This feature is only available if your organization has subscribed to the corresponding option.\n\n**What access do user credentials provide?**  \n- Read-only (`GET` requests only), limited to the user's permissions.\n\n**What access do back-office credentials provide?**  \n- Full access to all data and operations (read and write).\n\n### Errors\n\n**What happens if I don't have the right permissions?**  \n- The API will return a `403 Forbidden` error.\n\n**What happens if my token or credentials are invalid or expired?**  \n- The API will return a `401 Unauthorized` error. For OAuth, request a new access token; if that fails too, check your client credentials.\n\n\n## Usage Limits\n\nTo ensure fair use and protect the platform, two per-user limits apply:\n\n- **1 request per second** — enforced server-side by delaying the response (no rejection).\n- **1 concurrent request** — extra in-flight calls are rejected with `429 Too Many Requests` and a `Retry-After: 1` header ([RFC 9110 §10.2.3](https://www.rfc-editor.org/rfc/rfc9110#section-10.2.3)).\n\nNote: Back-office credentials are exempt from the per-second rate.\n\nResponses expose the active policy via the [IETF `RateLimit` header fields](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/).\n\n> Best practice: always wait for a response before sending the next request.\n\n\n## Changes and Versions\n\nThe API evolves over time.\n\n- **Non-breaking changes** (e.g., adding fields or endpoints) are made without impact.\n- **Breaking changes** result in a version bump in the base URL (e.g., `/api/v4/` → `/api/v5/`).\n\nOld versions remain available for at least **3 months** after deprecation.  \nTo detect deprecation, monitor the `Sunset` response header (RFC 1123 format).\n\nAll changes are announced in the release notes on the [TimePerformance blog](http://timeperformance.com).\n\n\n## API Calls\n\n### CRUD Operations (REST)\n\n- `GET`: Retrieve full entity\n- `POST`: Create new entity; returns full object\n- `PATCH`: Partially update entity (only properties present in the request are updated); returns full object\n- `DELETE`: Remove entity\n- `PUT`: Not supported\n\nThe API does not provide HATEOAS links. Entities are returned:\n- As IDs\n- As reference objects (`id`, `type`, `name`, `externalId`)\n- Or as full objects, depending on context\n\n### Business Operations (RPC over HTTP)\n\n- `GET`: Fetch complex structures (e.g., progress reports)\n- `POST`: Modify data (e.g., actions, bulk updates)\n\n### How To Test\n\nYou can easily test the API in several ways:\n\n- **Directly from your browser**: Simply paste the API URL into your browser's address bar.  \n  If you're already logged into the TimePerformance web app, your session is reused — no need to re-enter your credentials.\n  For instance try this: `https://pma.timeperformance.com/api/v4/profiles`  \n\n- **From this documentation**: Use the integrated Swagger UI interface to execute API calls directly. This is especially useful to explore endpoints and see real-time responses.\n\n- **Using a script or HTTP client**: Tools like `curl`, Postman, or libraries in your programming language (e.g. Python, JavaScript) work with either an OAuth Bearer token (`Authorization: Bearer <jwt>`) or Basic Auth using your API credentials.\n\n- **For safe testing of write operations (`POST`, `PATCH`, `DELETE`)**, use the `dryRun=true` query parameter.  \n  This simulates the request **without saving any changes** to the database. It's particularly helpful when experimenting with `POST`, `PATCH`, or other modifying endpoints.\n\n### Entity Representation in API Requests and Responses\n\n**Entities (e.g., Project, Task, User) can appear in 3 different forms.**\n\nIn request, parameters and bodies, entities are referenced by their **integer ID**.\n\nIn responses, entities are returned either as a **reference object** or a **complete entity**.  \nReference objects are minimal structures containing only the `id`, `type`, `name`, and `externalId`. They are used when only the identity of the entity is relevant.  \nComplete entities include all properties and may contain sub-entities. They are returned when detailed data is explicitly requested.\n\n| Context               | Example                                                                 |\n|-----------------------|--------------------------------------------------------------------------|\n| Request (as ID)       | `\"project\": 45`, `/projects/45/...`, or `/tasks?project=45`             |\n| Response (reference)  | `\"project\": { \"id\": 45, \"type\": \"project\", \"name\": \"Demo\" }`            |\n| Response (full)       | `{ \"id\": 45, \"type\": \"project\", \"name\": \"Demo\", \"description\": \"...\", \"state\": {...}, ... }` |\n\n> **Note:**  \n> The provided OpenAPI JSON file does not strictly follow the OpenAPI standard regarding entity representations.   \n> This deviation improves readability and avoids excessive schema complexity by reducing duplication, since entities are always referenced using a single *data model*, regardless of their actual form, which can be inferred from context.\n\n**As a result, integrators must be prepared to handle different representations of the same entity depending on the context.**\n\n### Data Type Format\n\nThe following formats apply to query parameters and JSON data in requests and responses:\n\n| Type          | Format       | Examples                         |\n|---------------|--------------|----------------------------------|\n| Boolean       |              | `true`, `false`, `0`, `1`        |\n| Date          | `YYYY-MM-DD` | `2014-12-31`                      |\n| Date and Time | ISO 8601     | `2016-06-17T08:43:12.447+0000`   |\n| Number        |              | `3`, `3.6`, `-5468.123`          |\n\n> **Note:**\n> - `null` values, empty strings, and `false` booleans may be omitted from responses.\n\n### Success Response Codes\n\nThe API uses standard HTTP status codes to indicate the outcome of requests. Below are the most commonly returned success codes:\n\n| Code | Meaning     | Description                                                                 |\n|------|-------------|-----------------------------------------------------------------------------|\n| 200  | OK          | The request was successful. Used in most `GET`, `PATCH`, or `POST` requests where no resource is created. |\n| 201  | Created     | A new resource has been successfully created. Used in `POST` operations like project, task, or datasheet creation. |\n| 204  | Deleted  | The resource was successfully deleted. No body or a simple text message is returned. Typical of `DELETE` endpoints. |\n\n### Error Response Codes\n\nWhen an error occurs, the API responds with an appropriate HTTP status code and a plain-text message in the response body (if available).\n\n| Code | Error Category        | Possible Causes                                                                                   |\n|------|------------------------|---------------------------------------------------------------------------------------------------|\n| 400  | Bad Request            | Missing required parameter, invalid value. Check the message for details.                        |\n| 401  | Unauthorized           | Invalid or missing credentials, locked user account.                                             |\n| 403  | Forbidden              | Insufficient permissions or business rule violation.                                             |\n| 404  | Not Found              | Entity not found (e.g., project, user) or invalid endpoint.                                      |\n| 422  | Unprocessable Entity   | Invalid data in the request body. See response for details.                                      |\n| 429  | Too Many Requests      | Rate limit exceeded. See [Usage Limits](#usage-limits).                                          |\n| 500  | Internal Server Error  | Unexpected server error. Request failed, but data remains safe (transaction was rolled back).    |\n\n> **Note:**\n> - Always inspect the response body for additional details when available.\n> - Errors are designed to be explicit to help identify integration issues quickly.\n",
        "contact": {
            "name": "TimePerformance Support Team",
            "email": "support@timeperformance.com"
        },
        "license": {
            "name": "Commercial",
            "url": "https://www.timeperformance.com"
        },
        "termsOfService": "https://www.timeperformance.com/conditions-generales"
    },
    "servers": [
        {
            "description": "production v4",
            "url": "https://pma.timeperformance.com/api/v4"
        }
    ],
    "paths": {
        "/projects": {
            "get": {
                "summary": "List projects",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Project"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 195,
                                                "externalId": "XX-6360",
                                                "name": "Demo",
                                                "type": "project",
                                                "description": "...",
                                                "priority": 1,
                                                "template": false,
                                                "projectType": "PROJECT",
                                                "archived": false,
                                                "labels": [
                                                    {
                                                        "id": 123,
                                                        "name": "label1",
                                                        "type": "projectlabel"
                                                    },
                                                    {
                                                        "id": 124,
                                                        "name": "label2",
                                                        "type": "projectlabel"
                                                    }
                                                ],
                                                "sponsor": "Direction des Opérations",
                                                "state": {
                                                    "id": 45,
                                                    "name": "In Progress",
                                                    "type": "projectstate",
                                                    "finished": false
                                                },
                                                "creationDate": "2021-07-06"
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_projects",
                "description": "Returns the list of infos about all projects accessible by the authentified user.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean"
                        },
                        "in": "query",
                        "name": "archived",
                        "description": "If set to true, archived projects will be included."
                    }
                ]
            },
            "post": {
                "summary": "Create project",
                "operationId": "create_project",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Project"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "description": "Validation Failure",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ValidationErrors"
                                }
                            }
                        }
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Creates a project",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "allOf": [
                                    {
                                        "$ref": "#/components/schemas/Project.write"
                                    },
                                    {
                                        "type": "object",
                                        "properties": {
                                            "projectManager": {
                                                "type": "integer",
                                                "description": "User ID of the project manager (required when using the back-office API)."
                                            },
                                            "phasingDepth": {
                                                "type": "integer",
                                                "enum": [
                                                    0,
                                                    1,
                                                    2
                                                ],
                                                "description": "options are no phases, phases (default), or phases and sb-phases",
                                                "writeOnly": true
                                            },
                                            "cloneOptions": {
                                                "type": "object",
                                                "description": "Options to clone a project or a template",
                                                "properties": {
                                                    "project": {
                                                        "type": "integer",
                                                        "description": "Project ID of the project or template to clone."
                                                    },
                                                    "schedule": {
                                                        "type": "boolean"
                                                    },
                                                    "tasks": {
                                                        "type": "boolean"
                                                    },
                                                    "externalIds": {
                                                        "type": "boolean"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    "description": "*projectManager* property is required to set one project manager when using the back-office API.\n\n*phasingDepth* must not be provided with *cloneOptions*."
                },
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/templates": {
            "get": {
                "summary": "List project templates",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Project"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 2082,
                                                "externalId": "XX-6549",
                                                "name": "Prince2",
                                                "type": "project",
                                                "description": "Ce modèle de projet...",
                                                "priority": 1,
                                                "template": true,
                                                "projectType": "PROJECT",
                                                "archived": false,
                                                "labels": [
                                                    {
                                                        "id": 123,
                                                        "name": "label1",
                                                        "type": "projectlabel"
                                                    },
                                                    {
                                                        "id": 124,
                                                        "name": "label2",
                                                        "type": "projectlabel"
                                                    }
                                                ],
                                                "creationDate": "2020-08-25"
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_templates",
                "description": "Returns the list of project templates accessible by the authentified user.\n\nMost APIs for projects are valid for project templates. Invalid API for templates are those that don't make sense for a template (ex: Team, Expenses...)",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean"
                        },
                        "in": "query",
                        "name": "archived",
                        "description": "If set to true, archived projects will be included."
                    }
                ]
            }
        },
        "/projects/{id}": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "Get project",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Project"
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "id": 0,
                                            "name": "My Project",
                                            "type": "project",
                                            "externalId": "AGH-2023-7047",
                                            "description": "...",
                                            "priority": 3,
                                            "template": false,
                                            "projectType": "PROJECT",
                                            "archived": false,
                                            "sponsor": "My Client",
                                            "state": {
                                                "id": 456,
                                                "name": "In Progress",
                                                "type": "projectstate",
                                                "finished": false
                                            },
                                            "creationDate": "2019-08-24",
                                            "labels": [
                                                {
                                                    "id": 456,
                                                    "name": "Custom Label",
                                                    "type": "projectlabel",
                                                    "color": "string",
                                                    "backgroundColor": "string"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project",
                "description": "Returns basic attributes of the project"
            },
            "patch": {
                "summary": "Update project",
                "operationId": "update_project",
                "responses": {
                    "200": {
                        "description": "Updated",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Project"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "description": "Validation failure",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ValidationErrors"
                                }
                            }
                        }
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Project.write"
                            }
                        }
                    },
                    "description": ""
                },
                "tags": [
                    "project"
                ],
                "description": "Updates the project."
            }
        },
        "/projects/getIdFromName": {
            "get": {
                "summary": "List ids of projects with the name",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "integer"
                                    }
                                },
                                "examples": {
                                    "one project found": {
                                        "value": [
                                            32
                                        ]
                                    },
                                    "several projects found": {
                                        "value": [
                                            32,
                                            945
                                        ]
                                    },
                                    "no project found": {
                                        "value": []
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "find_project_ids_by_name",
                "description": "Returns an array of ids of projects matching the provided name.\n\n*Most project APIs requires project ids which are not displayed in the web interface. This API provides a simple way to retrieve the id from the project name. As project names are not unique in the application, the call may return a list of ids.*",
                "parameters": [
                    {
                        "schema": {
                            "type": "string"
                        },
                        "in": "query",
                        "name": "name",
                        "required": true,
                        "description": "Name of the project to search (case insensitive)."
                    }
                ]
            }
        },
        "/projects/{id}/assignments": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "List user assignments to the project",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Assignment"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "date": "2022-12-26 AM",
                                                "user": {
                                                    "id": 65,
                                                    "externalId": "USR-65",
                                                    "name": "Fabien Grosjean",
                                                    "type": "user"
                                                },
                                                "to": {
                                                    "id": 745,
                                                    "externalId": "",
                                                    "name": "Demo Scrum",
                                                    "type": "project"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_assignments",
                "description": "Returns all half-day assignments to the project."
            }
        },
        "/projects/{id}/baselineReport": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id",
                    "schema": {
                        "type": "integer"
                    }
                }
            ],
            "get": {
                "summary": "Get project's baseline report",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "project": {
                                            "$ref": "#/components/schemas/Project"
                                        },
                                        "baselines": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "name": {
                                                        "type": "string"
                                                    },
                                                    "timestamp": {
                                                        "type": "string",
                                                        "format": "date-time"
                                                    },
                                                    "plannedStart": {
                                                        "type": "object",
                                                        "properties": {
                                                            "current": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "ISO 8601 date (YYYY-MM-DD)."
                                                            }
                                                        }
                                                    },
                                                    "plannedEnd": {
                                                        "type": "object",
                                                        "properties": {
                                                            "current": {
                                                                "type": "string",
                                                                "format": "date",
                                                                "description": "ISO 8601 date (YYYY-MM-DD)."
                                                            }
                                                        }
                                                    },
                                                    "workload": {
                                                        "type": "object",
                                                        "properties": {
                                                            "current": {
                                                                "type": "number",
                                                                "description": "PERSON-DAYS."
                                                            }
                                                        }
                                                    },
                                                    "cost": {
                                                        "type": "object",
                                                        "properties": {
                                                            "current": {
                                                                "type": "number",
                                                                "description": "Amount; unit carried by project currency."
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "currentPlan": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "timestamp": {
                                                    "type": "string",
                                                    "format": "date-time"
                                                },
                                                "plannedStart": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        },
                                                        "previous": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        }
                                                    }
                                                },
                                                "plannedEnd": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        },
                                                        "previous": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        }
                                                    }
                                                },
                                                "workload": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "number",
                                                            "description": "PERSON-DAYS."
                                                        },
                                                        "previous": {
                                                            "type": "number",
                                                            "description": "PERSON-DAYS."
                                                        }
                                                    }
                                                },
                                                "cost": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "number",
                                                            "description": "Amount; unit carried by project currency."
                                                        },
                                                        "previous": {
                                                            "type": "number",
                                                            "description": "Amount; unit carried by project currency."
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "forecast": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "timestamp": {
                                                    "type": "string",
                                                    "format": "date-time",
                                                    "nullable": true,
                                                    "description": "Computation timestamp; null when the forecast has not been computed yet."
                                                },
                                                "plannedStart": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        },
                                                        "previous": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        }
                                                    }
                                                },
                                                "plannedEnd": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        },
                                                        "previous": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "ISO 8601 date (YYYY-MM-DD)."
                                                        }
                                                    }
                                                },
                                                "workload": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "number",
                                                            "description": "PERSON-DAYS."
                                                        },
                                                        "previous": {
                                                            "type": "number",
                                                            "description": "PERSON-DAYS."
                                                        }
                                                    }
                                                },
                                                "cost": {
                                                    "type": "object",
                                                    "properties": {
                                                        "current": {
                                                            "type": "number",
                                                            "description": "Amount; unit carried by project currency."
                                                        },
                                                        "previous": {
                                                            "type": "number",
                                                            "description": "Amount; unit carried by project currency."
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "project": {
                                                "id": 196,
                                                "externalId": "",
                                                "name": "Demo",
                                                "type": "project",
                                                "priority": 1,
                                                "template": false,
                                                "projectType": "PROJECT",
                                                "archived": false,
                                                "sponsor": "Direction des Opérations",
                                                "state": {
                                                    "id": 24,
                                                    "name": "En Cours",
                                                    "type": "projectstate",
                                                    "finished": false
                                                },
                                                "creationDate": "2023-01-18"
                                            },
                                            "baselines": [
                                                {
                                                    "name": "Plan de référence",
                                                    "timestamp": "2023-01-18T16:15:55.647+00:00",
                                                    "plannedStart": {
                                                        "current": "2022-10-24"
                                                    },
                                                    "plannedEnd": {
                                                        "current": "2023-04-26"
                                                    },
                                                    "workload": {
                                                        "current": 419
                                                    },
                                                    "cost": {
                                                        "current": 185240
                                                    }
                                                }
                                            ],
                                            "currentPlan": {
                                                "name": "Plan actuel",
                                                "timestamp": "2023-03-11T08:31:18.127+00:00",
                                                "plannedStart": {
                                                    "current": "2022-10-24",
                                                    "previous": "2022-10-24"
                                                },
                                                "plannedEnd": {
                                                    "current": "2023-04-26",
                                                    "previous": "2023-04-26"
                                                },
                                                "workload": {
                                                    "current": 419,
                                                    "previous": 419
                                                },
                                                "cost": {
                                                    "current": 185240,
                                                    "previous": 185240
                                                }
                                            },
                                            "forecast": {
                                                "name": "Prévision",
                                                "plannedStart": {
                                                    "previous": "2022-10-24"
                                                },
                                                "plannedEnd": {
                                                    "current": "2023-07-21",
                                                    "previous": "2023-04-26"
                                                },
                                                "workload": {
                                                    "current": 430.8851736111111,
                                                    "previous": 419
                                                },
                                                "cost": {
                                                    "current": 205115.58382290267,
                                                    "previous": 185240
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_baseline_report",
                "description": "Returns the main metrics of project baselines, current plan and forecast.\n\n*Deprecation notice: this endpoint will be replaced by one that will provide difference details at the deliverable level.* "
            }
        },
        "/projects/{id}/config": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id",
                    "schema": {
                        "type": "integer"
                    }
                }
            ],
            "get": {
                "summary": "Get project's config",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "profiles": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "profile": {
                                                        "$ref": "#/components/schemas/Element",
                                                        "readOnly": true,
                                                        "description": "Resource profile (short form: id, name, type, externalId, description)."
                                                    },
                                                    "costRate": {
                                                        "$ref": "#/components/schemas/CostRate"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "profiles": [
                                                {
                                                    "profile": {
                                                        "id": 32,
                                                        "externalId": "XX-6988",
                                                        "name": "Analyst",
                                                        "type": "resourceprofile",
                                                        "description": "write requirements"
                                                    },
                                                    "costRate": {
                                                        "val": 460,
                                                        "unit": "€",
                                                        "rateMode": "DAILY_VAR"
                                                    }
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_config",
                "description": "Returns configuration elements for the project (for the time being, only the list of profiles with their cost rates in this project)"
            }
        },
        "/projects/{project_id}/deliverables": {
            "get": {
                "summary": "Get Deliverables Tree",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Deliverable.tree"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 202,
                                                "externalId": "XX-7047",
                                                "name": "Study",
                                                "type": "goal",
                                                "description": "...",
                                                "path": "Study",
                                                "state": "open",
                                                "progressMode": "TASK_RTD",
                                                "acceptance": "...",
                                                "milestone": false,
                                                "children": [
                                                    {
                                                        "id": 203,
                                                        "externalId": "",
                                                        "name": "Specifications",
                                                        "type": "goal",
                                                        "description": "...",
                                                        "path": "Study » Specifications",
                                                        "state": "closed",
                                                        "acceptance": "...",
                                                        "milestone": true
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_deliverables",
                "description": "Returns the project's deliverables tree"
            },
            "parameters": [
                {
                    "schema": {
                        "type": "number"
                    },
                    "name": "project_id",
                    "in": "path",
                    "required": true,
                    "description": "Project ID."
                }
            ],
            "post": {
                "summary": "Create Deliverable",
                "operationId": "create_project_deliverable",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Deliverable"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Creates a deliverable at the top level of the deliverables tree",
                "tags": [
                    "project"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Deliverable.write"
                            },
                            "examples": {
                                "Example 1": {
                                    "value": {
                                        "name": "New Deliverable",
                                        "description": "ceci est un test",
                                        "state": "draft",
                                        "iteration": 4567,
                                        "firstDay": "2023-01-01",
                                        "lastDay": "2023-03-01",
                                        "milestone": true,
                                        "progressMode": "TASK_RTD"
                                    }
                                }
                            }
                        }
                    },
                    "description": ""
                }
            }
        },
        "/projects/{id}/lastmodified": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "Get Last Modification Timestamp",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "format": "date-time",
                                    "properties": {
                                        "lastModified": {
                                            "type": "string",
                                            "format": "date-time",
                                            "readOnly": true
                                        }
                                    },
                                    "required": [
                                        "lastModified"
                                    ],
                                    "readOnly": true
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "lastModified": "2023-07-21T08:28:28.982+00:00"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_last_modified",
                "description": "Returns the date and time of the last modification concerning the project.\n\nThe changes taken into account are all those concerning the project, its settings, the team, access rights, tasks, time entries, deliverables, phases, expenses, scheduling..."
            }
        },
        "/projects/deliverables/{deliverable_id}": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "deliverable_id",
                    "in": "path",
                    "required": true,
                    "description": "Deliverable ID."
                }
            ],
            "get": {
                "summary": "Get Deliverable",
                "description": "Returns the deliverable identified by the given id.",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Deliverable"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_deliverable"
            },
            "patch": {
                "summary": "Update Deliverable",
                "description": "Updates the editable properties of the specified deliverable. Only the provided fields are modified.",
                "operationId": "update_deliverable",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Deliverable"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "tags": [
                    "project"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Deliverable.write"
                            }
                        }
                    },
                    "description": ""
                }
            },
            "delete": {
                "summary": "Delete Deliverable",
                "operationId": "delete_deliverable",
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Deletes the deliverable. The deliverable must be without tasks and expenses.",
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/deliverables/{deliverable_id}/subdeliverables": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "deliverable_id",
                    "in": "path",
                    "required": true,
                    "description": "Deliverable ID."
                }
            ],
            "post": {
                "summary": "Create Sub-Deliverable",
                "description": "Creates a new sub-deliverable nested under the specified deliverable.",
                "tags": [
                    "project"
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Deliverable"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "create_sub_deliverable",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Deliverable.write"
                            }
                        }
                    },
                    "description": ""
                }
            }
        },
        "/projects/{project_id}/phases": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "project_id",
                    "in": "path",
                    "required": true,
                    "description": "Project ID."
                }
            ],
            "get": {
                "summary": "Get project's phases",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Phase.tree"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 202,
                                                "externalId": "XX-6205",
                                                "name": "Etude",
                                                "path": "Etude",
                                                "type": "phase",
                                                "state": "closed",
                                                "children": [
                                                    {
                                                        "id": 203,
                                                        "externalId": "XX-6204",
                                                        "name": "Analyse",
                                                        "path": "Etude » Analyse",
                                                        "type": "phase",
                                                        "state": "closed"
                                                    },
                                                    {
                                                        "id": 204,
                                                        "externalId": "",
                                                        "name": "Conception",
                                                        "path": "Etude » Conception",
                                                        "type": "phase",
                                                        "state": "closed"
                                                    }
                                                ]
                                            },
                                            {
                                                "id": 205,
                                                "externalId": "",
                                                "name": "Lot 1",
                                                "path": "Lot 1",
                                                "type": "phase",
                                                "state": "open",
                                                "children": [
                                                    {
                                                        "id": 206,
                                                        "externalId": "XX-6207",
                                                        "name": "Réalisation lot 1",
                                                        "path": "Lot 1 » Réalisation lot 1",
                                                        "type": "phase",
                                                        "state": "open"
                                                    },
                                                    {
                                                        "id": 207,
                                                        "externalId": "",
                                                        "name": "Tests Lot 1",
                                                        "path": "Lot 1 » Tests Lot 1",
                                                        "type": "phase",
                                                        "state": "ready"
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_phases",
                "description": "Returns the project's lifecycle with phases and subphases (depending on the phasing model)."
            },
            "post": {
                "summary": "Create project phase",
                "operationId": "create_project_phase",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Phase"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Creates a first level phase",
                "tags": [
                    "project"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Phase.write"
                            },
                            "examples": {
                                "Example 1": {
                                    "value": {
                                        "name": "Build",
                                        "externalId": "AGH-2023-7047",
                                        "description": "string",
                                        "state": "draft",
                                        "firstDay": "2019-08-24",
                                        "lastDay": "2019-12-24",
                                        "milestone": true,
                                        "lockedSchedule": false
                                    }
                                },
                                "Example 2": {
                                    "value": {
                                        "name": "Deploy"
                                    }
                                }
                            }
                        }
                    },
                    "description": ""
                }
            }
        },
        "/projects/phases/{phase_id}": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "phase_id",
                    "in": "path",
                    "required": true,
                    "description": "Phase ID."
                }
            ],
            "get": {
                "summary": "Get Phase",
                "description": "Returns the phase identified by the given id.",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Phase"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_phase"
            },
            "patch": {
                "summary": "Update Phase",
                "description": "Updates the editable properties of the specified phase. Only the provided fields are modified.",
                "operationId": "update_phase",
                "responses": {
                    "200": {
                        "description": "The phase after modifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Phase"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "tags": [
                    "project"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Phase.write"
                            }
                        }
                    },
                    "description": ""
                }
            },
            "delete": {
                "summary": "Delete Phase",
                "operationId": "delete_phase",
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "description": "Unauthorized. Deliverables are planned for this phase."
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "tags": [
                    "project"
                ],
                "description": "Deletes the phase. The phase must be empty, i.e. without planned deliverables.",
                "parameters": []
            }
        },
        "/projects/phases/{phase_id}/subphases": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "phase_id",
                    "in": "path",
                    "required": true,
                    "description": "parent phase id"
                }
            ],
            "post": {
                "summary": "Create sub-phase",
                "description": "Creates a new sub-phase nested under the specified phase.",
                "operationId": "create_sub_phase",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Phase"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Phase.write"
                            }
                        }
                    }
                },
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/{project_id}/expenses": {
            "get": {
                "summary": "List Project's Expenses",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Expense"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 468,
                                                "type": "expense",
                                                "description": "...",
                                                "settled": false,
                                                "smoothed": true,
                                                "date": "2018-09-16",
                                                "amount": {
                                                    "val": 4000,
                                                    "unit": "€"
                                                },
                                                "phase": {
                                                    "id": 221,
                                                    "type": "phase"
                                                },
                                                "stage": {
                                                    "id": 222,
                                                    "type": "phase"
                                                },
                                                "deliverable": {
                                                    "id": 207,
                                                    "type": "goal"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_expenses",
                "description": "Returns the project's expenses"
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "project_id",
                    "in": "path",
                    "required": true,
                    "description": "Project id"
                }
            ],
            "post": {
                "summary": "Create Expense",
                "description": "Creates a new expense entry on the specified project.",
                "operationId": "create_expense",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Expense"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Expense.write"
                            },
                            "examples": {
                                "Example 1": {
                                    "value": {
                                        "name": "New Expense",
                                        "date": "2023-01-03",
                                        "description": "...",
                                        "counterparty": "Tesla",
                                        "smoothed": true,
                                        "amount": {
                                            "val": 42.5,
                                            "unit": "€"
                                        },
                                        "deliverable": 4568
                                    }
                                }
                            }
                        }
                    }
                },
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/expenses/{expense_id}": {
            "get": {
                "summary": "Get Expense",
                "description": "Returns the expense identified by the given id.",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Expense"
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 468,
                                                "type": "expense",
                                                "description": "...",
                                                "settled": false,
                                                "smoothed": true,
                                                "date": "2018-09-16",
                                                "amount": {
                                                    "val": 4000,
                                                    "unit": "€"
                                                },
                                                "phase": {
                                                    "id": 221,
                                                    "type": "phase"
                                                },
                                                "stage": {
                                                    "id": 222,
                                                    "type": "phase"
                                                },
                                                "deliverable": {
                                                    "id": 207,
                                                    "type": "goal"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_expense"
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "expense_id",
                    "in": "path",
                    "required": true,
                    "description": "Expense ID."
                }
            ],
            "patch": {
                "summary": "Update Expense",
                "description": "Updates the editable properties of the specified expense. Only the provided fields are modified.",
                "operationId": "update_expense",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Expense"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Expense.write"
                            }
                        }
                    }
                },
                "tags": [
                    "project"
                ]
            },
            "delete": {
                "summary": "Delete Expense",
                "description": "Deletes the specified expense.",
                "operationId": "delete_expense",
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/{project_id}/tasks": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "project_id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "List project's tasks",
                "tags": [
                    "project",
                    "task"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Task"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 241,
                                                "type": "task",
                                                "name": "Tester l'impression",
                                                "description": "",
                                                "performer": {
                                                    "id": 36,
                                                    "name": "Philippe Martin",
                                                    "firstname": "Philippe",
                                                    "lastname": "Martin",
                                                    "email": "philippe@acme.test"
                                                },
                                                "project": {
                                                    "id": 190,
                                                    "externalId": "XX-6358",
                                                    "name": "Demo",
                                                    "type": "project"
                                                },
                                                "phase": {
                                                    "id": 223,
                                                    "externalId": "XX-6370",
                                                    "name": "Lot 1",
                                                    "type": "phase"
                                                },
                                                "iteration": {
                                                    "id": 224,
                                                    "externalId": "XX-6371",
                                                    "name": "Réalisation lot 1",
                                                    "type": "phase"
                                                },
                                                "goal": {
                                                    "id": 205,
                                                    "externalId": "XX-6441",
                                                    "name": "Module 1",
                                                    "type": "goal"
                                                },
                                                "taskType": {
                                                    "id": 83,
                                                    "externalId": "XX-6421",
                                                    "name": "Design the Solution",
                                                    "type": "taskdefinition"
                                                },
                                                "taskCategory": {
                                                    "id": 80,
                                                    "externalId": "TC-45",
                                                    "name": "Development",
                                                    "type": "taskcategory"
                                                },
                                                "state": "ready",
                                                "closed": false,
                                                "dueDate": "2015-02-23",
                                                "start": "2015-02-19",
                                                "end": "2015-02-23",
                                                "effort": 13.7,
                                                "steps": [
                                                    {
                                                        "name": "Write Code",
                                                        "done": true
                                                    },
                                                    {
                                                        "name": "Write Test",
                                                        "done": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_tasks",
                "description": "Returns the tasks that are part of the project.\n\n`periodStart` and `periodEnd` paremeters allows to filter out tasks based on actual work during the period. \n\nNote that actual work of tasks are computed over the defined period.\n\nThe period may be defined with only one parameter as *from periodStart* or *until periodEnd*.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "notClosed",
                        "description": "If true, the list will only contain tasks that are not completed or cancelled."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "periodStart",
                        "description": "period filter (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "periodEnd",
                        "description": "period filter (ISO 8601 date YYYY-MM-DD)."
                    }
                ]
            },
            "post": {
                "summary": "Create Task",
                "description": "Creates a new task on the specified project.",
                "operationId": "create_task",
                "responses": {
                    "201": {
                        "description": "Created",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Task"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Task.write"
                            }
                        }
                    }
                },
                "tags": [
                    "project",
                    "task"
                ]
            }
        },
        "/projects/tasks/{task_id}": {
            "get": {
                "summary": "Get Task",
                "description": "Returns the task identified by the given id.",
                "tags": [
                    "task"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Task"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_task"
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "task_id",
                    "in": "path",
                    "required": true,
                    "description": "Task ID."
                }
            ],
            "patch": {
                "summary": "Update Task",
                "description": "Updates the editable properties of the specified task. Only the provided fields are modified.",
                "operationId": "update_task",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Task"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Task.write"
                            }
                        }
                    }
                },
                "tags": [
                    "task"
                ]
            },
            "delete": {
                "summary": "Delete Task",
                "description": "Deletes the specified task.",
                "operationId": "delete_task",
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "tags": [
                    "task"
                ]
            }
        },
        "/projects/{id}/progressReport": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Project id"
                }
            ],
            "get": {
                "summary": "Get project's progress report",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#/components/schemas/Project"
                                        },
                                        {
                                            "$ref": "#/components/schemas/ProgressIndicators"
                                        },
                                        {
                                            "$ref": "#/components/schemas/TopReportUnits"
                                        },
                                        {
                                            "type": "object",
                                            "description": "Progress report root node for a project.",
                                            "properties": {
                                                "children": {
                                                    "type": "array",
                                                    "description": "Hierarchy of progress report for phases and deliverables",
                                                    "items": {
                                                        "allOf": [
                                                            {
                                                                "type": "object",
                                                                "description": "Can be a phase or a deliverable",
                                                                "properties": {
                                                                    "element": {
                                                                        "anyOf": [
                                                                            {
                                                                                "$ref": "#/components/schemas/Phase"
                                                                            },
                                                                            {
                                                                                "$ref": "#/components/schemas/Deliverable"
                                                                            }
                                                                        ]
                                                                    },
                                                                    "progressMode": {
                                                                        "$ref": "#/components/schemas/ProgressMode"
                                                                    },
                                                                    "children": {
                                                                        "type": "array",
                                                                        "nullable": true,
                                                                        "items": {
                                                                            "type": "object"
                                                                        }
                                                                    }
                                                                }
                                                            },
                                                            {
                                                                "$ref": "#/components/schemas/ProgressIndicators"
                                                            }
                                                        ]
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                },
                                "examples": {
                                    "Example 2": {
                                        "value": {
                                            "children": [
                                                {
                                                    "children": [
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 213,
                                                                        "externalId": "XX-6274",
                                                                        "name": "Plan Projet",
                                                                        "path": "Management » Plan Projet",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 4160,
                                                                    "actualCost": 11666.5,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 8,
                                                                    "actualEffort": 25.25,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-10-24",
                                                                    "actualStart": "2022-10-24",
                                                                    "plannedEnd": "2022-11-25",
                                                                    "actualEnd": "2022-11-23",
                                                                    "costPercentage": 2.8044471153846153,
                                                                    "costRAG": "KO",
                                                                    "effortPercentage": 3.15625,
                                                                    "effortRAG": "KO",
                                                                    "scheduleVariance": 2,
                                                                    "costVariance": -7506.5,
                                                                    "scheduleRAG": "OK",
                                                                    "earnedValue": 4160,
                                                                    "bcws": 4160,
                                                                    "bcwp": 4160,
                                                                    "sv": 0,
                                                                    "cpi": 0.3565765225217503,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": 2,
                                                                    "estimateAtCompletion": 11666.5,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 281,
                                                                        "externalId": "",
                                                                        "name": "Cahier des charges",
                                                                        "path": "Etude » Cahier des charges",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 13800,
                                                                    "actualCost": 11523.5,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 30,
                                                                    "actualEffort": 25.25,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-10-24",
                                                                    "actualStart": "2022-10-24",
                                                                    "plannedEnd": "2022-11-13",
                                                                    "actualEnd": "2022-11-23",
                                                                    "costPercentage": 0.835036231884058,
                                                                    "costRAG": "OK",
                                                                    "effortPercentage": 0.8416666666666667,
                                                                    "effortRAG": "OK",
                                                                    "scheduleVariance": -10,
                                                                    "costVariance": 2276.5,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 13800,
                                                                    "bcws": 13800,
                                                                    "bcwp": 13800,
                                                                    "sv": 0,
                                                                    "cpi": 1.1975528268321256,
                                                                    "spi": 1,
                                                                    "cpiToComplete": 0,
                                                                    "scheduleVarianceAtCompletion": -10,
                                                                    "estimateAtCompletion": 11523.5,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 294,
                                                                        "externalId": "XX-6275",
                                                                        "name": "Choix Solution Technique",
                                                                        "path": "Etude » Choix Solution Technique",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 3680,
                                                                    "actualCost": 8849,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 8,
                                                                    "actualEffort": 18.5,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-11-04",
                                                                    "actualStart": "2022-10-24",
                                                                    "plannedEnd": "2022-11-25",
                                                                    "actualEnd": "2022-11-23",
                                                                    "costPercentage": 2.4046195652173914,
                                                                    "costRAG": "KO",
                                                                    "effortPercentage": 2.3125,
                                                                    "effortRAG": "KO",
                                                                    "scheduleVariance": 2,
                                                                    "costVariance": -5169,
                                                                    "scheduleRAG": "OK",
                                                                    "earnedValue": 3680,
                                                                    "bcws": 3680,
                                                                    "bcwp": 3680,
                                                                    "sv": 0,
                                                                    "cpi": 0.41586619957057297,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": 2,
                                                                    "estimateAtCompletion": 8849,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 203,
                                                                "externalId": "XX-6204",
                                                                "name": "Analyse",
                                                                "path": "Etude » Analyse",
                                                                "type": "phase",
                                                                "state": "closed"
                                                            },
                                                            "progress": 1,
                                                            "budgetedCost": 21640,
                                                            "actualCost": 32039,
                                                            "expenseBudget": 0,
                                                            "expenseCost": 0,
                                                            "incurredExpense": 0,
                                                            "plannedEffort": 46,
                                                            "actualEffort": 69,
                                                            "remainingEffort": 0,
                                                            "plannedStart": "2022-10-24",
                                                            "actualStart": "2022-10-24",
                                                            "plannedEnd": "2022-11-25",
                                                            "actualEnd": "2022-11-23",
                                                            "costPercentage": 1.4805452865064694,
                                                            "costRAG": "KO",
                                                            "effortPercentage": 1.5,
                                                            "effortRAG": "KO",
                                                            "scheduleVariance": 2,
                                                            "costVariance": -10399,
                                                            "scheduleRAG": "OK",
                                                            "earnedValue": 21640,
                                                            "bcws": 21640,
                                                            "bcwp": 21640,
                                                            "sv": 0,
                                                            "cpi": 0.6754268235587877,
                                                            "spi": 1,
                                                            "scheduleVarianceAtCompletion": 2,
                                                            "estimateAtCompletion": 32039,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        },
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 303,
                                                                        "externalId": "XX-6277",
                                                                        "name": "Conception Générale",
                                                                        "path": "Etude » Conception Générale",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 9200,
                                                                    "actualCost": 11858.25,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 20,
                                                                    "actualEffort": 26.5,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-11-28",
                                                                    "actualStart": "2022-11-24",
                                                                    "plannedEnd": "2022-12-18",
                                                                    "actualEnd": "2022-12-26",
                                                                    "costPercentage": 1.2889402173913043,
                                                                    "costRAG": "KO",
                                                                    "effortPercentage": 1.325,
                                                                    "effortRAG": "KO",
                                                                    "scheduleVariance": -8,
                                                                    "costVariance": -2658.25,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 9200,
                                                                    "bcws": 9200,
                                                                    "bcwp": 9200,
                                                                    "sv": 0,
                                                                    "cpi": 0.7758311723905298,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": -8,
                                                                    "estimateAtCompletion": 11858.25,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 316,
                                                                        "externalId": "",
                                                                        "name": "Conception détaillée",
                                                                        "path": "Etude » Conception détaillée",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 25600,
                                                                    "actualCost": 25810.25,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 60,
                                                                    "actualEffort": 56.25,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-12-11",
                                                                    "actualStart": "2022-11-24",
                                                                    "plannedEnd": "2022-12-30",
                                                                    "actualEnd": "2022-12-26",
                                                                    "costPercentage": 1.008212890625,
                                                                    "costRAG": "WARN",
                                                                    "effortPercentage": 0.9375,
                                                                    "effortRAG": "OK",
                                                                    "scheduleVariance": 4,
                                                                    "costVariance": -210.25,
                                                                    "scheduleRAG": "OK",
                                                                    "earnedValue": 25600,
                                                                    "bcws": 25600,
                                                                    "bcwp": 25600,
                                                                    "sv": 0,
                                                                    "cpi": 0.9918540114876842,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": 4,
                                                                    "estimateAtCompletion": 25810.25,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 224,
                                                                        "externalId": "XX-6276",
                                                                        "name": "Suivi de projet",
                                                                        "path": "Management » Suivi de projet",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 2600,
                                                                    "actualCost": 4030.5,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 5,
                                                                    "actualEffort": 9.25,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2022-11-28",
                                                                    "actualStart": "2022-11-24",
                                                                    "plannedEnd": "2022-12-30",
                                                                    "actualEnd": "2022-12-26",
                                                                    "costPercentage": 1.5501923076923076,
                                                                    "costRAG": "KO",
                                                                    "effortPercentage": 1.85,
                                                                    "effortRAG": "KO",
                                                                    "scheduleVariance": 4,
                                                                    "costVariance": -1430.5,
                                                                    "scheduleRAG": "OK",
                                                                    "earnedValue": 2600,
                                                                    "bcws": 2600,
                                                                    "bcwp": 2600,
                                                                    "sv": 0,
                                                                    "cpi": 0.6450812554273664,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": 4,
                                                                    "estimateAtCompletion": 4030.5,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 204,
                                                                "externalId": "",
                                                                "name": "Conception",
                                                                "path": "Etude » Conception",
                                                                "type": "phase",
                                                                "state": "closed"
                                                            },
                                                            "progress": 1,
                                                            "budgetedCost": 37400,
                                                            "actualCost": 41699,
                                                            "expenseBudget": 0,
                                                            "expenseCost": 0,
                                                            "incurredExpense": 0,
                                                            "plannedEffort": 85,
                                                            "actualEffort": 92,
                                                            "remainingEffort": 0,
                                                            "plannedStart": "2022-11-28",
                                                            "actualStart": "2022-11-24",
                                                            "plannedEnd": "2022-12-30",
                                                            "actualEnd": "2022-12-26",
                                                            "costPercentage": 1.1149465240641712,
                                                            "costRAG": "KO",
                                                            "effortPercentage": 1.0823529411764705,
                                                            "effortRAG": "WARN",
                                                            "scheduleVariance": 4,
                                                            "costVariance": -4299,
                                                            "scheduleRAG": "OK",
                                                            "earnedValue": 37400,
                                                            "bcws": 37400,
                                                            "bcwp": 37400,
                                                            "sv": 0,
                                                            "cpi": 0.8969040024940647,
                                                            "spi": 1,
                                                            "scheduleVarianceAtCompletion": 4,
                                                            "estimateAtCompletion": 41699,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        }
                                                    ],
                                                    "element": {
                                                        "id": 202,
                                                        "externalId": "XX-6205",
                                                        "name": "Etude",
                                                        "path": "Etude",
                                                        "type": "phase",
                                                        "state": "closed"
                                                    },
                                                    "progress": 1,
                                                    "budgetedCost": 59040,
                                                    "actualCost": 73738,
                                                    "expenseBudget": 0,
                                                    "expenseCost": 0,
                                                    "incurredExpense": 0,
                                                    "plannedEffort": 131,
                                                    "actualEffort": 161,
                                                    "remainingEffort": 0,
                                                    "plannedStart": "2022-10-24",
                                                    "actualStart": "2022-10-24",
                                                    "plannedEnd": "2022-12-30",
                                                    "actualEnd": "2022-12-26",
                                                    "costPercentage": 1.248949864498645,
                                                    "costRAG": "KO",
                                                    "effortPercentage": 1.2290076335877862,
                                                    "effortRAG": "KO",
                                                    "scheduleVariance": 4,
                                                    "costVariance": -14698,
                                                    "scheduleRAG": "OK",
                                                    "earnedValue": 59040,
                                                    "bcws": 59040,
                                                    "bcwp": 59040,
                                                    "sv": 0,
                                                    "cpi": 0.8006726518213133,
                                                    "spi": 1,
                                                    "scheduleVarianceAtCompletion": 4,
                                                    "estimateAtCompletion": 73738,
                                                    "progressMode": "WEIGHTED_SUM"
                                                },
                                                {
                                                    "children": [
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 342,
                                                                        "externalId": "XX-6281",
                                                                        "name": "Module 1",
                                                                        "path": "Développement » Module 1",
                                                                        "type": "goal",
                                                                        "state": "open"
                                                                    },
                                                                    "progress": 0.98,
                                                                    "budgetedCost": 25200,
                                                                    "actualCost": 10101.5,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 60,
                                                                    "actualEffort": 22.75,
                                                                    "remainingEffort": 0.46427083333333335,
                                                                    "plannedStart": "2023-01-02",
                                                                    "actualStart": "2022-12-27",
                                                                    "plannedEnd": "2023-01-29",
                                                                    "costPercentage": 0.4008531746031746,
                                                                    "costRAG": "OK",
                                                                    "effortPercentage": 0.37916666666666665,
                                                                    "effortRAG": "OK",
                                                                    "scheduleVariance": -43,
                                                                    "costVariance": 14594.5,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 24696,
                                                                    "bcws": 25200,
                                                                    "bcwp": 24696,
                                                                    "sv": -504,
                                                                    "cpi": 2.4447854279067465,
                                                                    "spi": 0.98,
                                                                    "cpiToComplete": 0.03338079941716064,
                                                                    "scheduleVarianceAtCompletion": -47,
                                                                    "estimateAtCompletion": 10307.65306122449,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 358,
                                                                        "externalId": "XX-6282",
                                                                        "name": "Module 2",
                                                                        "path": "Développement » Module 2",
                                                                        "type": "goal",
                                                                        "state": "open"
                                                                    },
                                                                    "progress": 0.97,
                                                                    "budgetedCost": 12600,
                                                                    "actualCost": 11918.25,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 30,
                                                                    "actualEffort": 27,
                                                                    "remainingEffort": 0.8350347222222222,
                                                                    "plannedStart": "2023-01-02",
                                                                    "actualStart": "2022-12-27",
                                                                    "plannedEnd": "2023-01-29",
                                                                    "costPercentage": 0.9458928571428571,
                                                                    "costRAG": "OK",
                                                                    "effortPercentage": 0.9,
                                                                    "effortRAG": "OK",
                                                                    "scheduleVariance": -44,
                                                                    "costVariance": 303.75,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 12222,
                                                                    "bcws": 12600,
                                                                    "bcwp": 12222,
                                                                    "sv": -378,
                                                                    "cpi": 1.0254861242212574,
                                                                    "spi": 0.97,
                                                                    "cpiToComplete": 0.5544554455445545,
                                                                    "scheduleVarianceAtCompletion": -50,
                                                                    "estimateAtCompletion": 12286.855670103094,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 459,
                                                                        "externalId": "XX-6283",
                                                                        "name": "Revue Qualité",
                                                                        "path": "Qualité » Revue Qualité",
                                                                        "type": "goal",
                                                                        "state": "open"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 1900,
                                                                    "actualCost": 10035.25,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 5,
                                                                    "actualEffort": 23.25,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2023-01-20",
                                                                    "actualStart": "2022-12-27",
                                                                    "plannedEnd": "2023-01-29",
                                                                    "costPercentage": 5.2817105263157895,
                                                                    "costRAG": "KO",
                                                                    "effortPercentage": 4.65,
                                                                    "effortRAG": "KO",
                                                                    "scheduleVariance": -41,
                                                                    "costVariance": -8135.25,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 1900,
                                                                    "bcws": 1900,
                                                                    "bcwp": 1900,
                                                                    "sv": 0,
                                                                    "cpi": 0.18933260257591988,
                                                                    "spi": 1,
                                                                    "scheduleVarianceAtCompletion": -41,
                                                                    "estimateAtCompletion": 10035.25,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 229,
                                                                        "externalId": "XX-6280",
                                                                        "name": "Suivi Projet 1.1",
                                                                        "path": "Management » Suivi Projet 1.1",
                                                                        "type": "goal",
                                                                        "state": "open"
                                                                    },
                                                                    "progress": 0.91,
                                                                    "budgetedCost": 5200,
                                                                    "actualCost": 690,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 10,
                                                                    "actualEffort": 1.5,
                                                                    "remainingEffort": 0.14836805555555554,
                                                                    "plannedStart": "2023-01-02",
                                                                    "actualStart": "2022-12-30",
                                                                    "plannedEnd": "2023-01-29",
                                                                    "costPercentage": 0.1326923076923077,
                                                                    "costRAG": "OK",
                                                                    "effortPercentage": 0.15,
                                                                    "effortRAG": "OK",
                                                                    "scheduleVariance": -45,
                                                                    "costVariance": 4042,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 4732,
                                                                    "bcws": 5200,
                                                                    "bcwp": 4732,
                                                                    "sv": -468,
                                                                    "cpi": 6.857971014492754,
                                                                    "spi": 0.91,
                                                                    "cpiToComplete": 0.10376940133037695,
                                                                    "scheduleVarianceAtCompletion": -53,
                                                                    "estimateAtCompletion": 758.2417582417582,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 453,
                                                                        "externalId": "",
                                                                        "name": "Achat Serveurs",
                                                                        "path": "Qualité » Achat Serveurs",
                                                                        "type": "goal",
                                                                        "state": "open"
                                                                    },
                                                                    "progress": 0.96,
                                                                    "budgetedCost": 4000,
                                                                    "actualCost": 19862,
                                                                    "expenseBudget": 4000,
                                                                    "expenseCost": 15360,
                                                                    "incurredExpense": 16000,
                                                                    "plannedEffort": 0,
                                                                    "actualEffort": 10.5,
                                                                    "remainingEffort": 0.4375,
                                                                    "plannedStart": "2023-01-02",
                                                                    "actualStart": "2022-12-27",
                                                                    "plannedEnd": "2023-01-06",
                                                                    "costPercentage": 4.9655,
                                                                    "costRAG": "KO",
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -64,
                                                                    "costVariance": -16022,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 3840,
                                                                    "bcws": 4000,
                                                                    "bcwp": 3840,
                                                                    "sv": -160,
                                                                    "cpi": 0.19333400463196052,
                                                                    "spi": 0.96,
                                                                    "scheduleVarianceAtCompletion": -64,
                                                                    "estimateAtCompletion": 20689.583333333336,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 6458,
                                                                        "externalId": "",
                                                                        "name": "zzzz",
                                                                        "path": "zzzz",
                                                                        "type": "goal",
                                                                        "state": "closed"
                                                                    },
                                                                    "progress": 1,
                                                                    "budgetedCost": 0,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 0,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 0,
                                                                    "plannedStart": "2023-01-02",
                                                                    "plannedEnd": "2023-01-29",
                                                                    "costRAG": "NONE",
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "estimateAtCompletion": 0,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 206,
                                                                "externalId": "XX-6207",
                                                                "name": "Réalisation lot 1",
                                                                "path": "Lot 1 » Réalisation lot 1",
                                                                "type": "phase",
                                                                "state": "open"
                                                            },
                                                            "progress": 0.969120654396728,
                                                            "budgetedCost": 48900,
                                                            "actualCost": 52607,
                                                            "expenseBudget": 4000,
                                                            "expenseCost": 15360,
                                                            "incurredExpense": 16000,
                                                            "plannedEffort": 105,
                                                            "actualEffort": 85,
                                                            "remainingEffort": 1.885173611111111,
                                                            "plannedStart": "2023-01-02",
                                                            "actualStart": "2022-12-27",
                                                            "plannedEnd": "2023-01-29",
                                                            "costPercentage": 1.075807770961145,
                                                            "costRAG": "KO",
                                                            "effortPercentage": 0.8095238095238095,
                                                            "effortRAG": "OK",
                                                            "scheduleVariance": -44,
                                                            "costVariance": -5217,
                                                            "scheduleRAG": "KO",
                                                            "earnedValue": 47390,
                                                            "bcws": 48900,
                                                            "bcwp": 47390,
                                                            "sv": -1510,
                                                            "cpi": 0.9008306879312639,
                                                            "spi": 0.969120654396728,
                                                            "scheduleVarianceAtCompletion": -50,
                                                            "estimateAtCompletion": 54077.58382290268,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        },
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 470,
                                                                        "externalId": "XX-6270",
                                                                        "name": "Scripts de Tests Lot 1",
                                                                        "path": "Qualité » Scripts de Tests Lot 1",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 4560,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 12,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 12,
                                                                    "plannedStart": "2023-01-30",
                                                                    "plannedEnd": "2023-02-03",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -41,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 4560,
                                                                    "bcwp": 0,
                                                                    "sv": -4560,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 4560,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 489,
                                                                        "externalId": "",
                                                                        "name": "Recette Lot 1",
                                                                        "path": "Qualité » Recette Lot 1",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 4560,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 12,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 12,
                                                                    "plannedStart": "2023-02-06",
                                                                    "plannedEnd": "2023-02-20",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -34,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 4560,
                                                                    "bcwp": 0,
                                                                    "sv": -4560,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 4560,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 431,
                                                                        "externalId": "XX-6268",
                                                                        "name": "Corrections Lot 1",
                                                                        "path": "Développement » Corrections Lot 1",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 8400,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 20,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 20,
                                                                    "plannedStart": "2023-02-06",
                                                                    "plannedEnd": "2023-02-26",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -34,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 8400,
                                                                    "bcwp": 0,
                                                                    "sv": -8400,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 8400,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 235,
                                                                        "externalId": "XX-6262",
                                                                        "name": "Suivi de projet 1.2",
                                                                        "path": "Management » Suivi de projet 1.2",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 6240,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 12,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 12,
                                                                    "plannedStart": "2023-01-30",
                                                                    "plannedEnd": "2023-02-26",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -41,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 6240,
                                                                    "bcwp": 0,
                                                                    "sv": -6240,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 6240,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 207,
                                                                "externalId": "",
                                                                "name": "Tests Lot 1",
                                                                "path": "Lot 1 » Tests Lot 1",
                                                                "type": "phase",
                                                                "state": "ready"
                                                            },
                                                            "progress": 0,
                                                            "budgetedCost": 23760,
                                                            "actualCost": 0,
                                                            "expenseBudget": 0,
                                                            "expenseCost": 0,
                                                            "incurredExpense": 0,
                                                            "plannedEffort": 56,
                                                            "actualEffort": 0,
                                                            "remainingEffort": 56,
                                                            "plannedStart": "2023-01-30",
                                                            "plannedEnd": "2023-02-26",
                                                            "costPercentage": 0,
                                                            "costRAG": "NONE",
                                                            "effortPercentage": 0,
                                                            "effortRAG": "NONE",
                                                            "scheduleVariance": -41,
                                                            "costVariance": 0,
                                                            "scheduleRAG": "KO",
                                                            "earnedValue": 0,
                                                            "bcws": 23760,
                                                            "bcwp": 0,
                                                            "sv": -23760,
                                                            "spi": 0,
                                                            "cpiToComplete": 1,
                                                            "estimateAtCompletion": 23760,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        }
                                                    ],
                                                    "element": {
                                                        "id": 205,
                                                        "externalId": "",
                                                        "name": "Lot 1",
                                                        "path": "Lot 1",
                                                        "type": "phase",
                                                        "state": "open"
                                                    },
                                                    "progress": 0.6522157996146436,
                                                    "budgetedCost": 72660,
                                                    "actualCost": 52607,
                                                    "expenseBudget": 4000,
                                                    "expenseCost": 15360,
                                                    "incurredExpense": 16000,
                                                    "plannedEffort": 161,
                                                    "actualEffort": 85,
                                                    "remainingEffort": 57.885173611111114,
                                                    "plannedStart": "2023-01-02",
                                                    "actualStart": "2022-12-27",
                                                    "plannedEnd": "2023-02-26",
                                                    "costPercentage": 0.7240159647674098,
                                                    "costRAG": "WARN",
                                                    "effortPercentage": 0.5279503105590062,
                                                    "effortRAG": "OK",
                                                    "scheduleVariance": -44,
                                                    "costVariance": -5216.999999999993,
                                                    "scheduleRAG": "KO",
                                                    "earnedValue": 47390.00000000001,
                                                    "bcws": 72660,
                                                    "bcwp": 47390.00000000001,
                                                    "sv": -25269.999999999993,
                                                    "cpi": 0.9008306879312641,
                                                    "spi": 0.6522157996146436,
                                                    "cpiToComplete": 1.2601605744776339,
                                                    "scheduleVarianceAtCompletion": -106,
                                                    "estimateAtCompletion": 77837.58382290267,
                                                    "progressMode": "WEIGHTED_SUM"
                                                },
                                                {
                                                    "children": [
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 374,
                                                                        "externalId": "XX-6265",
                                                                        "name": "Module 3",
                                                                        "path": "Développement » Module 3",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 8400,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 20,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 20,
                                                                    "plannedStart": "2023-02-28",
                                                                    "plannedEnd": "2023-03-17",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -12,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 5399.999999999999,
                                                                    "bcwp": 0,
                                                                    "sv": -5399.999999999999,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 8400,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 393,
                                                                        "externalId": "XX-6266",
                                                                        "name": "Module 4",
                                                                        "path": "Développement » Module 4",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 8400,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 20,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 20,
                                                                    "plannedStart": "2023-02-28",
                                                                    "plannedEnd": "2023-03-29",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -12,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 3436.3636363636365,
                                                                    "bcwp": 0,
                                                                    "sv": -3436.3636363636365,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 8400,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 412,
                                                                        "externalId": "XX-6267",
                                                                        "name": "Interface Module 3 et 1",
                                                                        "path": "Développement » Interface Module 3 et 1",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 3780,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 9,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 9,
                                                                    "plannedStart": "2023-03-18",
                                                                    "plannedEnd": "2023-03-29",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 3780,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 242,
                                                                        "externalId": "XX-6263",
                                                                        "name": "Suivi Projet 2.1",
                                                                        "path": "Management » Suivi Projet 2.1",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 4160,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 8,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 8,
                                                                    "plannedStart": "2023-02-28",
                                                                    "plannedEnd": "2023-03-29",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "scheduleVariance": -12,
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "KO",
                                                                    "earnedValue": 0,
                                                                    "bcws": 1701.818181818182,
                                                                    "bcwp": 0,
                                                                    "sv": -1701.818181818182,
                                                                    "spi": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 4160,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 209,
                                                                "externalId": "XX-6203",
                                                                "name": "Réalisation lot 2",
                                                                "path": "Lot 2 » Réalisation lot 2",
                                                                "type": "phase",
                                                                "state": "ready"
                                                            },
                                                            "progress": 0,
                                                            "budgetedCost": 24740,
                                                            "actualCost": 0,
                                                            "expenseBudget": 0,
                                                            "expenseCost": 0,
                                                            "incurredExpense": 0,
                                                            "plannedEffort": 57,
                                                            "actualEffort": 0,
                                                            "remainingEffort": 57,
                                                            "plannedStart": "2023-02-28",
                                                            "plannedEnd": "2023-03-29",
                                                            "costPercentage": 0,
                                                            "costRAG": "NONE",
                                                            "effortPercentage": 0,
                                                            "effortRAG": "NONE",
                                                            "scheduleVariance": -12,
                                                            "costVariance": 0,
                                                            "scheduleRAG": "KO",
                                                            "earnedValue": 0,
                                                            "bcws": 10538.181818181818,
                                                            "bcwp": 0,
                                                            "sv": -10538.181818181818,
                                                            "spi": 0,
                                                            "cpiToComplete": 1,
                                                            "estimateAtCompletion": 24740,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        },
                                                        {
                                                            "children": [
                                                                {
                                                                    "element": {
                                                                        "id": 507,
                                                                        "externalId": "XX-6271",
                                                                        "name": "Scripts et jeux de données des tests lot 2",
                                                                        "path": "Qualité » Scripts et jeux de données des tests lot 2",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 11400,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 30,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 30,
                                                                    "plannedStart": "2023-03-30",
                                                                    "plannedEnd": "2023-04-05",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 11400,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 508,
                                                                        "externalId": "",
                                                                        "name": "Recette lot 1+2",
                                                                        "path": "Qualité » Recette lot 1+2",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 3800,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 10,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 10,
                                                                    "plannedStart": "2023-04-06",
                                                                    "plannedEnd": "2023-04-20",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 3800,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 451,
                                                                        "externalId": "XX-6269",
                                                                        "name": "Corrections Lot 2",
                                                                        "path": "Développement » Corrections Lot 2",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 8400,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 20,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 20,
                                                                    "plannedStart": "2023-04-06",
                                                                    "plannedEnd": "2023-04-26",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 8400,
                                                                    "progressMode": "MANUAL"
                                                                },
                                                                {
                                                                    "element": {
                                                                        "id": 249,
                                                                        "externalId": "XX-6264",
                                                                        "name": "Suivi Projet 2.2",
                                                                        "path": "Management » Suivi Projet 2.2",
                                                                        "type": "goal",
                                                                        "state": "ready"
                                                                    },
                                                                    "progress": 0,
                                                                    "budgetedCost": 5200,
                                                                    "actualCost": 0,
                                                                    "expenseBudget": 0,
                                                                    "expenseCost": 0,
                                                                    "incurredExpense": 0,
                                                                    "plannedEffort": 10,
                                                                    "actualEffort": 0,
                                                                    "remainingEffort": 10,
                                                                    "plannedStart": "2023-03-30",
                                                                    "plannedEnd": "2023-04-26",
                                                                    "costPercentage": 0,
                                                                    "costRAG": "NONE",
                                                                    "effortPercentage": 0,
                                                                    "effortRAG": "NONE",
                                                                    "costVariance": 0,
                                                                    "scheduleRAG": "NONE",
                                                                    "earnedValue": 0,
                                                                    "bcws": 0,
                                                                    "bcwp": 0,
                                                                    "sv": 0,
                                                                    "cpiToComplete": 1,
                                                                    "estimateAtCompletion": 5200,
                                                                    "progressMode": "MANUAL"
                                                                }
                                                            ],
                                                            "element": {
                                                                "id": 210,
                                                                "externalId": "",
                                                                "name": "Tests Lot 2",
                                                                "path": "Lot 2 » Tests Lot 2",
                                                                "type": "phase",
                                                                "state": "ready"
                                                            },
                                                            "progress": 0,
                                                            "budgetedCost": 28800,
                                                            "actualCost": 0,
                                                            "expenseBudget": 0,
                                                            "expenseCost": 0,
                                                            "incurredExpense": 0,
                                                            "plannedEffort": 70,
                                                            "actualEffort": 0,
                                                            "remainingEffort": 70,
                                                            "plannedStart": "2023-03-30",
                                                            "plannedEnd": "2023-04-26",
                                                            "costPercentage": 0,
                                                            "costRAG": "NONE",
                                                            "effortPercentage": 0,
                                                            "effortRAG": "NONE",
                                                            "costVariance": 0,
                                                            "scheduleRAG": "NONE",
                                                            "earnedValue": 0,
                                                            "bcws": 0,
                                                            "bcwp": 0,
                                                            "sv": 0,
                                                            "cpiToComplete": 1,
                                                            "estimateAtCompletion": 28800,
                                                            "progressMode": "WEIGHTED_SUM"
                                                        }
                                                    ],
                                                    "element": {
                                                        "id": 208,
                                                        "externalId": "",
                                                        "name": "Lot 2",
                                                        "path": "Lot 2",
                                                        "type": "phase",
                                                        "state": "ready"
                                                    },
                                                    "progress": 0,
                                                    "budgetedCost": 53540,
                                                    "actualCost": 0,
                                                    "expenseBudget": 0,
                                                    "expenseCost": 0,
                                                    "incurredExpense": 0,
                                                    "plannedEffort": 127,
                                                    "actualEffort": 0,
                                                    "remainingEffort": 127,
                                                    "plannedStart": "2023-02-28",
                                                    "plannedEnd": "2023-04-26",
                                                    "costPercentage": 0,
                                                    "costRAG": "NONE",
                                                    "effortPercentage": 0,
                                                    "effortRAG": "NONE",
                                                    "scheduleVariance": -12,
                                                    "costVariance": 0,
                                                    "scheduleRAG": "KO",
                                                    "earnedValue": 0,
                                                    "bcws": 10538.181818181818,
                                                    "bcwp": 0,
                                                    "sv": -10538.181818181818,
                                                    "spi": 0,
                                                    "cpiToComplete": 1,
                                                    "estimateAtCompletion": 53540,
                                                    "progressMode": "WEIGHTED_SUM"
                                                }
                                            ],
                                            "element": {
                                                "id": 196,
                                                "externalId": "",
                                                "name": "Demo",
                                                "type": "project",
                                                "priority": 1,
                                                "template": false,
                                                "projectType": "PROJECT",
                                                "archived": false,
                                                "sponsor": "Direction des Opérations",
                                                "state": {
                                                    "id": 24,
                                                    "name": "En Cours",
                                                    "type": "projectstate",
                                                    "finished": false
                                                },
                                                "creationDate": "2023-01-18"
                                            },
                                            "progress": 0.5745519326279421,
                                            "budgetedCost": 185240,
                                            "actualCost": 126345,
                                            "expenseBudget": 4000,
                                            "expenseCost": 15360,
                                            "incurredExpense": 16000,
                                            "plannedEffort": 419,
                                            "actualEffort": 246,
                                            "remainingEffort": 184.8851736111111,
                                            "plannedStart": "2022-10-24",
                                            "actualStart": "2022-10-24",
                                            "plannedEnd": "2023-04-26",
                                            "costPercentage": 0.6820611099114662,
                                            "costRAG": "KO",
                                            "effortPercentage": 0.5871121718377088,
                                            "effortRAG": "WARN",
                                            "scheduleVariance": -44,
                                            "costVariance": -19915,
                                            "scheduleRAG": "KO",
                                            "earnedValue": 106430,
                                            "bcws": 142238.18181818182,
                                            "bcwp": 106430,
                                            "sv": -35808.18181818182,
                                            "cpi": 0.8423760338754996,
                                            "spi": 0.7482519717247638,
                                            "cpiToComplete": 1.338144154851855,
                                            "scheduleVarianceAtCompletion": -86,
                                            "estimateAtCompletion": 205115.58382290267,
                                            "costUnit": "€",
                                            "effortUnit": "jh"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_progress_report",
                "description": "Returns a hierarchical structure that matches the roadmap's structure. \n\nThe *children* property is used to embed progress reports of sub-elements in the hierarchy.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "withDeliverables",
                        "description": "If true, progress data about the planned deliverables will be included. *Note: the default value may change in the future.*"
                    }
                ]
            }
        },
        "/projects/{id}/risks": {
            "get": {
                "summary": "List project's risks",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Risk"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 456,
                                                "externalId": "",
                                                "name": "...",
                                                "type": "risk",
                                                "description": "...",
                                                "state": "RESPONDED",
                                                "probability": "LOW",
                                                "impact": "HIGH",
                                                "rating": "MODERATE",
                                                "response": "AVOID",
                                                "responseDetails": "...",
                                                "checkList": [
                                                    {
                                                        "description": "action #1 ...",
                                                        "completed": true
                                                    },
                                                    {
                                                        "description": "action #2 ...",
                                                        "completed": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_risks",
                "description": "Returns the project's risks"
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Project id"
                }
            ]
        },
        "/projects/{id}/roadmap": {
            "get": {
                "summary": "Get project's roadmap",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#/components/schemas/RoadmapElement"
                                        },
                                        {
                                            "type": "object",
                                            "description": "Root-only fields: unit symbols inherited from the project.",
                                            "properties": {
                                                "scopeUnit": {
                                                    "type": "string",
                                                    "description": "Project scope unit symbol (e.g. `jh`, `h`). Root node only.",
                                                    "readOnly": true
                                                },
                                                "effortUnit": {
                                                    "type": "string",
                                                    "description": "Project effort display unit symbol (e.g. `jh`, `h`). Root node only.",
                                                    "readOnly": true
                                                },
                                                "costUnit": {
                                                    "type": "string",
                                                    "description": "Project main cost currency symbol (e.g. `€`, `$`). Root node only.",
                                                    "readOnly": true
                                                }
                                            }
                                        }
                                    ]
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "id": 190,
                                            "externalId": "PROJ-190",
                                            "name": "Demo",
                                            "type": "project",
                                            "description": "...",
                                            "state": {
                                                "id": 45,
                                                "name": "In Progress",
                                                "type": "projectstate",
                                                "finished": false
                                            },
                                            "scopeUnit": {
                                                "id": 218,
                                                "name": "jour homme",
                                                "type": "EFFORT",
                                                "symbol": "jh"
                                            },
                                            "effortUnit": {
                                                "id": 218,
                                                "name": "jour homme",
                                                "type": "EFFORT",
                                                "symbol": "jh"
                                            },
                                            "costUnit": {
                                                "id": 219,
                                                "name": "Euro",
                                                "type": "COST",
                                                "symbol": "€"
                                            },
                                            "children": [
                                                {
                                                    "id": 220,
                                                    "externalId": "XX-6240",
                                                    "name": "Etude",
                                                    "type": "phase",
                                                    "description": "",
                                                    "path": "Etude",
                                                    "state": "closed",
                                                    "children": [
                                                        {
                                                            "id": 221,
                                                            "externalId": "XX-6239",
                                                            "name": "Analyse",
                                                            "type": "phase",
                                                            "description": "",
                                                            "path": "Etude » Analyse",
                                                            "state": "closed",
                                                            "children": [
                                                                {
                                                                    "id": 193,
                                                                    "externalId": "XX-6301",
                                                                    "name": "Plan Projet",
                                                                    "type": "goal",
                                                                    "description": "...",
                                                                    "path": "Management » Plan Projet",
                                                                    "state": "closed",
                                                                    "metrics": {
                                                                        "effort": 8,
                                                                        "cost": 4160,
                                                                        "missingEstimates": false
                                                                    },
                                                                    "effortByProfile": [
                                                                        {
                                                                            "effort": 8,
                                                                            "profile": {
                                                                                "id": 22,
                                                                                "name": "Chef de projet"
                                                                            }
                                                                        }
                                                                    ],
                                                                    "tasks": [
                                                                        {
                                                                            "id": 379,
                                                                            "name": "Comité pilotage",
                                                                            "type": "task",
                                                                            "description": "",
                                                                            "performer": {
                                                                                "id": 32,
                                                                                "name": "Axel Martin"
                                                                            },
                                                                            "state": "completed",
                                                                            "closed": true,
                                                                            "effort": 12.2
                                                                        }
                                                                    ]
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_roadmap",
                "description": "Returns the project's roadmap that consists in a hierarchy of phases, sub-phases, planned deliverables and optionnally tasks.\n\nAll the roadmap elements are provided with their description and their estimates.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "tasks",
                        "description": "Includes tasks for each deliverable."
                    }
                ]
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Project id"
                }
            ]
        },
        "/projects/{id}/brief": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "Get project brief information",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#/components/schemas/Project"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "customDatasheets": {
                                                    "type": "array",
                                                    "description": "Custom datasheets attached to the project (short form: id, name, type, externalId).",
                                                    "readOnly": true,
                                                    "items": {
                                                        "$ref": "#/components/schemas/Entity"
                                                    }
                                                },
                                                "appraisal": {
                                                    "$ref": "#/components/schemas/ProjectAppraisal"
                                                },
                                                "observers": {
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/User"
                                                    }
                                                },
                                                "projectManagers": {
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/User"
                                                    }
                                                },
                                                "teamMembers": {
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/User"
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "id": 196,
                                            "externalId": "",
                                            "name": "Demo",
                                            "type": "project",
                                            "description": "...",
                                            "priority": 1,
                                            "template": false,
                                            "projectType": "PROJECT",
                                            "archived": false,
                                            "labels": [
                                                {
                                                    "id": 123,
                                                    "name": "label1",
                                                    "type": "projectlabel"
                                                },
                                                {
                                                    "id": 124,
                                                    "name": "label2",
                                                    "type": "projectlabel"
                                                }
                                            ],
                                            "sponsor": "Direction des Opérations",
                                            "state": {
                                                "id": 24,
                                                "name": "En Cours",
                                                "type": "projectstate",
                                                "finished": false
                                            },
                                            "customDatasheets": [
                                                {
                                                    "id": 3,
                                                    "externalId": "PROJECT_REQUEST",
                                                    "name": "Demande de projet",
                                                    "type": "customdatasheet",
                                                    "fields": [
                                                        {
                                                            "name": "Demandeur",
                                                            "externalId": "APPLICANT",
                                                            "valueType": "STRING",
                                                            "value": "..."
                                                        },
                                                        {
                                                            "name": "Date de la demande",
                                                            "externalId": "REQUEST_DATE",
                                                            "valueType": "DATE",
                                                            "value": "2026-01-09"
                                                        }
                                                    ],
                                                    "costUnit": "€",
                                                    "form": {
                                                        "id": 12,
                                                        "externalId": "PROJECT_REQUEST",
                                                        "name": "Demande de projet",
                                                        "type": "customform"
                                                    }
                                                },
                                                {
                                                    "id": 4,
                                                    "externalId": "BUSINESS_CASE",
                                                    "name": "Etude d’opportunité",
                                                    "type": "customdatasheet",
                                                    "fields": [
                                                        {
                                                            "name": "Contexte",
                                                            "externalId": "CONTEXT",
                                                            "valueType": "TEXT",
                                                            "value": "..."
                                                        }
                                                    ],
                                                    "costUnit": "€",
                                                    "form": {
                                                        "id": 18,
                                                        "externalId": "BUSINESS_CASE",
                                                        "name": "Etude d’opportunité",
                                                        "type": "customform"
                                                    }
                                                }
                                            ],
                                            "appraisal": {
                                                "rating": 5,
                                                "comments": "Commentaire sur l'état et l'avancement du projet: travaux en cours, points à surveiller, risques, actions à prendre...",
                                                "lastUpdate": "2023-01-18T16:15:58.202+00:00"
                                            },
                                            "projectManagers": [
                                                {
                                                    "id": 49,
                                                    "externalId": "USR-49",
                                                    "name": "Pierre Durand",
                                                    "type": "user",
                                                    "firstname": "Pierre",
                                                    "lastname": "Durand",
                                                    "archived": false,
                                                    "email": "Pierre-test@timeperformance.com",
                                                    "extern": false
                                                }
                                            ],
                                            "teamMembers": [
                                                {
                                                    "id": 51,
                                                    "externalId": "USR-51",
                                                    "name": "Alice Jung",
                                                    "type": "user",
                                                    "firstname": "Alice",
                                                    "lastname": "Jung",
                                                    "archived": true,
                                                    "email": "Alice-test@timeperformance.com",
                                                    "extern": false
                                                },
                                                {
                                                    "id": 53,
                                                    "externalId": "USR-53",
                                                    "name": "Axel Martin",
                                                    "type": "user",
                                                    "firstname": "Axel",
                                                    "lastname": "Martin",
                                                    "archived": false,
                                                    "email": "Axel-test@timeperformance.com",
                                                    "extern": false
                                                },
                                                {
                                                    "id": 55,
                                                    "externalId": "USR-55",
                                                    "name": "Laetitia Blanc",
                                                    "type": "user",
                                                    "firstname": "Laetitia",
                                                    "lastname": "Blanc",
                                                    "archived": false,
                                                    "email": "Laetitia-test@timeperformance.com",
                                                    "extern": true
                                                },
                                                {
                                                    "id": 59,
                                                    "externalId": "USR-59",
                                                    "name": "Patrick Brual",
                                                    "type": "user",
                                                    "firstname": "Patrick",
                                                    "lastname": "Brual",
                                                    "archived": false,
                                                    "email": "Patrick-test@timeperformance.com",
                                                    "extern": false
                                                },
                                                {
                                                    "id": 57,
                                                    "externalId": "USR-57",
                                                    "name": "Philippe Martin",
                                                    "type": "user",
                                                    "firstname": "Philippe",
                                                    "lastname": "Martin",
                                                    "archived": false,
                                                    "email": "Philippe-test@timeperformance.com",
                                                    "extern": false
                                                }
                                            ],
                                            "creationDate": "2023-01-18"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_brief",
                "description": "Returns the full description of the project with all extra details as provided in the project brief page.\n\nExtra details include: the team, observers, info in the customized datasheets..."
            }
        },
        "/projects/{id}/datasheets": {
            "parameters": [
                {
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "The id of the project.",
                    "schema": {
                        "type": "integer"
                    }
                }
            ],
            "post": {
                "tags": [
                    "project"
                ],
                "summary": "Add a new (empty) datasheet to a project",
                "description": "Creates a new, empty custom datasheet for the specified project using the selected custom form (provided by the 'formId' query parameter). The datasheet will be created without any field values.",
                "operationId": "create_project_datasheet",
                "parameters": [
                    {
                        "name": "formId",
                        "in": "query",
                        "required": true,
                        "description": "Id of the custom form (template) to use for this datasheet.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A datasheet for this form already exists on the project — its reference is returned and no new datasheet is created.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Entity"
                                },
                                "example": {
                                    "id": 134,
                                    "externalId": "FORM1",
                                    "name": "datasheet name",
                                    "type": "customdatasheet"
                                }
                            }
                        }
                    },
                    "201": {
                        "description": "Reference (short form: id, name, type, externalId) of the newly created datasheet.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Entity"
                                },
                                "example": {
                                    "id": 134,
                                    "externalId": "FORM1",
                                    "name": "datasheet name",
                                    "type": "customdatasheet"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                }
            },
            "get": {
                "summary": "Get project's datasheets",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/CustomDatasheet"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 3,
                                                "externalId": "PROJECT_REQUEST",
                                                "name": "Demande de projet",
                                                "type": "customdatasheet",
                                                "fields": [
                                                    {
                                                        "name": "Demandeur",
                                                        "externalId": "APPLICANT",
                                                        "valueType": "STRING",
                                                        "value": "Alice Martin"
                                                    },
                                                    {
                                                        "name": "Date de la demande",
                                                        "externalId": "REQUEST_DATE",
                                                        "valueType": "DATE",
                                                        "value": "2026-01-09"
                                                    },
                                                    {
                                                        "name": "GO",
                                                        "externalId": "GO_NOGO",
                                                        "valueType": "BOOLEAN",
                                                        "value": true
                                                    }
                                                ],
                                                "form": {
                                                    "id": 12,
                                                    "externalId": "PROJECT_REQUEST",
                                                    "name": "Demande de projet",
                                                    "type": "customform"
                                                }
                                            },
                                            {
                                                "id": 4,
                                                "externalId": "BUSINESS_CASE",
                                                "name": "Etude d’opportunité",
                                                "type": "customdatasheet",
                                                "fields": [
                                                    {
                                                        "name": "Contexte",
                                                        "externalId": "CONTEXT",
                                                        "valueType": "TEXT",
                                                        "value": "Modernisation UX."
                                                    }
                                                ],
                                                "costUnit": "€",
                                                "form": {
                                                    "id": 18,
                                                    "name": "Demande de projet",
                                                    "type": "customform"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_datasheets",
                "description": "Returns the project's custom datasheets.\n\n"
            },
            "patch": {
                "tags": [
                    "project"
                ],
                "summary": "Update datasheet fields of a project",
                "description": "Updates the values of fields in one or more datasheets of the specified project. Each update targets a field, identified either by its `name` or `externalId` and the `datasheetId`. The `datasheetId` is optional but highly recommended to avoid ambiguity. On success, returns a reference object for the updated project.",
                "operationId": "update_project_datasheet",
                "requestBody": {
                    "description": "List of updates to apply. Each object may specify the datasheetId (recommended), and must specify the field to update (by name or externalId) and the new value.",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "datasheetId": {
                                            "type": "integer",
                                            "description": "Optional: Id of the datasheet to update."
                                        },
                                        "name": {
                                            "type": "string",
                                            "description": "Name of the field to update (alternative to externalId)."
                                        },
                                        "externalId": {
                                            "type": "string",
                                            "description": "ExternalId of the field to update (alternative to name)."
                                        },
                                        "value": {
                                            "description": "New value to assign to the field."
                                        }
                                    },
                                    "required": [
                                        "value"
                                    ],
                                    "oneOf": [
                                        {
                                            "required": [
                                                "name"
                                            ]
                                        },
                                        {
                                            "required": [
                                                "externalId"
                                            ]
                                        }
                                    ]
                                }
                            },
                            "example": [
                                {
                                    "datasheetId": 3,
                                    "name": "Validation date",
                                    "value": "2022-12-05"
                                },
                                {
                                    "datasheetId": 456,
                                    "externalId": "BG1",
                                    "value": 54524.31
                                },
                                {
                                    "name": "Budget",
                                    "value": 100000
                                }
                            ]
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Project reference object (project updated).",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Project"
                                },
                                "example": {
                                    "id": 42,
                                    "externalId": "PRJ-42",
                                    "name": "Migration ERP",
                                    "type": "project"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                }
            }
        },
        "/projects/datasheets/{id}": {
            "delete": {
                "tags": [
                    "project"
                ],
                "summary": "Delete a datasheet by id",
                "description": "Deletes the datasheet identified by its id.",
                "operationId": "delete_datasheet",
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "description": "The id of the datasheet to delete.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": "Datasheet deleted. No content is returned."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                }
            }
        },
        "/projects/{id}/team": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "List project's team members",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "user": {
                                                "$ref": "#/components/schemas/Entity",
                                                "description": "Team member (short form: id, name, type, externalId)."
                                            },
                                            "profile": {
                                                "$ref": "#/components/schemas/Entity",
                                                "description": "Resource profile for this project (short form: id, name, type, externalId)."
                                            },
                                            "costRate": {
                                                "$ref": "#/components/schemas/CostRate"
                                            },
                                            "rights": {
                                                "type": "string",
                                                "enum": [
                                                    "MEMBER",
                                                    "PROJECT_MANAGER"
                                                ],
                                                "description": "rights can be PROJECT_MANAGER, MEMBER or null (= no longer have access to the project)",
                                                "nullable": true
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_team_members",
                "description": "Returns the list of project team members with profiles, cost rates and rights.\n\nNote that user's profile for the project can be different from user's default profile."
            }
        },
        "/projects/{id}/team/addMember": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "post": {
                "summary": "Add project member",
                "operationId": "add_project_member",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Adds a person to the project's team. \n\nIf the skill profile is not provided, the user's default profile will be used.\n\n*The profile will be added to the project's configuration if necessary.*",
                "parameters": [
                    {
                        "schema": {
                            "type": "integer"
                        },
                        "in": "query",
                        "name": "user",
                        "description": "User id",
                        "required": true
                    },
                    {
                        "schema": {
                            "type": "integer"
                        },
                        "in": "query",
                        "name": "profile",
                        "description": "Skill profile id. "
                    },
                    {
                        "schema": {
                            "type": "boolean",
                            "default": "false"
                        },
                        "in": "query",
                        "name": "projectManager",
                        "description": "With project manager right"
                    }
                ],
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/{id}/team/setMemberRights": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "post": {
                "summary": "Set team member's rights on the project",
                "operationId": "set_project_member_rights",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Sets a team member's right on the project. ",
                "parameters": [
                    {
                        "schema": {
                            "type": "integer"
                        },
                        "in": "query",
                        "name": "user",
                        "description": "User id",
                        "required": true
                    },
                    {
                        "schema": {
                            "type": "boolean",
                            "default": "false"
                        },
                        "in": "query",
                        "name": "projectManager",
                        "description": "Project manager right toggle",
                        "required": true
                    }
                ],
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/{id}/team/removeMember": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "post": {
                "summary": "Remove project member",
                "operationId": "remove_project_member",
                "responses": {
                    "200": {
                        "description": "OK"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Removes a person from the project's team. ",
                "parameters": [
                    {
                        "schema": {
                            "type": "integer"
                        },
                        "in": "query",
                        "name": "user",
                        "description": "User id",
                        "required": true
                    }
                ],
                "tags": [
                    "project"
                ]
            }
        },
        "/projects/{id}/actualsTimeseries": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "Get project's time series",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "currency": {
                                            "type": "string",
                                            "description": "Currency symbol (e.g. \"€\", \"$\")."
                                        },
                                        "actualCosts": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "value": {
                                                        "type": "number"
                                                    }
                                                }
                                            }
                                        },
                                        "budgetedCosts": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date"
                                                    },
                                                    "value": {
                                                        "type": "number"
                                                    }
                                                }
                                            }
                                        },
                                        "actualProgress": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "date": {
                                                        "type": "string",
                                                        "format": "date",
                                                        "description": "ISO 8601 date (YYYY-MM-DD)."
                                                    },
                                                    "value": {
                                                        "$ref": "#/components/schemas/Percentage"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "currency": {
                                                "name": "Euro",
                                                "symbol": "€"
                                            },
                                            "actualCosts": [
                                                {
                                                    "date": "2018-03-04",
                                                    "value": 0
                                                },
                                                {
                                                    "date": "2018-03-05",
                                                    "value": 1450
                                                }
                                            ],
                                            "budgetedCosts": [
                                                {
                                                    "date": "2018-04-01",
                                                    "value": 0
                                                },
                                                {
                                                    "date": "2018-04-06",
                                                    "value": 3066.6666666666665
                                                }
                                            ],
                                            "actualProgress": [
                                                {
                                                    "date": "2018-06-12",
                                                    "value": 0.38328476821192053
                                                },
                                                {
                                                    "date": "2018-06-14",
                                                    "value": 0.38328476821192053
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_actuals_timeseries",
                "description": "Returns the following timeseries: actual cost, actual progress and budgeted cost.\n\n*Note: if a value is not provided for a specific date, it can be calculated by interpolation.*"
            }
        },
        "/users": {
            "summary": "",
            "post": {
                "tags": [
                    "user"
                ],
                "description": "Creates a user.\n\nNote that an email is sent to the person with instructions on how to log in if rights.appAccess is not set to false.",
                "requestBody": {
                    "description": "User data",
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/User.write"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Created user",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "422": {
                        "description": "Validation Failure",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ValidationErrors"
                                }
                            }
                        }
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "summary": "Create a user",
                "operationId": "create_user"
            },
            "get": {
                "tags": [
                    "user"
                ],
                "description": "List all users",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 51,
                                                "externalId": "USR-51",
                                                "name": "Alice Jung",
                                                "type": "user",
                                                "firstname": "Alice",
                                                "lastname": "Jung",
                                                "archived": true,
                                                "email": "Alice-test@timeperformance.com",
                                                "extern": false,
                                                "manager": false,
                                                "obs": {
                                                    "id": 38,
                                                    "name": "Direction des Systèmes d'Information",
                                                    "path": "ACME » Direction des Systèmes d'Information",
                                                    "type": "obs"
                                                },
                                                "profile": {
                                                    "id": 32,
                                                    "externalId": "XX-6423",
                                                    "name": "Analyste",
                                                    "type": "resourceprofile"
                                                },
                                                "availabilityStart": "2022-10-24",
                                                "costRate": {
                                                    "val": 460,
                                                    "unit": "€",
                                                    "rateMode": "DAILY_VAR"
                                                },
                                                "rights": {
                                                    "limitedAccess": false,
                                                    "administrator": false,
                                                    "manager": false,
                                                    "pmo": false,
                                                    "createProject": false,
                                                    "manageSelf": false,
                                                    "appAccess": false
                                                }
                                            }
                                        ]
                                    }
                                }
                            },
                            "application/xml": {
                                "schema": {
                                    "type": "object",
                                    "properties": {}
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "summary": "List users",
                "operationId": "list_users"
            }
        },
        "/users/{id}": {
            "summary": "",
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "User id"
                }
            ],
            "patch": {
                "tags": [
                    "user"
                ],
                "description": "Updates a user.",
                "responses": {
                    "200": {
                        "description": "Modified user",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "description": "Validation Failure",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ValidationErrors"
                                }
                            }
                        }
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "parameters": [],
                "summary": "Update user",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/User.write"
                            },
                            "examples": {
                                "Set external Id": {
                                    "value": {
                                        "externalId": "AGH-2023-7047"
                                    }
                                },
                                "Change department or service and profile": {
                                    "value": {
                                        "obs": 653,
                                        "profile": 13456
                                    }
                                },
                                "Update rights": {
                                    "value": {
                                        "rights": {
                                            "manager": true,
                                            "pmo": true
                                        }
                                    }
                                },
                                "Set cost rates": {
                                    "value": {
                                        "costRate": {
                                            "val": 742.12,
                                            "rateMode": "DAILY_VAR"
                                        }
                                    }
                                },
                                "Deny app access": {
                                    "value": {
                                        "rights": {
                                            "appAccess": false
                                        }
                                    }
                                }
                            }
                        }
                    }
                },
                "operationId": "update_user"
            },
            "get": {
                "tags": [
                    "user"
                ],
                "description": "Get user",
                "parameters": [],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/User"
                                }
                            },
                            "application/xml": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "id": {
                                            "type": "integer"
                                        },
                                        "name": {
                                            "type": "string"
                                        },
                                        "type": {
                                            "type": "string"
                                        },
                                        "externalId": {
                                            "type": "string"
                                        },
                                        "firstname": {
                                            "type": "string"
                                        },
                                        "lastname": {
                                            "type": "string"
                                        },
                                        "archived": {
                                            "type": "boolean"
                                        },
                                        "email": {
                                            "type": "string"
                                        },
                                        "availabilityStart": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "availabilityEnd": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "extern": {
                                            "type": "boolean"
                                        },
                                        "manager": {
                                            "type": "boolean"
                                        },
                                        "obs": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "path": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "profile": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "type": {
                                                    "type": "string"
                                                }
                                            }
                                        },
                                        "costRate": {
                                            "$ref": "#/components/schemas/CostRate"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_user",
                "summary": "Get user"
            },
            "delete": {
                "summary": "Delete user",
                "operationId": "delete_user",
                "responses": {
                    "204": {
                        "description": "user deleted"
                    },
                    "401": {
                        "description": "Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Removes the user and some related data (time entries, assignments).\n\nThe removal can be forbidden. For instance, the user must not be involved in a project. In this case, a 401 response is returned. It is still possible to archive the user.",
                "tags": [
                    "user"
                ]
            }
        },
        "/users/{id}/assignments": {
            "get": {
                "summary": "List user's assignment schedule",
                "tags": [
                    "user"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Assignment"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "date": "2023-02-06 AM",
                                                "user": {
                                                    "id": 51,
                                                    "externalId": "USR-51",
                                                    "name": "Alice Jung",
                                                    "type": "user"
                                                },
                                                "to": {
                                                    "id": 20,
                                                    "externalId": "XX-6362",
                                                    "name": "Formation, Séminaire...",
                                                    "type": "npactivity"
                                                }
                                            },
                                            {
                                                "date": "2023-02-06 PM",
                                                "user": {
                                                    "id": 51,
                                                    "externalId": "USR-51",
                                                    "name": "Alice Jung",
                                                    "type": "user"
                                                },
                                                "to": {
                                                    "id": 20,
                                                    "externalId": "XX-6362",
                                                    "name": "Formation, Séminaire...",
                                                    "type": "npactivity"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_user_assignments",
                "description": "Returns the user's assignement schedule.",
                "parameters": [
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "firstDay",
                        "description": "First day of the time period (ISO 8601 date YYYY-MM-DD).",
                        "required": true
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "lastDay",
                        "required": true,
                        "description": "Last day of the time period (ISO 8601 date YYYY-MM-DD)."
                    }
                ]
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ]
        },
        "/users/{id}/archive": {
            "post": {
                "summary": "Archive user",
                "tags": [
                    "user"
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "archive_user",
                "description": "Archives the user so that he/she doesn't appear in user list anymore.\n\n*Note: Archived users can not log in.*",
                "parameters": []
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ]
        },
        "/users/{id}/emailLoginInstructions": {
            "post": {
                "summary": "Send login instruction to the user",
                "tags": [
                    "user"
                ],
                "responses": {
                    "204": {
                        "description": "No Content"
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "send_user_login_instructions",
                "description": "Sends an email to the user to explain how to log in using a password or via SSO.\n\n**Note that with password authentication, a new random password is generated.**",
                "parameters": []
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ]
        },
        "/users/{id}/assignments/syncUnavailabilities": {
            "post": {
                "summary": "Update user's unavailability schedule",
                "operationId": "sync_user_unavailabilities",
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "success": {
                                            "type": "boolean",
                                            "description": "false only when there are conflicts and `syncMode = 'ALL_OR_NOTHING'`"
                                        },
                                        "updated": {
                                            "type": "integer",
                                            "description": "count of half day assignments updated"
                                        },
                                        "conflicts": {
                                            "type": "array",
                                            "description": "list of half days for which there are conflicts.",
                                            "items": {
                                                "$ref": "#/components/schemas/HalfDay"
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "success": true,
                                            "updated": 12,
                                            "conflicts": [
                                                "2022-04-21 AM"
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid requests return `400` code response with the error message in the body.\n\n| Error text | Explanation |\n|----------|-------------|\n| Period 2022-03-31 PM is out of bounds | The half day of the assignment must be included in the period defined by firstDay and lastDay parameters. |\n| Period 2022-04-21 AM is out of the person's availability period: 2021-12-20 -> 2022-04-17 | Assignments are not valid when the person is not part of the organization. |\n| Duplicate schedule period: 2022-04-15 AM | 2 assignements for the same half day are not suported. |\n| 2022-04-14PM is not parseable as a half day | Half day Format is `YYYY-MM-DD XX` where XX is AM or PM |\n| Failed to parse request body | The string in the request body cannot be parsed due to structure, syntax or data type problems. |\n\nNote: the list above is not exhaustive. The other errors are generic and self-explanatory."
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "422": {
                        "$ref": "#/components/responses/ValidationError"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "description": "Imports a person's unavailability schedule into TimePerformance to match data from an external source, typically an HR system.\n\nThe operation is a whole synchronization over the specified time period for all the kinds of unavailabilities (leaves, hollidays...). A whole synchronization means that it adds, updates or removes data as needed to match the data from the external source.\n\n### Conflicts\n\nUnavailability assignments may conflict with current assignments to projects and other activities. (see `syncMode`)\n",
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "syncMode": {
                                        "$ref": "#/components/schemas/SyncMode"
                                    },
                                    "firstDay": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "start of the time period over which to synchronize"
                                    },
                                    "lastDay": {
                                        "type": "string",
                                        "format": "date",
                                        "description": "end of the time period over which to synchronize"
                                    },
                                    "assignments": {
                                        "type": "array",
                                        "description": "list of scheduled half days grouped by unavailability",
                                        "items": {
                                            "type": "object",
                                            "properties": {
                                                "activityId": {
                                                    "type": "integer",
                                                    "description": "unavailability's id"
                                                },
                                                "periods": {
                                                    "description": "array of half days for which the unavailability is scheduled",
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/HalfDay"
                                                    }
                                                }
                                            },
                                            "required": [
                                                "activityId",
                                                "periods"
                                            ]
                                        }
                                    }
                                },
                                "required": [
                                    "syncMode",
                                    "firstDay",
                                    "lastDay",
                                    "assignments"
                                ]
                            },
                            "examples": {
                                "Example 1": {
                                    "value": {
                                        "userId": 42,
                                        "firstDay": "2022-04-01",
                                        "lastDay": "2022-04-30",
                                        "assignments": [
                                            {
                                                "activityId": 4566,
                                                "periods": [
                                                    "2022-04-15 AM",
                                                    "2022-04-15 PM"
                                                ]
                                            },
                                            {
                                                "activityId": 789,
                                                "periods": [
                                                    "2022-04-21 AM"
                                                ]
                                            }
                                        ],
                                        "syncMode": "NON_CONFLICT_ONLY"
                                    }
                                }
                            }
                        }
                    },
                    "description": "All unavailabity assignements of a person over a time period"
                },
                "tags": [
                    "user"
                ]
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ]
        },
        "/portfolios": {
            "get": {
                "summary": "List portfolios",
                "tags": [
                    "portfolio"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Portfolio"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 1951,
                                                "name": "My Portfolio",
                                                "type": "portfolio",
                                                "archived": false,
                                                "description": " ... ",
                                                "projects": [
                                                    {
                                                        "id": 185,
                                                        "externalId": "",
                                                        "name": "Demo",
                                                        "type": "project"
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_portfolios",
                "description": "Returns the list of portfolios accessible by the authentified user.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "archived",
                        "description": "If set to true, archived portfolios will be included."
                    }
                ]
            }
        },
        "/portfolios/getIdFromName": {
            "get": {
                "summary": "List ids of portfolios with the name",
                "tags": [
                    "portfolio"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "integer"
                                    }
                                },
                                "examples": {
                                    "several portfolios": {
                                        "value": [
                                            32,
                                            945
                                        ]
                                    },
                                    "one portfolio": {
                                        "value": [
                                            56
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "find_portfolio_ids_by_name",
                "description": "Returns an array of ids of portfolios matching the provided name.\n\n*Most APIs requires portfolio ids which are not displayed in the web interface. This API provides a simple way to retrieve the id from the portfolio's name. As portfolios names are not unique in the application, the call may return a list of ids.*",
                "parameters": [
                    {
                        "schema": {
                            "type": "string"
                        },
                        "in": "query",
                        "name": "name",
                        "description": "Name of the project to search (case insensitive).",
                        "required": true
                    }
                ]
            }
        },
        "/portfolios/{id}/progressReport": {
            "get": {
                "summary": "Get portfolio's progress report",
                "tags": [
                    "portfolio"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "type": "object",
                                            "description": "The portfolio this report concerns. Returned without its `description` and without its list of projects.",
                                            "properties": {
                                                "element": {
                                                    "$ref": "#/components/schemas/Portfolio",
                                                    "readOnly": true
                                                }
                                            }
                                        },
                                        {
                                            "$ref": "#/components/schemas/ProgressIndicators"
                                        },
                                        {
                                            "$ref": "#/components/schemas/TopReportUnits"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "children": {
                                                    "type": "array",
                                                    "description": "Progress reports of projects in the portfolio",
                                                    "items": {
                                                        "allOf": [
                                                            {
                                                                "allOf": [
                                                                    {
                                                                        "type": "object",
                                                                        "properties": {
                                                                            "element": {
                                                                                "allOf": [
                                                                                    {
                                                                                        "$ref": "#/components/schemas/Project"
                                                                                    },
                                                                                    {
                                                                                        "type": "object",
                                                                                        "description": "The project this row concerns, augmented with its appraisal. Returned without its `description`.",
                                                                                        "properties": {
                                                                                            "appraisal": {
                                                                                                "$ref": "#/components/schemas/ProjectAppraisal"
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                ]
                                                                            }
                                                                        }
                                                                    },
                                                                    {
                                                                        "$ref": "#/components/schemas/ProgressIndicators"
                                                                    }
                                                                ]
                                                            }
                                                        ]
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "element": {
                                                "id": 987,
                                                "name": "Tous les projets",
                                                "type": "portfolio",
                                                "archived": false
                                            },
                                            "progress": 0.48053104721081147,
                                            "budgetedCost": 335940,
                                            "actualCost": 218886.7142857143,
                                            "expenseBudget": 11000,
                                            "expenseCost": 39840,
                                            "incurredExpense": 44000,
                                            "plannedEffort": 786,
                                            "actualEffort": 404.57142857142856,
                                            "remainingEffort": 403.10134920634925,
                                            "plannedStart": "2022-10-24",
                                            "actualStart": "2022-10-24",
                                            "plannedEnd": "2023-04-26",
                                            "costPercentage": 0.6515649052977147,
                                            "costRAG": "KO",
                                            "effortPercentage": 0.514721919302072,
                                            "effortRAG": "WARN",
                                            "costVariance": -57457.114285714284,
                                            "earnedValue": 161429.6,
                                            "estimateAtCompletion": 391195.5191017633,
                                            "children": [
                                                {
                                                    "element": {
                                                        "id": 196,
                                                        "externalId": "",
                                                        "name": "Demo",
                                                        "type": "project",
                                                        "priority": 1,
                                                        "template": false,
                                                        "projectType": "PROJECT",
                                                        "archived": false,
                                                        "sponsor": "Direction des Opérations",
                                                        "state": {
                                                            "id": 24,
                                                            "name": "En Cours",
                                                            "type": "projectstate",
                                                            "finished": false
                                                        },
                                                        "appraisal": {
                                                            "rating": 5,
                                                            "comments": null,
                                                            "lastUpdate": "2023-01-18T16:15:58.202+00:00"
                                                        },
                                                        "creationDate": "2023-01-18"
                                                    },
                                                    "progress": 0.5745519326279421,
                                                    "budgetedCost": 185240,
                                                    "actualCost": 126345,
                                                    "expenseBudget": 4000,
                                                    "expenseCost": 15360,
                                                    "incurredExpense": 16000,
                                                    "plannedEffort": 419,
                                                    "actualEffort": 246,
                                                    "remainingEffort": 184.88515873015874,
                                                    "plannedStart": "2022-10-24",
                                                    "actualStart": "2022-10-24",
                                                    "plannedEnd": "2023-04-26",
                                                    "costPercentage": 0.6820611099114662,
                                                    "costRAG": "KO",
                                                    "effortPercentage": 0.5871121718377088,
                                                    "effortRAG": "WARN",
                                                    "scheduleVariance": -44,
                                                    "costVariance": -19915,
                                                    "scheduleRAG": "KO",
                                                    "earnedValue": 106430,
                                                    "bcws": 142238.18181818182,
                                                    "bcwp": 106430,
                                                    "sv": -35808.18181818182,
                                                    "cpi": 0.8423760338754996,
                                                    "spi": 0.7482519717247638,
                                                    "cpiToComplete": 1.338144154851855,
                                                    "scheduleVarianceAtCompletion": -86,
                                                    "estimateAtCompletion": 205115.58382290267
                                                },
                                                {
                                                    "element": {
                                                        "id": 583,
                                                        "externalId": "",
                                                        "name": "Refonte Site Web",
                                                        "type": "project",
                                                        "priority": 2,
                                                        "template": false,
                                                        "projectType": "PROJECT",
                                                        "archived": false,
                                                        "sponsor": "Direction Marketing",
                                                        "state": {
                                                            "id": 24,
                                                            "name": "En Cours",
                                                            "type": "projectstate",
                                                            "finished": false
                                                        },
                                                        "appraisal": {
                                                            "rating": 4,
                                                            "comments": null,
                                                            "lastUpdate": "2023-01-18T16:16:00.017+00:00"
                                                        },
                                                        "creationDate": "2023-01-18"
                                                    },
                                                    "progress": 0.8193353474320242,
                                                    "budgetedCost": 33100,
                                                    "actualCost": 58093.71428571429,
                                                    "expenseBudget": 7000,
                                                    "expenseCost": 24480,
                                                    "incurredExpense": 28000,
                                                    "plannedEffort": 87,
                                                    "actualEffort": 76.57142857142857,
                                                    "remainingEffort": 15.172619047619047,
                                                    "plannedStart": "2022-12-05",
                                                    "actualStart": "2022-12-05",
                                                    "plannedEnd": "2023-02-01",
                                                    "costPercentage": 1.7550971083297369,
                                                    "costRAG": "KO",
                                                    "effortPercentage": 0.8801313628899836,
                                                    "effortRAG": "WARN",
                                                    "scheduleVariance": -52,
                                                    "costVariance": -30973.71428571429,
                                                    "scheduleRAG": "KO",
                                                    "earnedValue": 27120,
                                                    "bcws": 33100,
                                                    "bcwp": 27120,
                                                    "sv": -5980,
                                                    "cpi": 0.4668319169027384,
                                                    "spi": 0.8193353474320242,
                                                    "scheduleVarianceAtCompletion": -70,
                                                    "estimateAtCompletion": 66485.34718249786
                                                },
                                                {
                                                    "element": {
                                                        "id": 745,
                                                        "externalId": "",
                                                        "name": "Demo Scrum",
                                                        "type": "project",
                                                        "priority": 3,
                                                        "template": false,
                                                        "projectType": "PROJECT",
                                                        "archived": false,
                                                        "sponsor": "Un Client",
                                                        "state": {
                                                            "id": 24,
                                                            "name": "En Cours",
                                                            "type": "projectstate",
                                                            "finished": false
                                                        },
                                                        "appraisal": {
                                                            "rating": 3,
                                                            "comments": null,
                                                            "lastUpdate": "2023-01-18T16:16:01.600+00:00"
                                                        },
                                                        "creationDate": "2023-01-18"
                                                    },
                                                    "progress": 0.23707142857142857,
                                                    "budgetedCost": 117600,
                                                    "actualCost": 34448,
                                                    "expenseBudget": 0,
                                                    "expenseCost": 0,
                                                    "incurredExpense": 0,
                                                    "plannedEffort": 280,
                                                    "actualEffort": 82,
                                                    "remainingEffort": 203.04357142857143,
                                                    "plannedStart": "2022-12-26",
                                                    "actualStart": "2022-12-26",
                                                    "plannedEnd": "2023-03-17",
                                                    "costPercentage": 0.2929251700680272,
                                                    "costRAG": "WARN",
                                                    "effortPercentage": 0.29285714285714287,
                                                    "effortRAG": "WARN",
                                                    "scheduleVariance": -52,
                                                    "costVariance": -6568.4000000000015,
                                                    "scheduleRAG": "KO",
                                                    "earnedValue": 27879.6,
                                                    "bcws": 107100,
                                                    "bcwp": 27879.6,
                                                    "sv": -79220.4,
                                                    "cpi": 0.8093241987923827,
                                                    "spi": 0.26031372549019605,
                                                    "cpiToComplete": 1.0789926880892822,
                                                    "scheduleVarianceAtCompletion": -186,
                                                    "estimateAtCompletion": 119594.58809636277
                                                }
                                            ],
                                            "costUnit": "€",
                                            "effortUnit": "jh"
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_portfolio_progress_report",
                "description": "Returns the progress report of the portfolio and its projects."
            },
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "Portfolio id"
                }
            ]
        },
        "/projects/{id}/workloadplan": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "project id"
                }
            ],
            "get": {
                "summary": "Get project's planned workloads",
                "tags": [
                    "project"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "properties": {
                                            "profile": {
                                                "$ref": "#/components/schemas/Entity",
                                                "description": "Resource profile (short form: id, name, type, externalId)."
                                            },
                                            "workloadWeeklySeries": {
                                                "type": "array",
                                                "items": {
                                                    "type": "object",
                                                    "properties": {
                                                        "date": {
                                                            "type": "string",
                                                            "format": "date",
                                                            "description": "first day of the week"
                                                        },
                                                        "value": {
                                                            "type": "number",
                                                            "description": "average value smoothed over the week in FTE"
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "profile": {
                                                    "id": 16,
                                                    "externalId": "XX-6596",
                                                    "name": "Analyste",
                                                    "type": "resourceprofile"
                                                },
                                                "workloadWeeklySeries": [
                                                    {
                                                        "date": "2015-12-28",
                                                        "value": 1.2
                                                    },
                                                    {
                                                        "date": "2016-01-04",
                                                        "value": 1.2
                                                    },
                                                    {
                                                        "date": "2016-01-11",
                                                        "value": 1.2
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_project_workload_plan",
                "description": "Returns planned workloads for each resource profile.\n\nThe returned data are a set of data series, one series per profile. Each series contains weekly values expressed in FTE unit (full-time employee).\n"
            }
        },
        "/users/{id}/tasks": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ],
            "get": {
                "summary": "List user's tasks",
                "tags": [
                    "user",
                    "task"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Task"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 241,
                                                "type": "task",
                                                "name": "Tester l'impression",
                                                "description": "...",
                                                "performer": {
                                                    "id": 36,
                                                    "name": "Philippe Martin",
                                                    "firstname": "Philippe",
                                                    "lastname": "Martin",
                                                    "email": "philippe@acme.test"
                                                },
                                                "project": {
                                                    "id": 190,
                                                    "externalId": "XX-6358",
                                                    "name": "Demo",
                                                    "type": "project"
                                                },
                                                "phase": {
                                                    "id": 223,
                                                    "externalId": "XX-6370",
                                                    "name": "Lot 1",
                                                    "type": "phase"
                                                },
                                                "iteration": {
                                                    "id": 224,
                                                    "externalId": "XX-6371",
                                                    "name": "Réalisation lot 1",
                                                    "type": "phase"
                                                },
                                                "goal": {
                                                    "id": 205,
                                                    "externalId": "XX-6441",
                                                    "name": "Module 1",
                                                    "type": "goal"
                                                },
                                                "taskType": {
                                                    "id": 83,
                                                    "externalId": "XX-6421",
                                                    "name": "Design the Solution",
                                                    "type": "taskdefinition"
                                                },
                                                "taskCategory": {
                                                    "id": 80,
                                                    "externalId": "TC-45",
                                                    "name": "Development",
                                                    "type": "taskcategory"
                                                },
                                                "state": "ready",
                                                "closed": false,
                                                "dueDate": "2015-02-23",
                                                "start": "2015-02-19",
                                                "end": "2015-02-23",
                                                "effort": 13.7,
                                                "steps": [
                                                    {
                                                        "name": "Write Code",
                                                        "done": true
                                                    },
                                                    {
                                                        "name": "Write Test",
                                                        "done": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_user_tasks",
                "description": "Returns a filtered list of tasks assigned to the person.\n\n`periodStart` and `periodEnd` paremeters allows to filter out tasks based on actual work during the period. \n\nNote that actual efforts of tasks are computed over the defined period.\n\nThe period may be defined with only one parameter as from periodStart or until periodEnd.",
                "parameters": [
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "notClosed",
                        "description": "If true, the list will only contain tasks that are not completed or cancelled."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "periodStart",
                        "description": "see endpoint description (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "periodEnd",
                        "description": "see endpoint description (ISO 8601 date YYYY-MM-DD)."
                    }
                ]
            }
        },
        "/users/{id}/timeReport": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ],
            "get": {
                "summary": "Get user's activity report",
                "tags": [
                    "user",
                    "timetracking"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "user": {
                                            "$ref": "#/components/schemas/User"
                                        },
                                        "firstDay": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "lastDay": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "timeByProjects": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "activity": {
                                                        "$ref": "#/components/schemas/Entity",
                                                        "description": "Project (short form: id, name, type, externalId)."
                                                    },
                                                    "entries": {
                                                        "type": "array",
                                                        "items": {
                                                            "$ref": "#/components/schemas/DailyTimeEntry"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "timeByNonProjectActivities": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "activity": {
                                                        "$ref": "#/components/schemas/Entity",
                                                        "description": "Non-project activity (short form: id, name, type, externalId)."
                                                    },
                                                    "entries": {
                                                        "type": "array",
                                                        "items": {
                                                            "$ref": "#/components/schemas/DailyTimeEntry"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "total": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/DailyTimeEntry"
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "user": {
                                                "id": 192,
                                                "name": "Peter Black",
                                                "firstname": "Peter",
                                                "lastname": "Black",
                                                "email": "peter@acme.com"
                                            },
                                            "firstDay": "2014-10-26",
                                            "lastDay": "2014-11-01",
                                            "timeByProjects": [
                                                {
                                                    "activity": {
                                                        "id": 249,
                                                        "externalId": "XX-6358",
                                                        "name": "Demo",
                                                        "type": "project"
                                                    },
                                                    "entries": [
                                                        {
                                                            "day": "2014-10-27",
                                                            "hours": 4
                                                        },
                                                        {
                                                            "day": "2014-10-28",
                                                            "hours": 8
                                                        },
                                                        {
                                                            "day": "2014-10-29",
                                                            "hours": 8
                                                        }
                                                    ]
                                                },
                                                {
                                                    "activity": {
                                                        "id": 1172,
                                                        "externalId": "XX-777",
                                                        "name": "Web Site",
                                                        "type": "project"
                                                    },
                                                    "entries": [
                                                        {
                                                            "day": "2014-10-26",
                                                            "hours": 7.2833333
                                                        },
                                                        {
                                                            "day": "2014-10-27",
                                                            "hours": 3.25
                                                        }
                                                    ]
                                                }
                                            ],
                                            "timeByNonProjectActivities": [
                                                {
                                                    "activity": {
                                                        "id": 7,
                                                        "externalId": "XX-6534",
                                                        "name": "Congés",
                                                        "type": "npactivity"
                                                    },
                                                    "entries": [
                                                        {
                                                            "day": "2014-10-30",
                                                            "hours": 7.5
                                                        }
                                                    ]
                                                }
                                            ],
                                            "total": [
                                                {
                                                    "day": "2014-10-26",
                                                    "hours": 7.2833333
                                                },
                                                {
                                                    "day": "2014-10-27",
                                                    "hours": 7.25
                                                },
                                                {
                                                    "day": "2014-10-28",
                                                    "hours": 8
                                                },
                                                {
                                                    "day": "2014-10-29",
                                                    "hours": 8
                                                },
                                                {
                                                    "day": "2014-10-30",
                                                    "hours": 7.5
                                                },
                                                {
                                                    "day": "2014-10-31",
                                                    "hours": 7.5
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_user_time_report",
                "description": "Returns time spent on projects or activities day by day.\n\nData found in time reports are the same as those provided in user's monthly activity report, except that the time period is custom.\n\nThe typical usage is for importing time entered in TimePerformance into an ERP or HR system. \n\n### Time report equalization. ###\n\nIf `hoursPerDay` and `halfDayThreshold` parameters are provided daily time entries will be equalized. For instance, it can be requested that the total number of worked hours per day is always 8 hours, 4 hours (half day) or 0 hour.",
                "parameters": [
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "firstDay",
                        "required": true,
                        "description": "First day of the time period (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "lastDay",
                        "required": true,
                        "description": "Last day of the time period (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "number"
                        },
                        "in": "query",
                        "name": "hoursPerDay",
                        "description": "If provided, time report will be equalized so that the number of worked hours per day is constant."
                    },
                    {
                        "schema": {
                            "type": "number",
                            "default": "hoursPerDay * 0.5"
                        },
                        "in": "query",
                        "name": "halfDayThreshold",
                        "description": "Used in conjonction with parameter `hoursPerDay`. Set the numbers of worked hours under which time spent for a day will be equalized to half a work day, so to speak half of hoursPerDay. "
                    }
                ]
            }
        },
        "/users/{id}/timesheet": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ],
            "get": {
                "summary": "Get user's timesheet",
                "tags": [
                    "task",
                    "user",
                    "timetracking"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "user": {
                                            "$ref": "#/components/schemas/User"
                                        },
                                        "firstDay": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "lastDay": {
                                            "type": "string",
                                            "format": "date"
                                        },
                                        "timeByProjects": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "project": {
                                                        "$ref": "#/components/schemas/Element",
                                                        "description": "Project (short form: id, name, type, externalId, description)."
                                                    },
                                                    "timeByTasks": {
                                                        "type": "array",
                                                        "items": {
                                                            "type": "object",
                                                            "properties": {
                                                                "activity": {
                                                                    "$ref": "#/components/schemas/Task"
                                                                },
                                                                "entries": {
                                                                    "type": "array",
                                                                    "items": {
                                                                        "$ref": "#/components/schemas/DailyTimeEntry"
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "timeByNonProjectActivities": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "activity": {
                                                        "$ref": "#/components/schemas/Entity",
                                                        "description": "Non-project activity (short form: id, name, type, externalId)."
                                                    },
                                                    "entries": {
                                                        "type": "array",
                                                        "items": {
                                                            "$ref": "#/components/schemas/DailyTimeEntry"
                                                        }
                                                    }
                                                }
                                            }
                                        },
                                        "total": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#/components/schemas/DailyTimeEntry"
                                            }
                                        }
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "user": {
                                                "id": 30,
                                                "name": "Alice Jung",
                                                "firstname": "Alice",
                                                "lastname": "Jung",
                                                "email": "alice@acme.test"
                                            },
                                            "firstDay": "2016-02-01",
                                            "lastDay": "2016-02-29",
                                            "timeByProjects": [
                                                {
                                                    "project": {
                                                        "id": 190,
                                                        "externalId": "XX-6358",
                                                        "name": "Demo",
                                                        "type": "project"
                                                    },
                                                    "timeByTasks": [
                                                        {
                                                            "activity": {
                                                                "id": 411,
                                                                "name": "Estimer la charge",
                                                                "type": "task",
                                                                "description": "",
                                                                "performer": {
                                                                    "id": 30,
                                                                    "name": "Alice Jung",
                                                                    "firstname": "Alice",
                                                                    "lastname": "Jung",
                                                                    "email": "alice@acme.test"
                                                                },
                                                                "state": "completed",
                                                                "closed": true,
                                                                "project": {
                                                                    "id": 190,
                                                                    "externalId": "XX-6358",
                                                                    "name": "Demo",
                                                                    "type": "project"
                                                                },
                                                                "phase": {
                                                                    "id": 220,
                                                                    "externalId": "XX-6368",
                                                                    "name": "Etude",
                                                                    "type": "phase"
                                                                },
                                                                "iteration": {
                                                                    "id": 221,
                                                                    "externalId": "XX-6367",
                                                                    "name": "Analyse",
                                                                    "type": "phase"
                                                                },
                                                                "goal": {
                                                                    "id": 193,
                                                                    "externalId": "XX-6432",
                                                                    "name": "Plan Projet",
                                                                    "type": "goal"
                                                                },
                                                                "start": "2015-12-28",
                                                                "end": "2016-02-01"
                                                            },
                                                            "entries": [
                                                                {
                                                                    "day": "2016-02-01",
                                                                    "hours": 1.75
                                                                }
                                                            ]
                                                        }
                                                    ]
                                                }
                                            ],
                                            "timeByNonProjectActivities": [
                                                {
                                                    "activity": {
                                                        "id": 7,
                                                        "externalId": "XX-6534",
                                                        "name": "Congés",
                                                        "type": "npactivity"
                                                    },
                                                    "entries": [
                                                        {
                                                            "day": "2016-02-26",
                                                            "hours": 7
                                                        }
                                                    ]
                                                }
                                            ],
                                            "total": [
                                                {
                                                    "day": "2016-02-01",
                                                    "hours": 7
                                                },
                                                {
                                                    "day": "2016-02-02",
                                                    "hours": 7
                                                },
                                                {
                                                    "day": "2016-02-03",
                                                    "hours": 7
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_user_timesheet",
                "description": "Returns time spent on project tasks or activities day by day.\n\nTimesheet API is the most detailed time report. It provides times at task level, whereas the time report above provides times at project level.\n\nAs for time report, it may be equalized. For instance, it can be requested that the total number of worked hours per day is always 8 hours, 4 hours (half day) or 0 hour.",
                "parameters": [
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "firstDay",
                        "required": true,
                        "description": "First day of the time period (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "string",
                            "format": "date"
                        },
                        "in": "query",
                        "name": "lastDay",
                        "required": true,
                        "description": "Last day of the time period (ISO 8601 date YYYY-MM-DD)."
                    },
                    {
                        "schema": {
                            "type": "number"
                        },
                        "in": "query",
                        "name": "hoursPerDay",
                        "description": "If provided, time report will be equalized so that the number of worked hours per day is constant."
                    },
                    {
                        "schema": {
                            "type": "number",
                            "default": "hoursPerDay * 0.5"
                        },
                        "in": "query",
                        "name": "halfDayThreshold",
                        "description": "Used in conjonction with parameter `hoursPerDay`. Set the numbers of worked hours under which time spent for a day will be equalized to half a work day, so to speak half of hoursPerDay. "
                    },
                    {
                        "schema": {
                            "type": "boolean",
                            "default": false
                        },
                        "in": "query",
                        "name": "sortTasks",
                        "description": "If true, tasks are sorted alphabetically within each day. Default: false."
                    }
                ]
            }
        },
        "/users/{id}/todolist": {
            "parameters": [
                {
                    "schema": {
                        "type": "integer"
                    },
                    "name": "id",
                    "in": "path",
                    "required": true,
                    "description": "user id"
                }
            ],
            "get": {
                "summary": "Get user's current to-do list",
                "tags": [
                    "user",
                    "task"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Task"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 241,
                                                "type": "task",
                                                "name": "Tester l'impression",
                                                "description": "",
                                                "performer": {
                                                    "id": 36,
                                                    "name": "Philippe Martin",
                                                    "firstname": "Philippe",
                                                    "lastname": "Martin",
                                                    "email": "philippe@acme.test"
                                                },
                                                "project": {
                                                    "id": 190,
                                                    "externalId": "XX-6358",
                                                    "name": "Demo",
                                                    "type": "project"
                                                },
                                                "phase": {
                                                    "id": 223,
                                                    "externalId": "XX-6370",
                                                    "name": "Lot 1",
                                                    "type": "phase"
                                                },
                                                "iteration": {
                                                    "id": 224,
                                                    "externalId": "XX-6371",
                                                    "name": "Réalisation lot 1",
                                                    "type": "phase"
                                                },
                                                "goal": {
                                                    "id": 205,
                                                    "externalId": "XX-6441",
                                                    "name": "Module 1",
                                                    "type": "goal"
                                                },
                                                "taskType": {
                                                    "id": 83,
                                                    "externalId": "XX-6421",
                                                    "name": "Design the Solution",
                                                    "type": "taskdefinition"
                                                },
                                                "taskCategory": {
                                                    "id": 80,
                                                    "externalId": "TC-45",
                                                    "name": "Development",
                                                    "type": "taskcategory"
                                                },
                                                "state": "ready",
                                                "closed": false,
                                                "dueDate": "2015-02-23",
                                                "start": "2015-02-19",
                                                "end": "2015-02-23",
                                                "effort": 13.7,
                                                "steps": [
                                                    {
                                                        "name": "Write Code",
                                                        "done": true
                                                    },
                                                    {
                                                        "name": "Write Test",
                                                        "done": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "404": {
                        "$ref": "#/components/responses/NotFound"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_user_todo_list",
                "description": "Returns the to-do list of the person.\n\nThe to-do list is the list of tasks assigned to the person and related to open deliverables.\n\nAccess is restricted to the person or a manager. Project managers can also access to team members' to-do lists for their projects (`project` parameter required).",
                "parameters": [
                    {
                        "schema": {
                            "type": "integer"
                        },
                        "in": "query",
                        "name": "project",
                        "description": "Project ID. If set, the returned list only contains tasks related to the project."
                    }
                ]
            }
        },
        "/whoami": {
            "get": {
                "tags": [
                    "reference data"
                ],
                "summary": "Identify the authenticated caller",
                "description": "Returns the identity of the caller authenticated on the API, as a human-readable string.",
                "operationId": "whoami",
                "responses": {
                    "200": {
                        "description": "Caller identity successfully resolved.",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "string"
                                },
                                "examples": {
                                    "user": {
                                        "summary": "User (OAuth user-bound grant or web session)",
                                        "value": "John Doe (id: 42) @ acme"
                                    },
                                    "apiBackOffice": {
                                        "summary": "API BackOffice key (Basic Auth or client_credentials)",
                                        "value": "API BackOffice: integration-key @ acme"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                }
            }
        },
        "/obs": {
            "get": {
                "summary": "Get Organizational Breakdown Structure",
                "tags": [
                    "reference data"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "allOf": [
                                        {
                                            "$ref": "#/components/schemas/OBS"
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "children": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object"
                                                    }
                                                },
                                                "managers": {
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/User"
                                                    }
                                                },
                                                "colleagues": {
                                                    "type": "array",
                                                    "items": {
                                                        "$ref": "#/components/schemas/User"
                                                    }
                                                }
                                            }
                                        }
                                    ]
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": {
                                            "id": 27,
                                            "name": "ACME",
                                            "path": "ACME",
                                            "type": "obs",
                                            "externalId": "OBS-1",
                                            "children": [
                                                {
                                                    "id": 38,
                                                    "name": "Direction des Systèmes d'Information",
                                                    "path": "ACME » Direction des Systèmes d'Information",
                                                    "type": "obs",
                                                    "externalId": "OBS-4",
                                                    "children": [
                                                        {
                                                            "id": 39,
                                                            "name": "Recherche et développement",
                                                            "path": "ACME » Direction des Systèmes d'Information » Recherche et développement",
                                                            "type": "obs"
                                                        }
                                                    ],
                                                    "managers": [
                                                        {
                                                            "id": 43,
                                                            "externalId": "USR-43",
                                                            "name": "Anna K.",
                                                            "type": "user",
                                                            "firstname": "Anna",
                                                            "lastname": "K.",
                                                            "archived": false,
                                                            "email": "Anna-test@timeperformance.com",
                                                            "extern": false
                                                        }
                                                    ],
                                                    "colleagues": [
                                                        {
                                                            "id": 51,
                                                            "externalId": "USR-51",
                                                            "name": "Alice Jung",
                                                            "type": "user",
                                                            "firstname": "Alice",
                                                            "lastname": "Jung",
                                                            "archived": false,
                                                            "email": "Alice-test@timeperformance.com",
                                                            "extern": false
                                                        }
                                                    ]
                                                }
                                            ],
                                            "managers": [
                                                {
                                                    "id": 28,
                                                    "name": "admin",
                                                    "type": "user"
                                                }
                                            ]
                                        }
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "get_organizational_breakdown_structure",
                "description": "Returns the hierarchical structure of the organization, consisting of departments, services, managers and people"
            }
        },
        "/customforms": {
            "get": {
                "tags": [
                    "reference data"
                ],
                "summary": "List all custom forms (datasheet templates)",
                "description": "Returns the list of all available custom forms, which define the structure of custom datasheets.",
                "operationId": "list_custom_forms",
                "responses": {
                    "200": {
                        "description": "List of custom forms successfully retrieved",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/CustomForm"
                                    }
                                },
                                "examples": {
                                    "default": {
                                        "summary": "Simplified example",
                                        "value": [
                                            {
                                                "id": 12,
                                                "externalId": "PROJECT_REQUEST",
                                                "name": "Demande de projet",
                                                "type": "customform",
                                                "archived": false,
                                                "fields": [
                                                    {
                                                        "id": 13,
                                                        "externalId": "APPLICANT",
                                                        "name": "Demandeur",
                                                        "description": "Personne qui a fait la demande",
                                                        "type": "customfieldspec",
                                                        "archived": false
                                                    },
                                                    {
                                                        "id": 14,
                                                        "externalId": "REQUEST_DATE",
                                                        "name": "Date de la demande",
                                                        "type": "customfieldspec",
                                                        "archived": false
                                                    }
                                                ]
                                            },
                                            {
                                                "id": 18,
                                                "externalId": "BUSINESS_CASE",
                                                "name": "Etude d’opportunité",
                                                "type": "customform",
                                                "archived": false,
                                                "fields": [
                                                    {
                                                        "id": 19,
                                                        "externalId": "CONTEXT",
                                                        "name": "Contexte",
                                                        "type": "customfieldspec",
                                                        "archived": false
                                                    }
                                                ]
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                }
            }
        },
        "/profiles": {
            "get": {
                "summary": "List Skill Profiles",
                "tags": [
                    "reference data"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ResourceProfile"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 33,
                                                "name": "Developper",
                                                "type": "resourceprofile",
                                                "description": "",
                                                "archived": false,
                                                "externalId": "PROF-6360",
                                                "costRate": {
                                                    "val": 420,
                                                    "unit": "€",
                                                    "rateMode": "DAILY_VAR"
                                                }
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_skill_profiles",
                "description": "Returns the list of profiles defined in the Administration, with default cost rates depending on the authenticated user's permissions."
            }
        },
        "/npactivities": {
            "get": {
                "summary": "List Non-Project Activities",
                "tags": [
                    "reference data"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/NonProjectActivity"
                                    }
                                },
                                "examples": {
                                    "Example 1": {
                                        "value": [
                                            {
                                                "id": 21,
                                                "name": "Leave",
                                                "type": "npactivity",
                                                "unavailable": true,
                                                "archived": false,
                                                "externalId": "NP-6360"
                                            }
                                        ]
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_non_project_activities",
                "description": "Returns the list of other activities and unavailabilities."
            }
        },
        "/projectstates": {
            "get": {
                "summary": "List project states",
                "tags": [
                    "reference data"
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ProjectState"
                                    }
                                }
                            }
                        }
                    },
                    "401": {
                        "$ref": "#/components/responses/Unauthorized"
                    },
                    "403": {
                        "$ref": "#/components/responses/Forbidden"
                    },
                    "500": {
                        "$ref": "#/components/responses/ServerError"
                    }
                },
                "operationId": "list_project_states",
                "description": "Returns the list of project states configured in the Administration module."
            }
        }
    },
    "tags": [
        {
            "name": "portfolio"
        },
        {
            "name": "project"
        },
        {
            "name": "user"
        },
        {
            "name": "task"
        },
        {
            "name": "timetracking"
        },
        {
            "name": "reference data"
        }
    ],
    "components": {
        "schemas": {
            "Assignment": {
                "type": "object",
                "description": "Represent the assignement of a user to an activity for a half-day.",
                "title": "Assignment",
                "properties": {
                    "date": {
                        "$ref": "#/components/schemas/HalfDay"
                    },
                    "user": {
                        "$ref": "#/components/schemas/Entity",
                        "description": "The assigned user (short form: id, name, type, externalId)."
                    },
                    "to": {
                        "$ref": "#/components/schemas/Entity",
                        "description": "The activity the user is assigned to. Discriminated by `type`: `\"project\"` for projects, `\"npactivity\"` for non-project activities."
                    }
                }
            },
            "BasicProgressIndicators": {
                "type": "object",
                "title": "Basic Progress Indicators",
                "description": "Basic progress, cost and effort indicators for a project or sub-element.",
                "properties": {
                    "progress": {
                        "$ref": "#/components/schemas/Percentage"
                    },
                    "costPercentage": {
                        "$ref": "#/components/schemas/Percentage"
                    },
                    "effortPercentage": {
                        "$ref": "#/components/schemas/Percentage"
                    },
                    "scheduleVariance": {
                        "type": "integer",
                        "description": "Schedule variance in DAYS. Negative = late."
                    },
                    "budgetedCost": {
                        "type": "number",
                        "description": "Budgeted cost. Unit carried by `costUnit` (sibling field on ProgressIndicators)."
                    },
                    "actualCost": {
                        "type": "number",
                        "description": "Actual cost incurred. Unit carried by `costUnit`."
                    },
                    "costVariance": {
                        "type": "number",
                        "description": "Cost variance (budgeted - actual). Negative = over budget. Unit carried by `costUnit`."
                    },
                    "plannedEffort": {
                        "type": "number",
                        "description": "Estimated workload. Unit carried by `effortUnit` (sibling field on ProgressIndicators) — typically HOURS or PERSON-DAYS."
                    },
                    "actualEffort": {
                        "type": "number",
                        "description": "Actual effort spent. Unit carried by `effortUnit` — typically HOURS or PERSON-DAYS."
                    },
                    "remainingEffort": {
                        "type": "number",
                        "description": "Remaining effort to deliver. Unit carried by `effortUnit` — typically HOURS or PERSON-DAYS."
                    },
                    "expenseBudget": {
                        "type": "number",
                        "description": "Budgeted expenses. Unit carried by `costUnit`."
                    },
                    "incurredExpense": {
                        "type": "number",
                        "description": "Expenses already incurred. Unit carried by `costUnit`."
                    },
                    "expenseCost": {
                        "type": "number",
                        "description": "Total expense cost (budget + variance). Unit carried by `costUnit`."
                    },
                    "plannedStart": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned start date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "plannedEnd": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned end date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "actualStart": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Actual start date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "actualEnd": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Actual end date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "costRAG": {
                        "$ref": "#/components/schemas/RAG"
                    },
                    "effortRAG": {
                        "$ref": "#/components/schemas/RAG"
                    },
                    "scheduleRAG": {
                        "$ref": "#/components/schemas/RAG"
                    }
                }
            },
            "CheckList": {
                "title": "Check List",
                "description": "An ordered list of check-list items attached to a parent entity.",
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "name": {
                            "type": "string"
                        },
                        "done": {
                            "type": "boolean"
                        }
                    }
                }
            },
            "CostRate": {
                "title": "User cost rate",
                "description": "Allows to compute cost from hours of work. \n\nDAILY_VAR means that worked hours are converted to days then multiplied by the rate.\n\nDAILY_FIX means that worked hours per day are rounded to one day or a half day. In this mode, 7 hours of work and 12 hours of work in a day cost the same.\n\n**Cost rates are sensitive information. Special permissions are required.**",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/UnitValue"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "rateMode": {
                                "type": "string",
                                "enum": [
                                    "HOURLY",
                                    "DAILY_VAR",
                                    "DAILY_FIX"
                                ],
                                "description": "DAILY_FIX is not valid for a profile"
                            },
                            "unit": {
                                "type": "string",
                                "readOnly": true,
                                "description": "Currency code (server-determined; not writable)."
                            }
                        }
                    }
                ]
            },
            "CostRate.write": {
                "type": "object",
                "title": "User cost rate (write)",
                "description": "Writable fields for a user's standard cost rate. The currency unit is server-determined (project/user currency) and cannot be set.",
                "properties": {
                    "val": {
                        "type": "number",
                        "nullable": true,
                        "description": "Cost rate amount. Currency carried by the response `unit` field (server-determined)."
                    },
                    "rateMode": {
                        "type": "boolean",
                        "description": "Daily-rate flag. `true` = daily rate (corresponds to `DAILY_VAR` on the response), `false` = hourly rate (`HOURLY`). User cost rates only support these two modes; `DAILY_FIX` (rounded daily rate) only applies to project-member cost rates, not to a user's standard cost rate."
                    }
                }
            },
            "CustomDatasheet": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Entity"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "fields": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/DatasheetField"
                                }
                            },
                            "costUnit": {
                                "type": "string",
                                "nullable": true,
                                "description": "Unit of cost if relevant (e.g. €, $, ...)."
                            },
                            "form": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "The custom form defining the structure of this datasheet (short form: id, name, type, externalId)."
                            }
                        },
                        "required": [
                            "fields"
                        ]
                    }
                ],
                "title": "Datasheet",
                "description": "A CustomDatasheet represents a set of custom fields filled for a project. The structure (list and types of fields) is defined by the associated custom form (`form` property). The externalId of the datasheet is the same as the externalId of the form."
            },
            "CustomFieldSpec": {
                "title": "Custom Field Definition",
                "description": "A CustomFieldSpec defines a field within a custom form.",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "archived": {
                                "type": "boolean",
                                "description": "Whether this field specification is deprecated."
                            }
                        },
                        "example": {
                            "id": 13,
                            "externalId": "APPLICANT",
                            "name": "Demandeur",
                            "type": "customfieldspec",
                            "archived": false
                        }
                    }
                ]
            },
            "CustomForm": {
                "title": "CustomForm",
                "description": "A CustomForm defines the structure (fields specification) of a kind of datasheet.",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "archived": {
                                "type": "boolean",
                                "description": "Whether the form is deprecated (not usable for new datasheets)."
                            },
                            "fields": {
                                "type": "array",
                                "description": "The list of field specifications for this custom form.",
                                "items": {
                                    "$ref": "#/components/schemas/CustomFieldSpec"
                                }
                            }
                        },
                        "required": [
                            "fields"
                        ],
                        "example": {
                            "id": 12,
                            "externalId": "PROJECT_REQUEST",
                            "name": "Demande de projet",
                            "type": "customform",
                            "archived": false,
                            "fields": [
                                {
                                    "id": 13,
                                    "externalId": "APPLICANT",
                                    "name": "Demandeur",
                                    "type": "customfieldspec",
                                    "archived": false
                                },
                                {
                                    "id": 14,
                                    "externalId": "REQUEST_DATE",
                                    "name": "Date de la demande",
                                    "type": "customfieldspec",
                                    "archived": false
                                }
                            ]
                        }
                    }
                ]
            },
            "DailyTimeEntry": {
                "title": "Daily Time Entry",
                "description": "Number of hours logged by a user on a given day.",
                "type": "object",
                "properties": {
                    "day": {
                        "type": "string",
                        "format": "date",
                        "description": "Day of the entry (ISO 8601 date YYYY-MM-DD)."
                    },
                    "hours": {
                        "type": "number",
                        "description": "Hours logged on this day (in HOURS)."
                    }
                }
            },
            "DatasheetField": {
                "type": "object",
                "title": "Datasheet field",
                "description": "Most properties are read-only as they are defined in the datasheet template.",
                "properties": {
                    "name": {
                        "type": "string",
                        "readOnly": true
                    },
                    "value": {
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "type": "number"
                            },
                            {
                                "type": "boolean"
                            },
                            {
                                "type": "string",
                                "format": "date",
                                "description": "Date value (ISO 8601 date YYYY-MM-DD), used when `valueType = \"DATE\"`."
                            }
                        ]
                    },
                    "valueType": {
                        "type": "string",
                        "enum": [
                            "TEXT",
                            "NUMBER",
                            "BOOLEAN",
                            "STRING",
                            "AMOUNT",
                            "DATE"
                        ],
                        "readOnly": true
                    },
                    "description": {
                        "type": "string",
                        "readOnly": true
                    },
                    "externalId": {
                        "type": "string",
                        "readOnly": true
                    }
                },
                "required": [
                    "name",
                    "valueType"
                ]
            },
            "Deliverable": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HierarchyElement"
                    },
                    {
                        "$ref": "#/components/schemas/WBSElement"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "progressMode": {
                                "$ref": "#/components/schemas/ProgressMode"
                            },
                            "acceptance": {
                                "type": "string"
                            },
                            "iteration": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "Phase for which the deliverable is planned (short form: id, name, type, externalId, path)."
                            },
                            "phase": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "Parent phase of `iteration` if any (short form: id, name, type, externalId, path)."
                            }
                        }
                    }
                ],
                "title": "Deliverable",
                "description": "**Note: `type = \"goal\"` for this kind of entity (legacy name)** \n\n`iteration` property refers to the phase for which the deliverable is planned. `phase` property refers to the parent phase of `iteration` if any."
            },
            "Deliverable.tree": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Deliverable"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "children": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Deliverable.tree"
                                }
                            }
                        }
                    }
                ],
                "title": "Deliverable.tree",
                "description": "A `Deliverable` augmented with its recursive `children` subtree."
            },
            "Deliverable.write": {
                "type": "object",
                "title": "Deliverable (write)",
                "description": "Writable fields for creating or updating a deliverable. Entity references are integer IDs.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "Deliverable name."
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 4000,
                        "nullable": true
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the deliverable in another software (UI: \"external reference\")."
                    },
                    "state": {
                        "$ref": "#/components/schemas/ElementState"
                    },
                    "firstDay": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned start date (ISO 8601 date YYYY-MM-DD). Null = compute from schedule."
                    },
                    "lastDay": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned end date (ISO 8601 date YYYY-MM-DD). Null = compute from schedule."
                    },
                    "milestone": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "If true, the deliverable is a milestone."
                    },
                    "lockedSchedule": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "If true, the schedule dates are locked."
                    },
                    "progressMode": {
                        "$ref": "#/components/schemas/ProgressMode"
                    },
                    "acceptance": {
                        "type": "string",
                        "nullable": true,
                        "description": "Acceptance criteria."
                    },
                    "iteration": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Phase ID — phase for which the deliverable is planned."
                    }
                }
            },
            "EarnedValueIndicators": {
                "type": "object",
                "title": "Earned value indicators",
                "description": "Earned Value Management metrics for a project or sub-element: BCWS/BCWP/SV/CPI/SPI and the underlying earned value.",
                "properties": {
                    "earnedValue": {
                        "type": "number",
                        "nullable": true,
                        "description": "Earned value — work performed valued at planned cost. Unit carried by `costUnit` (sibling field on ProgressIndicators)."
                    },
                    "bcws": {
                        "type": "number",
                        "description": "Budgeted Cost of Work Scheduled — planned cost to date. Unit carried by `costUnit`.",
                        "nullable": true
                    },
                    "bcwp": {
                        "type": "number",
                        "description": "Budgeted Cost of Work Performed — alias for `earnedValue`. Unit carried by `costUnit`.",
                        "nullable": true
                    },
                    "sv": {
                        "type": "number",
                        "description": "Schedule Variance in cost terms (BCWP - BCWS). Negative = behind schedule. Unit carried by `costUnit`.",
                        "nullable": true
                    },
                    "cpi": {
                        "$ref": "#/components/schemas/Percentage"
                    },
                    "spi": {
                        "$ref": "#/components/schemas/Percentage"
                    },
                    "estimateAtCompletion": {
                        "type": "number",
                        "nullable": true,
                        "description": "Forecast total cost at project completion (EAC). Unit carried by `costUnit`."
                    },
                    "scheduleVarianceAtCompletion": {
                        "type": "integer",
                        "description": "Schedule variance projected at completion in DAYS. Negative = late.",
                        "nullable": true
                    },
                    "cpiToComplete": {
                        "$ref": "#/components/schemas/Percentage"
                    }
                }
            },
            "Element": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Entity"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "description": {
                                "type": "string",
                                "maxLength": 4000
                            }
                        }
                    }
                ],
                "title": "Element",
                "description": "A generic reference to a domain element (id, name, type). Used wherever an entity may be loosely referenced without exposing its full payload."
            },
            "ElementState": {
                "title": "Element state",
                "type": "string",
                "enum": [
                    "draft",
                    "ready",
                    "open",
                    "closed",
                    "cancelled"
                ],
                "description": "State for phases and deliverables. \n\n**Note (legacy):** for historical reasons this enum is serialized in lowercase, whereas the convention for enums in this API is to use uppercase. A future version will switch this enum to uppercase to align with the convention — clients should match values case-insensitively and not rely on the current casing."
            },
            "Entity": {
                "type": "object",
                "title": "Entity",
                "description": "Defines the set of properties that identifies an entity. \n\nAn Entity is any kind of thing that has an id. (eg Project, Task...)\n\nEntities are returned in responses in 2 forms:\n- the **full form** which includes all the data (the named resource schema, e.g. `Project`, `Task`, `Deliverable`).\n- the **short form** with only these properties, used to *reference* a linked entity from inside another resource's response — saves bandwidth and avoids deep payloads.\n\nRule: a response returns an entity in its full form **only** when that entity is the primary object of the operation. Any entity that appears as a linked field of the primary object (or nested inside a report wrapper) is returned in the short form — i.e. as an `Entity`. Hierarchical entities (`phase`, `goal`, `obs`) may additionally carry a `path` property in the short form (concatenation of names from the root).\n\n**Note that entities are just represented by their `id` in request bodies and parameters.**\n",
                "properties": {
                    "id": {
                        "$ref": "#/components/schemas/EntityID"
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 64
                    },
                    "path": {
                        "type": "string",
                        "nullable": true,
                        "readOnly": true,
                        "description": "For hierarchical entities (`phase`, `goal`, `obs`, ...), concatenation of the names of this entity and its ancestors from the root. Absent for non-hierarchical entities."
                    },
                    "type": {
                        "type": "string",
                        "enum": [
                            "customdatasheet",
                            "customfieldspec",
                            "customform",
                            "expense",
                            "goal",
                            "issue",
                            "npactivity",
                            "obs",
                            "phase",
                            "portfolio",
                            "project",
                            "projectlabel",
                            "projectstate",
                            "resourceprofile",
                            "risk",
                            "task",
                            "taskcategory",
                            "taskdefinition",
                            "unit",
                            "user"
                        ],
                        "description": "kind of entity",
                        "readOnly": true
                    },
                    "externalId": {
                        "type": "string",
                        "example": "AGH-2023-7047",
                        "description": "id of the entity in another software. In the UI, it is called \"external reference\".",
                        "maxLength": 100,
                        "nullable": true
                    }
                }
            },
            "EntityID": {
                "title": "Entity ID",
                "description": "Integer identifier of an entity.",
                "type": "integer"
            },
            "Error": {
                "title": "Error",
                "type": "object",
                "description": "Standard error payload returned for non-validation errors.",
                "properties": {
                    "message": {
                        "type": "string",
                        "description": "Human-readable explanation of the error."
                    },
                    "code": {
                        "type": "string",
                        "description": "Machine-readable error code. Absent when not applicable."
                    }
                },
                "required": [
                    "message"
                ]
            },
            "Expense": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "amount": {
                                "$ref": "#/components/schemas/UnitValue"
                            },
                            "date": {
                                "type": "string",
                                "format": "date",
                                "description": "Expense date (ISO 8601 date YYYY-MM-DD)."
                            },
                            "settled": {
                                "type": "boolean"
                            },
                            "smoothed": {
                                "type": "boolean"
                            },
                            "phase": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "Linked phase (short form: id, name, type, externalId, path)."
                            },
                            "stage": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "Linked stage (short form: id, name, type, externalId, path)."
                            },
                            "deliverable": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "Linked deliverable (short form: id, name, type, externalId, path)."
                            }
                        }
                    }
                ],
                "title": "Expense",
                "description": "A monetary expense recorded against a project."
            },
            "Expense.write": {
                "type": "object",
                "title": "Expense (write)",
                "description": "Writable fields for creating or updating an expense. Entity references are integer IDs.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "Expense label."
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 4000,
                        "nullable": true
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the expense in another software (UI: \"external reference\")."
                    },
                    "amount": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/UnitValue"
                            }
                        ],
                        "description": "Monetary amount. The currency is carried by `unit`."
                    },
                    "date": {
                        "type": "string",
                        "format": "date",
                        "description": "Expense date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "counterparty": {
                        "type": "string",
                        "nullable": true,
                        "description": "Supplier or counterparty name."
                    },
                    "smoothed": {
                        "type": "boolean",
                        "description": "If true, the expense is smoothed over time for cost accounting."
                    },
                    "deliverable": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Deliverable ID — deliverable the expense is attached to."
                    }
                }
            },
            "HalfDay": {
                "title": "HalfDay",
                "type": "string",
                "description": "Used for assignments",
                "pattern": "YYYY-MM-DD (AM|PM)",
                "example": "2023-02-01 PM"
            },
            "HierarchyElement": {
                "title": "Hierarchy Element",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "path": {
                                "type": "string",
                                "description": "Concatenation of the name of the element with those of its ancestors in the hierarchy",
                                "readOnly": true
                            }
                        }
                    }
                ],
                "description": "Abstract element that represents an entity that belongs to a hierarchy."
            },
            "Label": {
                "title": "Label",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "color": {
                                "type": "string",
                                "description": "hex color"
                            },
                            "backgroundColor": {
                                "type": "string",
                                "description": "hex color"
                            }
                        }
                    }
                ],
                "description": "Set of attributes of any kind of label"
            },
            "NonProjectActivity": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "unavailable": {
                                "type": "boolean"
                            },
                            "archived": {
                                "type": "boolean"
                            }
                        }
                    }
                ],
                "title": "Non-Project Activity",
                "description": "Other activities or Unavailabilities"
            },
            "OBS": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HierarchyElement"
                    }
                ],
                "description": "aka OBS. \n\nOBS stands for organizational breakstructure \n\n`type = \"obs\"`\n",
                "title": "Department or Service"
            },
            "Percentage": {
                "title": "Percentage",
                "type": "number",
                "format": "double",
                "description": "Any percentage (0.52 = 52%)"
            },
            "Phase": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HierarchyElement"
                    },
                    {
                        "$ref": "#/components/schemas/WBSElement"
                    }
                ],
                "title": "Phase",
                "description": "A phase within a project schedule — a portion of the project's lifecycle, optionally containing sub-phases."
            },
            "Phase.tree": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Phase"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "children": {
                                "type": "array",
                                "items": {
                                    "$ref": "#/components/schemas/Phase.tree"
                                }
                            }
                        }
                    }
                ],
                "title": "Phase (tree)",
                "description": "A phase with its recursive hierarchy of sub-phases."
            },
            "Phase.write": {
                "type": "object",
                "title": "Phase (write)",
                "description": "Writable fields for creating or updating a phase.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "Phase name."
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 4000,
                        "nullable": true
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the phase in another software (UI: \"external reference\")."
                    },
                    "state": {
                        "$ref": "#/components/schemas/ElementState"
                    },
                    "firstDay": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned start date (ISO 8601 date YYYY-MM-DD). Null = compute from schedule."
                    },
                    "lastDay": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Planned end date (ISO 8601 date YYYY-MM-DD). Null = compute from schedule."
                    },
                    "milestone": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "If true, the phase is a milestone (zero-duration checkpoint)."
                    },
                    "lockedSchedule": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "If true, the schedule dates are locked and not auto-computed."
                    }
                }
            },
            "Portfolio": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "auto": {
                                "type": "boolean",
                                "description": "Projects are automatically included based on a filter.",
                                "readOnly": true
                            },
                            "archived": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "projects": {
                                "type": "array",
                                "description": "Projects in this portfolio (short form: id, name, type, externalId).",
                                "items": {
                                    "$ref": "#/components/schemas/Entity"
                                }
                            }
                        }
                    }
                ],
                "title": "Portfolio",
                "description": "Set of projects"
            },
            "ProgressIndicators": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/BasicProgressIndicators"
                    },
                    {
                        "$ref": "#/components/schemas/EarnedValueIndicators"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "notes": {
                                "type": "string",
                                "nullable": true,
                                "description": "Free-form plain-text notes attached to this row.",
                                "readOnly": true
                            },
                            "progressMode": {
                                "$ref": "#/components/schemas/ProgressMode"
                            },
                            "workPerformedSchedule": {
                                "type": "string",
                                "format": "date",
                                "nullable": true,
                                "description": "Date at which the work performed so far was scheduled to be reached (ISO 8601 date YYYY-MM-DD). Used to derive `scheduleVariance`.",
                                "readOnly": true
                            },
                            "forecastEndDate": {
                                "type": "string",
                                "format": "date",
                                "nullable": true,
                                "description": "Forecast completion date (ISO 8601 date YYYY-MM-DD).",
                                "readOnly": true
                            }
                        }
                    }
                ],
                "title": "Progress indicators",
                "description": "Aggregates basic progress indicators, earned value indicators and per-row context (notes, progress mode, schedule milestones)."
            },
            "ProgressMode": {
                "title": "Progress Tracking Mode",
                "type": "string",
                "enum": [
                    "MANUAL",
                    "TASK_RTD",
                    "TASK_COUNT",
                    "SCHEDULE",
                    "WORKLOAD",
                    "WEIGHTED_SUM"
                ],
                "description": "**Only for delivrables and phases**\n\nIndicates how progress is tracked or calculated for a deliverable or phase.\n\nThe “WEIGHTED_SUM” method is reserved for items with sub-elements. This calculation mode is applied automatically whenever sub-elements are present, and it should not be used in POST/PATCH requests.\n\n"
            },
            "Project": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "priority": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 5
                            },
                            "template": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "projectType": {
                                "type": "string",
                                "enum": [
                                    "PROJECT",
                                    "INTERNAL",
                                    "RECURRING"
                                ]
                            },
                            "archived": {
                                "type": "boolean"
                            },
                            "sponsor": {
                                "type": "string",
                                "description": "Client",
                                "nullable": true
                            },
                            "state": {
                                "$ref": "#/components/schemas/ProjectState",
                                "nullable": true,
                                "description": "Current state. Null for project templates."
                            },
                            "creationDate": {
                                "type": "string",
                                "format": "date",
                                "readOnly": true,
                                "description": "Project creation date (ISO 8601 date YYYY-MM-DD)."
                            },
                            "labels": {
                                "type": "array",
                                "nullable": true,
                                "items": {
                                    "$ref": "#/components/schemas/ProjectLabel"
                                }
                            }
                        }
                    }
                ],
                "title": "Project",
                "description": "A project or a project template."
            },
            "Project.write": {
                "type": "object",
                "title": "Project (write)",
                "description": "Writable fields for creating or updating a project. Entity references (state, labels) are integer IDs.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 64,
                        "description": "Project name."
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 4000,
                        "nullable": true
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the project in another software (UI: \"external reference\")."
                    },
                    "priority": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 5,
                        "description": "Priority from 1 (highest) to 5 (lowest)."
                    },
                    "projectType": {
                        "type": "string",
                        "enum": [
                            "PROJECT",
                            "INTERNAL",
                            "RECURRING"
                        ]
                    },
                    "sponsor": {
                        "type": "string",
                        "nullable": true,
                        "description": "Client name."
                    },
                    "state": {
                        "type": "integer",
                        "description": "ProjectState ID."
                    },
                    "labels": {
                        "type": "array",
                        "nullable": true,
                        "description": "ProjectLabel IDs.",
                        "items": {
                            "type": "integer"
                        }
                    }
                }
            },
            "ProjectAppraisal": {
                "type": "object",
                "description": "Project health appraisal — `rating` 5 = OK (sun icon), 1 = at risk (storm icon). All fields are nullable: `rating` and `lastUpdate` are `null` when no appraisal has been set yet; `comments` is `null` either when no comment is set or when the endpoint returns the appraisal without comments (e.g. portfolio-level progress reports).",
                "title": "Project health appraisal",
                "properties": {
                    "rating": {
                        "type": "integer",
                        "minimum": 1,
                        "maximum": 5,
                        "nullable": true,
                        "readOnly": true
                    },
                    "comments": {
                        "type": "string",
                        "nullable": true,
                        "readOnly": true,
                        "description": "Plain-text comment explaining the rating."
                    },
                    "lastUpdate": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true,
                        "readOnly": true
                    }
                }
            },
            "ProjectLabel": {
                "title": "ProjectLabel",
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Label"
                    }
                ],
                "description": "Label for project"
            },
            "ProjectState": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "finished": {
                                "type": "boolean",
                                "description": "True if this is an end state. (indicators will no longer be historized)"
                            }
                        }
                    }
                ],
                "title": "Project State",
                "description": "A workflow state assignable to a project (e.g. \"In Progress\", \"Completed\"). The set of available states is configured per portfolio."
            },
            "RAG": {
                "title": "RAG status",
                "type": "string",
                "enum": [
                    "NONE",
                    "OK",
                    "WARN",
                    "KO"
                ],
                "readOnly": true,
                "description": "RAG stands for Red, Amber, Green. `NONE` means the indicator is not calculable."
            },
            "ResourceProfile": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "archived": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "costRate": {
                                "$ref": "#/components/schemas/CostRate",
                                "description": "Default cost rate for this profile. Only returned for administrators."
                            }
                        }
                    }
                ],
                "title": "Resource Profile",
                "description": "aka Skill profiles\n"
            },
            "Risk": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "probability": {
                                "type": "string",
                                "enum": [
                                    "VERY_LOW",
                                    "LOW",
                                    "MEDIUM",
                                    "HIGH",
                                    "VERY_HIGH"
                                ]
                            },
                            "impact": {
                                "type": "string",
                                "enum": [
                                    "VERY_LOW",
                                    "LOW",
                                    "MODERATE",
                                    "HIGH",
                                    "VERY_HIGH"
                                ]
                            },
                            "rating": {
                                "type": "string",
                                "enum": [
                                    "LOW",
                                    "MODERATE",
                                    "HIGH",
                                    "CRITICAL"
                                ]
                            },
                            "response": {
                                "type": "string",
                                "enum": [
                                    "ACCEPT",
                                    "TRANSFER",
                                    "MITIGATE",
                                    "AVOID"
                                ]
                            },
                            "responseDetails": {
                                "type": "string"
                            },
                            "state": {
                                "type": "string",
                                "enum": [
                                    "NEW",
                                    "ANALYSED",
                                    "RESPONDED",
                                    "CLOSED"
                                ]
                            },
                            "checkList": {
                                "$ref": "#/components/schemas/CheckList"
                            }
                        }
                    }
                ],
                "title": "Risk",
                "description": "A risk entry attached to a project, with its likelihood, impact and mitigation status."
            },
            "RoadmapElement": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/HierarchyElement"
                    },
                    {
                        "$ref": "#/components/schemas/WBSElement"
                    },
                    {
                        "$ref": "#/components/schemas/RoadmapFigures"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "tasks": {
                                "type": "array",
                                "description": "Tasks attached to this node — populated only on deliverable leaves (`type=goal`) when the `tasks` query parameter is true on the request.",
                                "readOnly": true,
                                "items": {
                                    "$ref": "#/components/schemas/Task"
                                }
                            },
                            "children": {
                                "type": "array",
                                "description": "Child roadmap nodes (sub-phases or deliverables).",
                                "readOnly": true,
                                "items": {
                                    "$ref": "#/components/schemas/RoadmapElement"
                                }
                            }
                        }
                    }
                ],
                "title": "Roadmap element",
                "description": "A node of a project's roadmap tree. At the root, `id`/`externalId`/`name`/`type`/`description` are those of the project itself (`type=\"project\"`); descendants are phases and sub-phases (`type=\"phase\"`) and planned deliverables (`type=\"goal\"`). Children are recursive."
            },
            "RoadmapFigures": {
                "title": "Roadmap estimate figures",
                "description": "Aggregated roadmap figures (metrics and effort by professional profile) used in capacity / planning views.",
                "type": "object",
                "properties": {
                    "metrics": {
                        "type": "object",
                        "description": "metrics property contains the computed estimates ",
                        "properties": {
                            "scope": {
                                "type": "number",
                                "nullable": true,
                                "description": "Estimated scope in PERSON-DAYS."
                            },
                            "effort": {
                                "type": "number",
                                "description": "Estimated total effort in PERSON-DAYS."
                            },
                            "cost": {
                                "type": "number",
                                "nullable": true,
                                "description": "Estimated total cost. Unit is the project currency."
                            },
                            "missingEstimates": {
                                "type": "boolean",
                                "description": "allows to make the difference between 0 and missing data"
                            }
                        }
                    },
                    "effortByProfile": {
                        "type": "array",
                        "description": "Effort estimates by resource profile, in PERSON-DAYS.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "effort": {
                                    "type": "number",
                                    "description": "Effort estimate in PERSON-DAYS for this resource profile."
                                },
                                "profile": {
                                    "$ref": "#/components/schemas/Entity",
                                    "description": "Resource profile (short form: id, name, type, externalId)."
                                }
                            }
                        }
                    }
                }
            },
            "SyncMode": {
                "title": "Synchronization Mode",
                "type": "string",
                "enum": [
                    "ALL_OR_NOTHING",
                    "NON_CONFLICT_ONLY",
                    "FORCE_OVERRIDE"
                ],
                "description": "Conflicts during synchronization are resolved according to synchronizattion mode as described below.\n\n|syncMode value | Description |\n|---------------|-------------|\n|ALL_OR_NOTHING | All changes are cancelled if there is a conflict. |\n|NON_CONFLICT_ONLY | Only changes that don't conflict are applied. |\n|FORCE_OVERRIDE | Conflicts are ignored and submitted changes are applied. |\n\n"
            },
            "Task": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "performer": {
                                "$ref": "#/components/schemas/User"
                            },
                            "steps": {
                                "$ref": "#/components/schemas/CheckList"
                            },
                            "dueDate": {
                                "type": "string",
                                "format": "date",
                                "nullable": true,
                                "description": "Due date (ISO 8601 date YYYY-MM-DD)."
                            },
                            "start": {
                                "type": "string",
                                "format": "date",
                                "description": "Actual start date (ISO 8601 date YYYY-MM-DD).",
                                "nullable": true,
                                "readOnly": true
                            },
                            "end": {
                                "type": "string",
                                "format": "date",
                                "description": "Actual end date (ISO 8601 date YYYY-MM-DD).",
                                "nullable": true,
                                "readOnly": true
                            },
                            "effort": {
                                "type": "number",
                                "description": "Actual work in HOURS.",
                                "readOnly": true,
                                "nullable": true
                            },
                            "rtd": {
                                "type": "number",
                                "description": "Remaining work in HOURS (Remaining Time to Deliver).",
                                "nullable": true,
                                "readOnly": true
                            },
                            "state": {
                                "type": "string",
                                "enum": [
                                    "ready",
                                    "running",
                                    "paused",
                                    "completed",
                                    "cancelled"
                                ],
                                "readOnly": true,
                                "description": "Current state of the task. \n\n**Note (legacy):** for historical reasons this enum is serialized in lowercase, whereas the convention for enums in this API is to use uppercase. A future version will switch this enum to uppercase to align with the convention — clients should match values case-insensitively and not rely on the current casing."
                            },
                            "closed": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "color": {
                                "type": "string",
                                "enum": [
                                    "YELLOW",
                                    "BLUE",
                                    "GREEN",
                                    "ORANGE",
                                    "PINK",
                                    "L_PINK",
                                    "PURPLE"
                                ],
                                "readOnly": true,
                                "description": "Color label assigned to the task.",
                                "nullable": true
                            }
                        }
                    },
                    {
                        "type": "object",
                        "description": "Linked entities returned in short form (`Entity`: id, name, type, externalId, optional path). See Convention 16.",
                        "properties": {
                            "project": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true
                            },
                            "phase": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true
                            },
                            "iteration": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true
                            },
                            "goal": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true
                            },
                            "taskType": {
                                "$ref": "#/components/schemas/Entity"
                            },
                            "taskCategory": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true
                            }
                        }
                    }
                ],
                "title": "Task",
                "description": "Writable properties: name, description, externalId, dueDate, goal, performer, taskType"
            },
            "Task.write": {
                "type": "object",
                "title": "Task (write)",
                "description": "Writable fields for creating or updating a task. Entity references (goal, performer, taskType) are integer IDs. `name` is required unless `taskType` is provided (validated server-side).",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 300,
                        "description": "Task name. Required unless `taskType` is provided."
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 4000,
                        "nullable": true
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the task in another software (UI: \"external reference\")."
                    },
                    "dueDate": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Due date (ISO 8601 date YYYY-MM-DD)."
                    },
                    "performer": {
                        "type": "integer",
                        "nullable": true,
                        "description": "User ID — user assigned to perform the task."
                    },
                    "goal": {
                        "type": "integer",
                        "nullable": true,
                        "description": "Deliverable ID — deliverable the task contributes to."
                    },
                    "taskType": {
                        "type": "integer",
                        "nullable": true,
                        "description": "TaskDefinition ID — pre-defined task type from a methodology."
                    }
                }
            },
            "TaskCategory": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "tasks": {
                                "type": "array",
                                "description": "Task definitions belonging to this category (short form: id, name, type, externalId).",
                                "readOnly": true,
                                "items": {
                                    "$ref": "#/components/schemas/Entity"
                                }
                            }
                        }
                    }
                ],
                "title": "Task Category",
                "description": "Defined in a methodology"
            },
            "TaskDefinition": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    }
                ],
                "title": "Task Definition",
                "description": "Task template defined in a methodology"
            },
            "TopReportUnits": {
                "type": "object",
                "title": "Top-report units",
                "description": "Unit symbols carried by a top-level progress report (root row only). All numeric cost fields (`budgetedCost`, `actualCost`, `bcws`, ...) are expressed in `costUnit`; all effort fields (`plannedEffort`, `actualEffort`, `remainingEffort`) are expressed in `effortUnit`.",
                "properties": {
                    "effortUnit": {
                        "type": "string",
                        "description": "Unit symbol for effort fields. Typically `h` (HOURS) or `jh` / `PERSON-DAYS`.",
                        "readOnly": true
                    },
                    "costUnit": {
                        "type": "string",
                        "description": "Currency symbol for cost fields. Example: `€`, `$`.",
                        "readOnly": true
                    }
                }
            },
            "Unit": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Element"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "symbol": {
                                "type": "string"
                            },
                            "type": {
                                "type": "string",
                                "enum": [
                                    "SIZE",
                                    "EFFORT",
                                    "COST"
                                ],
                                "description": "Kind of unit. Overrides Entity.type when the Unit is returned in full form."
                            }
                        },
                        "required": [
                            "symbol"
                        ]
                    }
                ],
                "title": "Unit",
                "description": "A unit of measure used to express quantities (e.g. days, hours, euros). When returned in full form, the `type` field carries the UnitType (`SIZE`, `EFFORT`, `COST`) instead of the generic `Entity.type` value `\"unit\"`."
            },
            "UnitValue": {
                "type": "object",
                "title": "Unit value",
                "description": "A numeric value paired with its unit. Used for monetary amounts (unit = currency code), workloads (unit = HOURS or PERSON-DAYS), schedule variances (unit = DAYS), etc. The semantics of `val` are carried by `unit`.",
                "properties": {
                    "val": {
                        "type": "number",
                        "description": "Numeric value. Its semantics (currency, time, etc.) are carried by `unit`."
                    },
                    "unit": {
                        "type": "string",
                        "description": "Unit symbol/code. For monetary amounts, currency code (e.g. EUR, USD). For workloads, HOURS or PERSON-DAYS."
                    }
                }
            },
            "User": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Entity"
                    },
                    {
                        "type": "object",
                        "properties": {
                            "firstname": {
                                "type": "string",
                                "minLength": 1,
                                "maxLength": 64
                            },
                            "lastname": {
                                "type": "string",
                                "maxLength": 64
                            },
                            "archived": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "email": {
                                "type": "string",
                                "format": "email",
                                "maxLength": 128
                            },
                            "availabilityStart": {
                                "type": "string",
                                "format": "date",
                                "nullable": true,
                                "description": "Start of the user's availability period (ISO 8601 date YYYY-MM-DD)."
                            },
                            "availabilityEnd": {
                                "type": "string",
                                "format": "date",
                                "nullable": true,
                                "description": "End of the user's availability period (ISO 8601 date YYYY-MM-DD)."
                            },
                            "extern": {
                                "type": "boolean",
                                "description": "If true, the user is an external collaborator."
                            },
                            "manager": {
                                "type": "boolean",
                                "readOnly": true
                            },
                            "gender": {
                                "type": "string",
                                "enum": [
                                    "MALE",
                                    "FEMALE",
                                    "UNKNOWN"
                                ],
                                "nullable": true
                            },
                            "avatarURL": {
                                "type": "string",
                                "nullable": true,
                                "description": "URL of the user's avatar image."
                            },
                            "obs": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "User's OBS (organisational unit) — short form: id, name, type, externalId, path."
                            },
                            "profile": {
                                "$ref": "#/components/schemas/Entity",
                                "readOnly": true,
                                "description": "User's resource profile — short form: id, name, type, externalId."
                            },
                            "costRate": {
                                "$ref": "#/components/schemas/CostRate"
                            },
                            "rights": {
                                "$ref": "#/components/schemas/UserRights"
                            }
                        }
                    }
                ],
                "title": "User",
                "description": "An application user account."
            },
            "User.write": {
                "type": "object",
                "title": "User (write)",
                "description": "Writable fields for creating or updating a user. Entity references (obs, profile) are integer IDs.",
                "properties": {
                    "firstname": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 64
                    },
                    "lastname": {
                        "type": "string",
                        "maxLength": 64
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 128
                    },
                    "externalId": {
                        "type": "string",
                        "maxLength": 100,
                        "nullable": true,
                        "description": "ID of the user in another software (UI: \"external reference\")."
                    },
                    "availabilityStart": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "Start of the user's availability period (ISO 8601 date YYYY-MM-DD)."
                    },
                    "availabilityEnd": {
                        "type": "string",
                        "format": "date",
                        "nullable": true,
                        "description": "End of the user's availability period (ISO 8601 date YYYY-MM-DD)."
                    },
                    "obs": {
                        "type": "integer",
                        "nullable": true,
                        "description": "OBS ID — organizational unit the user belongs to."
                    },
                    "profile": {
                        "type": "integer",
                        "nullable": true,
                        "description": "ResourceProfile ID — skill profile of the user."
                    },
                    "gender": {
                        "type": "string",
                        "enum": [
                            "MALE",
                            "FEMALE",
                            "UNKNOWN"
                        ],
                        "nullable": true
                    },
                    "locale": {
                        "type": "string",
                        "nullable": true,
                        "description": "User's locale code (e.g. \"fr\", \"en\")."
                    },
                    "ssoUID": {
                        "type": "string",
                        "nullable": true,
                        "description": "Single Sign-On user identifier."
                    },
                    "extern": {
                        "type": "boolean",
                        "description": "If true, marks the user as an external collaborator."
                    },
                    "costRate": {
                        "$ref": "#/components/schemas/CostRate.write"
                    },
                    "rights": {
                        "$ref": "#/components/schemas/UserRights.write"
                    }
                }
            },
            "UserRights": {
                "title": "User rights",
                "description": "Per-user access rights and role flags governing what the user is allowed to do in the application.",
                "type": "object",
                "properties": {
                    "appAccess": {
                        "type": "boolean",
                        "description": "Grant or deny access to the app."
                    },
                    "administrator": {
                        "type": "boolean"
                    },
                    "manager": {
                        "type": "boolean"
                    },
                    "pmo": {
                        "type": "boolean"
                    },
                    "limitedAccess": {
                        "type": "boolean"
                    },
                    "createProject": {
                        "type": "boolean"
                    },
                    "manageSelf": {
                        "type": "boolean",
                        "description": "Allow non-managers to manage their assignments"
                    }
                }
            },
            "UserRights.write": {
                "type": "object",
                "title": "User rights (write)",
                "description": "Writable user rights. All booleans; omitted fields keep their current value.",
                "properties": {
                    "appAccess": {
                        "type": "boolean",
                        "description": "Grant or deny access to the app."
                    },
                    "administrator": {
                        "type": "boolean"
                    },
                    "manager": {
                        "type": "boolean"
                    },
                    "pmo": {
                        "type": "boolean"
                    },
                    "limitedAccess": {
                        "type": "boolean"
                    },
                    "createProject": {
                        "type": "boolean"
                    },
                    "manageSelf": {
                        "type": "boolean",
                        "description": "Allow the user to manage their own assignments."
                    }
                }
            },
            "ValidationErrors": {
                "title": "Validation Errors",
                "type": "object",
                "description": "List of validations errors by property",
                "properties": {
                    "message": {
                        "type": "string",
                        "description": "Must be \"Validation failure\""
                    },
                    "errors": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "property": {
                                    "type": "string",
                                    "description": "name or path for embedded property",
                                    "nullable": true
                                },
                                "error": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            },
            "WBSElement": {
                "title": "WBSElement",
                "description": "Common Work Breakdown Structure fields shared by schedule elements (state, start/end dates, milestone flag, schedule lock).",
                "type": "object",
                "properties": {
                    "state": {
                        "$ref": "#/components/schemas/ElementState"
                    },
                    "firstDay": {
                        "type": "string",
                        "format": "date",
                        "description": "planned start date — manually set or calculated when not set (ISO 8601 date YYYY-MM-DD)."
                    },
                    "lastDay": {
                        "type": "string",
                        "format": "date",
                        "description": "planned end date — manually set or calculated when not set (ISO 8601 date YYYY-MM-DD)."
                    },
                    "milestone": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "Whether this WBS element is a milestone. `null` if not set."
                    },
                    "lockedSchedule": {
                        "type": "boolean",
                        "nullable": true,
                        "description": "Whether the schedule of this WBS element is locked (manual). `null` if not set."
                    }
                },
                "required": [
                    "state"
                ]
            }
        },
        "parameters": {},
        "securitySchemes": {
            "BearerAuth": {
                "type": "oauth2",
                "description": "OAuth 2.1. Recommended for new integrations.\n\n**Authorization Code + PKCE (user grant):** redirect the user to `GET https://pma.timeperformance.com/oauth2/authorize` with `response_type=code`, `client_id`, `redirect_uri`, `code_challenge`, `code_challenge_method=S256` and the requested `scope`. After consent, exchange the returned `code` at `POST https://pma.timeperformance.com/oauth2/token` (`grant_type=authorization_code`, `code`, `code_verifier`, `redirect_uri`, `client_id`) to receive a JWT access token (1h) and a refresh token (30d, rotated on each use). User grants are limited to the `api:read` scope today; requesting any other scope is rejected with `invalid_scope`.\n\n**Client Credentials (machine-to-machine):** the client authenticates at `POST https://pma.timeperformance.com/oauth2/token` with `grant_type=client_credentials` using HTTP Basic with an existing **API BackOffice credential** (`keyID@tenant:secret`, managed under the user's profile / API BackOffice administration in the web app). Returns a JWT access token (1h), **no refresh token** (the client can request a new token at any time). This grant can carry both `api:read` and `api:write`; if `scope` is omitted the credential's full effective scope is granted, otherwise the requested scope is intersected with that effective scope (empty intersection → `invalid_scope`).\n\n**Client registration (Authorization Code flow):** dynamic via `POST /oauth2/register` (RFC 7591), or pre-registered. Public clients use `token_endpoint_auth_method=none` + PKCE; confidential clients authenticate with `client_secret_basic`. API BackOffice credentials used by `client_credentials` are managed in the web app, not through dynamic client registration.\n\nThe access token is sent as `Authorization: Bearer <jwt>` on every API call.",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://pma.timeperformance.com/oauth2/authorize",
                        "tokenUrl": "https://pma.timeperformance.com/oauth2/token",
                        "refreshUrl": "https://pma.timeperformance.com/oauth2/token",
                        "scopes": {
                            "api:read": "Read access to `/api/v4/*`. Only scope grantable through a user consent today."
                        }
                    },
                    "clientCredentials": {
                        "tokenUrl": "https://pma.timeperformance.com/oauth2/token",
                        "scopes": {
                            "api:read": "Read access to `/api/v4/*`.",
                            "api:write": "Write access to `/api/v4/*`. Reserved for API BackOffice credentials (machine-to-machine `client_credentials` grant); cannot be obtained through a user authorization flow."
                        }
                    }
                }
            },
            "BasicAuth": {
                "type": "http",
                "scheme": "basic",
                "description": "HTTP Basic authentication, required for service-to-service and calls without a user-consent step.\n\nAPI credentials can be found in the web app (user's profile / API BackOffice administration)."
            }
        },
        "responses": {
            "Unauthorized": {
                "description": "Authentication is required or the provided credentials are invalid.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "Forbidden": {
                "description": "The authenticated user is not allowed to perform this operation.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "NotFound": {
                "description": "The requested resource does not exist or is not accessible.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            },
            "ValidationError": {
                "description": "Request body or parameters failed validation.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/ValidationErrors"
                        }
                    }
                }
            },
            "ServerError": {
                "description": "An unexpected error occurred on the server.",
                "content": {
                    "application/json": {
                        "schema": {
                            "$ref": "#/components/schemas/Error"
                        }
                    }
                }
            }
        }
    },
    "security": [
        {
            "BearerAuth": [
                "api:read"
            ]
        },
        {
            "BasicAuth": []
        }
    ]
}