Greenhouse CustomFields API

Org-defined custom fields and their options.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

greenhouse-io-customfields-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Greenhouse Assessment Partner ActivityFeed CustomFields 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: CustomFields
  description: Org-defined custom fields and their options.
paths:
  /custom_fields:
    get:
      tags:
      - CustomFields
      summary: List Custom Fields
      operationId: listCustomFields
      responses:
        '200':
          description: Custom fields.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomField'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    post:
      tags:
      - CustomFields
      summary: Create Custom Field
      operationId: createCustomField
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomField'
      responses:
        '201':
          description: Created.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /custom_fields/{id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      tags:
      - CustomFields
      summary: Retrieve Custom Field
      operationId: getCustomField
      responses:
        '200':
          description: Custom field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomField'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    patch:
      tags:
      - CustomFields
      summary: Update Custom Field
      operationId: updateCustomField
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomField'
      responses:
        '200':
          description: Updated.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    delete:
      tags:
      - CustomFields
      summary: Delete Custom Field
      operationId: deleteCustomField
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      responses:
        '204':
          description: Deleted.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /custom_fields/{id}/custom_field_options:
    parameters:
    - $ref: '#/components/parameters/Id'
    get:
      tags:
      - CustomFields
      summary: List Custom Field Options
      operationId: listCustomFieldOptions
      responses:
        '200':
          description: Options.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldOption'
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    post:
      tags:
      - CustomFields
      summary: Create Custom Field Option
      operationId: createCustomFieldOption
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldOption'
      responses:
        '201':
          description: Created.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
  /custom_fields/{id}/custom_field_options/{option_id}:
    parameters:
    - $ref: '#/components/parameters/Id'
    - name: option_id
      in: path
      required: true
      schema:
        type: integer
    patch:
      tags:
      - CustomFields
      summary: Update Custom Field Option
      operationId: updateCustomFieldOption
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldOption'
      responses:
        '200':
          description: Updated.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
    delete:
      tags:
      - CustomFields
      summary: Delete Custom Field Option
      operationId: deleteCustomFieldOption
      parameters:
      - $ref: '#/components/parameters/OnBehalfOf'
      responses:
        '204':
          description: Deleted.
        4XX:
          $ref: '#/components/responses/ErrorResponse'
components:
  responses:
    ErrorResponse:
      description: Error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    Id:
      name: id
      in: path
      required: true
      schema:
        type: integer
    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
  schemas:
    CustomField:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        field_type:
          type: string
          enum:
          - job
          - candidate
          - application
          - offer
          - opening
          - department
          - office
          - user
          - prospect
        value_type:
          type: string
          enum:
          - short_text
          - long_text
          - currency
          - currency_range
          - date
          - number
          - number_range
          - single_select
          - multi_select
          - url
          - yes_no
        active:
          type: boolean
        required:
          type: boolean
        private:
          type: boolean
        custom_field_options:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldOption'
    CustomFieldOption:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        priority:
          type: integer
        external_id:
          type: string
          nullable: 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).