openapi: 3.0.3
info:
title: Duolingo/Guide Interviewer Recommendations - OpenAPI 3.0
description: |-
This is a proposal for the communication between Duolingo and Guide providing an endpoint for Guide to query and recieve back interviewers to use for a given interview panel. This API would be built by and maintained by Duolingo.
Security is to be provided by a simple API key that will be provided by Duolingo to Guide and checked on request.
version: 1.0.0
paths:
/interviews/interviewer-recommendations:
post:
description: |-
The main endpoint of this API that will be called to get interviewer recommendations for an interview. Note: we are agnostic as to the name of this endpoint, the current name can be treated as a placeholder.
Takes in a set of InterviewRequirements that make up the panel, and will get back a list of InterviewRecommendations.
operationId: getInterviewerRecommendations
security:
- api_key: []
requestBody:
content:
application/json:
schema:
type: object
properties:
interviewRequirements:
type: array
items:
$ref: '#/components/schemas/InterviewRequirement'
responses:
'200':
description: Default response
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
description: Whether the operation was successful or not.
error:
type: string
description: Optional. If success is false will include an error message.
interviewRecommendations:
$ref: '#/components/schemas/InterviewRecommendation'
'401':
description: Invalid API Key
components:
schemas:
InterviewRequirement:
type: object
properties:
id:
type: string
format: uuid
description: A unique identifier generated by Guide for this requirement.
startTime:
type: string
format: date-time
description: The proposed start time of this interview, in ISO format.
example: 2024-04-03T10:00:00.000Z
duration:
type: integer
format: int64
description: The length of the interview in minutes.
example: 30
interviewId:
type: string
format: uuid
description: A unique identifier generated by Guide for this interview.
interviewName:
type: string
description: The user friendly string that defines the interview. Given that the interview ids will not have meaning in the Duolingo system it is proposed that this will be used as the identifier.
interviewerRequirements:
type: array
description: A list of interviewer requirements for this interview.
items:
$ref: '#/components/schemas/InterviewerRequirement'
InterviewerRequirement:
type: object
properties:
id:
type: string
format: uuid
description: A unique identifier generated by Guide for this interviewer requirement.
interviewerOptionEmails:
type: array
example: []
description: The email addresses of the interviewers required for this requirement. One of these should be used as the interviewer. This is optional; either this or the interviewerPoolId will be provided.
items:
type: string
format: email
interviewerPoolId:
type: string
format: uuid
description: The unique identifier for the interviewer pool that is to be used. This is optional; either this or the interviewerOptionEmails is provided. These are generated by Guide and provided via a separate API so that Duolingo has knowledge of these ids, and the users in the pools etc.
includeTrainee:
type: boolean
description: Whether a trainee should be included as part of this requirement. Will only be provided if an interviewerPoolId is provided. If true, then this requirement requires both a lead interviewer and a trainee to be chosen from the pool. If false, only a lead interviewer should be provided.
InterviewRecommendation:
type: object
properties:
interviewRequirementId:
type: string
format: uuid
description: The unique identifier that was provided by Guide for the interview requirement. This represents the interview requirement these interviewers are for.
interviewers:
type: array
description: The list of fulfill interviewer requirements for this interview.
items:
$ref: '#/components/schemas/InterviewerRecommendation'
InterviewerRecommendation:
type: object
properties:
interviewerRequirementId:
type: string
format: uuid
description: The unique identifier that was provided by Guide for the interviewer requirement. This represents the interviewer requirement this is fulfilling.
interviewerEmails:
type: array
description: 'A list of interviewers that should be used to fulfil this requirement. Note: although this is an array we would currently expect the length to always be 1.'
items:
type: string
format: email
traineeEmails:
type: array
description: 'A list of trainee that should be used to fulfil this requirement. Note: although this is an array we would currently expect the length to always be 1.'
items:
type: string
format: email
securitySchemes:
api_key:
type: apiKey
name: api_key
in: header