openapi: 3.0.1 info: title: Culture Amp Public API description: This Open API specification describes the interface for the Culture Amp public API service contact: name: Culture Amp Support email: support@cultureamp.com license: name: CultureAmp version: 0.0.1 servers: - url: https://api.cultureamp.com/v1 description: Production - url: https://sandbox.public-api.development.cultureamp.net/v1 description: Development tags: - name: Employees - name: Performance - name: Surveys paths: /employees: get: tags: - Employees summary: List employees description: |- Returns all employees in the account. If both `email` and `employee_identifier` are provided, `employee_identifier` will take precedence. `cursor` is optional and used for pagination. operationId: list-employees parameters: - name: email in: query description: The email of the employees to retrieve schema: type: string format: email - name: employee_identifier in: query description: The unique id used by the employees company to identify the employee schema: type: string - $ref: "#/components/parameters/CursorQueryParam" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/EmployeesResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - employees-read "/employees/{id}": get: tags: - Employees summary: Get an employee description: Returns the details of an employee corresponding to the provided Culture Amp employee identifier operationId: get-employee parameters: - name: id in: path description: the Culture Amp employee identifier required: true schema: type: string format: uuid responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/EmployeeByIDResponse" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - employees-read "/employees/{id}/demographics": get: tags: - Employees summary: List demographics by employee description: Returns the demographic assignments for a given employee operationId: list-demographics-by-employee parameters: - name: id in: path description: the Culture Amp employee identifier required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/DemographicsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - employee-demographics-read "/employees/{id}/manager-reviews": get: tags: - Performance summary: List manager reviews by employee description: Returns manager reviews for a given employee operationId: list-manager-reviews-by-employee parameters: - name: id in: path description: the Culture Amp employee identifier required: true schema: type: string - $ref: "#/components/parameters/CursorQueryParam" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ManagerReviewsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read /performance-cycles: get: tags: - Performance summary: List performance cycles description: |- Returns all performance cycles in the account. If both `cursor` and `state` are provided in a request, `cursor` takes precedence. operationId: list-performance-cycles parameters: - $ref: "#/components/parameters/AfterDateQueryParam" - $ref: "#/components/parameters/CursorQueryParam" - name: state in: query description: the state of the performance cycles to be returned schema: $ref: "#/components/schemas/PerformanceCycleState" example: active responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PerformanceCyclesResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read "/performance-cycles/{id}": get: tags: - Performance summary: Get a performance cycle description: Returns the details of a performance cycle by its id operationId: get-performance-cycle parameters: - name: id in: path description: performance cycle id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/PerformanceCycleResponse" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read "/performance-cycles/{id}/manager-reviews": get: tags: - Performance summary: List manager reviews by performance cycle description: Returns manager reviews for a given performance cycle operationId: list-manager-reviews-by-performance-cycle parameters: - name: id in: path description: performance cycle id required: true schema: type: string - $ref: "#/components/parameters/CursorQueryParam" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ManagerReviewsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read /manager-reviews: get: tags: - Performance summary: List manager reviews description: Returns all manager reviews in the account operationId: list-manager-reviews parameters: - $ref: "#/components/parameters/AfterDateQueryParam" - $ref: "#/components/parameters/CursorQueryParam" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ManagerReviewsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read "/manager-reviews/{id}": get: tags: - Performance summary: Get a manager review description: Returns the details of a manager review corresponding to the provided id operationId: get-manager-review parameters: - name: id in: path description: manager review id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/ManagerReviewResponse" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - performance-evaluations-read "/surveys": get: tags: - Surveys summary: List surveys description: | Returns a list of all surveys in the account operationId: list-surveys parameters: - $ref: "#/components/parameters/CursorQueryParam" responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveysResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read "/surveys/{id}": get: tags: - Surveys summary: Get survey description: Retrieves the details of an individual survey operationId: get-survey parameters: - name: id in: path description: survey id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveyResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read "/surveys/{id}/questions": get: tags: - Surveys summary: List questions description: | Returns a list of all questions from an individual survey > ⚠️ Warning > > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. > \ > **Select Options Limit:** Select options are truncated to a maximum of 500 per question. [Please contact support](https://support.cultureamp.com/en/articles/7048645-contact-our-product-support-team) if you wish to extract questions with more than 500 select options. operationId: list-survey-questions parameters: - $ref: "#/components/parameters/CursorQueryParam" - name: id in: path description: survey id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveyQuestionsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read "/surveys/{survey_id}/question/{question_id}": get: tags: - Surveys summary: Get question description: | Retrieves the details of an individual question from a survey > ⚠️ Warning > > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. > \ > **Select Options Limit:** Select options are truncated to a maximum of 500 per question. [Please contact support](https://support.cultureamp.com/en/articles/7048645-contact-our-product-support-team) if you wish to extract questions with more than 500 select options. operationId: get-survey-question parameters: - $ref: "#/components/parameters/CursorQueryParam" - name: survey_id in: path description: survey id required: true schema: type: string - name: question_id in: path description: question id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveyQuestionResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read "/surveys/{id}/responses": get: tags: - Surveys summary: List responses description: | Returns a list of all responses from an individual survey > ⚠️ Warning > > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. operationId: list-survey-responses parameters: - $ref: "#/components/parameters/CursorQueryParam" - name: id in: path description: survey id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveyRespsResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read "/surveys/{survey_id}/responses/{response_id}": get: tags: - Surveys summary: Get response description: | Retrieves the details of an individual response from a survey > ⚠️ Warning > > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. operationId: get-survey-response parameters: - name: survey_id in: path description: survey id required: true schema: type: string - name: response_id in: path description: response id required: true schema: type: string responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/SurveyRespResponse" "400": $ref: "#/components/responses/BadRequest" "401": $ref: "#/components/responses/Unauthorized" "403": $ref: "#/components/responses/Forbidden" "404": $ref: "#/components/responses/NotFound" "429": $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" "503": $ref: "#/components/responses/ServiceUnavailable" security: - Oauth2: - surveys-read # "/surveys/{id}/factors": # get: # tags: # - Surveys # summary: List factors # description: | # Returns a list of all factors from an individual survey # > ⚠️ Warning # > # > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. # operationId: list-survey-factors # parameters: # - $ref: "#/components/parameters/CursorQueryParam" # - name: id # in: path # description: factor id # required: true # schema: # type: string # responses: # "200": # description: OK # content: # application/json: # schema: # $ref: "#/components/schemas/SurveyFactorsResponse" # "400": # $ref: "#/components/responses/BadRequest" # "401": # $ref: "#/components/responses/Unauthorized" # "403": # $ref: "#/components/responses/Forbidden" # "404": # $ref: "#/components/responses/NotFound" # "429": # $ref: "#/components/responses/TooManyRequests" # "500": # $ref: "#/components/responses/InternalServerError" # "503": # $ref: "#/components/responses/ServiceUnavailable" # security: # - Oauth2: # - surveys-read # "/surveys/{survey_id}/factors/{factor_id}": # get: # tags: # - Surveys # summary: Get factor # description: | # Retrieves the details of an individual factor from a survey # > ⚠️ Warning # > # > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. # operationId: get-survey-factor # parameters: # - name: survey_id # in: path # description: survey id # required: true # schema: # type: string # - name: factor_id # in: path # description: factor id # required: true # schema: # type: string # responses: # "200": # description: OK # content: # application/json: # schema: # $ref: "#/components/schemas/SurveyFactorResponse" # "400": # $ref: "#/components/responses/BadRequest" # "401": # $ref: "#/components/responses/Unauthorized" # "403": # $ref: "#/components/responses/Forbidden" # "404": # $ref: "#/components/responses/NotFound" # "429": # $ref: "#/components/responses/TooManyRequests" # "500": # $ref: "#/components/responses/InternalServerError" # "503": # $ref: "#/components/responses/ServiceUnavailable" # security: # - Oauth2: # - surveys-read # "/surveys/{id}/sections": # get: # tags: # - Surveys # summary: List sections # description: | # Returns a list of all sections from an individual survey # > ⚠️ Warning # > # > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. # operationId: list-survey-sections # parameters: # - $ref: "#/components/parameters/CursorQueryParam" # - name: id # in: path # description: survey id # required: true # schema: # type: string # responses: # "200": # description: OK # content: # application/json: # schema: # $ref: "#/components/schemas/SurveySectionsResponse" # "400": # $ref: "#/components/responses/BadRequest" # "401": # $ref: "#/components/responses/Unauthorized" # "403": # $ref: "#/components/responses/Forbidden" # "404": # $ref: "#/components/responses/NotFound" # "429": # $ref: "#/components/responses/TooManyRequests" # "500": # $ref: "#/components/responses/InternalServerError" # "503": # $ref: "#/components/responses/ServiceUnavailable" # security: # - Oauth2: # - surveys-read # "/surveys/{survey_id}/sections/{section_id}": # get: # tags: # - Surveys # summary: Get section # description: | # Retrieves the details of an individual section from a survey # > ⚠️ Warning # > # > **Confidentiality:** Raw Data Extract must be enabled on a survey to retrieve its data via this API. # operationId: get-survey-section # parameters: # - name: survey_id # in: path # description: survey id # required: true # schema: # type: string # - name: section_id # in: path # description: section id # required: true # schema: # type: string # responses: # "200": # description: OK # content: # application/json: # schema: # $ref: "#/components/schemas/SurveySectionResponse" # "400": # $ref: "#/components/responses/BadRequest" # "401": # $ref: "#/components/responses/Unauthorized" # "403": # $ref: "#/components/responses/Forbidden" # "404": # $ref: "#/components/responses/NotFound" # "429": # $ref: "#/components/responses/TooManyRequests" # "500": # $ref: "#/components/responses/InternalServerError" # "503": # $ref: "#/components/responses/ServiceUnavailable" # security: # - Oauth2: # - surveys-read components: parameters: AfterDateQueryParam: name: after_date in: query description: |- Only returns resources processed by the public API after the date-time provided. Uses the date-time format specified in [RFC 3339 section 5.6, Internet Date/Time Format](https://tools.ietf.org/html/rfc3339#section-5.6). The value cannot contain spaces, and date and time should be separated by "T". For example: * UTC time "2023-05-01T00:00:00Z". * An offset from UTC time to indicate a time zone, such as "2023-05-01T00:00:00%2B08:00" (for 8 hours ahead of UTC time). Note that query parameters should be properly escaped, last example is equivalent to "2023-05-01T00:00:00+08:00". schema: type: string example: "2013-01-15T00:00:00+08:00" CursorQueryParam: name: cursor in: query description: |- The pagination key to use for the next page of results. The last successful call will include this in the response body in `pagination.afterKey`. Note: * Pagination also works using the `after_key` query parameter. However, if both `cursor` and `after_key` are provided, `cursor` will take precedence. schema: type: string example: ewogICJQSyI6ICJzZGZzZGZzZGYtc2Rmc2Rmc2Qtc2Rmc2RmIiwKICAiU0siOiAic2Rmc2Rmc2RzZGYtc2RmYXNhc2ZzLS1zZGZzZGYiCn0J schemas: SurveysResponse: title: SurveysResponse type: object description: container object for multiple Surveys properties: data: type: array items: $ref: "#/components/schemas/Survey" pagination: $ref: "#/components/schemas/PaginationV2" required: - data SurveyResponse: title: SurveyResponse type: object description: container object for a single Survey properties: data: $ref: "#/components/schemas/Survey" required: - data SurveyQuestionResponse: title: SurveyQuestionResponse type: object description: container object for a single Survey question properties: data: $ref: "#/components/schemas/SurveyQuestion" required: - data SurveyQuestionsResponse: title: SurveyQuestionsResponse type: object description: container object for multiple Survey questions properties: data: type: array items: $ref: "#/components/schemas/SurveyQuestion" pagination: $ref: "#/components/schemas/PaginationV2" required: - data Survey: title: Survey type: object description: The Survey record properties: id: type: string description: the identifier used by Culture Amp to identify the Survey name: type: object additionalProperties: type: string description: The locale informed name of the Survey example: en: Hello! fr: Bonjour! status: type: string description: | The status of the survey. Surveys that are still being drafted are not surfaced in the API. For more information about draft surveys, please refer to the following support guide: https://support.cultureamp.com/en/articles/7048518-surveys-and-programs-page#h_71149c7700 rdeEnabled: type: boolean description: A boolean describing the RDE Enabled status of the survey owner: type: string description: The Culture Amp ID identifying the user who owns the Survey workflow: type: string description: The workflow of the survey launchedAt: type: string description: The date the Survey was launched format: date-time nullable: true closedAt: type: string description: The date the Survey was closed format: date-time nullable: true createdAt: type: string description: The date the Survey was created format: date-time updatedAt: type: string description: The date the Survey was last updated format: date-time processedAt: type: string description: The date the survey was last processed by the public API. This can be used by consumers to determine if the survey has been updated since the last time it was retrieved. format: date-time communicatedClosedAt: type: string description: The timestamp when the closure of the survey was communicated. format: date-time nullable: true surveyDueDays: type: integer description: How many days from survey launch that the survey is due. kioskModeEnabled: type: boolean description: Indicates whether the survey is being run in kiosk mode. excludeParticipantsAfter: type: string description: The date at which this survey will no longer include participants. format: date-time nullable: true required: - id - processedAt - rdeEnabled SurveyQuestion: title: SurveyQuestion type: object description: The Survey Question record properties: id: type: string description: the identifier used by Culture Amp to identify the Survey code: type: string description: The unique question code questionType: type: string description: The type of the survey question eg. culture, segment label: type: object additionalProperties: type: string description: The localised label of the survey question example: en: Hello! fr: Bonjour! description: type: object additionalProperties: type: string description: The localised description of the survey question example: en: Hello! fr: Bonjour! ratingScale: type: string description: The rating scale of the survey question selectOptions: type: array items: $ref: "#/components/schemas/SurveyQuestionSelectOption" otherOption: type: boolean description: The flag for other select option status: type: string description: The status of the survey question, active or deleted sectionId: type: string description: The ID of a section a survey question belongs to factorIds: type: array description: The IDs of factors associated with a survey question items: type: string createdAt: type: string description: The date the Survey question was created format: date-time updatedAt: type: string description: The date the Survey question was last updated format: date-time processedAt: type: string description: The date the survey question was last processed by the public API. This can be used by consumers to determine if the question has been updated since the last time it was retrieved. format: date-time required: - id - otherOption - processedAt SurveyQuestionSelectOption: type: object description: a survey question's select option properties: id: type: string description: originated from a demographic_value_id or select_option_id label: type: object additionalProperties: type: string description: The localised label of the option example: en: Hello! fr: Bonjour! value: type: object additionalProperties: type: string description: The localised value of the option example: en: Hello! fr: Bonjour! status: type: string description: Select option status, active or deleted createdAt: type: string description: The date the option was created format: date-time updatedAt: type: string description: The date the option was last updated format: date-time SurveyRespResponse: title: SurveyRespResponse type: object description: container object for a Survey Response properties: data: $ref: "#/components/schemas/SurveyResp" required: - data SurveyRespsResponse: title: SurveyRespsResponse type: object description: container object for multiple Survey Responses properties: data: type: array items: $ref: "#/components/schemas/SurveyResp" pagination: $ref: "#/components/schemas/PaginationV2" required: - data SurveyResp: title: SurveyResponse type: object description: The Survey Response record properties: id: type: string description: the identifier used by Culture Amp to identify the Survey employeeId: type: string description: The unique employee ID answers: type: array items: $ref: "#/components/schemas/SurveyRespAnswer" rdeEnabled: type: boolean description: Identifies whether a survey was launched with `raw data extract` enabled (true/false). captureLocale: type: string description: The the locale in which capture was completed surveySubmittedBy: type: string description: The ID of the employee who submitted this response startedAt: type: string description: The date the Survey response was started format: date-time nullable: true submittedAt: type: string description: The date the Survey response was submitted format: date-time nullable: true expiredAt: type: string description: The date the Survey response expires format: date-time nullable: true createdAt: type: string description: The date the Survey response was created format: date-time updatedAt: type: string description: The date the Survey response was last updated format: date-time processedAt: type: string description: The date the survey response was last processed by the public API. This can be used by consumers to determine if the response has been updated since the last time it was retrieved. format: date-time required: - id - processedAt - rdeEnabled SurveyRespAnswer: type: object properties: questionId: type: string description: the id of the question being answered textValue: type: string description: The comment left for a free text style question, or the answer a user left when the "other" option is picked on a select question ratingScore: type: integer description: The rating in the range 1..5 or -1 if it was not answered selectOptions: type: array items: $ref: "#/components/schemas/SurveyRespAnswerSelectOption" answered: type: boolean description: Whether or not this answer was completed additionalComment: type: string description: the comment text left against select questions as an additional input to the option chosen mandatory: type: boolean description: Whether or not the question was made mandatory createdAt: type: string description: The date the answer was created format: date-time updatedAt: type: string description: The date the answer was last updated format: date-time required: - answered - mandatory SurveyRespAnswerSelectOption: title: SurveyResponseAnswerSelectOption type: object description: A chosen select option in a survey response answer properties: id: type: string description: ID of a select option chosen as part of the response label: type: object additionalProperties: type: string description: The localised label of a select option chosen as part of the response example: en: Hello! fr: Bonjour! SurveyFactor: title: SurveyFactor type: object description: A Factor is an aspect that one seeks to measure in a Survey properties: id: type: string description: ID of a Factor name: type: object additionalProperties: type: string description: Localised name set by the survey admin for a reporting Factor example: en: Hello! fr: Bonjour! type: type: string description: Defines the type of a reporting Factor and how it will be used in survey reporting code: type: string description: Auto-generated code for a reporting Factor indexFactor: type: boolean description: Whether a reporting Factor is used as an index customFactor: type: boolean description: Whether a reporting Factor was created via the reporting Factors page shortDescription: type: string description: Short text label which describes a reporting Factor longDescription: type: string description: Long text label which describes a reporting Factor status: type: string description: Whether a reporting Factor is active or deleted order: type: integer description: Order of a Factor as configured by a survey format: int32 createdAt: type: string description: When a Factor was created format: date-time updatedAt: type: string description: When a Factor was last updated format: date-time SurveyFactorsResponse: title: SurveyFactorsResponse type: object description: container object for multiple Factors properties: data: type: array items: $ref: "#/components/schemas/SurveyFactor" pagination: $ref: "#/components/schemas/PaginationV2" SurveyFactorResponse: title: SurveyFactorResponse type: object description: container object for a single Factor properties: data: $ref: "#/components/schemas/SurveyFactor" SurveySection: title: SurveySection type: object description: A Factor is an aspect that one seeks to measure in a Survey properties: id: type: string description: ID of a Section name: type: string description: Name of a section type: type: string description: Defines the type category of a Section, including how it will display to respondents code: type: string description: Auto-generated code for a Section shortDescription: type: string description: Short text label which describes a Section longDescription: type: string description: Long text label which describes a Section status: type: string description: Whether a Section is active or deleted order: type: integer description: Order of a Section as configured by a survey format: int32 createdAt: type: string description: When a Section was created format: date-time updatedAt: type: string description: When a Section was last updated format: date-time SurveySectionsResponse: title: SurveySectionsResponse type: object description: container object for multiple Sections properties: data: type: array items: $ref: "#/components/schemas/SurveySection" pagination: $ref: "#/components/schemas/PaginationV2" SurveySectionResponse: title: SurveySectionResponse type: object description: container object for a single Section properties: data: $ref: "#/components/schemas/SurveySection" PerformanceCycleState: type: string enum: - active - closed - ready PerformanceReviewStatus: type: string description: |- The status of the performance review. \ **Note:** data from manager reviews with ‘dirty’ status is not served from this API. enum: - completed - shared - dirty - incomplete EmployeeByIDResponse: title: EmployeeByIDResponse type: object properties: data: $ref: "#/components/schemas/Employee" description: container object for a single employee response required: - data EmployeesResponse: title: EmployeesResponse type: object properties: data: type: array items: $ref: "#/components/schemas/Employee" pagination: $ref: "#/components/schemas/Pagination" description: container object for multiple employees response required: - data Error: required: - code - message type: object properties: code: type: integer description: the HTTP status code of the error format: int32 message: type: string description: a description of the error description: an object describing an API error Link: title: Link type: object properties: rel: type: string description: "the type of related data e.g. demographics, goals, performance" uri: type: string description: the relative url that points to the data description: Link to related data required: - rel - uri Pagination: title: Pagination type: object example: afterKey: ewogICJQSyI6ICJzZGZzZGZzZGYtc2Rmc2Rmc2Qtc2Rmc2RmIiwKICAiU0siOiAic2Rmc2Rmc2RzZGYtc2RmYXNhc2ZzLS1zZGZzZGYiCn0J nextPath: /?cursor=ewogICJQSyI6ICJzZGZzZGZzZGYtc2Rmc2Rmc2Qtc2Rmc2RmIiwKICAiU0siOiAic2Rmc2Rmc2RzZGYtc2RmYXNhc2ZzLS1zZGZzZGYiCn0J properties: afterKey: type: string description: The pagination key to use for the next page of results nextPath: type: string description: the relative url for the next page of data required: - nextPath PaginationV2: title: Pagination type: object example: nextPath: /?cursor=ewogICJQSyI6ICJzZGZzZGZzZGYtc2Rmc2Rmc2Qtc2Rmc2RmIiwKICAiU0siOiAic2Rmc2Rmc2RzZGYtc2RmYXNhc2ZzLS1zZGZzZGYiCn0J properties: nextPath: type: string description: the relative url for the next page of data Demographic: title: Demographic type: object example: name: star sign value: capricorn properties: name: type: string description: the name of the demographic value: type: string description: the value of the demographic required: - name - value DemographicsResponse: title: DemographicsResponse type: object description: container object for multiple demographics response properties: data: type: array items: $ref: "#/components/schemas/Demographic" required: - data Employee: title: Employee type: object description: The employee data record properties: id: type: string description: the identifier used by Culture Amp to identify the employee employeeIdentifier: type: string description: the identifier used by the employee's organization to identify the employee email: type: string description: the employee's email address name: type: string description: the name of the employee preferredName: type: string description: the employee preferred name birthDate: type: string description: the date of birth in YYYY-MM-DD format format: date startDate: type: string description: "the date the employee started in the company, in YYYY-MM-DD format" format: date endDate: type: string description: "the date the employee left the company, in YYYY-MM-DD format" format: date links: type: array description: links to data related to the employee items: $ref: "#/components/schemas/Link" processedAt: type: string description: The date the employee was last processed by the public API. This can be used by consumers to determine if the employee has been updated since the last time they retrieved it. format: date-time required: - id - name - processedAt example: id: 96b1cff7-3099-44a9-bd28-0292be8aff7f name: Bertram Gilfoyle preferredName: Gilfoyle birthDate: "1980-08-24" startDate: "2015-07-19" endDate: "2019-08-01" employeeIdentifier: "2" email: gilfoyle@piedpiper.com links: - rel: demographics uri: /v1/employees/96b1cff7-3099-44a9-bd28-0292be8aff7f/demographics - rel: manager-reviews uri: /v1/employees/96b1cff7-3099-44a9-bd28-0292be8aff7f/manager-reviews processedAt: "2019-08-01T12:00:00Z" PerformanceCycle: title: PerformanceCycle type: object properties: id: type: string name: type: string state: $ref: "#/components/schemas/PerformanceCycleState" createdAt: type: string description: The date the performance cycle was created in the source system format: date-time updatedAt: type: string description: The date the performance cycle was last updated in the source system format: date-time processedAt: type: string description: The date the performance cycle was last processed by the public API. This can be used by consumers to determine if the performance cycle has been updated since the last time they retrieved it. format: date-time required: - id - name - state - createdAt - updatedAt - processedAt description: Describes a performance cycle example: id: b6505a73-d45f-4091-b3fb-74997de4cdc6 name: H1 2022 Pied Piper engineering performance cycle state: active createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" processedAt: "2022-08-02T02:15:10+00:00" PerformanceRating: title: PerformanceRating type: object description: Describes a performance rating for an employee properties: ratingQuestion: $ref: "#/components/schemas/RatingQuestion" ratingBuckets: type: array items: $ref: "#/components/schemas/RatingBucket" rating: $ref: "#/components/schemas/Rating" required: - ratingBuckets RatingQuestion: type: object properties: title: type: string description: type: string required: - title RatingBucket: title: RatingBucket type: object description: Describes a performance rating bucket that an employee may be assigned to properties: title: type: string description: type: string value: type: integer required: - title - value Rating: title: Rating type: object description: Describes a performance rating for an employee properties: id: type: string title: type: string description: type: string value: type: integer createdAt: type: string format: date-time updatedAt: type: string format: date-time required: - id - title - value - createdAt - updatedAt MultipleChoiceQuestion: type: object description: The multiple choice questions corresponding to a review properties: text: type: string options: type: array items: type: string answer: type: string required: - text - options OpenTextQuestion: type: object description: The open text questions corresponding to a review properties: text: type: string answer: type: string required: - text ManagerReview: title: ManagerReview type: object properties: performanceCycleId: type: string managerReviewId: type: string employeeId: description: The identifier used by Culture Amp to identify the employee type: string managerId: description: The employee identifier used by Culture Amp to identify the manager performing the review type: string performanceRating: $ref: "#/components/schemas/PerformanceRating" openTextQuestions: type: array items: $ref: "#/components/schemas/OpenTextQuestion" multipleChoiceQuestions: type: array items: $ref: "#/components/schemas/MultipleChoiceQuestion" reviewAcknowledged: type: boolean description: Indicates whether the review has been shared with the employee and acknowledged by them status: type: string $ref: "#/components/schemas/PerformanceReviewStatus" links: type: array description: links to data related to the manager review items: $ref: "#/components/schemas/Link" completedAt: type: string description: The date the manager review was completed in the source system format: date-time nullable: true createdAt: type: string description: The date the manager review was created in the source system format: date-time updatedAt: type: string description: The date the manager review was last updated in the source system format: date-time processedAt: type: string description: The date the manager review was last processed by the public API. This may be used by consumers to determine if the manager review has been updated since the last time they retrieved it. format: date-time required: - cycleId - reviewId - employeeId - createdAt - updatedAt - processedAt example: performanceCycleId: b6505a73-d45f-4091-b3fb-74997de4cd01 managerReviewId: b6505a73-d45f-4091-b3fb-74997de4cd02 employeeId: b6505a73-d45f-4091-b3fb-74997de4cd03 managerId: b6505a73-d45f-4091-b3fb-74997de4cd04 performanceRating: ratingQuestion: title: "How would you rate the employee's performance?" description: "Please rate the employee's overall performance, consider the impact they have had as well as how they live our values" ratingBuckets: - id: b6505a73-d45f-4091-b3fb-74997de4cd03 title: "Outstanding" value: 2 description: "The employee has exceeded expectations and has had a significant impact on the team and the company" createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" - id: b6505a73-d45f-4091-b3fb-74997de4cd04 title: "Good" value: 1 description: "The employee has met expectations and has had a positive impact on the team and the company" createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" - id: b6505a73-d45f-4091-b3fb-74997de4cd05 title: "Needs Improvement" value: 0 description: "The employee has not met expectations and has had a negative impact on the team and the company" createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" rating: id: b6505a73-d45f-4091-b3fb-74997de4cd06 title: "Outstanding" description: "The employee has exceeded expectations and has had a significant impact on the team and the company" value: 5 createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" openTextQuestions: - text: "What should this employee celebrate this year?" answer: "Breaking a record for sales" - text: "What should this employee focus on next year?" answer: "Upskilling in Power BI" multipleChoiceQuestions: - text: "Does this employee embody company value #1?" options: - "yes" - "no" - "often" - "sometimes" answer: "yes" - text: "Does this employee embody company value #2?" options: - "yes" - "no" - "often" - "sometimes" answer: "sometimes" processedAt: "2022-08-02T02:15:10+00:00" createdAt: "2022-04-28T02:14:10+00:00" updatedAt: "2022-08-02T02:14:10+00:00" completedAt: "2022-08-02T02:14:10+00:00" PerformanceCyclesResponse: title: PerformanceCycleResponse type: object properties: data: type: array items: $ref: "#/components/schemas/PerformanceCycle" pagination: $ref: "#/components/schemas/Pagination" required: - data PerformanceCycleResponse: title: PerformanceCycleResponse type: object properties: data: $ref: "#/components/schemas/PerformanceCycle" required: - data ManagerReviewsResponse: title: ManagerReviewsResponse type: object properties: data: type: array items: $ref: "#/components/schemas/ManagerReview" pagination: $ref: "#/components/schemas/Pagination" required: - data ManagerReviewResponse: title: ManagerReviewResponse type: object properties: data: $ref: "#/components/schemas/ManagerReview" required: - data responses: Forbidden: description: Forbidden content: application/json: schema: $ref: "#/components/schemas/Error" InternalServerError: description: Internal Server Error content: application/json: schema: $ref: "#/components/schemas/Error" NotFound: description: The specified resource was not found content: application/json: schema: $ref: "#/components/schemas/Error" Unauthorized: description: Unauthorized content: application/json: schema: $ref: "#/components/schemas/Error" BadRequest: description: The request path parameters, query parameters or headers are not valid content: application/json: schema: $ref: "#/components/schemas/Error" ServiceUnavailable: description: Service Unavailable - endpoint rate limit exceeded content: application/json: schema: $ref: "#/components/schemas/Error" TooManyRequests: description: Too Many Requests - client rate limit exceeded content: application/json: schema: $ref: "#/components/schemas/Error" securitySchemes: Oauth2: type: oauth2 flows: clientCredentials: tokenUrl: /oauth2/token scopes: employees-read: Grants read access to employees resources employee-demographics-read: Grants access to employee demographics performance-evaluations-read: Grants access to employee performance evaluations examples: {} # Turns off 'Try It' feature in the Developer Portal "x-readme": { "explorer-enabled": false }