Greenhouse JobOpenings API

Individual openings under a Job.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

greenhouse-io-jobopenings-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Greenhouse Assessment Partner ActivityFeed JobOpenings 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: JobOpenings
  description: Individual openings under a Job.
paths:
  /openings:
    get:
      tags:
      - JobOpenings
      summary: List Openings
      operationId: listOpenings
      parameters:
      - $ref: '#/components/parameters/Page'
      - $ref: '#/components/parameters/PerPage'
      responses:
        '200':
          description: Array of openings.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Opening'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    post:
      tags:
      - JobOpenings
      summary: Create Opening
      operationId: createOpening
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Opening'
      responses:
        '201':
          description: Created.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    delete:
      tags:
      - JobOpenings
      summary: Delete Openings Bulk
      operationId: deleteOpenings
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      responses:
        '204':
          description: Deleted.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /openings/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      tags:
      - JobOpenings
      summary: Retrieve Opening
      operationId: getOpening
      responses:
        '200':
          description: Opening.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Opening'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    patch:
      tags:
      - JobOpenings
      summary: Update Opening
      operationId: updateOpening
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Opening'
      responses:
        '200':
          description: Updated.
        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:
    Opening:
      type: object
      properties:
        id:
          type: integer
        opening_id:
          type: string
        status:
          type: string
          enum:
          - open
          - closed
        opened_at:
          type: string
          format: date-time
        closed_at:
          type: string
          format: date-time
          nullable: true
        application_id:
          type: integer
          nullable: true
        close_reason:
          type: object
          nullable: true
          properties:
            id:
              type: integer
            name:
              type: string
        custom_fields:
          type: object
          additionalProperties: true
    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).