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