Deel · Capability

Endpoints — subpackage_timeTracking

Endpoints — subpackage_timeTracking. 8 operations. Lead operation: Generate timesheet upload url. Self-contained Naftiko capability covering one Deel business surface.

Run with Naftiko Deelsubpackage_timeTracking

What You Can Do

POST
Gettimetrackingtimesheetsuploadurl — Generate timesheet upload url
/v1/time-tracking/timesheets/upload-url
GET
Gettimetrackingtimesheetbyid — Retrieve a timesheet
/v1/time-tracking/timesheets/{timesheet-id}
POST
Reviewtimetrackingtimesheet — Review a submitted timesheet
/v1/time-tracking/timesheets/{timesheet-id}/review
POST
Createtimetrackingshiftrate — Create a New Shift Rate
/v1/time-tracking/shift-rates
GET
Gettimetrackingshiftrates — Retrieve a Paginated List of Shift Rates
/v1/time-tracking/shift-rates
DELETE
Deletetimetrackingshiftratebyexternalid — Delete a Shift Rate by external ID
/v1/time-tracking/shift-rates/{external-id}
GET
Gettimetrackingshiftratebyexternalid — Retrieve a Shift Rate by External ID
/v1/time-tracking/shift-rates/{external-id}
PATCH
Updatetimetrackingshiftratebyexternalid — Update a shift rate
/v1/time-tracking/shift-rates/{external-id}

MCP Tools

generate-timesheet-upload-url

Generate timesheet upload url

retrieve-timesheet

Retrieve a timesheet

read-only idempotent
review-submitted-timesheet

Review a submitted timesheet

create-new-shift-rate

Create a New Shift Rate

retrieve-paginated-list-shift-rates

Retrieve a Paginated List of Shift Rates

read-only idempotent
delete-shift-rate-external-id

Delete a Shift Rate by external ID

idempotent
retrieve-shift-rate-external-id

Retrieve a Shift Rate by External ID

read-only idempotent
update-shift-rate

Update a shift rate

idempotent

Capability Spec

platform-endpoints-subpackage-timetracking.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Endpoints — subpackage_timeTracking
  description: 'Endpoints — subpackage_timeTracking. 8 operations. Lead operation: Generate timesheet upload url. Self-contained
    Naftiko capability covering one Deel business surface.'
  tags:
  - Deel
  - subpackage_timeTracking
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    DEEL_API_KEY: DEEL_API_KEY
capability:
  consumes:
  - type: http
    namespace: platform-endpoints-subpackage-timetracking
    baseUri: https://api.letsdeel.com/rest/v2
    description: Endpoints — subpackage_timeTracking business capability. Self-contained, no shared references.
    resources:
    - name: time-tracking-timesheets-upload-url
      path: /time-tracking/timesheets/upload-url
      operations:
      - name: gettimetrackingtimesheetsuploadurl
        method: POST
        description: Generate timesheet upload url
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: time-tracking-timesheets-timesheet_id
      path: /time-tracking/timesheets/{timesheet_id}
      operations:
      - name: gettimetrackingtimesheetbyid
        method: GET
        description: Retrieve a timesheet
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: timesheet_id
          in: path
          type: string
          description: ID of the timesheet to fetch file for
          required: true
        - name: extend
          in: query
          type: string
          description: Optional list of fields to extend in the response. Currently only `file_data` is supported, which includes
            file details (file_id, file_name) and download URL.
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
    - name: time-tracking-timesheets-timesheet_id-review
      path: /time-tracking/timesheets/{timesheet_id}/review
      operations:
      - name: reviewtimetrackingtimesheet
        method: POST
        description: Review a submitted timesheet
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: timesheet_id
          in: path
          type: string
          description: ID of the timesheet to review
          required: true
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: time_tracking-shift_rates
      path: /time_tracking/shift_rates
      operations:
      - name: createtimetrackingshiftrate
        method: POST
        description: Create a New Shift Rate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: gettimetrackingshiftrates
        method: GET
        description: Retrieve a Paginated List of Shift Rates
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: limit
          in: query
          type: string
          description: The maximum number of records to return per page. For example, '10' to return up to 10 records.
        - name: offset
          in: query
          type: string
          description: The starting index for the records to retrieve. For example, '0' for the first page or '10' for the
            second page when limit=10.
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
    - name: time_tracking-shift_rates-external_id
      path: /time_tracking/shift_rates/{external_id}
      operations:
      - name: deletetimetrackingshiftratebyexternalid
        method: DELETE
        description: Delete a Shift Rate by external ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: external_id
          in: path
          type: string
          description: external ID
          required: true
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
      - name: gettimetrackingshiftratebyexternalid
        method: GET
        description: Retrieve a Shift Rate by External ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: external_id
          in: path
          type: string
          description: The unique external identifier of the shift rate to retrieve.
          required: true
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
      - name: updatetimetrackingshiftratebyexternalid
        method: PATCH
        description: Update a shift rate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: external_id
          in: path
          type: string
          description: Unique identifier of the shift rate to be updated.
          required: true
        - name: Authorization
          in: header
          type: string
          description: '## Authentication'
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    authentication:
      type: bearer
      token: '{{env.DEEL_API_KEY}}'
  exposes:
  - type: rest
    namespace: platform-endpoints-subpackage-timetracking-rest
    port: 8080
    description: REST adapter for Endpoints — subpackage_timeTracking. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/time-tracking/timesheets/upload-url
      name: time-tracking-timesheets-upload-url
      description: REST surface for time-tracking-timesheets-upload-url.
      operations:
      - method: POST
        name: gettimetrackingtimesheetsuploadurl
        description: Generate timesheet upload url
        call: platform-endpoints-subpackage-timetracking.gettimetrackingtimesheetsuploadurl
        with:
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/time-tracking/timesheets/{timesheet-id}
      name: time-tracking-timesheets-timesheet-id
      description: REST surface for time-tracking-timesheets-timesheet_id.
      operations:
      - method: GET
        name: gettimetrackingtimesheetbyid
        description: Retrieve a timesheet
        call: platform-endpoints-subpackage-timetracking.gettimetrackingtimesheetbyid
        with:
          timesheet_id: rest.timesheet_id
          extend: rest.extend
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/time-tracking/timesheets/{timesheet-id}/review
      name: time-tracking-timesheets-timesheet-id-review
      description: REST surface for time-tracking-timesheets-timesheet_id-review.
      operations:
      - method: POST
        name: reviewtimetrackingtimesheet
        description: Review a submitted timesheet
        call: platform-endpoints-subpackage-timetracking.reviewtimetrackingtimesheet
        with:
          timesheet_id: rest.timesheet_id
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/time-tracking/shift-rates
      name: time-tracking-shift-rates
      description: REST surface for time_tracking-shift_rates.
      operations:
      - method: POST
        name: createtimetrackingshiftrate
        description: Create a New Shift Rate
        call: platform-endpoints-subpackage-timetracking.createtimetrackingshiftrate
        with:
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: gettimetrackingshiftrates
        description: Retrieve a Paginated List of Shift Rates
        call: platform-endpoints-subpackage-timetracking.gettimetrackingshiftrates
        with:
          limit: rest.limit
          offset: rest.offset
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/time-tracking/shift-rates/{external-id}
      name: time-tracking-shift-rates-external-id
      description: REST surface for time_tracking-shift_rates-external_id.
      operations:
      - method: DELETE
        name: deletetimetrackingshiftratebyexternalid
        description: Delete a Shift Rate by external ID
        call: platform-endpoints-subpackage-timetracking.deletetimetrackingshiftratebyexternalid
        with:
          external_id: rest.external_id
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: gettimetrackingshiftratebyexternalid
        description: Retrieve a Shift Rate by External ID
        call: platform-endpoints-subpackage-timetracking.gettimetrackingshiftratebyexternalid
        with:
          external_id: rest.external_id
          Authorization: rest.Authorization
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: updatetimetrackingshiftratebyexternalid
        description: Update a shift rate
        call: platform-endpoints-subpackage-timetracking.updatetimetrackingshiftratebyexternalid
        with:
          external_id: rest.external_id
          Authorization: rest.Authorization
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: platform-endpoints-subpackage-timetracking-mcp
    port: 9090
    transport: http
    description: MCP adapter for Endpoints — subpackage_timeTracking. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: generate-timesheet-upload-url
      description: Generate timesheet upload url
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: platform-endpoints-subpackage-timetracking.gettimetrackingtimesheetsuploadurl
      with:
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-timesheet
      description: Retrieve a timesheet
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: platform-endpoints-subpackage-timetracking.gettimetrackingtimesheetbyid
      with:
        timesheet_id: tools.timesheet_id
        extend: tools.extend
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: review-submitted-timesheet
      description: Review a submitted timesheet
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: platform-endpoints-subpackage-timetracking.reviewtimetrackingtimesheet
      with:
        timesheet_id: tools.timesheet_id
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: create-new-shift-rate
      description: Create a New Shift Rate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: platform-endpoints-subpackage-timetracking.createtimetrackingshiftrate
      with:
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-paginated-list-shift-rates
      description: Retrieve a Paginated List of Shift Rates
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: platform-endpoints-subpackage-timetracking.gettimetrackingshiftrates
      with:
        limit: tools.limit
        offset: tools.offset
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-shift-rate-external-id
      description: Delete a Shift Rate by external ID
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: platform-endpoints-subpackage-timetracking.deletetimetrackingshiftratebyexternalid
      with:
        external_id: tools.external_id
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-shift-rate-external-id
      description: Retrieve a Shift Rate by External ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: platform-endpoints-subpackage-timetracking.gettimetrackingshiftratebyexternalid
      with:
        external_id: tools.external_id
        Authorization: tools.Authorization
      outputParameters:
      - type: object
        mapping: $.
    - name: update-shift-rate
      description: Update a shift rate
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: platform-endpoints-subpackage-timetracking.updatetimetrackingshiftratebyexternalid
      with:
        external_id: tools.external_id
        Authorization: tools.Authorization
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.