openapi: 3.1.0 info: version: 1.0.0 title: Ashby API Key Job Posting 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: Job Posting paths: /jobPosting.info: post: summary: jobPosting.info description: "Retrieve an individual job posting\n\n**Requires the [`jobsRead`](authentication#permissions-jobpostinginfo) permission.**\n\nResult fields:\n- `linkedData` - Object that can be used to populate \"rich results\" in search engines. [See more info here](https://developers.google.com/search/docs/data-types/job-posting).\n- `applicationFormDefinition` -\tSee the guide on [Creating a custom careers page](https://developers.ashbyhq.com/docs/creating-a-custom-careers-page).\n" operationId: jobPostingInfo tags: - Job Posting requestBody: content: application/json: schema: type: object properties: jobPostingId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The id of the job posting to return jobBoardId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: If provided, returns the job posting data for the specified job board. If omitted, defaults to an external job board. expand: type: array description: "Choose to expand the result and include additional data for related objects. \n" items: type: string enum: - job required: - jobPostingId responses: '200': description: Responses for the jobPosting.info endpoint content: application/json: schema: oneOf: - title: Success response allOf: - $ref: '#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0' - type: object properties: results: properties: id: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: The job posting's id title: type: string description: The job posting's title example: Posting Title descriptionPlain: type: string description: A plaintext version of the job posting's description example: "This example role will be part of an example team and will report to the example manager. The new hire plays a critical role in various example workflows.\n\n\n\nREQUIREMENTS\n\n - Experience writing good example job descriptions\n\n - Other exemplary skills\n\n - 3-5 years prior experience in this role\n\n - Motivation\n\n - Great english language skills\n \n\n\nABOUT THE TEAM\n\n\nExample org is a leading software company. Example org allows real-time collaboration on important example workflows. Founded in 2012 we have over 10,000 customers worldwide and are backed by fantastic investors such as Sequoia Capital.\n\n" descriptionHtml: type: string description: An HTML version of the job posting's description example:

This example role will be part of an example team and will report to the example manager. The new hire plays a critical role in various example workflows.


Requirements

About the Team


Example org is a leading software company. Example org allows real-time collaboration on important example workflows. Founded in 2012 we have over 10,000 customers worldwide and are backed by fantastic investors such as Sequoia Capital.

descriptionSocial: type: string description: A shortened job posting description displayed when shared on social media, limited to 200 characters. example: Example org allows real-time collaboration on important example workflows. When you join as an example role, part of the example team, you will perform a critical role in various example workflows. descriptionParts: type: object description: The above description broken down into the actual description on the job, and the Job Post Description Opening and Closing that is set by the admin in Ashby's Job Boards → Theme → Messaging settings. properties: descriptionOpening: allOf: - $ref: '#/paths/~1jobPosting.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/descriptionParts/properties/descriptionBody/allOf/0' - description: The content set in the Job Post Description Opening theme settings - properties: html: description: An HTML version of the Job Post Description Opening theme settings example: null plain: description: A plaintext version of the Job Post Description Opening theme settings example: null descriptionBody: allOf: - type: object properties: html: type: string plain: type: string required: - html - plain - description: The description set on the job posting - properties: html: description: An HTML version of the description set on the job posting example:

This example role will be part of an example team and will report to the example manager. The new hire plays a critical role in various example workflows.


Requirements

plain: description: An plaintext version of the description set on the job posting example: This example role will be part of an example team and will report to the example manager. The new hire plays a critical role in various example workflows.\n\n\n\nREQUIREMENTS\n\n - Experience writing good example job descriptions\n\n - Other exemplary skills\n\n - 3-5 years prior experience in this role\n\n - Motivation\n\n - Great english language skills\n descriptionClosing: allOf: - $ref: '#/paths/~1jobPosting.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/descriptionParts/properties/descriptionBody/allOf/0' - description: The content set in the Job Post Description Closing theme settings - properties: html: description: An HTML version of the Job Post Description Closing theme settings example:

About the Team


Example org is a leading software company. Example org allows real-time collaboration on important example workflows. Founded in 2012 we have over 10,000 customers worldwide and are backed by fantastic investors such as Sequoia Capital.

plain: description: A plaintext version of the Job Post Description Closing theme settings example: ABOUT THE TEAM\n\n\nExample org is a leading software company. Example org allows real-time collaboration on important example workflows. Founded in 2012 we have over 10,000 customers worldwide and are backed by fantastic investors such as Sequoia Capital.\n\n departmentName: type: string example: People description: The name of the department associated with the job posting teamName: type: string example: Recruiting Operations description: The name of the team associated with the job posting teamNameHierarchy: type: array items: type: string example: - People - Recruiting - Recruiting Operations description: The hierarchy of team names associated with the job posting. jobId: allOf: - description: The id of the job associated with the job posting - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' locationName: type: string example: Springfield description: The name of the primary location associated with the job posting locationIds: $ref: '#/webhooks/jobPostingUpdate/post/requestBody/content/application~1json/schema/properties/data/properties/jobPosting/properties/locationIds' linkedData: type: object description: An object that can be used to populate "rich results" in search engines. (https://developers.google.com/search/docs/data-types/job-posting) properties: '@context': type: string example: https://schema.org/ '@type': type: string example: JobPosting title: type: string example: Posting Title description: type: string example:

This example role will be part of an example team and will report to the example manager. The new hire plays a critical role in various example workflows.


Requirements

About the Team


Example org is a leading software company. Example org allows real-time collaboration on important example workflows. Founded in 2012 we have over 10,000 customers worldwide and are backed by fantastic investors such as Sequoia Capital.

identifier: type: object properties: '@type': type: string example: PropertyValue name: type: string example: Posting Title value: type: string example: 4be0e8c0-9323-43a0-ab48-506789ab9c16 datePosted: type: string example: '2022-07-22' hiringOrganization: type: object properties: '@type': type: string example: Organization name: type: string example: Example org sameAs: type: string example: 34d7c77d-e9b2-5a09-a882-cb23a225f2ec.com jobLocation: type: object properties: '@type': type: string example: Place address: type: object properties: '@type': type: string example: PostalAddress employmentType: type: string enum: - FULL_TIME - PART_TIME - CONTRACTOR - TEMPORARY - INTERN example: FULL_TIME publishedDate: type: string example: '2022-07-22' 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 address: allOf: - description: The address of the job posting - $ref: '#/paths/~1location.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/address' isRemote: description: Whether or not the job posting location is remote type: boolean workplaceType: allOf: - description: The type of workplace. - $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' applicationFormDefinition: allOf: - $ref: '#/paths/~1offer.start/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/properties/formDefinition' - description: See the guide on [Creating a Custom Careers Page](https://developers.ashbyhq.com/docs/creating-a-custom-careers-page) surveyFormDefinitions: type: array items: $ref: '#/paths/~1surveyFormDefinition.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results' description: Additional survey forms to be collected alongside the application form. See the guide on [Creating a Custom Careers Page](https://developers.ashbyhq.com/docs/creating-a-custom-careers-page) isListed: type: boolean example: true description: Whether or not the job posting is listed suppressDescriptionOpening: type: boolean example: true description: When true, the job description opening from the brand will be suppressed. descriptionOpening will be returned as null. suppressDescriptionClosing: type: boolean example: true description: When true, the job description closing from the brand will be suppressed. descriptionClosing will be returned as null. externalLink: type: string example: https://jobs.ashbyhq.com/70b51cc4-7f34-5567-92bd-96f354f7439a/4be0e8c0-9323-43a0-ab48-506789ab9c16 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. compensation: type: object description: Compensation ranges associated with the job posting and related settings required: - compensationTiers - shouldDisplayCompensationOnJobBoard properties: compensationTierSummary: type: string example: $72K – $270K • 1% – 2.25% • Offers Bonus • Multiple Ranges description: 'A summary of *all* the job posting''s valid `compensationTiers` in the same format shown on Ashby-hosted Job Boards ' summaryComponents: type: array items: allOf: - $ref: '#/paths/~1job.updateCompensation/post/requestBody/content/application~1json/schema/properties/compensationTiers/items/properties/components/items/allOf/0' - type: object description: 'A part of a compensation tier that represents one specific type of compensation, e.g. the "Salary" or the "Bonus." ' properties: summary: type: string example: €72K – €100K description: The summary of this component in the same format shown on Ashby-hosted Job Boards required: - summary description: 'The maximum and minimum compensation ranges across *all* the posting''s `compensationTiers` that make up `compensationTierSummary` ' example: - summary: €72K – €270K compensationType: Salary interval: 1 YEAR currencyCode: EUR minValue: 72023.45 maxValue: 270450 - summary: 1% – 2.25% compensationType: EquityPercentage interval: NONE minValue: 1 maxValue: 2.25 - summary: Offers Bonus compensationType: Bonus interval: 1 YEAR minValue: null maxValue: null compensationTiers: $ref: '#/paths/~1job.updateCompensation/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results/allOf/0/properties/compensationTiers' description: The compensation ranges that can be offered to applicants for this posting shouldDisplayCompensationOnJobBoard: type: boolean example: true description: 'Whether the job posting''s settings specify that compensation should be shown to applicants ' updatedAt: $ref: '#/paths/~1candidate.createNote/post/requestBody/content/application~1json/schema/properties/createdAt' applicationLimitCalloutHtml: type: string description: An HTML version of any communication you would like to show to applicants about the application limit for this job posting example: "
\n

Please Note: we have set up limits for applications for this role. It is in the Product Limit group. The following limits apply to applications for all jobs within this group:

\n \n
\n" required: - id - title - descriptionPlain - descriptionHtml - descriptionParts - departmentName - teamName - jobId - locationName - locationIds - linkedData - publishedDate - employmentType - applicationFormDefinition - surveyFormDefinitions - isListed - applyLink - compensation - updatedAt required: - results - title: Error response $ref: '#/paths/~1report.generate/post/responses/429/content/application~1json/schema' /jobPosting.list: post: summary: jobPosting.list description: "Lists all published job postings\n\n**Requires the [`jobsRead`](authentication#permissions-jobpostinglist) permission.**\n\n**Important**: By default, this endpoint includes all listed and unlisted job postings. Unlisted job postings should not be displayed publicly. \nIf you are using the API to publicly expose job postings, set the `listedOnly` parameter to `true` when calling this API so that you only fetch listed job postings that can be displayed publicly.\n" operationId: jobPostingList tags: - Job Posting requestBody: content: application/json: schema: type: object properties: location: type: string description: filter by location name (case sensitive) department: type: string description: filter by department name (case sensitive) listedOnly: type: boolean description: If true, filter out unlisted job postings. default: false jobBoardId: allOf: - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' - description: If provided, only returns the job postings on the specified job board. If omitted, this API will return the job postings on the primary external job board. responses: '200': description: Responses for the jobPosting.list endpoint content: application/json: schema: oneOf: - title: Success response allOf: - $ref: '#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0' - type: object properties: results: type: array items: $ref: '#/webhooks/jobPostingUpdate/post/requestBody/content/application~1json/schema/properties/data/properties/jobPosting' required: - results - title: Error response $ref: '#/paths/~1report.generate/post/responses/429/content/application~1json/schema' /jobPosting.update: post: summary: jobPosting.update operationId: jobPostingUpdate description: 'Updates an existing job posting. **Requires the [`jobsWrite`](authentication#permissions-jobpostingupdate) permission.** **Note on updating the description**: When job description openings and closings are not suppressed, the `descriptionHtml` field returned in `jobPosting.info` may contain content that is not modifiable through the API. Only the content of the `descriptionParts.descriptionBody` field of the `jobPosting.info` endpoint is modifiable through this call. To completely customize the description, set both suppressDescriptionOpening and suppressDescriptionClosing to true. ' tags: - Job Posting requestBody: content: application/json: schema: type: object properties: jobPostingId: allOf: - description: The unique id of the job posting to update. - $ref: '#/paths/~1interviewerPool.addUser/post/requestBody/content/application~1json/schema/properties/userId' title: type: string example: Software Engineer description: A new title for the job posting. workplaceType: allOf: - description: The type of workplace. LocationHierarchies cannot be labeled with a workplaceType. - $ref: '#/paths/~1location.create/post/requestBody/content/application~1json/schema/properties/workplaceType/allOf/1' suppressDescriptionOpening: type: boolean example: true description: When true, the job description opening from the brand will be suppressed. descriptionOpening will be returned as null. suppressDescriptionClosing: type: boolean example: true description: When true, the job description closing from the brand will be suppressed. descriptionClosing will be returned as null. description: type: object description: 'An HTML block of the job posting description. Please see below for supported tags. **Note**: When job description openings and closings are not suppressed, the `descriptionHtml` field returned in `jobPosting.info` may contain content that is not modifiable through the API. Only the content of the `descriptionParts.descriptionBody` field of the `jobPosting.info` endpoint is modifiable through this call. To completely customize the description, set both suppressDescriptionOpening and suppressDescriptionClosing to true. ' properties: type: type: string enum: - text/html content: type: string description: "The HTML content of the Job Posting. The following tags will accept updates. Updates to any other tags will be stripped out or not applied. \n- Headings - ``\n- Bold - ``\n- Italic - ``\n- Underline - ``\n- Links - ``\n- Bulleted Lists - `
    `, `
  • `\n- Ordered Lists - `
      `, `
    1. `\n- Code - ``\n- Code blocks - `
      `\n"
                        required:
                        - type
                        - content
                    required:
                    - jobPostingId
            responses:
              '200':
                description: Responses for the jobPosting.update endpoint
                content:
                  application/json:
                    schema:
                      oneOf:
                      - title: Success response
                        allOf:
                        - $ref: '#/paths/~1job.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/0'
                        - type: object
                          properties:
                            results:
                              $ref: '#/paths/~1jobPosting.info/post/responses/200/content/application~1json/schema/oneOf/0/allOf/1/properties/results'
                          required:
                          - results
                      - $ref: '#/paths/~1report.generate/post/responses/429/content/application~1json/schema'
      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.
      
              '