Greenhouse GraphQL API

Single GraphQL endpoint for all Onboarding operations.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

greenhouse-io-graphql-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Greenhouse Assessment Partner ActivityFeed GraphQL 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: GraphQL
  description: Single GraphQL endpoint for all Onboarding operations.
paths:
  /graphql:
    post:
      tags:
      - GraphQL
      summary: Execute Onboarding GraphQL
      description: 'Execute a GraphQL query or mutation against the Greenhouse Onboarding schema.

        Supported root queries include `employee(id)`, `employees`, `departments`,

        `locations`, `customFields`, `teams`, and `rateLimit`. Supported mutations

        include department / location CRUD, `addPendingHire`, and `updateEmployeeProfile`.

        Errors use the GraphQL `errors` array with codes: Authentication, Validation,

        NotFound, Server, RateLimit.

        '
      operationId: executeOnboardingGraphQL
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GraphQLRequest'
      responses:
        '200':
          description: GraphQL response (errors carried inside the body).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GraphQLResponse'
        '401':
          description: Authentication failed.
        '429':
          description: Rate or complexity limit exceeded.
  /graphql/introspection:
    get:
      tags:
      - GraphQL
      summary: Onboarding GraphQL Schema (Documentation Pointer)
      description: 'GraphQL schema is discovered via introspection by POSTing a standard introspection

        query to /graphql. This path is documentation-only and not an additional HTTP route.

        '
      operationId: getOnboardingIntrospectionDocs
      responses:
        '200':
          description: See documentation.
components:
  schemas:
    GraphQLRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
        operationName:
          type: string
        variables:
          type: object
          additionalProperties: true
    GraphQLResponse:
      type: object
      properties:
        data:
          type: object
          additionalProperties: true
          nullable: true
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              path:
                type: array
                items:
                  type: string
              extensions:
                type: object
                properties:
                  code:
                    type: string
                    enum:
                    - Authentication
                    - Validation
                    - NotFound
                    - Server
                    - RateLimit
        extensions:
          type: object
          properties:
            rateLimit:
              type: object
              properties:
                cost:
                  type: integer
                remaining:
                  type: integer
                resetAt:
                  type: string
                  format: date-time
  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).