Skip to content

feat: add Workday ATS integration - #668

Open
Ahmed5754 wants to merge 3 commits into
revertinc:mainfrom
Ahmed5754:bounty-revert-372
Open

Ahmed5754 wants to merge 3 commits into
revertinc:mainfrom
Ahmed5754:bounty-revert-372

Conversation

@Ahmed5754

@Ahmed5754 Ahmed5754 commented Sep 29, 2026 •

Copy link
Copy Markdown

Summary

Adds Workday as an ATS integration for Revert, covering the connection flow, tenant-aware API routing, unified ATS objects, client configuration, and regression coverage.

Fixes #372

/claim #372

What changed

  • OAuth + refresh: Workday authorization-code exchange, connection persistence, and refresh-token flow using tenant-derived OAuth endpoints.
  • Tenant URL handling: resolves Recruiting, Staffing, token, and authorization URLs from the per-app Organisation URL with optional environment fallbacks.
  • ATS services: Candidate get/list/create/update; Job get/list/create/update; Offer get/list; Department get/list; and generic Workday proxy routing.
  • Normalization: candidate/name/email/phone shapes, requisition/status descriptors, offer references, and department parent descriptors.
  • Write mappings: Workday candidate/job disunification and standard ATS field mappings.
  • Database: workday Prisma enum + migration + seed support.
  • Client/SDK: Organisation URL credentials field, integration metadata, OAuth callback handling, and JS SDK connect flow.
  • Security hardening: the Workday proxy rejects cross-origin targets and only allows the configured tenant's Recruiting/Staffing API prefixes before adding the bearer token. This blocks arbitrary hosts, OAuth endpoints, and other tenants on the same Workday origin.

Verification

Passed locally:

yarn workspace @revertdotdev/backend test helpers/ats/workday.test.ts --runInBand
Test Suites: 1 passed, 1 total
Tests:       16 passed, 16 total

PGSQL_URL=<local placeholder> yarn workspace @revertdotdev/backend exec prisma validate
The schema is valid

yarn exec prettier --check <changed TS/TSX files>
All matched files use Prettier code style!

git diff --check
# clean

yarn workspace @revertdotdev/backend exec prisma generate also completed successfully.

A final reconnect audit also verified that Workday app_config and tp_account_url are preserved across connection upserts so tenant routing and refresh-token flows remain intact after reconnect.

Repository-level blockers observed

  • Full backend typecheck requires the Fern-generated packages/backend/generated/typescript tree. Running yarn fern in this environment stops with Login required.
  • The JS SDK build stops in the existing @types/lodash declarations with TS1005 errors before reaching this change.
  • The client production build stops on existing unused botToken / setBotToken warnings in EditCredentials.tsx; those same lines are present on main.

Demo video

workday-integration-demo.mp4

@github-actions

Copy link
Copy Markdown

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

@Ahmed5754

Copy link
Copy Markdown
Author
workday-integration-demo.mp4

@Ahmed5754

Copy link
Copy Markdown
Author

/claim #372

@Ahmed5754

Copy link
Copy Markdown
Author

Follow-up hardening pass pushed to the same PR. The Workday proxy now restricts bearer-authenticated requests to the configured tenant Recruiting/Staffing API prefixes, so same-origin OAuth endpoints or another tenant on the same Workday host cannot receive the token. Workday focused suite is now 16/16 PASS; Prettier and git diff --check pass.

@Ahmed5754

Copy link
Copy Markdown
Author

Final audit found and fixed a reconnect persistence bug: the Prisma upsert extension was clearing Workday app_config and tp_account_url on updates, which could break tenant routing and token refresh after reconnect. Workday is now preserved by the same connection-update guard used for providers that require account config. Verification: Workday 16/16 PASS, Prisma schema valid, Prettier PASS, git diff --check PASS.

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[REVER-48] Workday Integration

1 participant