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).