FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

feat: add Workday ATS integration by maoshuorz · Pull Request #653 · revertinc/revert · GitHub

feat: add Workday ATS integration - #653

Open
maoshuorz wants to merge 1 commit into
revertinc:mainfrom
maoshuorz:feat/workday-integration
Open

feat: add Workday ATS integration#653
maoshuorz wants to merge 1 commit into
revertinc:mainfrom
maoshuorz:feat/workday-integration

Conversation

Copy link
Copy Markdown

Summary

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

/claim #372

Changes

Schema & Config

  • Added workday to Prisma TP_ID enum
  • Added Workday config variables: WORKDAY_CLIENT_ID, WORKDAY_CLIENT_SECRET, WORKDAY_TOKEN_URL, WORKDAY_API_BASE_URL
  • Added 'workday' to ATS_TP_ID type, DEFAULT_SCOPE, and mapIntegrationIdToIntegrationName

Authentication

  • Created WorkdayAuthHandler (routes/v1/ats/authHandlers/workday.ts) implementing OAuth2 token exchange, following the Lever auth handler pattern
  • Wired up case TP_ID.workday in the ATS auth router

ATS Service Endpoints

Added Workday cases to all ATS service files:

  • Candidate (CRUD) - Maps to Workday /api/staffing/v6/candidates
  • Job (CRUD) - Maps to Workday /api/staffing/v6/jobPostings
  • Department (read) - Maps to Workday /api/staffing/v6/organizations
  • Offer (read) - Maps to Workday /api/staffing/v6/jobOffers
  • Proxy - Generic proxy through Workday API base URL

Data Transforms

  • Added Workday field mappings in prisma/fields.ts for all 4 ATS object types (candidate, job, offer, department)
  • Added [TP_ID.workday]: {} to postprocessDisUnifyAtsObject preprocess map
  • Added case TP_ID.workday to disunifyAtsObject in disunify.ts

Design Decisions

  • Workday API base URL is configurable per-connection via app_config.org_url (falls back to WORKDAY_API_BASE_URL env var), since Workday uses tenant-specific URLs
  • Offset-based pagination for list endpoints, computing next cursor from total in response
  • Delete endpoints return "not supported" (consistent with Workday API constraints)

Test Plan

  • Verify TypeScript compilation passes
  • Test OAuth2 flow with Workday sandbox credentials
  • Test CRUD operations for candidates and jobs
  • Test read operations for departments and offers
  • Verify proxy endpoint forwards requests correctly

- Add 'workday' to Prisma TP_ID enum
- Add Workday OAuth2 auth handler following Lever pattern
- Add Workday config variables (client_id, client_secret, token_url, api_base_url)
- Add Workday cases to all ATS service files (candidate, job, department, offer, proxy)
- Add Workday field mappings for all ATS object types
- Add Workday to disunify/preprocess transforms
- Wire up auth router to dispatch to Workday handler

Closes revertinc#372

github-actions Bot commented Mar 7, 2026

Copy link
Copy Markdown

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

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
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.

1 participant


Back | FazBrowse Home | New Git URL