openapi: 3.2.0 info: version: 1.0.0 title: Ashby Webhook Payloads API description: The public API for accessing resources in your Ashby instance. contact: name: Ashby Support url: https://app.ashbyhq.com/support email: support@ashbyhq.com servers: - url: https://api.ashbyhq.com security: - BasicAuth: [] tags: - name: Webhook Payloads paths: {} webhooks: applicationSubmit: post: summary: applicationSubmit description: Triggered when a candidate submits an application or when a candidate is manually added to Ashby. This webhook is not triggered for bulk imports or integration syncs. operationId: applicationSubmitWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - applicationSubmit data: type: object properties: application: $ref: '#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] applicationUpdate: post: summary: applicationUpdate description: 'Triggered when there''s an update to an application. This includes: - Changes to application fields (source, custom fields, etc.) - Job transfers (when an application is moved to a different job) - Also triggered by [candidateHire](ref:candidatehirewebhook) and [candidateStageChange](ref:candidatestagechangewebhook) ' operationId: applicationUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - applicationUpdate data: type: object properties: application: $ref: '#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] candidateHire: post: summary: candidateHire description: 'Triggered when a candidate is hired (including candidates that are hired on confidential jobs). Includes the application and most recent accepted offer (if one exists). Also triggers [applicationUpdate](ref:applicationupdatewebhook) and [candidateStageChange](ref:candidatestagechangewebhook) ' operationId: candidateHireWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - candidateHire data: type: object properties: application: $ref: '#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application' offer: $ref: '#/webhooks/offerCreate/post/requestBody/content/application~1json/schema/properties/data/properties/offer' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] candidateStageChange: post: summary: candidateStageChange description: Triggered when a candidate changes stages in an application. Also triggered by [candidateHire](ref:candidatehirewebhook) operationId: candidateStageChangeWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - candidateStageChange data: type: object properties: application: $ref: '#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] candidateDelete: post: summary: candidateDelete description: "Triggered when a candidate is deleted. \nIncludes the deleted candidate id.\n" operationId: candidateDeleteWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - candidateDelete data: type: object properties: candidate: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' description: The unique id of the deleted candidate responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] candidateMerge: post: summary: candidateMerge description: "Triggered when a candidate is merged. \nIncludes the deleted candidate's id and merged candidate data.\n" operationId: candidateMergeWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - candidateMerge data: type: object properties: deletedCandidate: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' description: The unique id of the deleted candidate mergedCandidate: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' description: The unique id of the final merged candidate responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] interviewPlanTransition: post: summary: interviewPlanTransition description: Triggered when a job's interview plan is switched to a different plan. Sends interview plan data and ids for the interview stage mappings. Also triggers [jobUpdate](ref:jobupdatewebhook) operationId: interviewPlanTransitionWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - interviewPlanTransition data: type: object properties: jobId: description: The id of the job for which the interview plan has been switched allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' fromInterviewPlan: description: The interview plan the job was previously referencing type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' title: type: string example: Custom Interview Plan required: - id - title toInterviewPlan: description: The interview plan the job is now referencing type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' title: type: string example: Engineering Interview Plan required: - id - title interviewStageMappings: description: The mapping of a stage from the previous interview plan to a stage on the new interview plan type: array items: type: object properties: fromInterviewStageId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' toInterviewStageId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' required: - fromInterviewStageId - toInterviewStageId responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] interviewScheduleCreate: post: summary: interviewScheduleCreate description: The webhook is called when an interview schedule is created. Also triggers [interviewScheduleUpdate](ref:interviewscheduleupdatewebhook) operationId: interviewScheduleCreateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - interviewScheduleCreate data: type: object properties: interviewSchedule: type: object required: - id - status - applicationId - interviewStageId properties: id: type: string description: The id of the interview schedule status: type: string enum: - NeedsScheduling - WaitingOnCandidateBooking - WaitingOnCandidateAvailability - CandidateAvailabilitySubmitted - Scheduled - WaitingOnFeedback - Complete - Cancelled - OnHold - Unknown description: The status of the interview schedule applicationId: type: string description: The id of the application associated with the interview schedule interviewStageId: type: string description: The id of the interview stage associated with the interview schedule scheduledBy: description: The user who scheduled this interview schedule. Null if the schedule has not been scheduled. $ref: '#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' createdAt: type: string format: date-time description: The time the interview schedule was created updatedAt: type: string format: date-time description: The time the interview schedule was last updated interviewEvents: type: array description: All scheduled interview events associated with the interview schedule items: $ref: '#/paths/~1interviewEvent.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] interviewScheduleUpdate: post: summary: interviewScheduleUpdate description: The webhook is called when an interview schedule is updated, including when interviews that are part of the schedule are scheduled, updated, or cancelled. Also triggered by [interviewScheduleCreate](ref:interviewschedulecreatewebhook) operationId: interviewScheduleUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - interviewScheduleUpdate data: type: object properties: interviewSchedule: allOf: - $ref: '#/webhooks/interviewScheduleCreate/post/requestBody/content/application~1json/schema/properties/data/properties/interviewSchedule' - type: object properties: candidateId: type: string description: The ID of the candidate associated with this interview schedule responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] jobCreate: post: summary: jobCreate description: Triggered when a job is created operationId: jobCreateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - jobCreate data: type: object properties: job: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' title: type: string confidential: type: boolean status: $ref: '#/paths/~1job.setStatus/post/requestBody/content/application~1json/schema/properties/status/allOf/1' employmentType: type: string enum: - FullTime - PartTime - Intern - Contract - Temporary locationId: allOf: - description: The id of the location of the job - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' departmentId: allOf: - description: The id of the department or team associated with the job - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' defaultInterviewPlanId: allOf: - description: "The id of the default interview plan for this job posting. \nA job cannot be opened without a default interview plan.\n" - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' interviewPlanIds: type: array items: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The ids of all interview plans associated with a job customFields: type: array description: An array of custom fields associated with the job items: $ref: '#/paths/~1customField.setValue/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' jobPostingIds: type: array items: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The ids of all job postings associated with the job customRequisitionId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The custom requisition id for a job brandId: allOf: - description: The id of the brand to use for this job - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' hiringTeam: type: array items: $ref: '#/paths/~1hiringTeam.addMember/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' author: $ref: '#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' createdAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' updatedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' openedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' closedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' required: - id - title - confidential - status - employmentType - updatedAt responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] jobUpdate: post: summary: jobUpdate description: Triggered when a job is updated. Also triggered by [interviewPlanTransition](ref:interviewplantransitionwebhook) operationId: jobUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - jobUpdate data: type: object properties: job: $ref: '#/webhooks/jobCreate/post/requestBody/content/application~1json/schema/properties/data/properties/job' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] jobPostingUpdate: post: summary: jobPostingUpdate description: Triggered when a job posting is updated. Also triggered by [jobPostingPublish](ref:jobpostingpublishwebhook) and [jobPostingUnpublish](ref:jobpostingunpublishwebhook) operationId: jobPostingUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - jobPostingUpdate data: type: object properties: jobPosting: type: object properties: id: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The job posting's id title: type: string example: Posting Title description: The job posting's title jobId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The id of the job associated with the job posting departmentName: type: string example: Engineering department description: The name of the department associated with the job posting teamName: type: string example: Data engineering team description: 'The name of the team associated with the job posting. `teamName` and `departmentName` will be the same if the team does not have a parent team specified. ' locationName: type: string example: Springfield description: The name of the primary location associated with the job posting locationIds: type: object description: An object containing the ids of all locations associated with the job posting properties: primaryLocationId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' secondaryLocationIds: type: array items: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' required: - primaryLocationId - secondaryLocationIds workplaceType: $ref: '#/paths/~1location.create/post/requestBody/content/application~1json/schema/properties/workplaceType/allOf/1' employmentType: $ref: '#/webhooks/jobCreate/post/requestBody/content/application~1json/schema/properties/data/properties/job/properties/employmentType' isListed: type: boolean example: true description: Whether or not the job posting is listed publishedDate: type: string example: '2021-11-19' description: The date the job posting was published applicationDeadline: type: string example: '2024-08-12T20:00:00.000Z' format: date-time description: The date and time when applications will no longer be accepted externalLink: type: string example: https://jobs.ashbyhq.com/6eec82ac-9713-512d-ac2e-405618935375/d5a6bc97-4259-4bc5-b3fe-6d3edfd538e3 description: The external link to the job posting. Will be null if the job posting is on an internal job board. applyLink: type: string example: https://jobs.ashbyhq.com/6eec82ac-9713-512d-ac2e-405618935375/d5a6bc97-4259-4bc5-b3fe-6d3edfd538e3 description: The link to apply to the job posting. Will be to the public job board if the job posting is on an external job board, or to the internal job board if the job posting is on an internal job board. compensationTierSummary: type: string example: $120K – $270K • 0% – 2.25% • Offers Bonus • Multiple Ranges description: 'A summary of *all* the job posting''s valid compensation tiers in the same format shown on Ashby-hosted Job Boards ' shouldDisplayCompensationOnJobBoard: type: boolean example: true description: 'Whether the job posting''s settings specify that compensation should be shown to applicants when the posting is listed among other job postings ' updatedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' required: - id - title - jobId - departmentName - teamName - locationName - locationIds - employmentType - isListed - publishedDate - applyLink - shouldDisplayCompensationOnJobBoard - updatedAt responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] jobPostingPublish: post: summary: jobPostingPublish description: Triggered when a job posting is published. Also triggers [jobPostingUpdate](ref:jobpostingupdatewebhook) operationId: jobPostingPublishWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - jobPostingPublish data: type: object properties: jobPosting: $ref: '#/webhooks/jobPostingUpdate/post/requestBody/content/application~1json/schema/properties/data/properties/jobPosting' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] jobPostingUnpublish: post: summary: jobPostingUnpublish description: Triggered when a job posting is unpublished. Also triggers [jobPostingUpdate](ref:jobpostingupdatewebhook) operationId: jobPostingUnpublishWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - jobPostingUnpublish data: type: object properties: jobPosting: $ref: '#/webhooks/jobPostingUpdate/post/requestBody/content/application~1json/schema/properties/data/properties/jobPosting' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] offerCreate: post: summary: offerCreate description: Triggered when a new offer process is created for a candidate operationId: offerCreateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - offerCreate data: type: object properties: offer: allOf: - $ref: '#/paths/~1offer.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items' - type: object properties: versions: type: array items: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' startDate: allOf: - $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' - description: The start date of the offer salary: type: object properties: currencyCode: type: string description: A valid ISO 4217 currency code value: type: number description: An integer. The salary specified by the offer. createdAt: allOf: - $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' - description: The time the offer was created openingId: type: string description: The id of the opening associated with the offer. customFields: type: array items: $ref: '#/paths/~1customField.setValue/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' fileHandles: type: array description: An array of file handles associated with the offer. If an offer letter has been generated, this array includes the file handles for the unsigned .pdf and .docx versions of the letter, as well as for the signed .pdf if it exists. items: $ref: '#/paths/~1candidate.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/fileHandles/items' author: $ref: '#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' approvalStatus: allOf: - type: - string - 'null' enum: - Approved - WaitingOnApprovals - Declined - null - description: The approval status of this offer version. Approved indicates this version has been approved. WaitingOnApprovals indicates approval is pending. Declined indicates this version was declined. This field is null when no approval process has been configured for the offer version. required: - id - createdAt formDefinition: $ref: '#/paths/~1offer.start/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/formDefinition' required: - formDefinition responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] offerDelete: post: summary: offerDelete description: Triggered when an offer process is deleted operationId: offerDeleteWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - offerDelete data: type: object properties: offer: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' applicationId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The id of the application the offer was associated with. responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] offerUpdate: post: summary: offerUpdate description: Triggered when an offer is updated operationId: offerUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - offerUpdate data: type: object properties: offer: $ref: '#/webhooks/offerCreate/post/requestBody/content/application~1json/schema/properties/data/properties/offer' responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] openingCreate: post: summary: openingCreate description: Triggered when a opening is created operationId: openingCreateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - openingCreate data: type: object properties: opening: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' openedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' closedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' isArchived: type: boolean example: false archivedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' closeReasonId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' openingState: type: string enum: - Approved - Closed - Draft - Filled - Open latestVersion: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' identifier: type: string description: type: string authorId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' createdAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' teamId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' jobIds: type: array items: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' targetHireDate: type: string targetStartDate: type: string isBackfill: type: boolean employmentType: $ref: '#/webhooks/jobCreate/post/requestBody/content/application~1json/schema/properties/data/properties/job/properties/employmentType' locationIds: type: array items: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' hiringTeam: type: array items: $ref: '#/paths/~1hiringTeam.addMember/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' customFields: type: array description: An array of custom fields associated with the opening items: $ref: '#/paths/~1customField.setValue/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' required: - id - identifier - description - authorId - createdAt - jobIds - isBackfill - employmentType - locationIds - hiringTeam - customFields required: - id - isArchived - openingState responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] pushToHRIS: post: summary: pushToHRIS description: Triggered when a candidate is pushed to an HRIS system operationId: pushToHRISWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - pushToHRIS data: type: object properties: application: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' createdAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' updatedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' status: type: string enum: - Hired - Archived - Active - Lead description: The status of the application customFields: type: array items: $ref: '#/paths/~1customField.setValue/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' candidate: type: object description: The candidate associated with the application properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' name: type: string example: James primaryEmailAddress: type: object properties: value: type: string description: The email address or phone number of the candidate type: enum: - Personal - Work - Other description: The type of the contact info isPrimary: type: boolean description: Whether the contact info is the primary email or phone number required: - value - type - isPrimary example: value: test@ashbyhq.com type: Work isPrimary: true primaryPhoneNumber: allOf: - $ref: '#/webhooks/pushToHRIS/post/requestBody/content/application~1json/schema/properties/data/properties/application/properties/candidate/properties/primaryEmailAddress' - example: value: 222-222-3344 type: Work isPrimary: true required: - id - name currentInterviewStage: $ref: '#/paths/~1interviewStage.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' source: $ref: '#/paths/~1source.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items' archiveReason: allOf: - $ref: '#/paths/~1archiveReason.list/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/items' - type: object properties: customFields: type: array description: Archive detail custom field values items: $ref: '#/paths/~1customField.setValue/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' required: - customFields archivedAt: allOf: - $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' - description: The timestamp an application was archived job: type: object properties: id: type: string example: 4071538b-3cac-4fbf-ac76-f78ed250ffdd title: type: string example: First Designer locationId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' departmentId: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' required: - id - title creditedToUser: $ref: '#/paths/~1user.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' hiringTeam: type: array items: $ref: '#/paths/~1hiringTeam.addMember/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' appliedViaJobPostingId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The id of the first job posting the candidate applied through. If the candidate submitted applications via multiple job postings for the same job, this will be the earliest one. submitterClientIp: type: string example: 79.255.55.222 description: The IP address (can be v4 or v6) of the client that submitted the application, if it was submitted through the external job board. submitterUserAgent: type: string example: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 description: The user agent of the client that submitted the application, if it was submitted through the external job board. required: - id - createdAt - updatedAt - candidate - status - currentInterviewStage - job - hiringTeam responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] ping: post: summary: ping operationId: pingWebhook description: Called to check that the webhook URL is live tags: - Webhook Payloads requestBody: content: application/json: schema: properties: action: type: string enum: - ping data: type: object properties: webhookActionType: description: The type of action that triggered the webhook—in this case, a ping type: string enum: - ping required: - webhookActionType required: - action - data responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] signatureRequestUpdate: post: summary: signatureRequestUpdate description: "Triggered on updates to requests for e-signatures: when requests are sent, cancelled, completed, or deleted.\n\nDepending on the type of request, additional context will be included in the webhook payload:\n - **Offers** - `\"relatedEntityType\"` is `\"offer\"` and `\"offerId\"` is included.\n - **Applications** - `\"relatedEntityType\"` is `\"application\"` and `\"applicationId\"` is included.\n" operationId: signatureRequestUpdateWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - signatureRequestUpdate data: type: object oneOf: - title: Application Payload properties: relatedEntityType: type: string enum: - application applicationId: type: string format: uuid eventType: type: string enum: - sent - cancelled - completed - deleted - title: Offer Payload properties: relatedEntityType: type: string enum: - offer offerId: type: string format: uuid offerVersionId: type: string format: uuid eventType: type: string enum: - sent - cancelled - completed - deleted responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] surveySubmit: post: summary: surveySubmit description: "The webhook is triggered when a candidate submits a non-anonymous survey. It will not fire for anonymous survey submissions.\n\nDepending on the type of survey that was submitted, survey responses may be included in the webhook payload:\n - **Questionnaires**, **Candidate Data Consent** - Survey responses will be included in the payload.\n - **Candidate Experience** - If the submission is not anonymous, survey responses will be included in the payload. If the submission is anonymous, the webhook will not trigger.\n - **Diversity Surveys**, **EEOC Surveys** - Survey responses will never be included in the payload.\n\nIf survey responses are included in the payload, the `submittedValues` field will contain the submitted answers in an object where each key is the path of the field and the value is the value submitted for that field.\n" operationId: surveySubmitWebhook tags: - Webhook Payloads requestBody: content: application/json: schema: type: object required: - action - data properties: action: type: string enum: - surveySubmit data: type: object properties: surveySubmission: type: object properties: id: $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' surveyFormDefinitionId: description: The id of the survey form definition that this submission is associated with. May be null if the survey form definition has been deleted. oneOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - type: 'null' submittedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' candidateId: allOf: - description: The id of the candidate who submitted the survey - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' applicationId: allOf: - description: The id of the application that the survey submission is associated with - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' surveyType: type: string enum: - CandidateDataConsent - CandidateExperience - Diversity - EEOC - Questionnaire formDefinition: $ref: '#/paths/~1offer.start/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/formDefinition' submittedValues: type: object example: _systemfield_name: Gob Bluth required: - id - submittedAt - candidateId - surveyType responses: '200': description: Return a 200 status to indicate that the data was received successfully security: - WebhookSignature: [] components: securitySchemes: BasicAuth: type: http scheme: basic description: "Use HTTP Basic Auth to authenticate with our API. You must send your API key with every request. \nPut your API key as the basic auth username and leave the password blank.\n" WebhookSignature: type: apiKey in: header name: Ashby-Signature description: '[Optional] If you provide a secret token when configuring your webhook, this will be used to create a digest of the JSON payload sent with each webhook request. The digest will be included in the request under the `Ashby-Signature` http header. It will look like this: `Ashby-Signature: sha256=f3124911d2956f10aa3a49c43a88bdf13bba846e94f0ae2bd7c034f90239bd04` The part before the = indicates the algorithm that was used to compute the hash digest. '