# Get a Project. Retrieves a project by given project ID. # OpenAPI definition ```json { "openapi": "3.0.0", "info": { "title": "Attendances API", "version": "2.0.0", "description": "Endpoints to manage attendance periods, projects and their members." }, "servers": [ { "url": "https://api.personio.de" } ], "security": [ { "BearerAuth": [] } ], "tags": [ { "name": "Projects", "description": "Endpoints relating to projects that can be associated with attendance periods." } ], "paths": { "/v2/projects/{id}": { "parameters": [ { "$ref": "#/components/parameters/projectIdParam" } ], "get": { "x-path-examples": { "200 GET Project valid request": { "value": "/papi/v2/projects/1234" }, "200 GET Project valid request with include": { "value": "/papi/v2/projects/1234", "query": "include=tracked_minutes,sub_projects_tracked_minutes,sub_projects_count,tracked_periods_count" }, "404 Resource Not Found": { "value": "/papi/v2/projects/9999" }, "403 Forbidden response": { "value": "/papi/v2/projects/1234" } }, "tags": [ "Projects" ], "summary": "Get a Project.", "description": "Retrieves a project by given project ID.", "parameters": [ { "name": "include", "in": "query", "required": false, "style": "form", "explode": false, "schema": { "type": "array", "items": { "type": "string", "enum": [ "tracked_minutes", "sub_projects_tracked_minutes", "sub_projects_count", "tracked_periods_count" ] } }, "description": "Include additional information in the response. Multiple values should be comma-separated.\nThese fields are not included by default for performance reasons.\n" } ], "responses": { "200": { "$ref": "#/components/responses/ProjectResponse" }, "403": { "$ref": "#/components/responses/ForbiddenResponse" }, "404": { "$ref": "#/components/responses/NotFoundResponse" } } } } }, "components": { "securitySchemes": { "BearerAuth": { "type": "http", "scheme": "bearer" } }, "schemas": { "Project": { "type": "object", "description": "- Model of project entity. - Describes a project that can be associated with an attendance period.", "properties": { "id": { "type": "string", "example": "1234" }, "name": { "description": "Name of the project.", "type": "string", "maxLength": 255, "example": "Project Name" }, "status": { "description": "Status of the project.", "type": "string", "enum": [ "ACTIVE", "ARCHIVED" ], "example": "ACTIVE" }, "project_code": { "description": "Optional project code. This field needs to be unique across all projects (regardless of top level or sub project). It can be used as a reference to the projects in another system.\n", "type": "string", "nullable": true, "example": "PRJ-1234" }, "description": { "description": "Optional project description.", "type": "string", "nullable": true, "maxLength": 1000, "example": "Project description" }, "cost_center": { "description": "Optional cost center ID pointing to an existing Personio cost center ID.", "type": "object", "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "example": "1234" } } }, "assigned_to_all": { "description": "Flag to assign the project to all employees. Projects assigned to all employees can't have members. If set to true, every employee in the company is able to track time against this project. If set to false, only members of the project can track time against this project.\n", "type": "boolean", "example": false }, "parent_project": { "description": "Optional parent project reference by Personio project ID. Sub projects can't be the parent of another sub project (at most one level of nesting).\n", "type": "object", "nullable": true, "required": [ "id" ], "properties": { "id": { "type": "string", "example": "1234" } } }, "start": { "description": "An optional start date of the project (inclusive).", "type": "object", "nullable": true, "required": [ "date" ], "properties": { "date": { "type": "string", "format": "date", "example": "2022-01-01" } } }, "end": { "description": "An optional end date of the project (exclusive).", "type": "object", "nullable": true, "required": [ "date" ], "properties": { "date": { "type": "string", "format": "date", "example": "2022-01-01" } } }, "billable": { "description": "Flag to mark project as billable.", "type": "boolean", "example": true }, "client_name": { "description": "Optional client name for the project.", "type": "string", "nullable": true, "maxLength": 255, "example": "ACME Inc." }, "project_type": { "description": "Optional project type. This is a free text field defined by the customer.\n", "type": "string", "nullable": true, "maxLength": 255, "example": "External" }, "created_at": { "description": "Date and time when the project was created.", "type": "string", "format": "date-time", "example": "2022-01-01T14:00:00Z" }, "updated_at": { "description": "Date and time when the project was last updated.", "type": "string", "format": "date-time", "example": "2022-01-01T14:00:00Z" }, "tracked_minutes": { "description": "Total tracked minutes for the project and its subprojects. Rejected periods are not included. This field is only set when explicitly requested in the `include` parameter.\n", "type": "integer", "nullable": true, "example": 120 }, "sub_projects_tracked_minutes": { "description": "Total tracked minutes for the project's subprojects. Rejected periods are not included. This field is only set when explicitly requested in the `include` parameter.\n", "type": "integer", "nullable": true, "example": 60 }, "sub_projects_count": { "description": "Number of subprojects. This field is only set when explicitly requested in the `include` parameter.\n", "type": "integer", "nullable": true, "example": 1 }, "tracked_periods_count": { "description": "Number of tracked periods for the project and its subprojects. Attendance periods are counted even if they are rejected. This field is only set when explicitly requested in the `include` parameter.\n", "type": "integer", "nullable": true, "example": 2 } } } }, "responses": { "ForbiddenResponse": { "description": "Forbidden", "content": { "application/problem+json": { "schema": { "$ref": "#/components/responses/NotFoundResponse/content/application~1problem%2Bjson/schema" }, "examples": { "403 Forbidden response": { "$ref": "#/components/examples/ForbiddenResponse" } } } } }, "NotFoundResponse": { "description": "The resource could not be found.", "content": { "application/problem+json": { "schema": { "type": "object", "description": "This object represents an error response.", "properties": { "personio_trace_id": { "type": "string", "example": "aswo3f-a202lfso-312123sld-1230ddd", "description": "A unique ID that was created for this error." }, "timestamp": { "type": "string", "format": "date-time", "example": "2021-05-28T11:17:30.000Z", "description": "The timestamp of when the error occurred." }, "errors": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string", "example": "Not found", "description": "The title of the error." }, "detail": { "type": "string", "example": "The requested resource was not found.", "description": "A short description about the error." }, "type": { "type": "string", "format": "uri", "example": "https://developer.personio.de/reference/errors#common.requested_resource_not_found", "description": "A link to the developer hub where more information can be found for the encountered error." }, "_meta": { "type": "object", "additionalProperties": { "type": "string" } } } } } } }, "examples": { "404 Resource Not Found": { "$ref": "#/components/examples/NotFoundResponse" } } } } }, "ProjectResponse": { "description": "Successful response.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" }, "examples": { "200 GET Project valid request": { "$ref": "#/components/examples/GetProjectResponse" }, "200 GET Project valid request with include": { "$ref": "#/components/examples/GetProjectResponseWithInclude" } } } } } }, "examples": { "ForbiddenResponse": { "value": { "personio_trace_id": "aswo3f-a202lfso-312123sld-1230ddd", "timestamp": "2021-05-28T11:17:30+00:00", "errors": [ { "title": "Access denied", "detail": "Access denied to perform attendance period operations.", "type": "https://developer.personio.de/reference/errors#common.forbidden_response" } ] } }, "NotFoundResponse": { "value": { "personio_trace_id": "aswo3f-a202lfso-312123sld-1230ddd", "timestamp": "2021-05-28T11:17:30+00:00", "errors": [ { "title": "Resource not found", "detail": "The requested resource is not found.", "type": "https://developer.personio.de/reference/errors#common.resource_not_found" } ] } }, "GetProjectResponse": { "value": { "id": "82173", "name": "Project Name", "status": "ACTIVE", "project_code": "PRJ-1234", "description": "Project description", "cost_center": { "id": "1234" }, "assigned_to_all": false, "parent_project": { "id": "1234" }, "start": { "date": "2024-01-01" }, "end": { "date": "2025-01-01" }, "billable": false, "client_name": "ACME Inc.", "project_type": "External", "created_at": "2022-01-01T14:00:00Z", "updated_at": "2022-01-01T14:00:00Z" } }, "GetProjectResponseWithInclude": { "value": { "id": "82173", "name": "Project Name", "status": "ACTIVE", "project_code": "PRJ-1234", "description": "Project description", "cost_center": { "id": "1234" }, "assigned_to_all": false, "parent_project": { "id": "1234" }, "start": { "date": "2024-01-01" }, "end": { "date": "2025-01-01" }, "billable": false, "client_name": "ACME Inc.", "project_type": "External", "created_at": "2022-01-01T14:00:00Z", "updated_at": "2022-01-01T14:00:00Z", "tracked_minutes": 120, "sub_projects_tracked_minutes": 60, "sub_projects_count": 1, "tracked_periods_count": 2 } } } } } ```