Greenhouse JobPosts API

Public-facing job postings and their statuses.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

greenhouse-io-jobposts-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Greenhouse Assessment Partner ActivityFeed JobPosts API
  description: 'The Assessment Partner API defines the contract that assessment vendors implement so

    Greenhouse can list available tests, send a test to a candidate, and retrieve the

    candidate''s results. Endpoints are hosted by the partner (not Greenhouse) and are

    secured with HTTP Basic over HTTPS. Greenhouse may also receive PATCH callbacks from

    the partner with completed test status; otherwise it polls `test_status` hourly for

    up to 8 weeks. API keys must be fewer than 171 characters.

    '
  version: 1.0.0
  contact:
    name: Greenhouse Software
    url: https://www.greenhouse.com
    email: developers@greenhouse.io
servers:
- url: https://{partner_host}/{base_path}
  description: Partner-hosted endpoint
  variables:
    partner_host:
      default: partner.example.com
    base_path:
      default: greenhouse-assessment
security:
- BasicAuth: []
tags:
- name: JobPosts
  description: Public-facing job postings and their statuses.
paths:
  /job_posts:
    get:
      tags:
      - JobPosts
      summary: List Job Posts
      operationId: listJobPosts
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      - name: live
        in: query
        schema:
          type: boolean
      - name: active
        in: query
        schema:
          type: boolean
      responses:
        '200':
          description: Array of job posts.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JobPost'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /job_posts/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      tags:
      - JobPosts
      summary: Retrieve Job Post
      operationId: getJobPost
      responses:
        '200':
          description: Job post.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobPost'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    patch:
      tags:
      - JobPosts
      summary: Update Job Post
      operationId: updateJobPost
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobPost'
      responses:
        '200':
          description: Updated.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /job_posts/{id}/custom_locations:
    get:
      tags:
      - JobPosts
      summary: List Job Post Custom Locations
      operationId: listJobPostCustomLocations
      parameters:
      - $ref: '#/components/parameters/Id'
      responses:
        '200':
          description: Custom locations.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    name:
                      type: string
                    region:
                      type: string
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /job_posts/{id}/status:
    patch:
      tags:
      - JobPosts
      summary: Update Job Post Status
      operationId: updateJobPostStatus
      parameters:
      - $ref: '#/components/parameters/Id'
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - status
              properties:
                status:
                  type: string
                  enum:
                  - live
                  - offline
      responses:
        '200':
          description: Status changed.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /jobs/{job_id}/job_posts:
    get:
      tags:
      - JobPosts
      summary: List Job Posts For Job
      operationId: listJobJobPosts
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: Job posts for a job.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/JobPost'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /jobs/{job_id}/job_posts/{id}:
    get:
      tags:
      - JobPosts
      summary: Retrieve Job Job Post
      operationId: getJobJobPost
      parameters:
      - name: job_id
        in: path
        required: true
        schema:
          type: integer
      - $ref: '#/components/parameters/Id'
      responses:
        '200':
          description: Job post.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobPost'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      schema:
        type: integer
    PerPage:
      name: per_page
      in: query
      description: Default 100, max 500.
      schema:
        type: integer
        default: 100
        maximum: 500
    OnBehalfOf:
      name: On-Behalf-Of
      in: header
      required: false
      description: The ID of the Greenhouse user the request is being made on behalf of.
      schema:
        type: integer
    Page:
      name: page
      in: query
      schema:
        type: integer
        default: 1
  responses:
    ErrorResponse:
      description: Error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    JobPost:
      type: object
      properties:
        id:
          type: integer
        title:
          type: string
        location:
          type: object
          properties:
            name:
              type: string
        internal:
          type: boolean
        active:
          type: boolean
        live:
          type: boolean
        first_published_at:
          type: string
          format: date-time
          nullable: true
        content:
          type: string
        questions:
          type: array
          items:
            type: object
    Error:
      type: object
      properties:
        message:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
              message:
                type: string
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: HTTP Basic; the API key is Base64-encoded and used as the username (key must be <171 chars).