OpenProject Views API

A View is a representation of some information. That information might be a query (currently it always is). The view will store the configuration on how to display the information but not the information itself. A View might then be a graph, a table, a gantt chart or something completely different. The client will have to choose how to represenent in the view. A View instance will always be of a subtype of `Views`, e.g. `Views::WorkPackageslist`. The properties between each `Views` type might differ a lot. **The View is a new concept so it is prone to change.** Currently a lot of restrictions still apply: * There will always be a query associated to the view when in the complete concept, this limitation should not be necessary. * A query can only have one view associated. * There is neither an update nor a delete endpoint and the schema and form endpoints are also missing. To delete a view, simply delete the query. * Most of the properties are deduced from the associated query and can thus only be updated via updating the query. * The properties are not different between `Views` subtypes. ## Linked Properties | Link | Description | Type | Constraints | Supported operations | | :-------------------: | ---------------------------------------- | ------------- | -------- | -------------------- | | self | This view | View (a subtype of it) | not null | READ | | query | This query from which to fetch the data | Query | not null | READ/WRITE | | project | This project the view is defined in (deduces from the query). If no project is specified, the View is considered global. | Project | Deduced from the query | READ | ## Local Properties | Property | Description | Type | Constraints | Supported operations| | :--------------: | ------------------------------------------------------| ----------- | ------------------------------------ | --------------------| | _type | The subtype chosen | String | | READ | | id | View id | Integer | x > 0 | READ | | name | View name | String | Deduced from the query | READ | | public | Can users besides the owner see the view? | Boolean | Deduced from the query | READ | | starred | Should the view be highlighted to the user? | Boolean | Deduced from the query | READ | | createdAt | Time of creation | DateTime | not null | READ | | updatedAt | Time of the most recent change to the view | DateTime | not null | READ |

Operations 3

GET /api/v3/views List views #
GET /api/v3/views/{id} View view #
POST /api/v3/views/{id} Create view #

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-views-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-views-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) Views 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: A View is a representation of some information.
  name: Views
paths:
  /api/v3/views:
    get:
      parameters:
      - description: 'JSON specifying filter conditions.

          Currently supported filters are:


          + project: filters views by the project their associated query is assigned to. If the project filter is passed with the `!*` (not any) operator, global views are returned.


          + id: filters views based on their id


          + type: filters views based on their type'
        example: '[{ "project_id": { "operator": "!*", "values": null }" }]'
        in: query
        name: filters
        required: false
        schema:
          type: string
      responses:
        '200':
          content:
            application/hal+json:
              examples:
                Queries:
                  $ref: '#/components/examples/Views'
          description: OK
          headers: {}
      tags:
      - Views
      description: Returns a collection of Views. The collection can be filtered via query parameters similar to how work packages are filtered.
      operationId: List_views
      summary: List views
  /api/v3/views/{id}:
    get:
      parameters:
      - description: View id
        example: 42
        in: path
        name: id
        required: true
        schema:
          type: integer
      responses:
        '200':
          content:
            application/hal+json:
              examples:
                ViewWorkPackagesTable:
                  $ref: '#/components/examples/ViewWorkPackagesTable'
                ViewTeamPlanner:
                  $ref: '#/components/examples/ViewTeamPlanner'
          description: Returns the result of a single view, dependent of the view type.
        '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 access this resource.
          description: 'Returned if the client does not have sufficient permissions.


            **Required permission:** The required permission depends on the type of the view.'
          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 resource can not be found.


            *Note: A client without sufficient permissions shall not be able to test for the existence of

            a view. That''s why a 404 is returned here, even if a 403 might be more appropriate.*'
          headers: {}
      tags:
      - Views
      description: ''
      operationId: View_view
      summary: View view
    post:
      parameters:
      - description: The view identifier
        name: id
        in: path
        required: true
        example: 1
        schema:
          type: string
      requestBody:
        content:
          application/json:
            examples:
              Views::WorkPackagesTable:
                value:
                  _links:
                    query:
                      href: /api/v3/queries/5
              Views::TeamPlanner:
                value:
                  _links:
                    query:
                      href: /api/v3/queries/5
            schema:
              type: object
              properties:
                _links:
                  type: object
                  properties:
                    query:
                      type: object
                      properties:
                        href:
                          type: string
                          format: uri
      responses:
        '201':
          content:
            application/hal+json:
              schema:
                type: object
              examples:
                Views::WorkPackagesTable:
                  $ref: '#/components/examples/ViewWorkPackagesTable'
                Views::TeamPlanner:
                  $ref: '#/components/examples/ViewTeamPlanner'
          description: Created
          headers: {}
        '400':
          $ref: '#/components/responses/InvalidRequestBody'
        '406':
          $ref: '#/components/responses/MissingContentType'
        '415':
          $ref: '#/components/responses/UnsupportedMediaType'
        '422':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                response:
                  value:
                    _embedded:
                      details:
                        attribute: query
                    _type: Error
                    errorIdentifier: urn:openproject-org:api:v3:errors:PropertyConstraintViolation
                    message: Query does not exist.
          description: "Returned if:\n\n* the client tries to modify a read-only property (`PropertyIsReadOnly`)\n\n* a constraint for a property was violated (`PropertyConstraintViolation`)\n\n* the client provides a link to an invalid resource (`ResourceTypeMismatch`),\n  e.g. a query not found"
          headers: {}
      tags:
      - Views
      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 View 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.


        There are different subtypes of `Views` (e.g. `Views::WorkPackagesTable`) with each having its own

        endpoint for creating that subtype e.g.


        * `/api/v3/views/work_packages_table` for `Views::WorkPackagesTable`

        * `/api/v3/views/team_planner` for `Views::TeamPlanner`

        * `/api/v3/views/work_packages_calendar` for `Views::WorkPackagesCalendar`


        **Not yet implemented** To get the list of available subtypes and by that the endpoints for creating a subtype, use the

        ```

        /api/v3/views/schemas

        ```

        endpoint.'
      operationId: Create_views
      summary: Create view
components:
  examples:
    ViewWorkPackagesTable:
      value:
        _type: Views::WorkPackagesTable
        name: Current work packages
        id: 9
        _links:
          self:
            href: /api/v3/views/9
          query:
            href: /api/v3/queries/18
            title: Current work packages
          project:
            href: /api/v3/project/89
            title: The project
    ViewTeamPlanner:
      value:
        _type: Views::TeamPlanner
        name: Product team
        id: 9
        _links:
          self:
            href: /api/v3/views/9
          query:
            href: /api/v3/queries/18
            title: Product team
          project:
            href: /api/v3/project/89
            title: The project
    Views:
      value:
        _links:
          self:
            href: /api/v3/views
          changeSize:
            href: /api/v3/views?pageSize={size}
            templated: true
          jumpTo:
            href: /api/v3/views?offset={offset}
            templated: true
        total: 1
        count: 1
        _type: Collection
        _embedded:
          elements:
          - _type: Views::WorkPackagesTable
            name: Current work packages
            timelineVisible: true
            id: 9
            _links:
              self:
                href: /api/v3/views/9
              query:
                href: /api/v3/queries/18
                title: A query
              columns:
              - href: /api/v3/users/id
                title: ID
              - href: /api/v3/users/subject
                title: Subject
              - href: /api/v3/users/type
                title: Type
              - href: /api/v3/users/status
                title: Status
              - href: /api/v3/users/priority
                title: Priority
              - href: /api/v3/users/assignee
                title: Assignee
              - href: /api/v3/users/updated_at
                title: Updated on
              project:
                href: /api/v3/project/89
                title: The project
  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).
  schemas:
    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.
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic