Resolve a worker, read timesheets, then log a new time entry.
Reads the worker, their timesheets, and their existing time entries, then logs a new time entry with the supplied date, hours, time entry code, and worktag.
arazzo: 1.0.1
info:
title: Workday Log Time Entry
summary: Confirm a worker and read their timesheets, then log a new time entry.
description: >-
A time entry flow. It resolves the worker, reads their timesheets and
existing time entries for context, and then logs a new time entry for a
given date and number of hours against a time entry code and worktag. Every
step spells out its request inline so the flow can be read and executed
without opening the underlying OpenAPI description.
version: 1.0.0
x-realizes-capability-ids:
- BC-300.70
x-capability-derivation:
method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
min_confidence: 0.7
sources:
- capability_id: BC-300.70
capability_name: HR Operations Management
spec: workday-workers-api-openapi.yml
confidence: 0.85
model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: timeEntriesApi
url: ../openapi/workday-time-entries-api-openapi.yml
type: openapi
- name: timesheetsApi
url: ../openapi/workday-timesheets-api-openapi.yml
type: openapi
- name: workersApi
url: ../openapi/workday-workers-api-openapi.yml
type: openapi
workflows:
- workflowId: log-time-entry
summary: Resolve a worker, read timesheets, then log a new time entry.
description: >-
Reads the worker, their timesheets, and their existing time entries, then
logs a new time entry with the supplied date, hours, time entry code, and
worktag.
inputs:
type: object
required:
- authorization
- workerId
- date
- hours
- timeEntryCode
properties:
authorization:
type: string
description: OAuth2 bearer token, e.g. "Bearer eyJ...".
workerId:
type: string
description: The Workday ID of the worker logging time.
date:
type: string
description: The date of the time entry (YYYY-MM-DD).
hours:
type: number
description: The number of hours to log.
timeEntryCode:
type: object
description: The time entry code reference object (id, descriptor, href).
worktag:
type: object
description: The worktag reference object (id, descriptor, href).
comment:
type: string
description: An optional comment for the time entry.
steps:
- stepId: getWorker
description: Confirm the worker exists before logging time.
operationId: getWorkerById
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: ID
in: path
value: $inputs.workerId
successCriteria:
- condition: $statusCode == 200
outputs:
workerDescriptor: $response.body#/descriptor
- stepId: getTimesheets
description: Read the worker's timesheets for context.
operationId: getTimesheets
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: ID
in: path
value: $inputs.workerId
successCriteria:
- condition: $statusCode == 200
outputs:
timesheets: $response.body#/data
- stepId: logEntry
description: Log the new time entry for the worker.
operationId: requestTimeEntry
parameters:
- name: Authorization
in: header
value: $inputs.authorization
- name: ID
in: path
value: $inputs.workerId
requestBody:
contentType: application/json
payload:
date: $inputs.date
hours: $inputs.hours
timeEntryCode: $inputs.timeEntryCode
worktag: $inputs.worktag
comment: $inputs.comment
successCriteria:
- condition: $statusCode == 201
outputs:
entryId: $response.body#/id
entryStatus: $response.body#/status
outputs:
workerDescriptor: $steps.getWorker.outputs.workerDescriptor
timesheets: $steps.getTimesheets.outputs.timesheets
entryId: $steps.logEntry.outputs.entryId
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.