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: $.