OpenProject · Capability

OpenProject API V3 (Stable) — User Working Times

OpenProject API V3 (Stable) — User Working Times. 10 operations. Lead operation: List personal non-working times for a user. Self-contained Naftiko capability covering one Openproject business surface.

Run with Naftiko OpenprojectUser Working Times

What You Can Do

GET
Listusernonworkingtimes — List personal non-working times for a user
/v1/api/v3/users/{id}/non-working-times
POST
Createusernonworkingtime — Create a personal non-working day for a user
/v1/api/v3/users/{id}/non-working-times
GET
Viewusernonworkingtime — View a personal non-working time record
/v1/api/v3/users/{id}/non-working-times/{non-working-time-id}
PATCH
Updateusernonworkingtime — Update a personal non-working time record
/v1/api/v3/users/{id}/non-working-times/{non-working-time-id}
DELETE
Deleteusernonworkingtime — Delete a personal non-working time record
/v1/api/v3/users/{id}/non-working-times/{non-working-time-id}
GET
Listuserworkinghours — List working hours for a user
/v1/api/v3/users/{id}/working-hours
POST
Createuserworkinghours — Create a working hours record for a user
/v1/api/v3/users/{id}/working-hours
GET
Viewuserworkinghoursrecord — View a working hours record
/v1/api/v3/users/{id}/working-hours/{working-hours-id}
PATCH
Updateuserworkinghoursrecord — Update a working hours record
/v1/api/v3/users/{id}/working-hours/{working-hours-id}
DELETE
Deleteuserworkinghoursrecord — Delete a working hours record
/v1/api/v3/users/{id}/working-hours/{working-hours-id}

MCP Tools

list-personal-non-working-times

List personal non-working times for a user

read-only idempotent
create-personal-non-working-day

Create a personal non-working day for a user

view-personal-non-working-time

View a personal non-working time record

read-only idempotent
update-personal-non-working-time

Update a personal non-working time record

idempotent
delete-personal-non-working-time

Delete a personal non-working time record

idempotent
list-working-hours-user

List working hours for a user

read-only idempotent
create-working-hours-record-user

Create a working hours record for a user

view-working-hours-record

View a working hours record

read-only idempotent
update-working-hours-record

Update a working hours record

idempotent
delete-working-hours-record

Delete a working hours record

idempotent

Capability Spec

openproject-user-working-times.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: OpenProject API V3 (Stable) — User Working Times
  description: 'OpenProject API V3 (Stable) — User Working Times. 10 operations. Lead operation: List personal non-working
    times for a user. Self-contained Naftiko capability covering one Openproject business surface.'
  tags:
  - Openproject
  - User Working Times
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    OPENPROJECT_API_KEY: OPENPROJECT_API_KEY
capability:
  consumes:
  - type: http
    namespace: openproject-user-working-times
    baseUri: https://qa.openproject-edge.com
    description: OpenProject API V3 (Stable) — User Working Times business capability. Self-contained, no shared references.
    resources:
    - name: api-v3-users-id-non_working_times
      path: /api/v3/users/{id}/non_working_times
      operations:
      - name: listusernonworkingtimes
        method: GET
        description: List personal non-working times for a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: year
          in: query
          type: integer
          description: Filter results to the given year. Defaults to the current year if not provided.
      - name: createusernonworkingtime
        method: POST
        description: Create a personal non-working day for a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-v3-users-id-non_working_times-non_working_time_id
      path: /api/v3/users/{id}/non_working_times/{non_working_time_id}
      operations:
      - name: viewusernonworkingtime
        method: GET
        description: View a personal non-working time record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: non_working_time_id
          in: path
          type: integer
          description: The id of the personal non-working time record.
          required: true
      - name: updateusernonworkingtime
        method: PATCH
        description: Update a personal non-working time record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: non_working_time_id
          in: path
          type: integer
          description: The id of the personal non-working time record.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: deleteusernonworkingtime
        method: DELETE
        description: Delete a personal non-working time record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: non_working_time_id
          in: path
          type: integer
          description: The id of the personal non-working time record.
          required: true
    - name: api-v3-users-id-working_hours
      path: /api/v3/users/{id}/working_hours
      operations:
      - name: listuserworkinghours
        method: GET
        description: List working hours for a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
      - name: createuserworkinghours
        method: POST
        description: Create a working hours record for a user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: User id. Use `me` to reference the current user.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: api-v3-users-id-working_hours-working_hours_id
      path: /api/v3/users/{id}/working_hours/{working_hours_id}
      operations:
      - name: viewuserworkinghoursrecord
        method: GET
        description: View a working hours record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: User id.
          required: true
        - name: working_hours_id
          in: path
          type: integer
          description: Working hours record id.
          required: true
      - name: updateuserworkinghoursrecord
        method: PATCH
        description: Update a working hours record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: User id.
          required: true
        - name: working_hours_id
          in: path
          type: integer
          description: Working hours record id.
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: deleteuserworkinghoursrecord
        method: DELETE
        description: Delete a working hours record
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          description: User id.
          required: true
        - name: working_hours_id
          in: path
          type: integer
          description: Working hours record id.
          required: true
    authentication:
      type: basic
      username: '{{env.OPENPROJECT_USER}}'
      password: '{{env.OPENPROJECT_PASS}}'
  exposes:
  - type: rest
    namespace: openproject-user-working-times-rest
    port: 8080
    description: REST adapter for OpenProject API V3 (Stable) — User Working Times. One Spectral-compliant resource per consumed
      operation, prefixed with /v1.
    resources:
    - path: /v1/api/v3/users/{id}/non-working-times
      name: api-v3-users-id-non-working-times
      description: REST surface for api-v3-users-id-non_working_times.
      operations:
      - method: GET
        name: listusernonworkingtimes
        description: List personal non-working times for a user
        call: openproject-user-working-times.listusernonworkingtimes
        with:
          id: rest.id
          year: rest.year
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createusernonworkingtime
        description: Create a personal non-working day for a user
        call: openproject-user-working-times.createusernonworkingtime
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v3/users/{id}/non-working-times/{non-working-time-id}
      name: api-v3-users-id-non-working-times-non-working-time-id
      description: REST surface for api-v3-users-id-non_working_times-non_working_time_id.
      operations:
      - method: GET
        name: viewusernonworkingtime
        description: View a personal non-working time record
        call: openproject-user-working-times.viewusernonworkingtime
        with:
          id: rest.id
          non_working_time_id: rest.non_working_time_id
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updateusernonworkingtime
        description: Update a personal non-working time record
        call: openproject-user-working-times.updateusernonworkingtime
        with:
          id: rest.id
          non_working_time_id: rest.non_working_time_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteusernonworkingtime
        description: Delete a personal non-working time record
        call: openproject-user-working-times.deleteusernonworkingtime
        with:
          id: rest.id
          non_working_time_id: rest.non_working_time_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v3/users/{id}/working-hours
      name: api-v3-users-id-working-hours
      description: REST surface for api-v3-users-id-working_hours.
      operations:
      - method: GET
        name: listuserworkinghours
        description: List working hours for a user
        call: openproject-user-working-times.listuserworkinghours
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createuserworkinghours
        description: Create a working hours record for a user
        call: openproject-user-working-times.createuserworkinghours
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/api/v3/users/{id}/working-hours/{working-hours-id}
      name: api-v3-users-id-working-hours-working-hours-id
      description: REST surface for api-v3-users-id-working_hours-working_hours_id.
      operations:
      - method: GET
        name: viewuserworkinghoursrecord
        description: View a working hours record
        call: openproject-user-working-times.viewuserworkinghoursrecord
        with:
          id: rest.id
          working_hours_id: rest.working_hours_id
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updateuserworkinghoursrecord
        description: Update a working hours record
        call: openproject-user-working-times.updateuserworkinghoursrecord
        with:
          id: rest.id
          working_hours_id: rest.working_hours_id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteuserworkinghoursrecord
        description: Delete a working hours record
        call: openproject-user-working-times.deleteuserworkinghoursrecord
        with:
          id: rest.id
          working_hours_id: rest.working_hours_id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: openproject-user-working-times-mcp
    port: 9090
    transport: http
    description: MCP adapter for OpenProject API V3 (Stable) — User Working Times. One tool per consumed operation, routed
      inline through this capability's consumes block.
    tools:
    - name: list-personal-non-working-times
      description: List personal non-working times for a user
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openproject-user-working-times.listusernonworkingtimes
      with:
        id: tools.id
        year: tools.year
      outputParameters:
      - type: object
        mapping: $.
    - name: create-personal-non-working-day
      description: Create a personal non-working day for a user
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openproject-user-working-times.createusernonworkingtime
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: view-personal-non-working-time
      description: View a personal non-working time record
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openproject-user-working-times.viewusernonworkingtime
      with:
        id: tools.id
        non_working_time_id: tools.non_working_time_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-personal-non-working-time
      description: Update a personal non-working time record
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: openproject-user-working-times.updateusernonworkingtime
      with:
        id: tools.id
        non_working_time_id: tools.non_working_time_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-personal-non-working-time
      description: Delete a personal non-working time record
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: openproject-user-working-times.deleteusernonworkingtime
      with:
        id: tools.id
        non_working_time_id: tools.non_working_time_id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-working-hours-user
      description: List working hours for a user
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openproject-user-working-times.listuserworkinghours
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: create-working-hours-record-user
      description: Create a working hours record for a user
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openproject-user-working-times.createuserworkinghours
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: view-working-hours-record
      description: View a working hours record
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openproject-user-working-times.viewuserworkinghoursrecord
      with:
        id: tools.id
        working_hours_id: tools.working_hours_id
      outputParameters:
      - type: object
        mapping: $.
    - name: update-working-hours-record
      description: Update a working hours record
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: openproject-user-working-times.updateuserworkinghoursrecord
      with:
        id: tools.id
        working_hours_id: tools.working_hours_id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-working-hours-record
      description: Delete a working hours record
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: openproject-user-working-times.deleteuserworkinghoursrecord
      with:
        id: tools.id
        working_hours_id: tools.working_hours_id
      outputParameters:
      - type: object
        mapping: $.