arazzo: 1.0.1 info: title: Workday Recruiting Create and Source a Job Requisition summary: Create a job requisition, confirm it, then post its job to career sites. description: >- Stands up a brand-new hiring need end to end. The workflow creates a job requisition for a position, reads the created requisition back to confirm it landed in an open status, locates the job posting that Workday generated for that requisition, and then publishes that posting to the chosen career sites. 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 sourceDescriptions: - name: workdayRecruitingApi url: ../openapi/workday-recruiting-rest-api-openapi.yml type: openapi workflows: - workflowId: post-and-source-requisition summary: Create a requisition and publish its posting to career sites. description: >- Creates a job requisition, retrieves it to confirm status, finds the associated job posting, and posts the job to one or more career sites. inputs: type: object required: - title - jobProfile - position - supervisoryOrganization - numberOfOpenings - postingSite properties: title: type: string description: The requisition title (e.g. "Senior Software Engineer"). jobProfile: type: object description: Reference to the job profile (id + descriptor). position: type: object description: Reference to the position the requisition fills (id + descriptor). supervisoryOrganization: type: object description: Reference to the supervisory organization (id + descriptor). hiringManager: type: object description: Reference to the hiring manager (id + descriptor). recruiter: type: object description: Reference to the recruiter (id + descriptor). numberOfOpenings: type: integer description: Number of openings on the requisition. jobDescription: type: string description: The job description text. qualifications: type: string description: The required qualifications text. postingSite: type: object description: Career site reference to publish the posting to (id + descriptor). steps: - stepId: createRequisition description: >- Create the job requisition for the position within the supervisory organization. operationId: createJobRequisition requestBody: contentType: application/json payload: title: $inputs.title jobProfile: $inputs.jobProfile position: $inputs.position supervisoryOrganization: $inputs.supervisoryOrganization hiringManager: $inputs.hiringManager recruiter: $inputs.recruiter numberOfOpenings: $inputs.numberOfOpenings jobDescription: $inputs.jobDescription qualifications: $inputs.qualifications successCriteria: - condition: $statusCode == 201 outputs: requisitionId: $response.body#/id requisitionNumber: $response.body#/requisitionNumber status: $response.body#/status - stepId: confirmRequisition description: >- Read the created requisition back to confirm it exists and is in an open recruiting status before posting. operationId: getJobRequisition parameters: - name: id in: path value: $steps.createRequisition.outputs.requisitionId successCriteria: - condition: $statusCode == 200 outputs: status: $response.body#/status - stepId: findPosting description: >- List the job postings generated for the requisition so the primary posting can be published. operationId: listJobPostings parameters: - name: jobRequisition in: query value: $steps.createRequisition.outputs.requisitionId - name: limit in: query value: 1 successCriteria: - condition: $statusCode == 200 outputs: postingId: $response.body#/data/0/id - stepId: publishPosting description: >- Post the job to the supplied career site, making the requisition visible to candidates. operationId: postJob parameters: - name: id in: path value: $steps.findPosting.outputs.postingId requestBody: contentType: application/json payload: postingSites: - $inputs.postingSite successCriteria: - condition: $statusCode == 200 outputs: requisitionId: $steps.createRequisition.outputs.requisitionId requisitionNumber: $steps.createRequisition.outputs.requisitionNumber postingId: $steps.findPosting.outputs.postingId