Skip to content

feat: add Workday ATS integration#658

Open
bisgeario wants to merge 5 commits into
revertinc:mainfrom
bisgeario:fix/issue-372
Open

feat: add Workday ATS integration#658
bisgeario wants to merge 5 commits into
revertinc:mainfrom
bisgeario:fix/issue-372

Conversation

@bisgeario
Copy link
Copy Markdown

Adds Workday as a new ATS integration following the same patterns established by the existing Greenhouse and Lever integrations.

What was missing: Workday was not supported as an ATS provider despite being a widely-used HR platform.

What changed:

  • Added workday to the Prisma TP_ID enum in schema.prisma
  • Added Workday config variables (WORKDAY_CLIENT_ID, WORKDAY_CLIENT_SECRET, WORKDAY_TOKEN_URL, WORKDAY_API_BASE_URL) to config.ts and .env.example
  • Extended ATS_TP_ID type and added Workday to DEFAULT_SCOPE and mapIntegrationIdToIntegrationName in constants/common.ts
  • Created WorkdayAuthHandler in routes/v1/ats/authHandlers/workday.ts implementing OAuth2 token exchange (modeled after the Lever handler)
  • Wired up case TP_ID.workday in the ATS auth router
  • Added Workday cases to all four ATS service files (candidate, job, department, offer) — GET/list/create/update endpoints map to Workday's /api/staffing/v6/ REST API; delete endpoints return "not supported" consistent with Workday API constraints
  • Added Workday to the proxy service for generic pass-through requests
  • Added Workday field mappings across all four ATS object types in prisma/fields.ts
  • Added case TP_ID.workday to disunifyAtsObject and the preprocess map
  • Added Workday to the client-side appsInfo metadata

Workday uses tenant-specific base URLs, so app_config.org_url is used per-connection with a fallback to the WORKDAY_API_BASE_URL env var. Pagination uses offset-based cursors derived from the total field in responses.

Testing

Ran tsc -p tsconfig.json --noEmit in packages/backend — only a pre-existing deprecation warning about baseUrl (unrelated to this change), no new type errors. The generated .prisma/client already includes workday in the TP_ID enum, confirming the schema change is consistent with the expected client types.

Closes #372
/claim #372

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 1, 2026

Thank you for following the naming conventions for pull request titles! 🙏

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REVER-48] Workday Integration

1 participant