{
  "openapi": "3.0.4",
  "info": {
    "title": "Get into Teaching API - V1",
    "description": "\n                            Provides a RESTful API for integrating with the Get into Teaching CRM.\n                            The Get into Teaching (GIT) API sits in front of the GIT CRM, which uses the [Microsoft Dynamics365](https://docs.microsoft.com/en-us/dynamics365/) platform (the [Customer Engagement](https://docs.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/overview) module is used for storing Candidate information and the [Marketing](https://docs.microsoft.com/en-us/dynamics365/marketing/developer/using-events-api) module for managing Events).\n                            The GIT API aims to provide:\n                            * Simple, task-based RESTful APIs.\n                            * Message queueing (while the GIT CRM is offline for updates).\n                            * Validation to ensure consistency across services writing to the GIT CRM.\n                        ",
    "license": {
      "name": "MIT License",
      "url": "https://opensource.org/licenses/MIT"
    },
    "version": "v1"
  },
  "paths": {
    "/api/callback_booking_quotas": {
      "get": {
        "tags": [
          "Callback Booking Quotas"
        ],
        "summary": "Retrieves all callback booking quotas.",
        "operationId": "GetCallbackBookingQuotas",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CallbackBookingQuota"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CallbackBookingQuota"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/CallbackBookingQuota"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/get_into_teaching/callbacks": {
      "post": {
        "tags": [
          "Get into Teaching"
        ],
        "summary": "Schedule a callback for the candidate.",
        "description": "Queues a candidate upsert job.",
        "operationId": "BookGetIntoTeachingCallback",
        "requestBody": {
          "description": "Candidate to book a callback for.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetIntoTeachingCallback"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/GetIntoTeachingCallback"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/GetIntoTeachingCallback"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/get_into_teaching/callbacks/exchange_access_token/{accessToken}": {
      "post": {
        "tags": [
          "Get into Teaching"
        ],
        "summary": "Retrieves a pre-populated GetIntoTeachingCallback for the candidate.",
        "description": "\n                        Retrieves a pre-populated GetIntoTeachingCallback for the candidate. The `accessToken` is obtained from a \n                        `POST /candidates/access_tokens` request (you must also ensure the `ExistingCandidateRequest` payload you \n                        exchanged for your token matches the request payload here).",
        "operationId": "ExchangeAccessTokenForGetIntoTeachingCallback",
        "parameters": [
          {
            "name": "accessToken",
            "in": "path",
            "description": "Access token (PIN code).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/get_into_teaching/callbacks/matchback": {
      "post": {
        "tags": [
          "Get into Teaching"
        ],
        "summary": "Perform a matchback operation to retrieve a pre-populated GetIntoTeachingCallback for the candidate.",
        "description": "Attempts to matchback against a known candidate and returns a pre-populated GetIntoTeachingCallback if a match is found.",
        "operationId": "MatchbackGetIntoTeachingCallback",
        "requestBody": {
          "description": "Candidate details to matchback.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetIntoTeachingCallback"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/candidates/access_tokens": {
      "post": {
        "tags": [
          "Candidates"
        ],
        "summary": "Creates a candidate access token.",
        "description": "\r\n                Finds a candidate matching at least 3 of the provided CandidateAccessTokenRequest attributes (including email). \r\n                If a candidate is found, an access token (PIN code) will be sent to the candidate email address \r\n                that can then be used for verification.",
        "operationId": "CreateCandidateAccessToken",
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teacher_training_adviser/candidates": {
      "post": {
        "tags": [
          "Teacher Training Adviser"
        ],
        "summary": "Sign up a candidate for the Teacher Training Adviser service.",
        "description": "Queue a candidate upsert job.",
        "operationId": "SignUpTeacherTrainingAdviserCandidate",
        "requestBody": {
          "description": "Candidate to sign up for the Teacher Training Adviser service.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teacher_training_adviser/candidates/exchange_access_token/{accessToken}": {
      "post": {
        "tags": [
          "Teacher Training Adviser"
        ],
        "summary": "Retrieves a pre-populated TeacherTrainingAdviserSignUp for the candidate.",
        "description": "\r\n                Retrieves a pre-populated TeacherTrainingAdviserSignUp for the candidate. The `accessToken` is obtained from a \r\n                `POST /candidates/access_tokens` request (you must also ensure the `ExistingCandidateRequest` payload you \r\n                exchanged for your token matches the request payload here).",
        "operationId": "ExchangeAccessTokenForTeacherTrainingAdviserSignUp",
        "parameters": [
          {
            "name": "accessToken",
            "in": "path",
            "description": "Access token (PIN code).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teacher_training_adviser/candidates/matchback": {
      "post": {
        "tags": [
          "Teacher Training Adviser"
        ],
        "summary": "Perform a matchback operation to retrieve a pre-populated TeacherTrainingAdviserSignUp for the candidate.",
        "description": "Attempts to matchback against a known candidate and returns a pre-populated TeacherTrainingAdviser sign up if a match is found.",
        "operationId": "MatchbackCandidate",
        "requestBody": {
          "description": "Candidate details to matchback.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeacherTrainingAdviserSignUp"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/schools_experience/candidates": {
      "post": {
        "tags": [
          "Schools Experience"
        ],
        "summary": "Sign up a candidate for the Schools Experience service.",
        "description": "\n                Upsert a candidate. Returns the updated candidate information in the body of the response along \n                with a Location header which specifies the location of the candidate",
        "operationId": "SignUpSchoolsExperienceCandidate",
        "requestBody": {
          "description": "Candidate to sign up for the Schools Experience service.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SchoolsExperienceSignUp"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SchoolsExperienceSignUp"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SchoolsExperienceSignUp"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      },
      "get": {
        "tags": [
          "Schools Experience"
        ],
        "summary": "Retrieves existing SchoolsExperienceSignUps for the candidate `ids`.",
        "operationId": "GetSchoolsExperienceSignUps",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "A collection of `Candidate` `id`s.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/schools_experience/candidates/{id}": {
      "get": {
        "tags": [
          "Schools Experience"
        ],
        "summary": "Retrieves an existing SchoolsExperienceSignUp for the candidate.",
        "operationId": "GetSchoolsExperienceSignUp",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The `id` of the `Candidate`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/schools_experience/candidates/exchange_access_token/{accessToken}": {
      "post": {
        "tags": [
          "Schools Experience"
        ],
        "summary": "Retrieves a pre-populated SchoolsExperienceSignUp for the candidate.",
        "description": "\n                Retrieves a pre-populated SchoolsExperienceSignUp for the candidate. The `accessToken` is obtained from a \n                `POST /candidates/access_tokens` request (you must also ensure the `ExistingCandidateRequest` payload you \n                exchanged for your token matches the request payload here).",
        "operationId": "ExchangeAccessTokenForSchoolsExperienceSignUp",
        "parameters": [
          {
            "name": "accessToken",
            "in": "path",
            "description": "Access token (PIN code).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/SchoolsExperienceSignUp"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/schools_experience/candidates/{id}/school_experience": {
      "post": {
        "tags": [
          "Schools Experience"
        ],
        "summary": "Add a school experience to the candidate.",
        "description": "Adds a new school experience to the candidate record",
        "operationId": "AddSchoolExperience",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The `id` of the `Candidate`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "description": "School experience.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateSchoolExperience"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateSchoolExperience"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateSchoolExperience"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/lookup_items/countries": {
      "get": {
        "tags": [
          "Lookup Items"
        ],
        "summary": "Retrieves the list of countries.",
        "operationId": "GetCountries",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/lookup_items/degree_countries": {
      "get": {
        "tags": [
          "Lookup Items"
        ],
        "summary": "Retrieves the list of degree countries.",
        "operationId": "GetDegreeCountries",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Country"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/lookup_items/teaching_subjects": {
      "get": {
        "tags": [
          "Lookup Items"
        ],
        "summary": "Retrieves the list of teaching subjects.",
        "operationId": "GetTeachingSubjects",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingSubject"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingSubject"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingSubject"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/mailing_list/members": {
      "post": {
        "tags": [
          "Mailing List"
        ],
        "summary": "Adds a new member to the mailing list.",
        "description": "\n        If the `CandidateId` is specified then the existing candidate will be \n        added to the mailing list, otherwise a new candidate will be created.",
        "operationId": "AddMailingListMember",
        "requestBody": {
          "description": "Member to add to the mailing list.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MailingListAddMember"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/MailingListAddMember"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/MailingListAddMember"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/DegreeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/mailing_list/members/exchange_access_token/{accessToken}": {
      "post": {
        "tags": [
          "Mailing List"
        ],
        "summary": "Retrieves a pre-populated MailingListAddMember for the candidate.",
        "description": "\n                Retrieves a pre-populated MailingListAddMember for the candidate. The `accessToken` is obtained from a \n                `POST /candidates/access_tokens` request (you must also ensure the `ExistingCandidateRequest` payload you \n                exchanged for your token matches the request payload here).",
        "operationId": "ExchangeAccessTokenForMailingListAddMember",
        "parameters": [
          {
            "name": "accessToken",
            "in": "path",
            "description": "Access token (PIN code).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/mailing_list/members/exchange_magic_link_token/{magicLinkToken}": {
      "get": {
        "tags": [
          "Mailing List"
        ],
        "summary": "Retrieves a pre-populated MailingListAddMember for the candidate.",
        "description": "\n                Retrieves a pre-populated MailingListAddMember for the candidate. The `magicLinkToken` is obtained from a \n                `POST /candidates/magic_link_tokens` request.",
        "operationId": "ExchangeMagicLinkTokenForMailingListAddMember",
        "parameters": [
          {
            "name": "magicLinkToken",
            "in": "path",
            "description": "Magic link token.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/MailingListAddMember"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/CandidateMagicLinkExchangeResult"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CandidateMagicLinkExchangeResult"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/CandidateMagicLinkExchangeResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/operations/generate_mapping_info": {
      "get": {
        "tags": [
          "Operations"
        ],
        "summary": "Generates the mapping information.",
        "description": "Generates the mapping information describing how the models in the API map to the corresponding entities in Dynamics 365.",
        "operationId": "GenerateMappingInfo",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MappingInfo"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MappingInfo"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MappingInfo"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/operations/health_check": {
      "get": {
        "tags": [
          "Operations"
        ],
        "summary": "Performs a health check.",
        "operationId": "HealthCheck",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/operations/pause_crm_integration": {
      "put": {
        "tags": [
          "Operations"
        ],
        "summary": "Temporarily pauses the integration with the CRM.",
        "description": "The CRM is taken offline for updates occasionally; this can result in errors when the API attempts to call out to the CRM. The CRM can call this endpoint to pause the API -> CRM integration (if not manually resumed it will auto-resume in 6 hours).",
        "operationId": "PauseCrmIntegration",
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/operations/resume_crm_integration": {
      "put": {
        "tags": [
          "Operations"
        ],
        "summary": "Resumes the integration with the CRM (after being paused).",
        "operationId": "ResumeCrmIntegration",
        "responses": {
          "204": {
            "description": "No Content",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/HealthCheckResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/operations/backfill_apply_candidates": {
      "post": {
        "tags": [
          "Operations"
        ],
        "summary": "Triggers a backfill job to sync the CRM with the Apply candidates.",
        "description": "The backfill will query all candidate information from the Apply API and queue jobs to sync the data with the CRM.",
        "operationId": "BackfillApplyCandidates",
        "parameters": [
          {
            "name": "updatedSince",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/operations/backfill_apply_candidates_from_ids": {
      "post": {
        "tags": [
          "Operations"
        ],
        "summary": "Triggers a backfill job to sync the CRM with the Apply candidates for specified candidate Ids.",
        "description": "The backfill will query all candidate information from the Apply API and queue jobs to sync the data with the CRM.",
        "operationId": "BackfillApplyCandidatesFromIds",
        "requestBody": {
          "description": "Candidate IDs to backfill",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateIdsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateIdsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CandidateIdsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/initial_teacher_training_years": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate initial teacher training years.",
        "operationId": "GetCandidateInitialTeacherTrainingYears",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/preferred_education_phases": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate preferred education phases.",
        "operationId": "GetCandidatePreferredEducationPhases",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate channels.",
        "operationId": "GetCandidateChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/mailing_list_subscription_channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate mailing list subscription channels.",
        "operationId": "GetCandidateMailingListSubscriptionChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/event_subscription_channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate event subscription channels.",
        "operationId": "GetCandidateEventSubscriptionChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/teacher_training_adviser_subscription_channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate teacher training adviser subscription channels.",
        "operationId": "GetCandidateTeacherTrainingAdviserSubscriptionChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/gcse_status": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate GCSE status.",
        "operationId": "GetCandidateGcseStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/retake_gcse_status": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate retake GCSE status.",
        "operationId": "GetCandidateRetakeGcseStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/consideration_journey_stages": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate consideration journey stages.",
        "operationId": "GetCandidateJourneyStages",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/adviser_eligibilities": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate adviser eligibilities.",
        "operationId": "GetCandidateAdviserEligibilities",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/adviser_requirements": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate adviser requirements.",
        "operationId": "GetCandidateAdviserRequirements",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/types": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate types.",
        "operationId": "GetCandidateTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/assignment_status": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of candidate assignment status.",
        "operationId": "GetCandidateAssignmentStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/situations": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of situations.",
        "operationId": "GetCandidateSituations",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/citizenships": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of citizenship options.",
        "operationId": "GetCandidateCitizenship",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/visa_statuses": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of visa status options.",
        "operationId": "GetCandidateVisaStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/locations": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of location options.",
        "operationId": "GetCandidateLocation",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/candidate/has_qualified_teacher_statuses": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of has qualified teacher statuses (QTS) options.",
        "operationId": "GetCandidateHasQualifiedTeacherStatuses",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/qualification/degree_status": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of qualification degree status.",
        "operationId": "GetQualificationDegreeStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/qualification/types": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of qualification types.",
        "operationId": "GetQualificationTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/qualification/uk_degree_grades": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of qualification UK degree grades.",
        "operationId": "GetQualificationUkDegreeGrades",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/past_teaching_position/education_phases": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of past teaching position education phases.",
        "operationId": "GetPastTeachingPositionEducationPhases",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/teaching_event/types": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of teaching event types.",
        "operationId": "GetTeachingEventTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/teaching_event/regions": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of teaching event regions.",
        "operationId": "GetTeachingEventRegions",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/teaching_event/status": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of teaching event status.",
        "operationId": "GetTeachingEventStatus",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/teaching_event_registration/channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of teaching event registration channels.",
        "operationId": "GetTeachingEventRegistrationChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/phone_call/channels": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of phone call channels.",
        "operationId": "GetPhoneCallChannels",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/service_subscription/types": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of subscription types.",
        "operationId": "GetSubscriptionTypes",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/contact_creation_channel/sources": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of contact creation channel sources.",
        "operationId": "GetContactCreationChannelSources",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/contact_creation_channel/services": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of contact creation channel services.",
        "operationId": "GetContactCreationChannelServices",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/contact_creation_channel/activities": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of contact creation channel activities.",
        "operationId": "GetContactCreationChannelActivities",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/pick_list_items/teaching_event/accessibility_items": {
      "get": {
        "tags": [
          "Pick List Items"
        ],
        "summary": "Retrieves the list of teaching event accessibility statuses.",
        "operationId": "GetTeachingEventAccessibilty",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PickListItem"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/privacy_policies/latest": {
      "get": {
        "tags": [
          "Privacy Policies"
        ],
        "summary": "Retrieves the latest privacy policy.",
        "operationId": "GetLatestPrivacyPolicy",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/privacy_policies/{id}": {
      "get": {
        "tags": [
          "Privacy Policies"
        ],
        "summary": "Retrieves a privacy policy.",
        "operationId": "GetPrivacyPolicy",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The `id` of the `PrivacyPolicy`.",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrivacyPolicy"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_event_buildings": {
      "get": {
        "tags": [
          "Teaching Event Buildings"
        ],
        "summary": "Retrieves all event buildings.",
        "operationId": "GetTeachingEventBuildings",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEventBuilding"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEventBuilding"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEventBuilding"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/search": {
      "get": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Searches for teaching events.",
        "description": "Searches for teaching events. Optionally limit the results by distance (in miles) from a postcode, event type and start date.",
        "operationId": "SearchTeachingEvents",
        "parameters": [
          {
            "name": "Postcode",
            "in": "query",
            "description": "Postcode to center search around.",
            "schema": {
              "type": "string",
              "description": "Postcode to center search around.",
              "nullable": true
            }
          },
          {
            "name": "Radius",
            "in": "query",
            "description": "Set to filter results to a radius (in miles) around the postcode.",
            "schema": {
              "minimum": 0,
              "exclusiveMinimum": true,
              "type": "integer",
              "description": "Set to filter results to a radius (in miles) around the postcode.",
              "format": "int32",
              "nullable": true
            }
          },
          {
            "name": "TypeIds",
            "in": "query",
            "description": "Set to filter results to a type of teaching event. Each ID must match a `typeId` of the `TeachingEvent` schema.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Set to filter results to a type of teaching event. Each ID must match a `typeId` of the `TeachingEvent` schema.",
              "nullable": true
            }
          },
          {
            "name": "Online",
            "in": "query",
            "description": "Set to true to return only online events and false to return only in-person events.",
            "schema": {
              "type": "boolean",
              "description": "Set to true to return only online events and false to return only in-person events.",
              "nullable": true
            }
          },
          {
            "name": "StartAfter",
            "in": "query",
            "description": "Set to filter results to those that start after a given date.",
            "schema": {
              "type": "string",
              "description": "Set to filter results to those that start after a given date.",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "StartBefore",
            "in": "query",
            "description": "Set to filter results to those that start before a given date.",
            "schema": {
              "type": "string",
              "description": "Set to filter results to those that start before a given date.",
              "format": "date-time",
              "nullable": true
            }
          },
          {
            "name": "StatusIds",
            "in": "query",
            "description": "Set to filter results by event status.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Set to filter results by event status.",
              "nullable": true
            }
          },
          {
            "name": "AccessibilityOptions",
            "in": "query",
            "description": "Set to filter results by accessibility options.",
            "schema": {
              "type": "array",
              "items": {
                "type": "integer",
                "format": "int32"
              },
              "description": "Set to filter results by accessibility options.",
              "nullable": true
            }
          },
          {
            "name": "quantity",
            "in": "query",
            "description": "Quantity to return.",
            "schema": {
              "type": "integer",
              "format": "int32",
              "default": 10
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEvent"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEvent"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TeachingEvent"
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/{readableId}": {
      "get": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Retrieves an event by ReadableId.",
        "operationId": "GetTeachingEvent",
        "parameters": [
          {
            "name": "readableId",
            "in": "path",
            "description": "The `readableId` of the `TeachingEvent`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/reference/{referenceNumber}": {
      "get": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Retrieves an event by ReferenceNumber.",
        "operationId": "GetTeachingEventByReferenceNumber",
        "parameters": [
          {
            "name": "referenceNumber",
            "in": "path",
            "description": "The `referenceNumber` of the `TeachingEvent`.",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/attendees": {
      "post": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Adds an attendee to a teaching event.",
        "description": "\n                If the `CandidateId` is specified then the existing candidate will be \n                registered for the event, otherwise a new candidate will be created.",
        "operationId": "AddTeachingEventAttendee",
        "requestBody": {
          "description": "Attendee to add to the teaching event.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEventAddAttendee"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEventAddAttendee"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEventAddAttendee"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "No Content"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/attendees/exchange_unverified_request": {
      "post": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Retrieves a pre-populated TeachingEventAddAttendee for the candidate (allowing to proceed as unverified).",
        "description": "\n                        Retrieves a pre-populated TeachingEventAddAttendee for the candidate. This mechanism should be used with caution\n                        and the candidate should be treated as 'unverified' by the client.",
        "operationId": "ExchangeUnverifiedRequestForTeachingEventAddAttendee",
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events/attendees/exchange_access_token/{accessToken}": {
      "post": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Retrieves a pre-populated TeachingEventAddAttendee for the candidate.",
        "description": "\n                Retrieves a pre-populated TeachingEventAddAttendee for the candidate. The `accessToken` is obtained from a \n                `POST /candidates/access_tokens` request (you must also ensure the `ExistingCandidateRequest` payload you \n                exchanged for your token matches the request payload here).",
        "operationId": "ExchangeAccessTokenForTeachingEventAddAttendee",
        "parameters": [
          {
            "name": "accessToken",
            "in": "path",
            "description": "Access token (PIN code).",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Candidate access token request (must match an existing candidate).",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExistingCandidateRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEventAddAttendee"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    },
    "/api/teaching_events": {
      "post": {
        "tags": [
          "Teaching Events"
        ],
        "summary": "Adds or updates a teaching event.",
        "description": "If the `id` is specified then the existing teaching event will be updated, otherwise a new teaching event will be created.",
        "operationId": "UpsertTeachingEvent",
        "requestBody": {
          "description": "Teaching event to upsert.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEvent"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEvent"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/TeachingEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "text/plain": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              },
              "text/json": {
                "schema": {
                  "$ref": "#/components/schemas/TeachingEvent"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "application/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              },
              "text/json": {
                "schema": {
                  "type": "object",
                  "additionalProperties": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized"
          }
        },
        "security": [
          {
            "apiKey": [ ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "CallbackBookingQuota": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "timeSlot": {
            "type": "string",
            "nullable": true
          },
          "day": {
            "type": "string",
            "nullable": true
          },
          "startAt": {
            "type": "string",
            "format": "date-time"
          },
          "endAt": {
            "type": "string",
            "format": "date-time"
          },
          "numberOfBookings": {
            "type": "integer",
            "format": "int32"
          },
          "quota": {
            "type": "integer",
            "format": "int32"
          },
          "isAvailable": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "CandidateIdsRequest": {
        "type": "object",
        "properties": {
          "candidateIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CandidateMagicLinkExchangeResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "readOnly": true
          },
          "status": {
            "$ref": "#/components/schemas/ExchangeStatus"
          }
        },
        "additionalProperties": false
      },
      "CandidateSchoolExperience": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "schoolUrn": {
            "maxLength": 8,
            "type": "string",
            "nullable": true
          },
          "durationOfPlacementInDays": {
            "maximum": 100,
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "dateOfSchoolExperience": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "teachingSubjectId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "notes": {
            "maxLength": 2000,
            "type": "string",
            "nullable": true
          },
          "schoolName": {
            "maxLength": 100,
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Country": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          },
          "isoCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "DegreeStatusResponse": {
        "type": "object",
        "properties": {
          "degreeStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ExchangeStatus": {
        "enum": [
          "Valid",
          "Invalid",
          "Expired",
          "AlreadyExchanged"
        ],
        "type": "string"
      },
      "ExistingCandidateRequest": {
        "required": [
          "email"
        ],
        "type": "object",
        "properties": {
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "email": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "format": "email"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "reference": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetIntoTeachingCallback": {
        "required": [
          "acceptedPolicyId",
          "addressTelephone",
          "email",
          "firstName",
          "lastName",
          "phoneCallScheduledAt",
          "talkingPoints"
        ],
        "type": "object",
        "properties": {
          "candidateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "acceptedPolicyId": {
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "email": {
            "minLength": 1,
            "type": "string"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "addressTelephone": {
            "type": "string"
          },
          "phoneCallScheduledAt": {
            "type": "string",
            "format": "date-time",
            "writeOnly": true
          },
          "talkingPoints": {
            "minLength": 1,
            "type": "string"
          },
          "creationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "defaultContactCreationChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "HealthCheckResponse": {
        "type": "object",
        "properties": {
          "gitCommitSha": {
            "type": "string",
            "nullable": true
          },
          "environment": {
            "type": "string",
            "nullable": true
          },
          "database": {
            "type": "string",
            "nullable": true
          },
          "hangfire": {
            "type": "string",
            "nullable": true
          },
          "crm": {
            "type": "string",
            "nullable": true
          },
          "redis": {
            "type": "string",
            "nullable": true
          },
          "notify": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "MailingListAddMember": {
        "required": [
          "acceptedPolicyId",
          "considerationJourneyStageId",
          "email",
          "firstName",
          "lastName",
          "preferredTeachingSubjectId"
        ],
        "type": "object",
        "properties": {
          "degreeStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "candidateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "qualificationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "preferredTeachingSubjectId": {
            "type": "string",
            "format": "uuid"
          },
          "acceptedPolicyId": {
            "minLength": 1,
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "considerationJourneyStageId": {
            "type": "integer",
            "format": "int32"
          },
          "channelId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "email": {
            "minLength": 1,
            "type": "string"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "addressPostcode": {
            "type": "string",
            "nullable": true
          },
          "welcomeGuideVariant": {
            "type": "string",
            "nullable": true
          },
          "alreadySubscribedToEvents": {
            "type": "boolean",
            "readOnly": true
          },
          "alreadySubscribedToMailingList": {
            "type": "boolean",
            "readOnly": true
          },
          "alreadySubscribedToTeacherTrainingAdviser": {
            "type": "boolean",
            "readOnly": true
          },
          "defaultContactCreationChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "situation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "citizenship": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "visaStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "location": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "graduationYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inferredGraduationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "MappingInfo": {
        "type": "object",
        "properties": {
          "class": {
            "type": "string",
            "nullable": true
          },
          "logicalName": {
            "type": "string",
            "nullable": true
          },
          "fields": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              },
              "nullable": true
            },
            "nullable": true,
            "readOnly": true
          },
          "relationships": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              },
              "nullable": true
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "PickListItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "format": "int32"
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PrivacyPolicy": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "text": {
            "type": "string",
            "nullable": true
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "SchoolsExperienceSignUp": {
        "required": [
          "acceptedPolicyId",
          "addressCity",
          "addressLine1",
          "addressPostcode",
          "addressStateOrProvince",
          "email",
          "firstName",
          "hasDbsCertificate",
          "lastName",
          "preferredTeachingSubjectId",
          "telephone"
        ],
        "type": "object",
        "properties": {
          "candidateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "preferredTeachingSubjectId": {
            "type": "string",
            "format": "uuid"
          },
          "secondaryPreferredTeachingSubjectId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "acceptedPolicyId": {
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "masterId": {
            "type": "string",
            "format": "uuid",
            "nullable": true,
            "readOnly": true
          },
          "merged": {
            "type": "boolean",
            "readOnly": true
          },
          "fullName": {
            "type": "string",
            "nullable": true,
            "readOnly": true
          },
          "email": {
            "minLength": 1,
            "type": "string"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "addressLine1": {
            "type": "string"
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "addressLine3": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string"
          },
          "addressStateOrProvince": {
            "type": "string"
          },
          "addressPostcode": {
            "type": "string"
          },
          "telephone": {
            "type": "string"
          },
          "hasDbsCertificate": {
            "type": "boolean"
          },
          "dbsCertificateIssuedAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "qualificationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "degreeStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "degreeTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "degreeSubject": {
            "type": "string",
            "nullable": true
          },
          "ukDegreeGradeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "creationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "defaultContactCreationChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "TeacherTrainingAdviserSignUp": {
        "required": [
          "acceptedPolicyId",
          "countryId",
          "dateOfBirth",
          "email",
          "firstName",
          "lastName",
          "typeId"
        ],
        "type": "object",
        "properties": {
          "degreeStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "candidateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "qualificationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "subjectTaughtId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "pastTeachingPositionId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "preferredTeachingSubjectId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "countryId": {
            "type": "string",
            "format": "uuid"
          },
          "acceptedPolicyId": {
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "ukDegreeGradeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "degreeTypeId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "initialTeacherTrainingYearId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "stageTaughtId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "preferredEducationPhaseId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hasGcseMathsAndEnglishId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "hasGcseScienceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "planningToRetakeGcseMathsAndEnglishId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "planningToRetakeGcseScienceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "adviserStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "channelId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "degreeCountry": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "creationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "email": {
            "type": "string"
          },
          "firstName": {
            "type": "string"
          },
          "lastName": {
            "type": "string"
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date"
          },
          "teacherId": {
            "type": "string",
            "nullable": true
          },
          "degreeSubject": {
            "type": "string",
            "nullable": true
          },
          "addressTelephone": {
            "type": "string",
            "nullable": true
          },
          "addressPostcode": {
            "type": "string",
            "nullable": true
          },
          "phoneCallScheduledAt": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "writeOnly": true
          },
          "canSubscribeToTeacherTrainingAdviser": {
            "type": "boolean",
            "readOnly": true
          },
          "assignmentStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultContactCreationChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "graduationYear": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "inferredGraduationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "situation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "citizenship": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "visaStatus": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "location": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeachingEvent": {
        "required": [
          "name",
          "readableId"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "typeId": {
            "type": "integer",
            "format": "int32"
          },
          "statusId": {
            "type": "integer",
            "format": "int32"
          },
          "regionId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "readableId": {
            "minLength": 1,
            "type": "string"
          },
          "webFeedId": {
            "type": "string",
            "description": "If set, the API will accept new attendees for this event (an external sign up should be used if this value is nil).",
            "nullable": true
          },
          "referenceNumber": {
            "type": "string",
            "nullable": true
          },
          "registrationEmailLink": {
            "type": "string",
            "nullable": true
          },
          "isOnline": {
            "type": "boolean"
          },
          "name": {
            "minLength": 1,
            "type": "string"
          },
          "summary": {
            "type": "string",
            "nullable": true
          },
          "message": {
            "type": "string",
            "description": "Used to push miscellaneous messages to users (if an event is close to being booked out, for example).",
            "nullable": true
          },
          "description": {
            "type": "string",
            "nullable": true
          },
          "videoUrl": {
            "type": "string",
            "nullable": true
          },
          "scribbleId": {
            "type": "string",
            "nullable": true
          },
          "providerWebsiteUrl": {
            "type": "string",
            "nullable": true
          },
          "providerTargetAudience": {
            "type": "string",
            "nullable": true
          },
          "providerOrganiser": {
            "type": "string",
            "nullable": true
          },
          "providerContactEmail": {
            "maxLength": 100,
            "type": "string",
            "format": "email",
            "nullable": true
          },
          "startAt": {
            "type": "string",
            "format": "date-time"
          },
          "endAt": {
            "type": "string",
            "format": "date-time"
          },
          "providersList": {
            "type": "string",
            "nullable": true
          },
          "building": {
            "$ref": "#/components/schemas/TeachingEventBuilding"
          },
          "isVirtual": {
            "type": "boolean",
            "readOnly": true
          },
          "accessibilityOptions": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "nullable": true
          },
          "isInPerson": {
            "type": "boolean",
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "TeachingEventAddAttendee": {
        "required": [
          "acceptedPolicyId",
          "email",
          "eventId",
          "firstName",
          "lastName"
        ],
        "type": "object",
        "properties": {
          "candidateId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "qualificationId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "eventId": {
            "minLength": 1,
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "channelId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "creationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "writeOnly": true
          },
          "acceptedPolicyId": {
            "minLength": 1,
            "type": "string",
            "format": "uuid",
            "writeOnly": true
          },
          "preferredTeachingSubjectId": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "considerationJourneyStageId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "degreeStatusId": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "email": {
            "minLength": 1,
            "type": "string"
          },
          "firstName": {
            "minLength": 1,
            "type": "string"
          },
          "lastName": {
            "minLength": 1,
            "type": "string"
          },
          "addressPostcode": {
            "type": "string",
            "nullable": true
          },
          "addressTelephone": {
            "type": "string",
            "nullable": true
          },
          "isVerified": {
            "type": "boolean"
          },
          "isWalkIn": {
            "type": "boolean",
            "writeOnly": true
          },
          "subscribeToMailingList": {
            "type": "boolean",
            "writeOnly": true
          },
          "alreadySubscribedToEvents": {
            "type": "boolean",
            "readOnly": true
          },
          "alreadySubscribedToMailingList": {
            "type": "boolean",
            "readOnly": true
          },
          "alreadySubscribedToTeacherTrainingAdviser": {
            "type": "boolean",
            "readOnly": true
          },
          "defaultContactCreationChannel": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelSourceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelServiceId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "defaultCreationChannelActivityId": {
            "type": "integer",
            "format": "int32",
            "nullable": true,
            "readOnly": true
          },
          "accessibilityNeedsForEvent": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeachingEventBuilding": {
        "required": [
          "venue"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "venue": {
            "minLength": 1,
            "type": "string"
          },
          "addressLine1": {
            "type": "string",
            "nullable": true
          },
          "addressLine2": {
            "type": "string",
            "nullable": true
          },
          "addressLine3": {
            "type": "string",
            "nullable": true
          },
          "addressCity": {
            "type": "string",
            "nullable": true
          },
          "addressPostcode": {
            "type": "string",
            "nullable": true
          },
          "imageUrl": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeachingEventSearchRequest": {
        "type": "object",
        "properties": {
          "postcode": {
            "type": "string",
            "description": "Postcode to center search around.",
            "nullable": true
          },
          "radius": {
            "minimum": 0,
            "exclusiveMinimum": true,
            "type": "integer",
            "description": "Set to filter results to a radius (in miles) around the postcode.",
            "format": "int32",
            "nullable": true
          },
          "typeIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Set to filter results to a type of teaching event. Each ID must match a `typeId` of the `TeachingEvent` schema.",
            "nullable": true
          },
          "online": {
            "type": "boolean",
            "description": "Set to true to return only online events and false to return only in-person events.",
            "nullable": true
          },
          "startAfter": {
            "type": "string",
            "description": "Set to filter results to those that start after a given date.",
            "format": "date-time",
            "nullable": true
          },
          "startBefore": {
            "type": "string",
            "description": "Set to filter results to those that start before a given date.",
            "format": "date-time",
            "nullable": true
          },
          "statusIds": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Set to filter results by event status.",
            "nullable": true
          },
          "accessibilityOptions": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "description": "Set to filter results by accessibility options.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "TeachingSubject": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "nullable": true
          },
          "value": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "name": "Authorization",
        "in": "header"
      }
    }
  }
}