openapi: 3.0.0 info: title: OpenProject API v3 version: 1.0.0-oas3 description: '' security: - basicAuth: [] - oAuth: [] paths: /api/v3/examples: get: responses: '200': description: OK headers: {} summary: view aggregated result description: '' tags: - Collections parameters: - name: groupBy in: query description: >- The column to group by. Note: Aggregation is as of now only supported by the work package collection. You can pass any column name as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: showSums in: query description: '' required: false schema: type: string default: 'false' '/api/v3/activities/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Activity' examples: response: value: _type: 'Activity::Comment' _links: self: href: /api/v3/activity/1 title: Priority changed from High to Low workPackage: href: /api/v3/work_packages/1 title: >- quis numquam qui voluptatum quia praesentium blanditiis nisi user: href: /api/v3/users/1 title: John Sheppard - admin id: 1 details: - format: textile raw: Lorem ipsum dolor sit amet. html:
Lorem ipsum dolor sit amet.
comment: format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
createdAt: '2014-05-21T08:51:20Z' version: 31 summary: View activity description: '' tags: - Activities parameters: - name: id in: path description: Activity id required: true schema: type: integer patch: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: 'Activity::Comment' _links: self: href: /api/v3/activity/1 title: Priority changed from High to Low workPackage: href: /api/v3/work_packages/1 title: >- quis numquam qui voluptatum quia praesentium blanditiis nisi user: href: /api/v3/users/1 title: John Sheppard - admin id: 1 details: - format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
comment: format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
createdAt: '2014-05-21T08:51:20Z' version: 31 '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** edit journals headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to edit the comment of this journal entry. '422': description: Returned if the client tries to modify a read-only property. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:PropertyIsReadOnly' message: The ID of an activity can't be changed. summary: Update activity description: >- Updates an activity's comment and, on success, returns the updated activity. tags: - Activities parameters: - name: id in: path description: Activity id required: true schema: type: integer requestBody: $ref: '#/components/requestBodies/Body' '/api/v3/attachments/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Attachment' '404': description: >- Returned if the attachment does not exist or the client does not have sufficient permissions to see it. **Required permission:** view permission for the container of the attachment *Note: A client without sufficient permissions shall not be able to test for the existence of an attachment. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified attachment does not exist. summary: View attachment description: '' tags: - Attachments parameters: - name: id in: path description: Attachment id required: true schema: type: integer delete: responses: '204': description: >- Returned if the attachment was deleted successfully. Note that the response body is empty as of now. In future versions of the API a body *might* be returned along with an appropriate HTTP status. headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** edit permission for the container of the attachment *Note that you will only receive this error, if you are at least allowed to see the attachment.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to delete this attachment. '404': description: >- Returned if the attachment does not exist or the client does not to see it. **Required permission:** view permission for the container of the attachment *Note: A client without sufficient permissions shall not be able to test for the existence of an attachment. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified attachment does not exist. summary: Delete attachment description: Permanently deletes the specified attachment. tags: - Attachments parameters: - name: id in: path description: Attachment id required: true schema: type: integer '/api/v3/work_packages/{id}/attachments': get: responses: '200': description: OK headers: {} '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package *Note: A client without sufficient permissions shall not be able to test for the existence of a work package. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: List attachments description: '' tags: - Attachments parameters: - name: id in: path description: ID of the work package whose attachments will be listed required: true schema: type: integer post: responses: '200': description: OK headers: {} '400': description: >- Returned if the client sends a not understandable request. Reasons include: * Omitting one of the required parts (metadata and file) * sending unparsable JSON in the metadata part headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request could not be parsed as JSON. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** edit work package or add work package *Note that you will only receive this error, if you are at least allowed to see the work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to delete this attachment. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package *Note: A client without sufficient permissions shall not be able to test for the existence of a work package. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. '422': description: |- Returned if the client tries to send an invalid attachment. Reasons are: * Omitting the file name (`fileName` property of metadata part) * Sending a file that is too large headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: File is too large (maximum size is 5242880 Bytes). summary: Add attachment description: >- To add an attachment to a work package, a client needs to issue a request of type `multipart/form-data` with exactly two parts. The first part *must* be called `metadata`. Its content type is expected to be `application/json`, the body *must* be a single JSON object, containing at least the `fileName` and optionally the attachments `description`. The second part *must* be called `file`, its content type *should* match the mime type of the file. The body *must* be the raw content of the file. Note that a `filename` must be indicated in the `Content-Disposition` of this part, however it will be ignored. Instead the `fileName` inside the JSON of the metadata part will be used. tags: - Attachments parameters: - name: id in: path description: ID of the work package to receive the attachment required: true schema: type: integer '/api/v3/projects/{project_id}/categories': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Categories' examples: response: value: _links: self: href: /api/v3/projects/11/categories total: 2 count: 2 _type: Collection _embedded: elements: - _links: self: href: /api/v3/categories/10 title: Category with assignee project: href: /api/v3/projects/11 title: Example project defaultAssignee: href: /api/v3/users/42 title: John Sheppard _type: Category id: 10 name: Foo - _links: self: href: /api/v3/categories/11 project: href: /api/v3/projects/11 _type: Category id: 11 name: Bar '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: List categories of a project description: '' tags: - Categories parameters: - name: project_id in: path description: ID of the project whoose categories will be listed required: true schema: type: integer '/api/v3/categories/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Category' examples: response: value: _links: self: href: /api/v3/categories/10 title: Category with assignee project: href: /api/v3/projects/11 title: Example project defaultAssignee: href: /api/v3/users/42 title: John Sheppard _type: Category id: 10 name: Foo '404': description: >- Returned if the category does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project (defining the category) *Note: A client without sufficient permissions shall not be able to test for the existence of a category. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified category does not exist. summary: View Category description: '' tags: - Categories parameters: - name: id in: path description: category id required: true schema: type: integer /api/v3/configuration: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Configuration' examples: response: value: _type: Configuration _links: href: /api/v3/configuration maximumAttachmentFileSize: 5242880 perPageOptions: - 1 - 10 - 100 summary: View configuration description: '' tags: - Configuration '/api/v3/custom_actions/{custom_action_id}': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: CustomAction name: Change project and type description: Changes project and type in one go _links: executeImmediately: href: /apiChanges project and type in one go title: Execute Change project and type method: post self: href: /api/v3/custom_actions/2 title: Change project and type '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** edit work packages in any project headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: Returned if the custom action does not exist. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. summary: View custom action description: '' tags: - Custom actions parameters: - name: custom_action_id in: path description: The id of the custom action to fetch required: true schema: type: integer '/api/v3/custom_actions/{custom_action_id}/execute': post: responses: '200': description: OK headers: {} '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** edit work packages - Additional permissions might be required based on the custom action. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: Returned if the custom action does not exist. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. '409': description: >- Returned if the client provided an outdated lockVersion or no lockVersion at all. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:UpdateConflict' message: >- Couldn't update the resource because of conflicting modifications. '422': description: >- Returned if the custom action was not executed successfully e.g. when a constraint on a work package property was violated. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Delay must be a number greater than or equal to 0 _embedded: details: attribute: delay summary: Execute custom action description: >- A POST to this end point executes the custom action on the work package provided in the payload. The altered work package will be returned. In order to avoid executing the custom action unbeknown to a change that has already taken place, the client has to provide the work package's current lockVersion. tags: - Custom actions parameters: - name: custom_action_id in: path description: The id of the custom action to execute required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: lockVersion: type: string _links: type: object properties: workPackage: type: object properties: href: type: string '/api/v3/custom_objects/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/custom_objects/1 _type: CustomObject value: Foo '404': description: >- Returned if the custom object does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package in any project the custom object's custom field is active in. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified resource does not exist. summary: View Custom Object description: '' tags: - Custom Objects parameters: - name: id in: path description: The custom object's identifier required: true schema: type: integer /api/v3/example/form: post: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/example/form validate: href: /api/v3/example/form method: POST previewMarkup: href: /api/v3/render/textile method: POST commit: href: /api/v3/example method: PATCH _type: Form _embedded: payload: _links: status: href: /api/v3/statuses/1 _type: Example lockVersion: 5 subject: An example title schema: _type: Schema _links: self: href: /api/v3/example/schema lockVersion: type: Integer writable: false subject: type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' validationErrors: subject: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:BadExampleError' message: >- For the purpose of this example we need a validation error. The remainder of the response pretends there were no errors. '400': description: >- Occurs when the client did not send a valid JSON object in the request body and the request body was not empty. Note that this error only occurs when the content is not at all a single JSON object. It **does not occur** for requests containing undefined properties or invalid property values. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: >- The request body was neither empty, nor did it contain a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions to modify the associated resource. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to edit example resources. '409': description: >- Returned if underlying resource was changed since the client requested the form. This is determined using the `lockVersion` property. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:UpdateConflict' message: >- The resource you are about to edit was changed in the meantime. summary: show or validate form description: >- This is an example of how a form might look like. Note that this endpoint does not exist in the actual implementation. tags: - Forms requestBody: content: application/json: schema: type: object properties: lockVersion: type: number _type: type: string subject: type: string /api/v3/help_texts: get: responses: '200': description: OK headers: {} summary: List all help texts description: '' tags: - Help texts '/api/v3/help_texts/{id}': get: responses: '200': description: OK headers: {} summary: View help text description: '' tags: - Help texts parameters: - name: id in: path description: Help text id required: true schema: type: integer /api/v3/principals: get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Collection total: 3 count: 3 _embedded: elements: - _type: User id: 4 login: Eliza92778 admin: false subtype: User firstName: Danika lastName: O'Keefe name: Danika O'Keefe email: jackie@dicki.org avatar: 'https://example.org/users/4/avatar' createdAt: '2015-03-20T12:57:02Z' updatedAt: '2015-06-16T15:28:14Z' status: active identityUrl: null _links: self: href: /api/v3/users/4 title: Danika O'Keefe showUser: href: /users/4 type: text/html updateImmediately: href: /api/v3/users/4 title: Update Eliza92778 method: patch lock: href: /api/v3/users/4/lock title: Set lock on Eliza92778 method: post delete: href: /api/v3/users/4 title: Delete Eliza92778 method: delete - _type: User id: 2 login: Sebastian9686 admin: false subtype: User firstName: Peggie lastName: Feeney name: Peggie Feeney email: null avatar: 'https://example.org/users/4/avatar' createdAt: '2015-03-20T12:56:55Z' updatedAt: '2015-03-20T12:56:55Z' status: active identityUrl: null _links: self: href: /api/v3/users/2 title: Peggie Feeney showUser: href: /users/2 type: text/html updateImmediately: href: /api/v3/users/2 title: Update Sebastian9686 method: patch lock: href: /api/v3/users/2/lock title: Set lock on Sebastian9686 method: post delete: href: /api/v3/users/2 title: Delete Sebastian9686 method: delete - _type: User id: 9 login: '' admin: false subtype: Group firstName: '' lastName: Group 1 name: Group 1 email: null avatar: '' createdAt: '2015-09-23T11:06:36Z' updatedAt: '2015-09-23T11:06:36Z' status: active _links: self: href: /api/v3/users/9 title: Group 1 showUser: href: /users/9 type: text/html updateImmediately: href: /api/v3/users/9 title: 'Update ' method: patch delete: href: /api/v3/users/9 title: 'Delete ' method: delete _links: self: href: /api/v3/principals summary: List principals description: >- List all principals. The client can choose to filter the principals similar to how work packages are filtered. In addition to the provided filters, the server will reduce the result set to only contain principals who are members in projects the client is allowed to see. tags: - Principals parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + type: filters principals by their type (*User*, *Group*). + member: filters principals by the projects they are members in. required: false schema: type: string /api/v3/priorities: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Priorities' examples: response: value: _links: self: href: /api/v3/priorities _type: Collection total: 4 count: 4 _embedded: elements: - _type: Priority _links: self: href: /api/v3/priorities/1 title: Low id: 1 name: Low position: 1 isDefault: false isActive: true - _type: Priority _links: self: href: /api/v3/priorities/2 title: Normal id: 2 name: Normal position: 2 isDefault: true isActive: true - _type: Priority _links: self: href: /api/v3/priorities/3 title: High id: 3 name: High position: 3 isDefault: false isActive: true - _type: Priority _links: self: href: /api/v3/priorities/4 title: Immediate id: 4 name: Immediate position: 5 isDefault: false isActive: true '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** view work package (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see the priorities. summary: List all Priorities description: '' tags: - Priorities '/api/v3/priorities/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Priority' examples: response: value: _type: Priority _links: self: href: /api/v3/priorities/1 title: Low id: 1 name: Low position: 1 isDefault: false isActive: true '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** view work package (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see this priority. summary: View Priority description: '' tags: - Priorities parameters: - name: id in: path description: Priority id required: true schema: type: integer '/api/v3/projects/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Project' examples: response: value: _type: Project _links: self: href: /api/v3/projects/1 title: Lorem createWorkPackage: href: /api/v3/projects/1/work_packages/form method: post createWorkPackageImmediate: href: /api/v3/projects/1/work_packages method: post categories: href: /api/v3/projects/1/categories types: href: /api/v3/projects/1/types versions: href: /api/v3/projects/1/versions workPackages: href: /api/v3/projects/1/work_packages id: 1 identifier: project_identifier name: Project example description: Lorem ipsum dolor sit amet createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: View project description: '' tags: - Projects parameters: - name: id in: path description: Project id required: true schema: type: integer patch: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Project' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. *Required permission*: edit project for the project to be altered headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. *Required permission*: view project Note: A client without sufficient permissions shall not be able to test for the existence of a version. That’s why a 404 is returned here, even if a 403 might be more appropriate. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. '422': description: >- Returned if: + a constraint for a property was violated (PropertyConstraintViolation) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Name can't be blank. _embedded: details: attribute: name summary: update project description: >- Updates the given project by applying the attributes provided in the body. tags: - Projects parameters: - name: id in: path description: Project id required: true schema: type: integer requestBody: content: application/json: schema: $ref: '#/components/schemas/Project' description: Project changes required: true delete: responses: '204': description: OK headers: {} '403': description: >- Returned if the client does not have sufficient permissions. *Required permission*: admin headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. *Required permission*: view project Note: A client without sufficient permissions shall not be able to test for the existence of a version. That’s why a 404 is returned here, even if a 403 might be more appropriate. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. '422': description: >- Returned if the project cannot be deleted. This can happen when there are still references to the project in other projects that need to be severed at first. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: >- Work packages in non descendant projects reference versions of the project or its descendants. _embedded: details: attribute: base summary: delete project description: >- Deletes the project permanently. As this is a lengthy process, the actual deletion is carried out asynchronously. So the project might exist well after the request has returned successfully. To prevent unwanted changes to the project scheduled for deletion, it is archived at once. tags: - Projects parameters: - name: id in: path description: Project id required: true schema: type: integer /api/v3/projects: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Projects' summary: List projects description: >- Returns a collection of projects. The collection can be filtered via query parameters similar to how work packages are filtered. In addition to the provided filter, the result set is always limited to only contain projects the client is allowed to see. tags: - Projects parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + ancestor: filters projects by their ancestor. A project is not considered to be it's own ancestor. required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Currently supported orders are: + id + name + created_on + public + latest_activity_at + required_disk_space: There might also be additional orders based on the custom fields that have been configured. required: false schema: type: string post: responses: '201': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Project' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. *Required permission*: add project which is a global permission headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '422': description: >- Returned if: + a constraint for a property was violated (PropertyConstraintViolation) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Name can't be blank. _embedded: details: attribute: name summary: create project description: >- Creates a new project, applying the attributes provided in the body. You can use the form and schema to be retrieve the valid attribute values and by that be guided towards successful creation. tags: - Projects parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + ancestor: filters projects by their ancestor. A project is not considered to be it's own ancestor. required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Currently supported orders are: + id + name + created_on + public + latest_activity_at + required_disk_space: There might also be additional orders based on the custom fields that have been configured. required: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Project' description: New project attributes required: true /api/v3/projects/available_parent_projects: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Projects' '403': description: >- Returned if the client does not have sufficient permissions. *Required permission*: edit project in a project or the global add project permission headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. summary: list available parent project candidates description: >- Lists projects which can become parent to another project. Only sound candidates are returned. For instance a project cannot become parent of itself or it’s children. tags: - Projects parameters: - name: filters in: query description: JSON specifying filter conditions. required: false schema: type: string - name: of in: query description: >- The id or identifier of the project the parent candidate is determined for required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Accepts the same format as returned by the queries endpoint and allows all the filters and sortBy supported by the project list end point. required: false schema: type: string '/api/v3/versions/{id}/projects': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/versions/2/projects total: 1 count: 1 _type: Collection _embedded: elements: - _type: Project _links: self: href: /api/v3/projects/1 title: Lorem categories: href: /api/v3/projects/1/categories versions: href: /api/v3/projects/1/versions id: 1 identifier: project_identifier name: Project example description: Lorem ipsum dolor sit amet createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' '404': description: >- Returned if the version does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work packages **or** manage versions (any project where the given version is available) *Note: A client without sufficient permissions shall not be able to test for the existence of a version. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified version does not exist. summary: List projects with version description: >- This endpoint lists the projects where the given version is available. The projects returned depend on the sharing settings of the given version, but are also limited to the projects that the current user is allowed to see. tags: - Projects parameters: - name: id in: path description: Version id required: true schema: type: integer '/api/v3/queries/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Query id: 9 name: fdsfdsfdsf filters: - _type: StatusQueryFilter name: Status _links: filter: href: /api/v3/queries/filters/status title: Status operator: href: /api/v3/queries/operators/o title: open schema: href: /api/v3/queries/filter_instance_schemas/status values: [] - _type: DueDateQueryFilter name: Due date values: - '1' _links: filter: href: /api/v3/queries/filters/dueDate title: Due date operator: href: /api/v3/queries/operators/Hello world! This is textile!
'400': description: >- Returned if the context passed by the client is not valid (e.g. unknown). Note that this response will also occur when the requesting user is not allowed to see the context resource (e.g. limited work package visibility). headers: {} content: application/json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRenderContext' message: Could not render textile string in the given context. '415': description: >- Returned if the Content-Type indicated in the request is not `text/plain`. headers: {} content: application/json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:TypeNotSupported' message: >- Expected Content-Type to be 'text/plain' but got 'application/json'. summary: Preview Textile document description: '' tags: - Previewing parameters: - name: context in: query description: >- API-Link to the context in which the rendering occurs, for example a specific work package. If left out only context-agnostic rendering takes place. Please note that OpenProject features textile-extensions that can only work given a context (e.g. display attached images). **Supported contexts:** * `/api/v3/work_packages/{id}` - an existing work package required: false schema: type: string /api/v3/render/plain: post: responses: '200': description: OK headers: {} content: text/html: examples: response: value: |Hello world! This *is* plain text!
'415': description: >- Returned if the Content-Type indicated in the request is not `text/plain`. headers: {} content: application/json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:TypeNotSupported' message: >- Expected Content-Type to be 'text/plain' but got 'application/json'. summary: Preview plain document description: '' tags: - Previewing '/api/v3/revisions/{id}': get: responses: '200': description: OK headers: {} '404': description: >- Returned if the revision does not exist or the client does not have sufficient permissions to see it. **Required permission:** view changesets for the project the repository is created in. *Note: A client without sufficient permissions shall not be able to test for the existence of a revision. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified revision does not exist. summary: View revision description: '' tags: - Revisions parameters: - name: id in: path description: Revision id required: true schema: type: integer '/api/v3/roles/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Role id: 3 name: Manager _links: self: href: /api/v3/roles/3 title: Manager summary: View role description: Fetch an individual role. tags: - Roles parameters: - name: id in: path description: role id required: true schema: type: integer /api/v3/roles: get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Collection total: 5 count: 5 _embedded: elements: - _type: Role id: 3 name: Manager _links: self: href: /api/v3/roles/3 title: Manager - _type: Role id: 2 name: Anonymous _links: self: href: /api/v3/roles/2 title: Anonymous - _type: Role id: 5 name: Reader _links: self: href: /api/v3/roles/5 title: Reader - _type: Role id: 4 name: Member _links: self: href: /api/v3/roles/4 title: Member - _type: Role id: 1 name: Non member _links: self: href: /api/v3/roles/1 title: Non member _links: self: href: /api/v3/roles summary: List roles description: >- List all defined roles. This includes built in roles like 'Anonymous' and 'Non member'. tags: - Roles /api/v3: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Root' summary: View root description: '' tags: - Root /api/v3/example/schema: get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Schema _dependencies: [] _links: self: href: /api/v3/example/schema lockVersion: name: Resource Version type: Integer writable: false subject: name: Subject type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed name: Status type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' summary: view the schema description: >- This is an example of how a schema might look like. Note that this endpoint does not exist in the actual implementation. tags: - Schemas /api/v3/statuses: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Statuses' examples: response: value: _links: self: href: /api/v3/statuses total: 6 count: 6 _type: Collection _embedded: elements: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 - _links: self: href: /api/v3/statuses/3 _type: Status id: 3 name: Resolved position: 3 isDefault: false isClosed: false defaultDoneRatio: 75 - _links: self: href: /api/v3/statuses/4 _type: Status id: 4 name: Feedback position: 4 isDefault: false isClosed: false defaultDoneRatio: 25 - _links: self: href: /api/v3/statuses/5 _type: Status id: 5 name: Closed position: 5 isDefault: false isClosed: true defaultDoneRatio: 100 - _links: self: href: /api/v3/statuses/6 _type: Status id: 6 name: Rejected position: 6 isDefault: false isClosed: true defaultDoneRatio: 100 - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: In Progress position: 3 isDefault: false isClosed: false defaultDoneRatio: 50 '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** view work package (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see the statuses. summary: List all Statuses description: '' tags: - Statuses '/api/v3/statuses/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Status' examples: response: value: _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** view work package (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see this status. summary: View Status description: '' tags: - Statuses parameters: - name: id in: path description: status id required: true schema: type: integer /api/v3/string_objects: get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/string_objects?value=Foo _type: StringObject value: Foo summary: View String Object description: '' tags: - String Objects parameters: - name: value in: query description: The string value being resolved required: true schema: type: string '/api/v3/time_entries/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Time_entry' '404': description: >- Returned if the time entry does not exist or if the user does not have permission to view them. **Required permission** `view time entries` in the project the time entry is assigned to headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. summary: View time entry description: '' tags: - Time Entries parameters: - name: id in: path description: time entry id required: true schema: type: integer delete: responses: '204': description: Returned if the time entry was deleted successfully. headers: {} '403': description: >- Returned if the client does not have sufficient permissions headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: >- Returned if the time entry does not exist or if the user does not have sufficient permissions to see the time entry. Required permission view time entries in the project the time entry is assigned to or view own time entries for time entries belonging to the user headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:errors:NotFound' message: The requested resource could not be found. summary: delete time entry description: Permanently deletes the specified time entry. tags: - Time Entries parameters: - name: id in: path description: time entry id required: true schema: type: integer /api/v3/time_entries: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Time_entries' examples: response: value: _type: Collection total: 39 count: 2 pageSize: 2 offset: 1 _embedded: elements: - _type: TimeEntry id: 5 comment: Some comment spentOn: '2015-03-20' hours: PT5H createdAt: '2015-03-20T12:56:56Z' updatedAt: '2015-03-20T12:56:56Z' _links: self: href: /api/v3/time_entries/1 project: href: /api/v3/projects/1 title: Some project workPackage: href: /api/v3/work_packages/1 title: Some work package user: href: /api/v3/users/2 title: Some user activity: href: /api/v3/time_entries/activities/18 title: Some time entry activity - _type: TimeEntry id: 10 comment: Another comment spentOn: '2015-03-21' hours: PT7H createdAt: '2015-03-20T12:56:56Z' updatedAt: '2015-03-20T12:56:56Z' _links: self: href: /api/v3/time_entries/2 project: href: /api/v3/projects/42 title: Some other project workPackage: href: /api/v3/work_packages/541 title: Some other work package user: href: /api/v3/users/6 title: Some other project activity: href: /api/v3/time_entries/activities/14 title: some other time entry activity _links: self: href: /api/v3/time_entries?offset=1&pageSize=2 jumpTo: href: /api/v3/time_entries?offset=%7Boffset%7D&pageSize=2 templated: true changeSize: href: /api/v3/time_entries?offset=1&pageSize=%7Bsize%7D templated: true nextByOffset: href: /api/v3/time_entries?offset=2&pageSize=2 '400': description: Returned if the client sends invalid request parameters e.g. filters headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: - Filters Invalid filter does not exist. '403': description: Returned if the client is not logged in and login is required. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to view this resource. summary: List Time entries description: >- Lists time entries. The time entries returned depend on the filters provided and also on the permission of the requesting user. tags: - Time Entries parameters: - name: offset in: query description: Page number inside the requested collection. required: false schema: type: integer default: 1 - name: pageSize in: query description: Number of elements to display per page. required: false schema: type: integer - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + work_package: Filter time entries by work package + project: Filter time entries by project + user: Filter time entries by users required: false schema: type: string post: responses: '201': description: Created headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Time_entry' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. *Required permission*: add project which is a global permission headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '422': description: >- Returned if: + a constraint for a property was violated (PropertyConstraintViolation) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Work package is invalid. _embedded: details: attribute: workPackage summary: create time entry description: >- Creates a new time entry applying the attributes provided in the body. Please note that while there is a fixed set of attributes, custom fields can extend a time entries’ attributes and are accepted by the endpoint. tags: - Time Entries parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + ancestor: filters projects by their ancestor. A project is not considered to be it's own ancestor. required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Currently supported orders are: + id + name + created_on + public + latest_activity_at + required_disk_space: There might also be additional orders based on the custom fields that have been configured. required: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Time_entry' description: New time entry required: true '/api/v3/time_entries/activities/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: "#/components/schemas/TimeEntriesActivity" '404': description: >- Returned if the activity does not exist or if the user does not have permission to view them. **Required permission** `view time entries`, `log time`, `edit time entries`, `edit own time entries` or `manage project activities` in any project headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The requested resource could not be found. summary: View time entries activity description: '' tags: - Time Entry Activities parameters: - name: id in: path description: time entries activity id required: true schema: type: integer /api/v3/types: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/WPTypes' examples: response: value: _links: self: href: /api/v3/types total: 2 count: 2 _type: Collection _embedded: elements: - _links: self: href: /api/v3/types/1 _type: Type id: 1 name: Bug color: '#ff0000' position: 1 isDefault: true isMilestone: false createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' - _links: self: href: /api/v3/types/2 _type: Type id: 2 name: Feature color: '#888' position: 2 isDefault: false isMilestone: false createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work package or manage types (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see the types. summary: List all Types description: '' tags: - Types '/api/v3/projects/{project_id}/types': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/WPTypes' examples: response: value: _links: self: href: /api/v3/projects/11/types total: 2 count: 2 _type: Collection _embedded: elements: - _links: self: href: /api/v3/types/1 _type: Type id: 1 name: Bug color: '#ff0000' position: 1 isDefault: true isMilestone: false createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' - _links: self: href: /api/v3/types/2 _type: Type id: 2 name: Feature color: '#888' position: 2 isDefault: false isMilestone: false createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work packages **or** manage types (on given project) *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: List types available in a project description: This endpoint lists the types that are *available* in a given project. tags: - Types parameters: - name: project_id in: path description: ID of the project whoose types will be listed required: true schema: type: integer '/api/v3/types/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/WPType' examples: response: value: _links: self: href: /api/v3/types/1 _type: Type id: 1 name: Bug color: '#ff0000' position: 1 isDefault: true isMilestone: false createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T08:51:20Z' '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work package or manage types (on any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see this type. summary: View Type description: '' tags: - Types parameters: - name: id in: path description: type id required: true schema: type: integer /api/v3/my_preferences: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/UserPreferences' '401': description: Returned if no user is currently authenticated headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:Unauthenticated' message: You need to be authenticated to access this resource. summary: Show my preferences description: '' tags: - UserPreferences patch: responses: '200': description: OK headers: {} '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '401': description: Returned if no user is currently authenticated headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:Unauthenticated' message: You need to be authenticated to access this resource. '422': description: |- Returned if the update contains invalid properties. Reasons are: * Specifying an invalid type * Using an unknown time zone headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Time zone is not set to one of the allowed values. summary: Update UserPreferences description: >- When calling this endpoint the client provides a single object, containing the properties that it wants to change, in the body. tags: - UserPreferences requestBody: content: application/json: schema: type: object properties: accessibilityMode: type: boolean timeZone: type: string '/api/v3/users/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/User' '404': description: >- Returned if the user does not exist or if the API user does not have permission to view them. **Required permission** The user needs to be locked in if the installation is configured to pervent anonymous access headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: >- The specified user does not exist or you do not have permission to view them. summary: View user description: '' tags: - Users parameters: - name: id in: path description: 'User id. Use `me` to reference current user, if any.' required: true schema: type: string patch: responses: '200': description: OK headers: {} '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** Administrators only headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to update the account of this user. '404': description: >- Returned if the user does not exist or if the API user does not have the necessary permissions to update it. **Required permission:** Administrators only (exception: users may update their own accounts) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: >- The specified user does not exist or you do not have permission to view them. '422': description: >- Returned if: * the client tries to modify a read-only property (`PropertyIsReadOnly`) * a constraint for a property was violated (`PropertyConstraintViolation`) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: The email address is already taken. _embedded: details: attribute: email summary: Update user description: >- Updates the user's writable attributes. When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body. tags: - Users parameters: - name: id in: path description: User id required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: login: type: string email: type: string firstName: type: string lastName: type: string admin: type: boolean language: type: string delete: responses: '202': description: >- Returned if the account was deleted successfully. Note that the response body is empty as of now. In future versions of the API a body *might* be returned, indicating the progress of deletion. headers: {} '403': description: >- Returned if the client does not have sufficient permissions or if deletion of users was disabled in the instance wide settings. **Required permission:** Administrators only (exception: users might be able to delete their own accounts) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to delete the account of this user. '404': description: Returned if the user does not exist. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified user does not exist. summary: Delete user description: Permanently deletes the specified user account. tags: - Users parameters: - name: id in: path description: User id required: true schema: type: integer '/api/v3/users/{id}/lock': post: responses: '200': description: OK headers: {} '400': description: >- Returned if the client tries to lock a user account whose current status does not allow this transition. **Required permission:** Administrators only headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:InvalidUserStatusTransition message: >- The current user account status does not allow this operation. '403': description: >- Returned if the client does not have sufficient permissions for locking a user. **Required permission:** Administrators only headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to lock the account of this user. '404': description: Returned if the user does not exist. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified user does not exist. summary: Set Lock description: '' tags: - Users parameters: - name: id in: path description: User id required: true schema: type: integer delete: responses: '200': description: OK headers: {} '400': description: >- Returned if the client tries to unlock a user account whose current status does not allow this transition. **Required permission:** Administrators only headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:InvalidUserStatusTransition message: >- The current user account status does not allow this operation. '403': description: >- Returned if the client does not have sufficient permissions for unlocking a user. **Required permission:** Administrators only headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to unlock the account of this user. '404': description: Returned if the user does not exist. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified user does not exist. summary: Remove Lock description: '' tags: - Users parameters: - name: id in: path description: User id required: true schema: type: integer /api/v3/users: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Users' '400': description: Returned if the client sends an unknown sort column. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: Unknown sort column. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** Administrator headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to list users. summary: List Users description: Lists users. Only administrators have permission to do this. tags: - Users parameters: - name: offset in: query description: Page number inside the requested collection. required: false schema: type: integer default: 1 - name: pageSize in: query description: Number of elements to display per page. required: false schema: type: integer - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + status: Status the user has + group: Name of the group in which to-be-listed users are members. + name: Filter users in whose first or last names, or email addresses the given string occurs. + login: User's login required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string post: responses: '201': description: Created headers: {} '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** Administrator headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to create new users. '422': description: >- Returned if: * a constraint for a property was violated (`PropertyConstraintViolation`) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: The email address is already taken. _embedded: details: attribute: email summary: Create User description: >- Creates a new user. Only administrators have permission to do so. When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body. Valid values for `status`: 1) "active" - In this case a password has to be provided in addition to the other attributes. 2) "invited" - In this case nothing but the email address is required. The rest is optional. An invitation will be sent to the user. tags: - Users requestBody: content: application/json: schema: type: object properties: login: type: string email: type: string firstName: type: string lastName: type: string admin: type: boolean language: type: string status: type: string password: type: string '/api/v3/versions/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Version' examples: response: value: _links: self: href: /api/v3/versions/11 definingProject: href: /api/v3/projects/11 availableInProjects: href: /api/v3/versions/11/projects _type: Version id: 11 name: v3.0 Alpha description: format: plain raw: This version has a description html: This version has a description startDate: '2014-11-20' endDate: null status: Open '404': description: >- Returned if the version does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work packages **or** manage versions (any project where the version is available) *Note: A client without sufficient permissions shall not be able to test for the existence of a version. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified version does not exist. summary: View version description: '' tags: - Versions parameters: - name: id in: path description: version id required: true schema: type: integer /api/v3/versions: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Versions' examples: response: value: _links: self: href: /api/v3/versions total: 3 count: 3 _type: Collection _embedded: elements: - _links: self: href: /api/v3/versions/11 definingProject: href: /api/v3/projects/12 availableInProjects: href: /api/v3/versions/11/projects _type: Version id: 11 name: v3.0 Alpha description: format: plain raw: This version has a description html: This version has a description startDate: '2014-11-20' endDate: null status: Open - _links: self: href: /api/v3/versions/12 definingProject: href: /api/v3/projects/11 availableInProjects: href: /api/v3/versions/12/projects _type: Version id: 12 name: v2.0 description: format: plain raw: '' html: '' startDate: null endDate: null status: Closed - _links: self: href: /api/v3/versions/10 definingProject: href: /api/v3/projects/13 availableInProjects: href: /api/v3/versions/13/projects _type: Version id: 10 name: v1.0 description: format: plain raw: '' html: '' startDate: null endDate: null status: Open summary: List versions description: >- Returns a collection of versions. The client can choose to filter the versions similar to how work packages are filtered. In addition to the provided filters, the server will reduce the result set to only contain versions, for which the requesting client has sufficient permissions (*view_work_packages*). tags: - Versions parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + sharing: filters versions by how they are shared within the server (*none*, *descendants*, *hierarchy*, *tree*, *system*). required: false schema: type: string '/api/v3/projects/{project_id}/versions': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Versions' examples: response: value: _links: self: href: /api/v3/projects/11/versions total: 3 count: 3 _type: Collection _embedded: elements: - _links: self: href: /api/v3/versions/11 definingProject: href: /api/v3/projects/11 availableInProjects: href: /api/v3/versions/11/projects _type: Version id: 11 name: v3.0 Alpha description: format: plain raw: This version has a description html: This version has a description startDate: '2014-11-20' endDate: null status: Open - _links: self: href: /api/v3/versions/12 definingProject: href: /api/v3/projects/11 availableInProjects: href: /api/v3/versions/12/projects _type: Version id: 12 name: v2.0 description: format: plain raw: '' html: '' startDate: null endDate: null status: Closed - _links: self: href: /api/v3/versions/10 definingProject: href: /api/v3/projects/11 availableInProjects: href: /api/v3/versions/10/projects _type: Version id: 10 name: v1.0 description: format: plain raw: '' html: '' startDate: null endDate: null status: Open '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work packages **or** manage versions (on given project) *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: List versions available in a project description: >- This endpoint lists the versions that are *available* in a given project. Note that due to sharing this might be more than the versions *defined* by that project. tags: - Versions parameters: - name: project_id in: path description: ID of the project whoose versions will be listed required: true schema: type: integer '/api/v3/work_packages/{id}': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Package' '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: View Work Package description: '' tags: - Work Packages parameters: - name: id in: path description: Work package id required: true schema: type: integer patch: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Package' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** edit work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to edit the content of the work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. '409': description: >- Returned if the resource was changed since the client requested it. This is determined using the `lockVersion` property. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:UpdateConflict' message: >- Your changes could not be saved, because the work package was changed since you've seen it the last time. '422': description: >- Returned if: * the client tries to modify a read-only property (`PropertyIsReadOnly`) * a constraint for a property was violated (`PropertyConstraintViolation`) * the client provides a link to an invalid resource (`ResourceTypeMismatch`) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: The subject might not be blank. _embedded: details: attribute: Subject summary: Edit Work Package description: >- When calling this endpoint the client provides a single object, containing the properties and links that it wants to change, in the body. Note that it is only allowed to provide properties or links supporting the **write** operation. Additionally to the fields the client wants to change, it is mandatory to provide the value of `lockVersion` which was received by the `GET` request this change originates from. The value of `lockVersion` is used to implement [optimistic locking](http://en.wikipedia.org/wiki/Optimistic_concurrency_control). tags: - Work Packages parameters: - name: id in: path description: Work package id required: true schema: type: integer - name: notify in: query description: >- Indicates whether change notifications (e.g. via E-Mail) should be sent. Note that this controls notifications for all users interested in changes to the work package (e.g. watchers, author and assignee), not just the current user. required: false schema: type: boolean default: true requestBody: content: application/json: schema: $ref: '#/components/schemas/Work_Package' delete: responses: '204': description: >- Returned if the work package was deleted successfully. Note that the response body is empty as of now. In future versions of the API a body *might* be returned along with an appropriate HTTP status. headers: {} '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** delete work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to delete this work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Delete Work Package description: |- Deletes the work package, as well as: * all associated time entries * its hierarchy of child work packages tags: - Work Packages parameters: - name: id in: path description: Work package id required: true schema: type: integer '/api/v3/work_packages/schemas/{identifier}': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: Schema _dependencies: [] _links: self: href: /api/v3/example/schema lockVersion: name: Resource Version type: Integer writable: false subject: name: Subject type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed name: Status type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' '404': description: >- Returned if the schema does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work packages (on the project where this schema is used) *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified schema does not exist. summary: View Work Package Schema description: '' tags: - Work Packages parameters: - name: identifier in: path description: Identifier of the schema required: true schema: type: string /api/v3/work_packages/schemas/: get: responses: '200': description: OK headers: {} '400': description: Returned if the client sends invalid request. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: Unknown filter. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** View work packages in any project. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to list schemas. summary: List Work Package Schemas description: List work package schemas. tags: - Work Packages parameters: - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. Currently supported filters are: + id: The schema's id required: true schema: type: string '/api/v3/work_packages/{id}/form': post: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/example/form validate: href: /api/v3/example/form method: POST previewMarkup: href: /api/v3/render/textile method: POST commit: href: /api/v3/example method: PATCH _type: Form _embedded: payload: _links: status: href: /api/v3/statuses/1 _type: Example lockVersion: 5 subject: An example title schema: _type: Schema _links: self: href: /api/v3/example/schema lockVersion: type: Integer writable: false subject: type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' validationErrors: subject: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:BadExampleError' message: >- For the purpose of this example we need a validation error. The remainder of the response pretends there were no errors. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** edit work package *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to edit the specified work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Work Package Edit Form description: '' tags: - Work Packages parameters: - name: id in: path description: ID of the work package being modified required: true schema: type: integer /api/v3/work_packages: get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Packages' examples: response: value: _links: self: href: /api/v3/work_packages total: 2 count: 2 _type: Collection _embedded: elements: - _type: WorkPackage _links: self: href: /api/v3/work_packages/1 id: 1 subject: Skipped other properties for brevity - _type: WorkPackage _links: self: href: /api/v3/work_packages/2 id: 2 subject: Skipped other properties for brevity '400': description: >- Returned if the client sends a query parameter, that the server knows, but does not understand. E.g. by providing a syntactically incorrect `filters` parameter. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: Operator can't be blank. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work packages (globally or in any project) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to see work packages. summary: List Work Packages description: '' tags: - Work Packages parameters: - name: offset in: query description: Page number inside the requested collection. required: false schema: type: integer default: 1 - name: pageSize in: query description: Number of elements to display per page. required: false schema: type: integer - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: groupBy in: query description: The column to group by. required: false schema: type: string - name: showSums in: query description: Indicates whether properties should be summed up if they support it. required: false schema: type: boolean default: false post: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Package' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** add work packages *Note that you will only receive this error, if you are at least allowed to see the corresponding project.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to add work packages to this project. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permissions:** view project *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. '422': description: |- Returned if: * the client tries to write a read-only property * a constraint for a property was violated * a property was provided in an unreadable format headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: The subject might not be blank. _embedded: details: attribute: Subject summary: Create Work Package description: >- When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body. The required fields of a WorkPackage can be found in its schema, which is embedded in the respective form. Note that it is only allowed to provide properties or links supporting the write operation. A project link must be set when creating work packages through this route. tags: - Work Packages parameters: - name: notify in: query description: >- Indicates whether change notifications (e.g. via E-Mail) should be sent. Note that this controls notifications for all users interested in changes to the work package (e.g. watchers, author and assignee), not just the current user. required: false schema: type: boolean default: true requestBody: content: application/json: schema: $ref: '#/components/schemas/Work_Package' description: Work package to add (a project link ist requried) required: true /api/v3/work_packages/form: post: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/example/form validate: href: /api/v3/example/form method: POST previewMarkup: href: /api/v3/render/textile method: POST commit: href: /api/v3/example method: PATCH _type: Form _embedded: payload: _links: status: href: /api/v3/statuses/1 _type: Example lockVersion: 5 subject: An example title schema: _type: Schema _links: self: href: /api/v3/example/schema lockVersion: type: Integer writable: false subject: type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' validationErrors: subject: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:BadExampleError' message: >- For the purpose of this example we need a validation error. The remainder of the response pretends there were no errors. summary: Work Package Create Form description: '' tags: - Work Packages '/api/v3/projects/{id}/work_packages': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Packages' examples: response: value: _links: self: href: /api/v3/projects/14/work_packages total: 2 count: 2 _type: Collection _embedded: elements: - _type: WorkPackage _links: self: href: /api/v3/work_packages/1 id: 1 subject: Skipped other properties for brevity - _type: WorkPackage _links: self: href: /api/v3/work_packages/2 id: 2 subject: Skipped other properties for brevity '400': description: >- Returned if the client sends a query parameter, that the server knows, but does not understand. E.g. by providing a syntactically incorrect `filters` parameter. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: Operator can't be blank. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work packages *Note that you will only receive this error, if you are at least allowed to see the corresponding project.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to see the work packages of this project. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: List Work Packages description: '' tags: - Work Packages parameters: - name: id in: path description: Project id required: true schema: type: integer - name: offset in: query description: Page number inside the requested collection. required: false schema: type: integer default: 1 - name: pageSize in: query description: Number of elements to display per page. required: false schema: type: integer - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: sortBy in: query description: >- JSON specifying sort criteria. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: groupBy in: query description: The column to group by. required: false schema: type: string - name: showSums in: query description: Indicates whether properties should be summed up if they support it. required: false schema: type: boolean default: false post: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Work_Package' '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** add work packages *Note that you will only receive this error, if you are at least allowed to see the corresponding project.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to add work packages to this project. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permissions:** view project *Note: A client without sufficient permissions shall not be able to test for the existence of a project. That's why a 404 is returned here, even if a 403 might be more appropriate.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. '422': description: |- Returned if: * the client tries to write a read-only property * a constraint for a property was violated * a property was provided in an unreadable format headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: The subject might not be blank. _embedded: details: attribute: Subject summary: Create Work Package description: >- When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body. The required fields of a WorkPackage can be found in its schema, which is embedded in the respective form. Note that it is only allowed to provide properties or links supporting the write operation. tags: - Work Packages parameters: - name: id in: path description: Project id required: true schema: type: integer - name: notify in: query description: >- Indicates whether change notifications (e.g. via E-Mail) should be sent. Note that this controls notifications for all users interested in changes to the work package (e.g. watchers, author and assignee), not just the current user. required: false schema: type: boolean default: true requestBody: content: application/json: schema: $ref: '#/components/schemas/Work_Package' description: Work package to add to the project required: true '/api/v3/projects/{id}/work_packages/form': post: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/example/form validate: href: /api/v3/example/form method: POST previewMarkup: href: /api/v3/render/textile method: POST commit: href: /api/v3/example method: PATCH _type: Form _embedded: payload: _links: status: href: /api/v3/statuses/1 _type: Example lockVersion: 5 subject: An example title schema: _type: Schema _links: self: href: /api/v3/example/schema lockVersion: type: Integer writable: false subject: type: String minLength: 1 maxLength: 255 status: _links: allowedValues: - href: /api/v3/statuses/1 title: New - href: /api/v3/statuses/2 title: Closed type: Status _embedded: allowedValues: - _links: self: href: /api/v3/statuses/1 _type: Status id: 1 name: New position: 1 isDefault: true isClosed: false defaultDoneRatio: 0 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' - _links: self: href: /api/v3/statuses/2 _type: Status id: 2 name: Closed position: 2 isDefault: false isClosed: true defaultDoneRatio: 100 createdAt: '2014-05-21T08:51:20Z' updatedAt: '2014-05-21T09:12:00Z' validationErrors: subject: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:BadExampleError' message: >- For the purpose of this example we need a validation error. The remainder of the response pretends there were no errors. summary: Work Package Create Form description: '' tags: - Work Packages parameters: - name: id in: path description: ID of the project in which the work package will be created required: true schema: type: integer '/api/v3/work_packages/{work_package_id}/relations': post: responses: '201': description: Created headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/relations/1 update: href: /api/v3/relations/1/form method: POST updateImmediately: href: /api/v3/relations/1 method: PATCH delete: href: /api/v3/relations/1 method: DELETE from: href: /api/v3/work_packages/42 title: Steel Delivery to: href: /api/v3/work_packages/84 title: Bending the steel _type: Relation id: 1 name: precedes type: precedes reverseType: follows description: We can't bend the steel before it's been delivered! delay: 0 '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: |- Returned if the client does not have sufficient permissions. **Required permission:** manage work package relations headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to create a relation. '409': description: >- Returned if there already exists a relation between the given work packages of **any** type or if the relation is not allowed. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:UpdateConflict' message: >- Couldn't update the resource because of conflicting modifications. '422': description: >- Returned if: * the client tries to write a read-only property (`PropertyIsReadOnly`) * a constraint for a property was violated (`PropertyConstraintViolation`) * the client provides a link to an invalid resource (`ResourceTypeMismatch`) headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: >- urn:openproject-org:api:v3:errors:PropertyConstraintViolation message: Delay must be a number greater than or equal to 0 _embedded: details: attribute: delay summary: Create Relation description: >- When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body. The required fields of a Relation can be found in its schema, which is embedded in the respective form. Note that it is only allowed to provide properties or links supporting the write operation. tags: - Work Packages parameters: - name: work_package_id in: path description: Work package id required: true schema: type: integer get: responses: '302': description: Found headers: {} content: text/plain: examples: response: value: > You are being redirected to /api/v3/relations?involved={work_package_id} summary: List relations description: Lists all relations this work package is involved in. tags: - Work Packages parameters: - name: work_package_id in: path description: Work package id required: true schema: type: integer '/api/v3/work_packages/{id}/relations/form': post: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/relations/form validate: href: /api/v3/relations/form method: POST commit: href: /api/v3/relations method: PATCH _type: Form _embedded: payload: _links: from: href: /api/v3/work_packages/4534 to: href: /api/v3/work_packages/3857 _type: WorkPackage type: follows delay: 3 description: let it rest for 3 days schema: _type: Schema id: name: ID type: Integer writable: false type: name: Type type: String writable: true allowedValues: - relates - duplicates - duplicated - blocks - blocked - precedes - follows - includes - partof - requires - required reverseType: name: Reverse Type type: String writable: false description: name: Description type: String writable: true from: _links: allowedValues: - href: '/api/v3/work_packages/{id}' name: From work package type: WorkPackage writable: true to: _links: allowedValues: href: >- /api/v3/work_packages/{id}/available_relation_candidates title: Available work packages to relate to name: To work package type: WorkPackage writable: true delay: name: Delay type: Integer writable: true validationErrors: from: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:BadExampleError' message: >- For the purpose of this example we need a validation error. The remainder of the response pretends there were no errors. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** manage work package relations *Note that you will only receive this error, if you are at least allowed to see the involved work packages.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to edit the specified relation. '404': description: >- Returned if the relation does not exist or the client does not have sufficient permissions to see it. **Required permission:** view (involved) work package(s), manage work package relations headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified relation does not exist. summary: Relation create form description: '' tags: - Work Packages parameters: - name: id in: path description: ID of the relation being modified required: true schema: type: integer '/api/v3/work_packages/{work_package_id}/watchers': get: responses: '200': description: OK headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work package watchers *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to see the watchers of this work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package *Note that you will effectively not be able to see the watchers of a work package without being able to see the work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: List watchers description: '' tags: - Work Packages parameters: - name: work_package_id in: path description: Work package id required: true schema: type: integer post: responses: '200': description: OK headers: {} '201': description: Created headers: {} '400': description: >- Occurs when the client did not send a valid JSON object in the request body. For example: * The request did not contain a single JSON object * The JSON object did not contain the key `user` * The value of `users` was not a link object headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. **Required permissions:** * view work package (for self) * add work package watchers (for other users) *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to add watchers to this work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package *Note that you will effectively not be able to change the watchers of a work package without being able to see the work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. '422': description: >- Returned if: * the client tries to specify a link to a resource that is not a user (`ResourceTypeMismatch`) * the user specified is not allowed to watch that work package (`PropertyConstraintViolation`) * the user specified does not exist (`PropertyConstraintViolation`) headers: {} summary: Add watcher description: >- Adds a watcher to the specified work package. The request is expected to contain a single JSON object, that contains a link object under the `user` key. The response will be user added as watcher. In case the user was already watching the work package an `HTTP 200` is returned, an `HTTP 201` if the user was added as a new watcher. tags: - Work Packages parameters: - name: work_package_id in: path description: Work package id required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: user: type: object properties: href: type: string '/api/v3/work_packages/{work_package_id}/watchers/{id}': delete: responses: '204': description: No Content headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** delete work package watchers *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to remove watchers from this work package. '404': description: >- Returned in one of the following cases: Either the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package Or the specified user does not exist at all. *Note that you will effectively not be able to change the watchers of a work package without being able to see the work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Remove watcher description: >- Removes the specified user from the list of watchers for the given work package. If the request succeeds, the specified user is not watching the work package anymore. *Note: This might also be the case, if the specified user did not watch the work package prior to the request.* tags: - Work Packages parameters: - name: work_package_id in: path description: Work package id required: true schema: type: integer - name: id in: path description: User id required: true schema: type: integer '/api/v3/work_packages/{id}/available_relation_candidates': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _links: self: href: /api/v3/projects/14/work_packages total: 2 count: 2 _type: Collection _embedded: elements: - _type: WorkPackage _links: self: href: /api/v3/work_packages/1 id: 1 subject: Skipped other properties for brevity - _type: WorkPackage _links: self: href: /api/v3/work_packages/2 id: 2 subject: Skipped other properties for brevity summary: Available relation candidates description: '' tags: - Work Packages parameters: - name: id in: path description: ID of workpackage to return required: true schema: type: integer format: int64 - name: pageSize in: query description: Maximum number of candidates to list (default 10) required: false schema: type: integer - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the [queries](#queries) endpoint. required: false schema: type: string - name: query in: query description: Shortcut for filtering by ID or subject required: false schema: type: string - name: type in: query description: Type of relation to find candidates for (default "relates") required: false schema: type: string '/api/v3/work_packages/{id}/available_watchers': get: responses: '200': description: OK headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** add work package watchers *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Available watchers description: >- Gets a list of users that are able to be watchers of the specified work package. tags: - Work Packages parameters: - name: id in: path description: work package id required: true schema: type: integer '/api/v3/work_packages/{id}/available_projects': get: responses: '200': description: OK headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** edit work package *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to access this resource. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Available projects description: >- Gets a list of projects that are available as projects to which the work package can be moved. tags: - Work Packages parameters: - name: id in: path description: work package id required: true schema: type: integer '/api/v3/work_packages/{id}/revisions': get: responses: '200': description: OK headers: {} '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work packages for the project the work package is contained in. *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to see linked revisions for this work package. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work project does not exist. summary: Revisions description: >- Gets a list of revisions that are linked to this work package, e.g., because it is referenced in the commit message of the revision. Only linked revisions from repositories are shown if the user has the view changesets permission in the defining project. tags: - Work Packages parameters: - name: id in: path description: work package id required: true schema: type: integer '/api/v3/work_packages/{id}/activities': get: responses: '200': description: OK headers: {} content: application/hal+json: examples: response: value: _type: 'Activity::Comment' _links: self: href: /api/v3/activity/1 title: Priority changed from High to Low workPackage: href: /api/v3/work_packages/1 title: >- quis numquam qui voluptatum quia praesentium blanditiis nisi user: href: /api/v3/users/1 title: John Sheppard - admin id: 1 details: - format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
comment: format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
createdAt: '2014-05-21T08:51:20Z' version: 31 '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: List work package activities description: '' tags: - Work Packages parameters: - name: id in: path description: Work package id required: true schema: type: integer post: responses: '201': description: Created headers: {} content: application/hal+json: examples: response: value: _type: 'Activity::Comment' _links: self: href: /api/v3/activity/1 title: Priority changed from High to Low workPackage: href: /api/v3/work_packages/1 title: >- quis numquam qui voluptatum quia praesentium blanditiis nisi user: href: /api/v3/users/1 title: John Sheppard - admin id: 1 details: - format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
comment: format: textile raw: Lorem ipsum dolor sit amet. html:Lorem ipsum dolor sit amet.
createdAt: '2014-05-21T08:51:20Z' version: 31 '400': description: >- Occurs when the client did not send a valid JSON object in the request body. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidRequestBody' message: The request body was not a single JSON object. '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** create journals *Note that you will only receive this error, if you are at least allowed to see the corresponding work package.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not allowed to create a comment here. '404': description: >- Returned if the work package does not exist or the client does not have sufficient permissions to see it. **Required permission:** view work package headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified work package does not exist. summary: Comment work package description: >- Creates an activity for the selected work package and, on success, returns the updated activity. tags: - Work Packages parameters: - name: id in: path description: Work package id required: true schema: type: integer - name: notify in: query description: >- Indicates whether change notifications (e.g. via E-Mail) should be sent. Note that this controls notifications for all users interested in changes to the work package (e.g. watchers, author and assignee), not just the current user. required: false schema: type: boolean default: true requestBody: $ref: '#/components/requestBodies/Body' '/api/v3/projects/{project_id}/available_assignees': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Users' '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work packages *Note that you will only receive this error, if you are at least allowed to see the corresponding project.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to see the assignable users for this project. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: Available assignees description: >- Gets a list of users that can be assigned to work packages in the given project. tags: - Work Packages parameters: - name: project_id in: path description: Project id required: true schema: type: integer '/api/v3/projects/{project_id}/available_responsibles': get: responses: '200': description: OK headers: {} content: application/hal+json: schema: $ref: '#/components/schemas/Users' '403': description: >- Returned if the client does not have sufficient permissions. **Required permission:** view work packages *Note that you will only receive this error, if you are at least allowed to see the corresponding project.* headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: >- You are not allowed to see the users available as responsible for this project. '404': description: >- Returned if the project does not exist or the client does not have sufficient permissions to see it. **Required permission:** view project headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' message: The specified project does not exist. summary: Available responsibles description: >- Gets a list of users that can be assigned as the responsible of a work package in the given project. tags: - Work Packages parameters: - name: project_id in: path description: Project id required: true schema: type: integer '/api/v3/budgets/{id}': get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/Budget' tags: - Budgets parameters: - name: id in: path description: Budget id required: true schema: type: integer '/api/v3/news/{id}': get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/News' '404': description: >- Returned if the news does not exist or if the user does not have permission to view it. headers: {} content: application/hal+json: examples: response: value: _type: Error message: The requested resource could not be found. errorIdentifier: 'urn:openproject-org:api:v3:errors:NotFound' summary: view news tags: - News parameters: - name: id in: path description: news id required: true schema: type: integer /api/v3/news: get: responses: '200': description: OK headers: {} content: application/json: schema: $ref: '#/components/schemas/NewsList' '400': description: Returned if the client sends invalid request parameters e.g. filters headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:InvalidQuery' message: Filters Invalid filter does not exist. '403': description: Returned if the client is not logged in and login is required. headers: {} content: application/hal+json: examples: response: value: _type: Error errorIdentifier: 'urn:openproject-org:api:v3:errors:MissingPermission' message: You are not authorized to view this resource. summary: list news description: >- Lists news. The news returned depend on the provided parameters and also on the requesting user’s permissions. tags: - News parameters: - name: offset in: query description: Page number inside the requested collection. schema: type: integer - name: pageSize in: query description: Number of elements to display per page. schema: type: integer - name: sortBy in: query description: >- JSON specifying sort criteria. Accepts the same format as returned by the queries endpoint. schema: type: string - name: filters in: query description: >- JSON specifying filter conditions. Accepts the same format as returned by the queries endpoint. schema: type: string components: requestBodies: Body: content: application/json: schema: $ref: "#/components/schemas/Comment" securitySchemes: basicAuth: type: http scheme: basic oAuth: type: oauth2 flows: authorizationCode: authorizationUrl: /oauth/authorize tokenUrl: /oauth/token scopes: {} schemas: Comment: type: object properties: comment: $ref: "#/components/schemas/Description" Activity: type: object properties: id: type: integer format: int32 readOnly: true version: type: integer format: int32 readOnly: true comment: $ref: '#/components/schemas/Description' details: type: array readOnly: true items: $ref: '#/components/schemas/Description' createdAt: type: string format: date-time _links: $ref: '#/components/schemas/ActivityLinks' ActivityLinks: type: object properties: self: $ref: '#/components/schemas/Link' workPackage: $ref: '#/components/schemas/Link' user: $ref: '#/components/schemas/Link' Attachment: type: object properties: id: type: integer format: int32 readOnly: true title: type: string readOnly: true fileName: type: string readOnly: true fileSize: type: integer format: int32 readOnly: true description: $ref: "#/components/schemas/Description" contentType: type: string digest: $ref: "#/components/schemas/Digest" createdAt: type: string format: date-time Digest: type: object properties: algorithm: type: string hash: type: string Categories: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/Categories_embedded' Categories_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/Category' Category: type: object properties: id: type: integer format: int32 readOnly: true name: type: string readOnly: true _links: $ref: '#/components/schemas/CategoryLinks' CategoryLinks: type: object properties: self: $ref: '#/components/schemas/Link' project: $ref: '#/components/schemas/Link' defaultAssignee: $ref: '#/components/schemas/Link' Configuration: type: object properties: maximumAttachmentFileSize: type: integer readOnly: true perPageOptions: type: array readOnly: true items: type: integer Priorities: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/Priorities_embedded' _links: $ref: '#/components/schemas/PrioritiesLinks' PrioritiesLinks: type: object properties: self: $ref: '#/components/schemas/Link' Priorities_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/Priority' Priority: type: object properties: id: type: integer format: int32 readOnly: true name: type: string readOnly: true position: type: integer format: int32 readOnly: true isDefault: type: boolean readOnly: true isActive: type: boolean readOnly: true _links: $ref: '#/components/schemas/PriorityLinks' PriorityLinks: type: object properties: self: $ref: '#/components/schemas/Link' Project: type: object properties: id: type: integer format: int32 name: type: string identifier: type: string active: type: boolean status: type: string enum: - on track - at risk - off track statusExplanation: $ref: '#/components/schemas/Description' public: type: boolean description: $ref: '#/components/schemas/Description' createdAt: type: string format: date-time updatedAt: type: string format: date-time _links: $ref: '#/components/schemas/ProjectLinks' xml: name: Project ProjectLinks: type: object properties: self: $ref: '#/components/schemas/Link' createWorkPackage: $ref: '#/components/schemas/Link' createWorkPackageImmediate: $ref: '#/components/schemas/Link' categories: $ref: '#/components/schemas/Link' types: $ref: '#/components/schemas/Link' versions: $ref: '#/components/schemas/Link' workPackages: $ref: '#/components/schemas/Link' memberships: $ref: '#/components/schemas/Link' delete: $ref: '#/components/schemas/Link' schema: $ref: '#/components/schemas/Link' parent: $ref: '#/components/schemas/Link' Projects: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/Projects_embedded' _links: $ref: '#/components/schemas/ProjectsLinks' xml: name: Project ProjectsLinks: type: object properties: self: $ref: '#/components/schemas/Link' Projects_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/Project' xml: name: Projects Root: type: object properties: instanceName: type: string readOnly: true coreVersion: type: string readOnly: true _links: $ref: '#/components/schemas/RootLinks' RootLinks: type: object properties: configuration: $ref: '#/components/schemas/Link' user: $ref: '#/components/schemas/Link' userPreferences: $ref: '#/components/schemas/Link' priorities: $ref: '#/components/schemas/Link' relations: $ref: '#/components/schemas/Link' statuses: $ref: '#/components/schemas/Link' types: $ref: '#/components/schemas/Link' workPackages: $ref: '#/components/schemas/Link' users: $ref: '#/components/schemas/Link' Statuses: type: object properties: total: type: integer count: type: integer _embedded: $ref: '#/components/schemas/StatusesEmbedded' _links: $ref: '#/components/schemas/StatusesLinks' StatusesEmbedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/Status' StatusesLinks: type: object properties: self: $ref: '#/components/schemas/Link' Status: type: object properties: id: type: integer format: int32 readOnly: true name: type: string readOnly: true position: type: integer readOnly: true isDefault: type: boolean readOnly: true isClosed: type: boolean readOnly: true isReadonly: type: boolean readOnly: true defaultDoneRatio: type: integer readOnly: true _links: $ref: '#/components/schemas/StatusLinks' StatusLinks: type: object properties: self: $ref: '#/components/schemas/Link' Time_entry_embedded: type: object properties: project: $ref: '#/components/schemas/Project' workPackage: $ref: '#/components/schemas/Work_Package' user: $ref: '#/components/schemas/User' activity: $ref: '#/components/schemas/Activity' xml: name: _embedded Time_entries_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/Time_entry' xml: name: time_entry Link: type: object properties: href: type: string title: type: string method: type: string enum: - patch - post - get type: type: string WPType: type: object properties: id: type: integer format: int32 name: type: string color: type: string position: type: integer format: int32 isDefault: type: boolean default: false isMilestone: type: boolean default: false createdAt: type: string format: date-time updatedAt: type: string format: date-time _links: $ref: '#/components/schemas/WPType_Links' xml: name: Type WPTypes: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/WPTypes_embedded' _links: $ref: '#/components/schemas/WPType_Links' xml: name: Type WPTypes_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/WPType' xml: name: Type UserPreferences: type: object properties: hideMail: type: boolean timeZone: type: string commentSortDescending: type: boolean warnOnLeavingUnsaved: type: boolean accessibilityMode: type: boolean _links: $ref: '#/components/schemas/UserPreferencesLinks' UserPreferencesLinks: type: object properties: self: $ref: '#/components/schemas/Link' user: $ref: '#/components/schemas/Link' User: type: object properties: id: type: integer format: int32 readOnly: true login: type: string maxLength: 256 uniqueItems: true firstName: type: string maxLength: 30 lastName: type: string maxLength: 30 name: type: string readOnly: true email: type: string maxLength: 60 admin: type: boolean avatar: type: string readOnly: true createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true status: type: string enum: - active - registered - locked - invited readOnly: true language: type: string password: type: string identity_url: type: string _links: $ref: '#/components/schemas/UserLinks' xml: name: User UserLinks: type: object properties: self: $ref: '#/components/schemas/Link' show: $ref: '#/components/schemas/Link' lock: $ref: '#/components/schemas/Link' updateImmediately: $ref: '#/components/schemas/Link' delete: $ref: '#/components/schemas/Link' Users: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/Users_embedded' Version: type: object properties: id: type: integer format: int32 name: type: string description: $ref: '#/components/schemas/Description' startDate: type: string format: date endDate: type: string format: date status: type: string enum: - open createdAt: type: string format: date-time updatedAt: type: string format: date-time _links: $ref: '#/components/schemas/Version_Links' Versions: type: object properties: total: type: integer format: int32 count: type: integer format: int32 _embedded: $ref: '#/components/schemas/Versions_embedded' xml: name: Type Description: type: object description: Formattable properties: format: type: string enum: - plain - markdown - custom readOnly: true raw: type: string html: type: string readOnly: true Budget: type: object properties: id: type: integer format: int32 subject: type: string _links: $ref: '#/components/schemas/BudgetLinks' BudgetLinks: type: object properties: self: $ref: '#/components/schemas/Link' attachments: $ref: '#/components/schemas/Link' addAttachment: $ref: '#/components/schemas/Link' staticPath: $ref: '#/components/schemas/Link' NewsList: type: object properties: total: type: integer count: type: integer pageSize: type: integer offset: type: integer _embedded: $ref: '#/components/schemas/NewsList_embedded' _links: $ref: '#/components/schemas/NewsList_links' NewsList_embedded: type: object properties: elements: type: array items: $ref: '#/components/schemas/News' NewsList_links: type: object properties: self: $ref: '#/components/schemas/Link' jumpTo: $ref: '#/components/schemas/Link' changeSize: $ref: '#/components/schemas/Link' nextByOffset: $ref: '#/components/schemas/Link' News: type: object properties: id: type: integer format: int32 title: type: string maxLength: 60 summary: type: string maxLength: 255 description: $ref: '#/components/schemas/Description' createdAt: type: string format: date-time updatedAt: type: string format: date-time _links: $ref: '#/components/schemas/NewsLinks' _embedded: $ref: '#/components/schemas/News_embedded' NewsLinks: type: object properties: self: $ref: '#/components/schemas/Link' project: $ref: '#/components/schemas/Link' author: $ref: '#/components/schemas/Link' News_embedded: type: object properties: project: $ref: '#/components/schemas/Project' author: $ref: '#/components/schemas/User' Filters: type: array items: type: object additionalProperties: type: object properties: filterName: type: string filter: $ref: "#/components/schemas/Filter" Filter: type: object properties: operator: type: string #enum: # - = # - '!' # - '>=' # - <= # - t- # - t+ # -