OpenProject News API

News are articles written by users in order to inform other users of important information. ## Actions | Link | Description | Condition | |:-------------------:|--------------------------------------------------------------------------| ---------------------------------------| | delete | Delete the new | **Permission**: manage news | | updateImmediately | Directly perform edits on the news | **Permission**: manage news | ## Linked Properties | Link | Description | Type | Constraints | Supported operations | Condition | | :-----------: | -------------------------------------| ------------- | --------------------- | -------------------- | ----------------------------------------- | | self | This news | News | not null | READ | | | project | The project the news is situated in | Project | not null | READ / WRITE | | | author | The user having created the news | User | not null | READ | | ## Local Properties | Property | Description | Type | Constraints | Supported operations | Condition | | :----------: | --------------------------------------------------------- | -------- | ---------------------------------------------------- | -------------------- | ----------------------------------------------------------- | | id | News' id | Integer | x > 0 | READ | | | title | The headline of the news | String | max 60 characters | READ | | | summary | A short summary | String | max 255 characters | READ | | | description | The main body of the news with all the details | String | | READ | | | createdAt | The time the news was created at | DateTime | | READ | |

Operations 5

GET /api/v3/news List News #
POST /api/v3/news Create News #
GET /api/v3/news/{id} View news #
PATCH /api/v3/news/{id} Update news #
DELETE /api/v3/news/{id} Delete news #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/openproject-news-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

openproject-news-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: You're looking at the current **stable** documentation of the OpenProject APIv3.
  title: OpenProject API V3 (Stable) News API
  version: '3'
servers:
- url: https://qa.openproject-edge.com
  description: Edge QA instance
- url: https://qa.openproject-stage.com
  description: Staging instance
- url: https://community.openproject.org
  description: Community instance
security:
- BasicAuth: []
tags:
- description: News are articles written by users in order to inform other users of important information.
  name: News
paths:
  /api/v3/news:
    get:
      parameters:
      - description: Page number inside the requested collection.
        example: 25
        in: query
        name: offset
        required: false
        schema:
          default: 1
          type: integer
      - description: Number of elements to display per page.
        example: 25
        in: query
        name: pageSize
        required: false
        schema:
          type: integer
      - description: 'JSON specifying sort criteria.

          Accepts the same format as returned by the [queries](https://www.openproject.org/docs/api/endpoints/queries/) endpoint. Currently supported sorts are:


          + id: Sort by primary key


          + created_at: Sort by news creation datetime'
        example: '[["created_at", "asc"]]'
        in: query
        name: sortBy
        required: false
        schema:
          type: string
      - description: 'JSON specifying filter conditions.

          Accepts the same format as returned by the [queries](https://www.openproject.org/docs/api/endpoints/queries/) endpoint. Currently supported filters are:


          + project_id: Filter news by project'
        example: '[{ "project_id": { "operator": "=", "values": ["1", "2"] } }]'
        in: query
        name: filters
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/hal+json:
              examples:
                response:
                  value:
                    _embedded:
                      elements:
                      - _links:
                          author:
                            href: /api/v3/users/2
                            title: Peggie Feeney
                          project:
                            href: /api/v3/projects/1
                            title: Seeded Project
                          self:
                            href: /api/v3/news/1
                            title: asperiores possimus nam doloribus ab
                        _type: News
                        createdAt: '2015-03-20T12:57:01.209Z'
                        description:
                          format: markdown
                          html: <p>Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.</p>
                          raw: Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.
                        id: 1
                        summary: Celebrer spiculum colo viscus claustrum atque. Id nulla culpa sumptus. Comparo crapula depopulo demonstro.
                        title: asperiores possimus nam doloribus ab
                      - _links:
                          author:
                            href: /api/v3/users/2
                            title: Peggie Feeney
                          project:
                            href: /api/v3/projects/1
                            title: Seeded Project
                          self:
                            href: /api/v3/news/2
                            title: terminatio tutamen. Officia adeptio sp
                        _type: News
                        createdAt: '2015-03-20T12:57:01.262Z'
                        description:
                          format: markdown
                          html: <p>Amicitia alius cattus voluntarius. Virgo viduo terminatio tutamen. Officia adeptio spectaculum atavus nisi cum concido bis. Harum caecus auxilium sol theatrum eaque consequatur. Omnis aeger suus adipisci cicuta. Cur delicate alias curto cursim atqui talio fugiat.</p>
                          raw: Amicitia alius cattus voluntarius. Virgo viduo terminatio tutamen. Officia adeptio spectaculum atavus nisi cum concido bis. Harum caecus auxilium sol theatrum eaque consequatur. Omnis aeger suus adipisci cicuta. Cur delicate alias curto cursim atqui talio fugiat.
                        id: 2
                        summary: Consequatur sequi surculus creo tui aequitas.
                        title: terminatio tutamen. Officia adeptio sp
                    _links:
                      changeSize:
                        href: /api/v3/news?offset=1&pageSize=%7Bsize%7D
                        templated: true
                      jumpTo:
                        href: /api/v3/news?offset=%7Boffset%7D&pageSize=2
                        templated: true
                      nextByOffset:
                        href: /api/v3/news?offset=2&pageSize=2
                      self:
                        href: /api/v3/news?offset=1&pageSize=2
                    _type: Collection
                    count: 2
                    offset: 1
                    pageSize: 2
                    total: 78
              schema:
                $ref: '#/components/schemas/List_of_NewsModel'
          description: OK
          headers: {}
        '400':
          $ref: '#/components/responses/InvalidRequestBody'
        '403':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    _type: Error
                    errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission
                    message: You are not authorized to view this resource.
          description: Returned if the client is not logged in and login is required.
          headers: {}
      tags:
      - News
      description: Lists news. The news returned depend on the provided parameters and also on the requesting user's permissions.
      operationId: List_News
      summary: List News
    post:
      summary: Create News
      operationId: create_news
      tags:
      - News
      description: 'Creates a news entry. Only administrators and users with "Manage news" permission in the given project are eligible.

        When calling this endpoint the client provides a single object, containing at least the properties and links that are required, in the body.'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewsCreateModel'
      responses:
        '201':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NewsModel'
          description: Created
        '400':
          $ref: '#/components/responses/InvalidRequestBody'
        '403':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission
                message: You are not allowed to create new news.
          description: 'Returned if the client does not have sufficient permissions.


            **Required permission:** Administrator, Manage news permission in the project'
        '406':
          $ref: '#/components/responses/MissingContentType'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _embedded:
                  details:
                    attribute: title
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:PropertyConstraintViolation
                message: Title can't be blank.
          description: 'Returned if:


            * the client tries to modify a read-only property (`PropertyIsReadOnly`)


            * a constraint for a property was violated (`PropertyConstraintViolation`)'
  /api/v3/news/{id}:
    get:
      parameters:
      - description: news id
        example: 1
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          content:
            application/hal+json:
              examples:
                response:
                  value:
                    _embedded:
                      author:
                        _type: User...
                      project:
                        _type: Project...
                    _links:
                      author:
                        href: /api/v3/users/2
                        title: Peggie Feeney
                      project:
                        href: /api/v3/projects/1
                        title: A project
                      self:
                        href: /api/v3/news/1
                        title: asperiores possimus nam doloribus ab
                    _type: News
                    createdAt: '2015-03-20T12:57:01.601Z'
                    description:
                      format: markdown
                      html: <p>Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.</p>
                      raw: Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.
                    id: 1
                    summary: Celebrer spiculum colo viscus claustrum atque. Id nulla culpa sumptus. Comparo crapula depopulo demonstro.
                    title: asperiores possimus nam doloribus ab
              schema:
                $ref: '#/components/schemas/NewsModel'
          description: OK
          headers: {}
        '404':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    _type: Error
                    errorIdentifier: urn:openproject-org:api:v3:errors:NotFound
                    message: The requested resource could not be found.
          description: 'Returned if the news does not exist or if the user does not have permission to view it.


            **Required permission** being member of the project the news belongs to'
          headers: {}
      tags:
      - News
      description: ''
      operationId: View_news
      summary: View news
    patch:
      summary: Update news
      operationId: update_news
      tags:
      - News
      description: 'Updates the news''s writable attributes.

        When calling this endpoint the client provides a single object, containing the properties and links to be updated, in the body.'
      parameters:
      - description: News id
        example: 1
        in: path
        name: id
        required: true
        schema:
          type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewsCreateModel'
      responses:
        '200':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/NewsModel'
          description: OK
        '400':
          $ref: '#/components/responses/InvalidRequestBody'
        '403':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission
                message: You are not allowed to update this news.
          description: 'Returned if the client does not have sufficient permissions.


            **Required permission:** Administrators, Manage news permission'
        '404':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:NotFound
                message: The specified news does not exist or you do not have permission to view it.
          description: 'Returned if the news entry does not exist or if the API user does not have the necessary permissions to update it.


            **Required permission:** Administrators, Manage news permission'
        '406':
          $ref: '#/components/responses/MissingContentType'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _embedded:
                  details:
                    attribute: title
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:PropertyConstraintViolation
                message: Title can't be blank.
          description: 'Returned if:


            * the client tries to modify a read-only property (`PropertyIsReadOnly`)


            * a constraint for a property was violated (`PropertyConstraintViolation`)'
    delete:
      summary: Delete news
      operationId: delete_news
      description: Permanently deletes the specified news entry.
      tags:
      - News
      parameters:
      - description: News id
        example: 1
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '202':
          description: 'Returned if the news 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.'
        '403':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission
                message: You are not allowed to delete this news entry
          description: 'Returned if the client does not have sufficient permissions.


            **Required permission:** Administrators and Manage news permission'
        '404':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:NotFound
                message: The specified news does not exist.
          description: Returned if the news does not exist.
components:
  schemas:
    Link:
      type: object
      required:
      - href
      properties:
        href:
          type:
          - string
          - 'null'
          description: URL to the referenced resource (might be relative)
        title:
          type: string
          description: Representative label for the resource
        templated:
          type: boolean
          default: false
          description: If true the href contains parts that need to be replaced by the client
        method:
          type: string
          default: GET
          description: The HTTP verb to use when requesting the resource
        payload:
          type: object
          description: The payload to send in the request to achieve the desired result
        identifier:
          type: string
          description: An optional unique identifier to the link object
        type:
          type: string
          description: The MIME-Type of the returned resource.
      example:
        href: /api/v3/work_packages
        method: POST
    Formattable:
      type: object
      required:
      - format
      properties:
        format:
          type: string
          enum:
          - plain
          - markdown
          - custom
          readOnly: true
          description: Indicates the formatting language of the raw text
          example: markdown
        raw:
          type: string
          description: The raw text, as entered by the user
          example: I **am** formatted!
        html:
          type: string
          readOnly: true
          description: The text converted to HTML according to the format
          example: I <strong>am</strong> formatted!
      example:
        format: markdown
        raw: I am formatted!
        html: I am formatted!
    NewsCreateModel:
      type: object
      properties:
        title:
          type: string
          description: The headline of the news
          readOnly: true
        summary:
          type: string
          description: A short summary
          readOnly: true
        description:
          allOf:
          - $ref: '#/components/schemas/Formattable'
          - description: The main body of the news with all the details
        _links:
          type: object
          required:
          - project
          properties:
            project:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'The project the news is situated in


                  **Resource**: Project'
      example:
        title: asperiores possimus nam doloribus ab
        summary: Celebrer spiculum colo viscus claustrum atque. Id nulla culpa sumptus. Comparo crapula depopulo demonstro.
        description:
          format: markdown
          raw: '**Videlicet deserunt aequitas cognatus**. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.'
        _links:
          project:
            href: /api/v3/projects/1
    ErrorResponse:
      type: object
      required:
      - _type
      - errorIdentifier
      - message
      properties:
        _embedded:
          type: object
          properties:
            details:
              type: object
              properties:
                attribute:
                  type: string
                  example: project
        _type:
          type: string
          enum:
          - Error
        errorIdentifier:
          type: string
          example: urn:openproject-org:api:v3:errors:PropertyConstraintViolation
        message:
          type: string
          example: Project can't be blank.
    NewsModel:
      type: object
      properties:
        id:
          type: integer
          description: News' id
          readOnly: true
          exclusiveMinimum: 0
        title:
          type: string
          description: The headline of the news
          readOnly: true
        summary:
          type: string
          description: A short summary
          readOnly: true
        description:
          allOf:
          - $ref: '#/components/schemas/Formattable'
          - description: The main body of the news with all the details
            readOnly: true
        createdAt:
          type: string
          format: date-time
          description: The time the news was created at
          readOnly: true
        _links:
          type: object
          required:
          - self
          - project
          - author
          properties:
            self:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'This news


                  **Resource**: News'
                readOnly: true
            project:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'The workspace the news is situated in


                  **Resource**: workspace'
            author:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'The user having created the news


                  **Resource**: User'
                readOnly: true
            updateImmediately:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'Directly perform edits on the news


                  **Permission** manage news'
            delete:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'Delete the news


                  **Permission** manage news'
      example:
        _type: News
        id: 1
        title: asperiores possimus nam doloribus ab
        summary: Celebrer spiculum colo viscus claustrum atque. Id nulla culpa sumptus. Comparo crapula depopulo demonstro.
        description:
          format: markdown
          raw: Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.
          html: <p>Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.</p>
        createdAt: '2015-03-20T12:57:01.908Z'
        _links:
          self:
            href: /api/v3/news/1
            title: asperiores possimus nam doloribus ab
          project:
            href: /api/v3/projects/1
            title: A project
          author:
            href: /api/v3/users/2
            title: Peggie Feeney
          updateImmediately:
            href: api/v3/news/1
            method: patch
          delete:
            href: api/v3/news/1
            method: delete
        _embedded:
          project:
            _type: Workspace...
          author:
            _type: User...
    List_of_NewsModel:
      type: object
      example:
        _type: Collection
        total: 78
        count: 2
        pageSize: 2
        offset: 1
        _embedded:
          elements:
          - _type: News
            id: 1
            title: asperiores possimus nam doloribus ab
            summary: Celebrer spiculum colo viscus claustrum atque. Id nulla culpa sumptus. Comparo crapula depopulo demonstro.
            description:
              format: markdown
              raw: Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.
              html: <p>Videlicet deserunt aequitas cognatus. Concedo quia est quia pariatur vorago vallum. Calco autem atavus accusamus conscendo cornu ulterius. Tam patria ago consectetur ventito sustineo nihil caecus. Supra officiis eos velociter somniculosus tonsor qui. Suffragium aduro arguo angustus cogito quia tolero vulnus. Supplanto sortitus cresco apud vestrum qui.</p>
            createdAt: '2015-03-20T12:57:01.509Z'
            _links:
              self:
                href: /api/v3/news/1
                title: asperiores possimus nam doloribus ab
              project:
                href: /api/v3/projects/1
                title: Seeded Project
              author:
                href: /api/v3/users/2
                title: Peggie Feeney
              updateImmediately:
                href: api/v3/news/1
                method: patch
              delete:
                href: api/v3/news/1
                method: delete
          - _type: News
            id: 2
            title: terminatio tutamen. Officia adeptio sp
            summary: Consequatur sequi surculus creo tui aequitas.
            description:
              format: markdown
              raw: Amicitia alius cattus voluntarius. Virgo viduo terminatio tutamen. Officia adeptio spectaculum atavus nisi cum concido bis. Harum caecus auxilium sol theatrum eaque consequatur. Omnis aeger suus adipisci cicuta. Cur delicate alias curto cursim atqui talio fugiat.
              html: <p>Amicitia alius cattus voluntarius. Virgo viduo terminatio tutamen. Officia adeptio spectaculum atavus nisi cum concido bis. Harum caecus auxilium sol theatrum eaque consequatur. Omnis aeger suus adipisci cicuta. Cur delicate alias curto cursim atqui talio fugiat.</p>
            createdAt: '2015-03-20T12:57:01.509Z'
            _links:
              self:
                href: /api/v3/news/2
                title: terminatio tutamen. Officia adeptio sp
              project:
                href: /api/v3/projects/1
                title: Seeded Project
              author:
                href: /api/v3/users/2
                title: Peggie Feeney
              updateImmediately:
                href: api/v3/news/2
                method: patch
              delete:
                href: api/v3/news/2
                method: delete
        _links:
          self:
            href: /api/v3/news?offset=1&pageSize=2
          jumpTo:
            href: /api/v3/news?offset=%7Boffset%7D&pageSize=2
            templated: true
          changeSize:
            href: /api/v3/news?offset=1&pageSize=%7Bsize%7D
            templated: true
          nextByOffset:
            href: /api/v3/news?offset=2&pageSize=2
  responses:
    MissingContentType:
      description: Occurs when the client did not send a Content-Type header
      content:
        text/plain:
          schema:
            type: string
          example: Missing content-type header
    InvalidRequestBody:
      description: Occurs when the client did not send a valid JSON object in the request body.
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            _type: Error
            errorIdentifier: urn:openproject-org:api:v3:errors:InvalidRequestBody
            message: The request body was not a single JSON object.
    UnsupportedMediaType:
      description: Occurs when the client sends an unsupported Content-Type header.
      content:
        application/hal+json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            _type: Error
            errorIdentifier: urn:openproject-org:api:v3:errors:TypeNotSupported
            message: Expected CONTENT-TYPE to be (expected value) but got (actual value).
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic