OpenProject Project Phase Definitions API

Project phases separate the whole of the project's duration into smaller, distinct parts. Such a phase will then have different focus on certain aspects of project management. E.g. while the first phase might be about gathering requirements, the second phase might be about implementing the requirements and the third phase might be about testing the implementation. The phases within the projects rely on an abstract definition of the project life cycle valid in a number of projects within the OpenProject instance. That definition is a set of ProjectPhaseDefinitions. ## Actions * None currently ## Linked Properties | Link | Description | Type | Constraints | Supported operations |Condition | | :----------: | ------------- | ---- | ----------- | -------------------- |----------------------------------------- | | self | This project phase definition | ProjectPhaseDefinition | not null | READ | | ## Local Properties | Property | Description | Type | Constraints | Supported operations | |--------------- |-------------------------------------------------------------|-----------|-------------|----------------------| | id | Project phase definition's id | Integer | x > 0 | READ | | name | | String | | READ | | startGate | Indicates whether the project phase has a gate at the start | Boolean | | READ | | startGateName | The name of the gate at the start of the phase | String | | READ | | finishGate | Indicates whether the project phase has a gate at the end | Boolean | | READ | | finishGateName | The name of the gate at the end of the phase | String | | READ | | createdAt | Time of creation | DateTime | | READ | | updatedAt | Time of the most recent change to the project phase | DateTime | | READ |

Operations 2

GET /api/v3/project_phase_definitions List project phase definitions #
GET /api/v3/project_phase_definitions/{id} Get a project phase definition #

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-project-phase-definitions-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-project-phase-definitions-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) Project Phase Definitions 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: Project phases separate the whole of the project's duration into smaller, distinct parts.
  name: Project Phase Definitions
paths:
  /api/v3/project_phase_definitions:
    get:
      summary: List project phase definitions
      operationId: list_project_phase_definitions
      tags:
      - Project Phase Definitions
      description: 'Returns a collection of all project phase definitions.

        The result set is always limited to only contain project phase definitions the client is allowed to see.'
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ProjectPhaseDefinitionCollectionModel'
        '400':
          description: Returned if the client sends invalid request parameters e.g. filters
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:InvalidQuery
                message: Filters Invalid filter does not exist.
  /api/v3/project_phase_definitions/{id}:
    get:
      summary: Get a project phase definition
      operationId: get_project_phase_definition
      tags:
      - Project Phase Definitions
      description: 'Gets a project phase definition resource. This resource is part of the abstract definition of a project life

        cycle shaping the phases of a project.'
      parameters:
      - name: id
        description: Project phase definition id
        in: path
        required: true
        schema:
          type: integer
        example: 1337
      responses:
        '200':
          description: OK
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ProjectPhaseDefinitionModel'
        '404':
          content:
            application/hal+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                _type: Error
                errorIdentifier: urn:openproject-org:api:v3:errors:MissingPermission
                message: You are not authorized to access this resource.
          description: 'Returned if the user does not have permission to see project phases.


            **Required permission:** view project phase OR select project phase'
components:
  schemas:
    ProjectPhaseDefinitionModel:
      type: object
      required:
      - _type
      - id
      - name
      - startGate
      - startGateName
      - finishGate
      - finishGateName
      - createdAt
      - updatedAt
      properties:
        _type:
          type: string
          enum:
          - ProjectPhaseDefinition
        id:
          type: integer
          description: The project phase definition's id
          minimum: 1
        name:
          type: string
        startGate:
          type: boolean
        startGateName:
          type:
          - string
          - 'null'
        finishGate:
          type: boolean
        finishGateName:
          type:
          - string
          - 'null'
        createdAt:
          type: string
          format: date-time
          description: Time of creation
        updatedAt:
          type: string
          format: date-time
          description: Time of the most recent change to the project phase definition
        _links:
          type: object
          required:
          - self
          properties:
            self:
              allOf:
              - $ref: '#/components/schemas/Link'
              - description: 'This project phase definition.


                  **Resource**: ProjectPhaseDefinition'
      example:
        _type: ProjectPhaseDefinition
        id: 1337
        name: Initiating
        startGate: true
        startGateName: Before Initiating
        finishGate: true
        finishGateName: null
        createdAt: '2023-01-20T14:30:00.368Z'
        updatedAt: '2023-05-23T11:57:48.618Z'
        _links:
          self:
            href: /api/v3/project_phase_definitions/23
    CollectionLinks:
      type: object
      required:
      - self
      properties:
        self:
          allOf:
          - $ref: '#/components/schemas/Link'
          - description: 'This collection resource.


              **Resource**: Collection'
    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
    OffsetPaginatedCollectionLinks:
      allOf:
      - $ref: '#/components/schemas/CollectionLinks'
      - type: object
        required:
        - jumpTo
        - changeSize
        properties:
          jumpTo:
            allOf:
            - $ref: '#/components/schemas/Link'
            - description: A templated link to jump to a given offset.
          changeSize:
            allOf:
            - $ref: '#/components/schemas/Link'
            - description: A templated link to change the current page size.
          previousByOffset:
            allOf:
            - $ref: '#/components/schemas/Link'
            - description: 'A link to the previous page of the collection.


                # Conditions

                - The collection is not on the first page.'
          nextByOffset:
            allOf:
            - $ref: '#/components/schemas/Link'
            - description: 'A link to the next page of the collection.


                # Conditions

                - The collection is not on the last page.'
    ProjectPhaseDefinitionCollectionModel:
      allOf:
      - $ref: '#/components/schemas/OffsetPaginatedCollectionModel'
      - type: object
        required:
        - _links
        - _embedded
        properties:
          _links:
            type: object
            required:
            - self
            properties:
              self:
                allOf:
                - $ref: '#/components/schemas/Link'
                - description: 'This file links collection


                    **Resource**: ProjectPhaseDefinitionCollectionModel'
          _embedded:
            type: object
            required:
            - elements
            properties:
              elements:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectPhaseDefinitionModel'
      example:
        _type: Collection
        total: 2
        count: 2
        _links:
          self:
            href: /api/v3/project_phase_definitions
        _embedded:
          elements:
          - id: 14
            name: Initiating
            _type: ProjectPhaseDefinition
            _abbreviated: project phase definition resource shortened for brevity
          - id: 15
            name: Executing
            _type: ProjectPhaseDefinition
            _abbreviated: project phase definition resource shortened for brevity
    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.
    CollectionModel:
      type: object
      required:
      - _type
      - total
      - count
      - _links
      properties:
        _type:
          type: string
          enum:
          - Collection
        total:
          type: integer
          description: The total amount of elements available in the collection.
          minimum: 0
        count:
          type: integer
          description: Actual amount of elements in this response.
          minimum: 0
        _links:
          $ref: '#/components/schemas/CollectionLinks'
    OffsetPaginatedCollectionModel:
      allOf:
      - $ref: '#/components/schemas/CollectionModel'
      - type: object
        required:
        - pageSize
        - offset
        - _links
        properties:
          pageSize:
            type: integer
            description: 'The amount of elements per page. If not set by the request this value defaults to the server''s system

              settings.'
            minimum: 0
          offset:
            type: integer
            description: The page offset indicating on which page the element collection starts.
            minimum: 0
          _links:
            $ref: '#/components/schemas/OffsetPaginatedCollectionLinks'
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic