naftiko: 1.0.0-alpha2 info: label: Endpoints — subpackage_timesheets description: 'Endpoints — subpackage_timesheets. 7 operations. Lead operation: List of timesheets by contract. Self-contained Naftiko capability covering one Deel business surface.' tags: - Deel - subpackage_timesheets 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-timesheets baseUri: https://api.letsdeel.com/rest/v2 description: Endpoints — subpackage_timesheets business capability. Self-contained, no shared references. resources: - name: contracts-contract_id-timesheets path: /contracts/{contract_id}/timesheets operations: - name: getcontracttimesheets method: GET description: List of timesheets by contract outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: contract_id in: path type: string description: Deel contract id. required: true - name: contract_types in: query type: string description: Types of contracts to filter. - name: statuses in: query type: string description: Statuses of timesheets to filter. - name: reporter_id in: query type: string description: ID of an existing profile - name: date_from in: query type: string description: 'Filtered results will include records created on or after the provided date. Short date in format ISO-8601 (YYYY-MM-DD). For example: 2022-12-31.' - name: date_to in: query type: string description: 'Filtered results will include records created before the provided date. Short date in format ISO-8601 (YYYY-MM-DD). For example: 2022-12-31.' - name: limit in: query type: string description: 'Return a page of results with given number of records; NOTE: technically ALL query parameters are strings or array of strings' - name: offset in: query type: string description: Return a page of results after given index of row - name: Authorization in: header type: string description: '## Authentication' required: true - name: timesheets path: /timesheets operations: - name: createtimesheet method: POST description: Create a timesheet entry 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: gettimesheets method: GET description: List of timesheets outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: contract_id in: query type: string description: Id of an Deel contract. - name: contract_types in: query type: string description: types of contracts to filter - name: statuses in: query type: string - name: reporter_id in: query type: string - name: date_from in: query type: string - name: date_to in: query type: string - name: limit in: query type: string - name: offset in: query type: string - name: Authorization in: header type: string description: '## Authentication' required: true - name: timesheets-id path: /timesheets/{id} operations: - name: deletetimesheetbyid method: DELETE description: Delete a timesheet entry outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: ID of an existing timesheet required: true - name: reason in: query type: string description: Reason for deleting an existing task - name: Authorization in: header type: string description: '## Authentication' required: true - name: gettimesheetbyid method: GET description: Retrieve a single timesheet entry outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: ID of an existing timesheet required: true - name: Authorization in: header type: string description: '## Authentication' required: true - name: updatetimesheet method: PATCH description: Update a timesheet entry outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: ID of an existing timesheet. 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: timesheets-id-reviews path: /timesheets/{id}/reviews operations: - name: createtimesheetreview method: POST description: Review a single timesheet outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: ID of an existing timesheet 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-timesheets-rest port: 8080 description: REST adapter for Endpoints — subpackage_timesheets. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/contracts/{contract-id}/timesheets name: contracts-contract-id-timesheets description: REST surface for contracts-contract_id-timesheets. operations: - method: GET name: getcontracttimesheets description: List of timesheets by contract call: platform-endpoints-subpackage-timesheets.getcontracttimesheets with: contract_id: rest.contract_id contract_types: rest.contract_types statuses: rest.statuses reporter_id: rest.reporter_id date_from: rest.date_from date_to: rest.date_to limit: rest.limit offset: rest.offset Authorization: rest.Authorization outputParameters: - type: object mapping: $. - path: /v1/timesheets name: timesheets description: REST surface for timesheets. operations: - method: POST name: createtimesheet description: Create a timesheet entry call: platform-endpoints-subpackage-timesheets.createtimesheet with: Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - method: GET name: gettimesheets description: List of timesheets call: platform-endpoints-subpackage-timesheets.gettimesheets with: contract_id: rest.contract_id contract_types: rest.contract_types statuses: rest.statuses reporter_id: rest.reporter_id date_from: rest.date_from date_to: rest.date_to limit: rest.limit offset: rest.offset Authorization: rest.Authorization outputParameters: - type: object mapping: $. - path: /v1/timesheets/{id} name: timesheets-id description: REST surface for timesheets-id. operations: - method: DELETE name: deletetimesheetbyid description: Delete a timesheet entry call: platform-endpoints-subpackage-timesheets.deletetimesheetbyid with: id: rest.id reason: rest.reason Authorization: rest.Authorization outputParameters: - type: object mapping: $. - method: GET name: gettimesheetbyid description: Retrieve a single timesheet entry call: platform-endpoints-subpackage-timesheets.gettimesheetbyid with: id: rest.id Authorization: rest.Authorization outputParameters: - type: object mapping: $. - method: PATCH name: updatetimesheet description: Update a timesheet entry call: platform-endpoints-subpackage-timesheets.updatetimesheet with: id: rest.id Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - path: /v1/timesheets/{id}/reviews name: timesheets-id-reviews description: REST surface for timesheets-id-reviews. operations: - method: POST name: createtimesheetreview description: Review a single timesheet call: platform-endpoints-subpackage-timesheets.createtimesheetreview with: id: rest.id Authorization: rest.Authorization body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: platform-endpoints-subpackage-timesheets-mcp port: 9090 transport: http description: MCP adapter for Endpoints — subpackage_timesheets. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-timesheets-contract description: List of timesheets by contract hints: readOnly: true destructive: false idempotent: true call: platform-endpoints-subpackage-timesheets.getcontracttimesheets with: contract_id: tools.contract_id contract_types: tools.contract_types statuses: tools.statuses reporter_id: tools.reporter_id date_from: tools.date_from date_to: tools.date_to limit: tools.limit offset: tools.offset Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: create-timesheet-entry description: Create a timesheet entry hints: readOnly: false destructive: false idempotent: false call: platform-endpoints-subpackage-timesheets.createtimesheet with: Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: list-timesheets description: List of timesheets hints: readOnly: true destructive: false idempotent: true call: platform-endpoints-subpackage-timesheets.gettimesheets with: contract_id: tools.contract_id contract_types: tools.contract_types statuses: tools.statuses reporter_id: tools.reporter_id date_from: tools.date_from date_to: tools.date_to limit: tools.limit offset: tools.offset Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: delete-timesheet-entry description: Delete a timesheet entry hints: readOnly: false destructive: true idempotent: true call: platform-endpoints-subpackage-timesheets.deletetimesheetbyid with: id: tools.id reason: tools.reason Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: retrieve-single-timesheet-entry description: Retrieve a single timesheet entry hints: readOnly: true destructive: false idempotent: true call: platform-endpoints-subpackage-timesheets.gettimesheetbyid with: id: tools.id Authorization: tools.Authorization outputParameters: - type: object mapping: $. - name: update-timesheet-entry description: Update a timesheet entry hints: readOnly: false destructive: false idempotent: true call: platform-endpoints-subpackage-timesheets.updatetimesheet with: id: tools.id Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $. - name: review-single-timesheet description: Review a single timesheet hints: readOnly: false destructive: false idempotent: false call: platform-endpoints-subpackage-timesheets.createtimesheetreview with: id: tools.id Authorization: tools.Authorization body: tools.body outputParameters: - type: object mapping: $.