diff --git a/api/survey/v1/design/survey.go b/api/survey/v1/design/survey.go index 2ec2865..6672733 100644 --- a/api/survey/v1/design/survey.go +++ b/api/survey/v1/design/survey.go @@ -103,6 +103,14 @@ var _ = Service("survey", func() { Example("b03cdbaf-53b1-4d47-bc04-dd7e459dd309") }) + Attribute("project_uid", String, "Optional LFX Project UID (V2) to filter survey data", func() { + Example("qa1e8536-a985-4cf5-b981-a170927a1d11") + }) + + Attribute("project_uids", String, "Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid", func() { + Example("qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12") + }) + Required("survey_uid") }) @@ -110,6 +118,8 @@ var _ = Service("survey", func() { HTTP(func() { GET("/surveys/{survey_uid}") + Param("project_uid") + Param("project_uids") Response(StatusOK) Response("BadRequest", StatusBadRequest) Response("Unauthorized", StatusUnauthorized) diff --git a/charts/lfx-v2-survey-service/Chart.yaml b/charts/lfx-v2-survey-service/Chart.yaml index b165e78..b36b96b 100644 --- a/charts/lfx-v2-survey-service/Chart.yaml +++ b/charts/lfx-v2-survey-service/Chart.yaml @@ -5,5 +5,5 @@ apiVersion: v2 name: lfx-v2-survey-service description: LFX Platform V2 Survey Service chart type: application -version: 0.1.2 +version: 0.1.3 appVersion: "latest" diff --git a/docs/api-contracts/itx-surveys-api.md b/docs/api-contracts/itx-surveys-api.md index 8a6b529..9720be0 100644 --- a/docs/api-contracts/itx-surveys-api.md +++ b/docs/api-contracts/itx-surveys-api.md @@ -174,6 +174,11 @@ Authorization: Bearer - `survey_id` (string, required) - Survey identifier +**Query Parameters**: + +- `project_uid` (string, optional) - LFX Project UID (V2 format) to filter survey data +- `project_uids` (string, optional) - Comma-delimited list of LFX Project UIDs (V2 format). Should not be combined with `project_uid` + **Response**: `200 OK` Response body is identical to Create Survey response. @@ -192,6 +197,11 @@ Authorization: Bearer - `survey_id` (string, required) - Survey identifier +**Query Parameters**: + +- `project_id` (string, optional) - LFX Project ID (V1 SFID format) to filter survey data +- `project_ids` (string, optional) - Comma-delimited list of LFX Project IDs (V1 SFID format) + **Response**: `200 OK` Response body is identical to ITX Create Survey response. @@ -201,6 +211,8 @@ Response body is identical to ITX Create Survey response. | Proxy API (LFX) | ITX API | Notes | |-----------------|---------|-------| | `/surveys/{survey_id}` | `/v2/surveys/{survey_id}/schedule` | Path differs - proxy has shorter path | +| `project_uid` query param | `project_id` query param | Proxy accepts V2 UID, maps to V1 SFID for ITX | +| `project_uids` query param | `project_ids` query param | Proxy accepts comma-delimited V2 UIDs, maps to V1 SFIDs for ITX | | All response fields | Same | Response fields are identical | --- diff --git a/gen/http/cli/survey_api/cli.go b/gen/http/cli/survey_api/cli.go index 32852c1..ec484e0 100644 --- a/gen/http/cli/survey_api/cli.go +++ b/gen/http/cli/survey_api/cli.go @@ -50,9 +50,11 @@ func ParseEndpoint( surveyScheduleSurveyBodyFlag = surveyScheduleSurveyFlags.String("body", "REQUIRED", "") surveyScheduleSurveyTokenFlag = surveyScheduleSurveyFlags.String("token", "", "") - surveyGetSurveyFlags = flag.NewFlagSet("get-survey", flag.ExitOnError) - surveyGetSurveySurveyUIDFlag = surveyGetSurveyFlags.String("survey-uid", "REQUIRED", "Survey identifier") - surveyGetSurveyTokenFlag = surveyGetSurveyFlags.String("token", "", "") + surveyGetSurveyFlags = flag.NewFlagSet("get-survey", flag.ExitOnError) + surveyGetSurveySurveyUIDFlag = surveyGetSurveyFlags.String("survey-uid", "REQUIRED", "Survey identifier") + surveyGetSurveyProjectUIDFlag = surveyGetSurveyFlags.String("project-uid", "", "") + surveyGetSurveyProjectUidsFlag = surveyGetSurveyFlags.String("project-uids", "", "") + surveyGetSurveyTokenFlag = surveyGetSurveyFlags.String("token", "", "") surveyUpdateSurveyFlags = flag.NewFlagSet("update-survey", flag.ExitOnError) surveyUpdateSurveyBodyFlag = surveyUpdateSurveyFlags.String("body", "REQUIRED", "") @@ -241,7 +243,7 @@ func ParseEndpoint( data, err = surveyc.BuildScheduleSurveyPayload(*surveyScheduleSurveyBodyFlag, *surveyScheduleSurveyTokenFlag) case "get-survey": endpoint = c.GetSurvey() - data, err = surveyc.BuildGetSurveyPayload(*surveyGetSurveySurveyUIDFlag, *surveyGetSurveyTokenFlag) + data, err = surveyc.BuildGetSurveyPayload(*surveyGetSurveySurveyUIDFlag, *surveyGetSurveyProjectUIDFlag, *surveyGetSurveyProjectUidsFlag, *surveyGetSurveyTokenFlag) case "update-survey": endpoint = c.UpdateSurvey() data, err = surveyc.BuildUpdateSurveyPayload(*surveyUpdateSurveyBodyFlag, *surveyUpdateSurveySurveyUIDFlag, *surveyUpdateSurveyTokenFlag) @@ -339,6 +341,8 @@ func surveyGetSurveyUsage() { // Header with flags fmt.Fprintf(os.Stderr, "%s [flags] survey get-survey", os.Args[0]) fmt.Fprint(os.Stderr, " -survey-uid STRING") + fmt.Fprint(os.Stderr, " -project-uid STRING") + fmt.Fprint(os.Stderr, " -project-uids STRING") fmt.Fprint(os.Stderr, " -token STRING") fmt.Fprintln(os.Stderr) @@ -348,11 +352,13 @@ func surveyGetSurveyUsage() { // Flags list fmt.Fprintln(os.Stderr, ` -survey-uid STRING: Survey identifier`) + fmt.Fprintln(os.Stderr, ` -project-uid STRING: `) + fmt.Fprintln(os.Stderr, ` -project-uids STRING: `) fmt.Fprintln(os.Stderr, ` -token STRING: `) fmt.Fprintln(os.Stderr) fmt.Fprintln(os.Stderr, "Example:") - fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "survey get-survey --survey-uid \"b03cdbaf-53b1-4d47-bc04-dd7e459dd309\" --token \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"") + fmt.Fprintf(os.Stderr, " %s %s\n", os.Args[0], "survey get-survey --survey-uid \"b03cdbaf-53b1-4d47-bc04-dd7e459dd309\" --project-uid \"qa1e8536-a985-4cf5-b981-a170927a1d11\" --project-uids \"qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12\" --token \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"") } func surveyUpdateSurveyUsage() { diff --git a/gen/http/openapi.json b/gen/http/openapi.json index e790c87..5e61691 100644 --- a/gen/http/openapi.json +++ b/gen/http/openapi.json @@ -1 +1 @@ -{"swagger":"2.0","info":{"title":"LFX V2 - Survey Service","description":"Proxy service for ITX survey system","version":"1.0"},"host":"localhost:8080","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/surveys":{"post":{"tags":["survey"],"summary":"schedule_survey survey","description":"Create a scheduled survey for ITX project committee (proxies to ITX POST /surveys/schedule)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#schedule_survey","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"schedule_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyScheduleSurveyRequestBody","required":["committee_uid"]}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/exclusion":{"post":{"tags":["survey"],"summary":"create_exclusion survey","description":"Create a survey or global exclusion (proxies to ITX POST /v2/surveys/exclusion)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#create_exclusion","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"create_exclusion_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyCreateExclusionRequestBody"}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/ExclusionResult","required":["uid"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_exclusion survey","description":"Delete a survey or global exclusion (proxies to ITX DELETE /v2/surveys/exclusion)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_exclusion","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"delete_exclusion_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyDeleteExclusionRequestBody"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/exclusion/{exclusion_id}":{"get":{"tags":["survey"],"summary":"get_exclusion survey","description":"Get exclusion by ID (proxies to ITX GET /v2/surveys/exclusion/{exclusion_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#get_exclusion","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ExtendedExclusionResult","required":["uid"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_exclusion_by_id survey","description":"Delete exclusion by ID (proxies to ITX DELETE /v2/surveys/exclusion/{exclusion_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_exclusion_by_id","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/validate_email":{"post":{"tags":["survey"],"summary":"validate_email survey","description":"Validate email template body and subject (proxies to ITX POST /v2/surveys/validate_email)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#validate_email","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"validate_email_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyValidateEmailRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ValidateEmailResult","required":["body","subject"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}":{"get":{"tags":["survey"],"summary":"get_survey survey","description":"Get survey details (proxies to ITX GET /v2/surveys/{survey_uid})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#get_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"put":{"tags":["survey"],"summary":"update_survey survey","description":"Update survey (proxies to ITX PUT /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#update_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"update_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyUpdateSurveyRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_survey survey","description":"Delete survey (proxies to ITX DELETE /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/bulk_resend":{"post":{"tags":["survey"],"summary":"bulk_resend_survey survey","description":"Bulk resend survey emails to select recipients (proxies to ITX POST /v2/surveys/{survey_uid}/bulk_resend)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#bulk_resend_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"bulk_resend_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyBulkResendSurveyRequestBody","required":["recipient_ids"]}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/preview_send":{"get":{"tags":["survey"],"summary":"preview_send_survey survey","description":"Preview which recipients, committees, and projects would be affected by a resend (proxies to ITX GET /v2/surveys/{survey_uid}/preview_send)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#preview_send_survey","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to filter preview","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/PreviewSendResult"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/recipient_group":{"delete":{"tags":["survey"],"summary":"delete_recipient_group survey","description":"Remove a recipient group (committee, project, or foundation) from survey and recalculate statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/recipient_group)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_recipient_group","parameters":[{"name":"committee_uid","in":"query","description":"Committee UID to remove (indicates specific committee in project)","required":false,"type":"string"},{"name":"project_uid","in":"query","description":"Project UID to remove (all removals are attached to a project)","required":false,"type":"string"},{"name":"foundation_id","in":"query","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/responses/{response_id}":{"delete":{"tags":["survey"],"summary":"delete_survey_response survey","description":"Delete survey response - removes recipient from survey and recalculates statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/responses/{response_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/responses/{response_id}/resend":{"post":{"tags":["survey"],"summary":"resend_survey_response survey","description":"Resend survey email to a specific user (proxies to ITX POST /v2/surveys/{survey_uid}/responses/{response_id}/resend)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#resend_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/send_missing_recipients":{"post":{"tags":["survey"],"summary":"send_missing_recipients survey","description":"Send survey emails to committee members who haven't received it (proxies to ITX POST /v2/surveys/{survey_uid}/send_missing_recipients)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#send_missing_recipients","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to resync only that committee","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}}},"definitions":{"BadRequestError":{"title":"BadRequestError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Dolor culpa."},"message":{"type":"string","description":"Error message","example":"Qui ut cumque accusamus velit fugiat numquam."}},"description":"Bad request","example":{"code":"Aut sapiente.","message":"Nam voluptate accusantium voluptatem."},"required":["code","message"]},"ExcludedCommittee":{"title":"ExcludedCommittee","type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Technical Steering Committee","enum":["Legal Committee","Finance Committee","Special Interest Group","Board","Technical Oversight Committee/Technical Advisory Committee","Technical Steering Committee"]},"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"003170000123XHTAA2"}},"description":"Committee information for preview send","example":{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},"required":["project_uid","project_name","committee_uid","committee_name","committee_category"]},"ExclusionResult":{"title":"ExclusionResult","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Ut sapiente iure."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Ipsam nam ut officiis qui sunt."},"survey_uid":{"type":"string","description":"Survey UID","example":"Eum molestias quis occaecati repellendus."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Dicta rerum sapiente deserunt."}},"example":{"committee_uid":"Cupiditate ut labore doloremque.","email":"test@email.com","global_exclusion":"Cupiditate voluptatum et velit quaerat.","survey_uid":"Molestiae aliquam quam.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Sunt deleniti praesentium quaerat qui cum neque."},"required":["uid"]},"ExclusionUser":{"title":"ExclusionUser","type":"object","properties":{"emails":{"type":"array","items":{"$ref":"#/definitions/UserEmail"},"description":"User emails","example":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}]},"id":{"type":"string","description":"User ID","example":"Animi quas."},"username":{"type":"string","description":"Username","example":"Ipsa quia exercitationem ut eos rerum."}},"description":"User information for an exclusion","example":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Omnis occaecati atque numquam.","username":"Ut maiores et porro."}},"ExtendedExclusionResult":{"title":"ExtendedExclusionResult","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Molestias et voluptate nulla voluptatem."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Sequi at unde quia est et quo."},"survey_uid":{"type":"string","description":"Survey UID","example":"Minima molestiae ut suscipit perspiciatis cupiditate harum."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user":{"$ref":"#/definitions/ExclusionUser"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Et dicta ullam fuga in hic possimus."}},"example":{"committee_uid":"Molestiae nobis ducimus hic est.","email":"test@email.com","global_exclusion":"Quas ut et magni repellendus ea.","survey_uid":"Explicabo tempore nostrum autem et.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Rerum autem molestias necessitatibus dolores fuga.","username":"Ab vitae qui ad tenetur vitae."},"user_id":"Odio aut."},"required":["uid"]},"ForbiddenError":{"title":"ForbiddenError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nam molestiae."},"message":{"type":"string","description":"Error message","example":"Ipsam eius nisi consequatur."}},"description":"Forbidden","example":{"code":"Molestias saepe ab laboriosam.","message":"Eius dolor deserunt debitis."},"required":["code","message"]},"ITXPreviewRecipient":{"title":"ITXPreviewRecipient","type":"object","properties":{"email":{"type":"string","description":"Email address","example":"john.doe@example.com","format":"email"},"first_name":{"type":"string","description":"User first name","example":"John"},"last_name":{"type":"string","description":"User last name","example":"Doe"},"name":{"type":"string","description":"User full name","example":"John Doe"},"role":{"type":"string","description":"Role in committee","example":"Voting Rep","enum":["Chair","Voting Rep","Member"]},"user_id":{"type":"string","description":"LF user ID","example":"005f1000009RbC4AAK"},"username":{"type":"string","description":"Linux Foundation ID","example":"jdoe"}},"description":"Recipient information for preview send","example":{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},"required":["user_id","email"]},"InternalServerError":{"title":"InternalServerError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Voluptatem perspiciatis omnis."},"message":{"type":"string","description":"Error message","example":"Dicta dicta nesciunt quas."}},"description":"Internal server error","example":{"code":"Sequi consequuntur rerum omnis quos aut.","message":"Laborum quas corrupti voluptatum ea."},"required":["code","message"]},"LFXProject":{"title":"LFXProject","type":"object","properties":{"id":{"type":"string","description":"Project ID","example":"003170000123XHTAA2"},"logo_url":{"type":"string","description":"Project logo URL","example":"Fugit officiis cum rerum."},"name":{"type":"string","description":"Project name","example":"Express JS"},"slug":{"type":"string","description":"Project slug","example":"express-gateway"},"status":{"type":"string","description":"Project status/stage","example":"Active","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]}},"description":"LFX Project information","example":{"id":"003170000123XHTAA2","logo_url":"Dignissimos quo quibusdam non doloremque.","name":"Express JS","slug":"express-gateway","status":"Active"},"required":["id","name","slug","status"]},"NotFoundError":{"title":"NotFoundError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nostrum temporibus possimus."},"message":{"type":"string","description":"Error message","example":"Quas non."}},"description":"Not found","example":{"code":"Magnam optio.","message":"Earum qui eos id."},"required":["code","message"]},"PreviewSendResult":{"title":"PreviewSendResult","type":"object","properties":{"affected_committees":{"type":"array","items":{"$ref":"#/definitions/ExcludedCommittee"},"description":"List of affected committees","example":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}]},"affected_projects":{"type":"array","items":{"$ref":"#/definitions/LFXProject"},"description":"List of affected projects","example":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}]},"affected_recipients":{"type":"array","items":{"$ref":"#/definitions/ITXPreviewRecipient"},"description":"List of affected recipients","example":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"ServiceUnavailableError":{"title":"ServiceUnavailableError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Quis dolores ut et."},"message":{"type":"string","description":"Error message","example":"Aspernatur praesentium est impedit ut ut quaerat."}},"description":"Service unavailable","example":{"code":"Nisi perspiciatis.","message":"Delectus et consectetur illum unde autem omnis."},"required":["code","message"]},"SurveyBulkResendSurveyRequestBody":{"title":"SurveyBulkResendSurveyRequestBody","type":"object","properties":{"recipient_ids":{"type":"array","items":{"type":"string","example":"Inventore perferendis."},"description":"Array of recipient IDs to resend survey emails to","example":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]},"required":["recipient_ids"]},"SurveyCommittee":{"title":"SurveyCommittee","type":"object","properties":{"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"nps_value":{"type":"number","description":"NPS value for this committee","example":0.2719950762101171,"format":"double"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"survey_url":{"type":"string","description":"Survey URL for this committee","example":"https://surveymonkey.com/r/abc123"},"total_recipients":{"type":"integer","description":"Total recipients for this committee","example":8360805817855735579,"format":"int64"},"total_responses":{"type":"integer","description":"Total responses for this committee","example":2317337672288157344,"format":"int64"}},"description":"Survey committee details","example":{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.7274350005223461,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":898235292458345736,"total_responses":6716164380180638854}},"SurveyCreateExclusionRequestBody":{"title":"SurveyCreateExclusionRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Quasi aut ad hic ut voluptas dolorem."},"email":{"type":"string","description":"Survey responder's email","example":"Ea molestias et ipsam."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Deleniti officia numquam expedita."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Officia suscipit in fugiat."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Distinctio modi ratione deleniti."}},"example":{"committee_uid":"Ratione et.","email":"Et quidem sunt.","global_exclusion":"Sit delectus illum iure.","survey_uid":"Molestiae ut suscipit nulla.","user_id":"Ab eveniet et qui in odio doloribus."}},"SurveyDeleteExclusionRequestBody":{"title":"SurveyDeleteExclusionRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Ut quo reprehenderit."},"email":{"type":"string","description":"Survey responder's email","example":"Beatae cum exercitationem autem natus quae."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Vel rem vel id nobis optio fugit."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Cumque ad ut."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Rerum pariatur."}},"example":{"committee_uid":"Modi quisquam inventore vitae sed beatae.","email":"Mollitia et reprehenderit rerum.","global_exclusion":"Esse dolorem.","survey_uid":"Itaque saepe.","user_id":"Dolorem velit sit et."}},"SurveyScheduleResult":{"title":"SurveyScheduleResult","type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Optio laudantium aliquam et sit vel ea."},"committee_voting_enabled":{"type":"boolean","description":"Committee voting enabled","example":true},"committees":{"type":"array","items":{"$ref":"#/definitions/SurveyCommittee"},"description":"Survey committees","example":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}]},"created_at":{"type":"string","description":"Creation timestamp","example":"1991-06-14T04:12:59Z","format":"date-time"},"creator_id":{"type":"string","description":"Creator's user ID","example":"Quaerat dolor."},"creator_name":{"type":"string","description":"Creator's full name","example":"Facilis reiciendis et quos excepturi saepe voluptatum."},"creator_username":{"type":"string","description":"Creator's username","example":"Quisquam et qui."},"email_body":{"type":"string","description":"Email body HTML","example":"Et tempore ea ut officiis omnis voluptate."},"email_body_text":{"type":"string","description":"Email body plain text","example":"Repellat earum non ut id asperiores hic."},"email_subject":{"type":"string","description":"Email subject line","example":"In impedit repellat."},"is_nps_survey":{"type":"boolean","description":"Whether this is an NPS survey","example":true},"is_project_survey":{"type":"boolean","description":"Whether project-level or global-level survey","example":true},"last_modified_at":{"type":"string","description":"Last modification timestamp","example":"1996-03-05T09:04:50Z","format":"date-time"},"last_modified_by":{"type":"string","description":"User ID of last modifier","example":"Facere sit quaerat pariatur."},"latest_automated_reminder_sent_at":{"type":"string","description":"Latest automated reminder sent date","example":"1991-08-11T14:21:28Z","format":"date-time"},"next_automated_reminder_at":{"type":"string","description":"Next automated reminder date","example":"2012-10-19T00:51:29Z","format":"date-time"},"nps_value":{"type":"number","description":"NPS value","example":0.06048709593621433,"format":"double"},"num_automated_reminders_sent":{"type":"integer","description":"Number of automated reminders sent","example":7423717503328996703,"format":"int64"},"num_automated_reminders_to_send":{"type":"integer","description":"Number of automated reminders to send","example":4792105792390663775,"format":"int64"},"num_detractors":{"type":"integer","description":"Number of detractors","example":3721412613282556941,"format":"int64"},"num_passives":{"type":"integer","description":"Number of passives","example":630602705079431779,"format":"int64"},"num_promoters":{"type":"integer","description":"Number of promoters","example":9144982420120398791,"format":"int64"},"response_status":{"type":"string","description":"Response status","example":"scheduled","enum":["scheduled","open","closed"]},"send_immediately":{"type":"boolean","description":"Whether survey is sent immediately","example":false},"stage_filter":{"type":"string","description":"Project stage filter","example":"Esse perferendis."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff date","example":"2008-06-23T19:55:46Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"In porro aspernatur."},"survey_reminder_rate_days":{"type":"integer","description":"Days between reminder emails","example":5932690482610108701,"format":"int64"},"survey_send_date":{"type":"string","description":"Survey send date","example":"1986-11-11T13:54:53Z","format":"date-time"},"survey_status":{"type":"string","description":"Survey status","example":"scheduled","enum":["scheduled","sending","sent","cancelled"]},"survey_title":{"type":"string","description":"Survey title","example":"Quibusdam minima ut quis dolore incidunt velit."},"survey_url":{"type":"string","description":"Survey URL","example":"Ut excepturi velit expedita placeat."},"total_bounced_emails":{"type":"integer","description":"Number of bounced emails","example":5714015393000907159,"format":"int64"},"total_recipients":{"type":"integer","description":"Total number of recipients","example":5049480956996120320,"format":"int64"},"total_responses":{"type":"integer","description":"Total number of responses","example":949381826978715625,"format":"int64"},"uid":{"type":"string","description":"Survey unique identifier","example":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}},"example":{"committee_category":"Vitae et nesciunt culpa cupiditate.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1991-01-24T03:13:13Z","creator_id":"Rerum nostrum provident nihil quam quaerat.","creator_name":"Voluptate eius nihil ut ut quos.","creator_username":"Ipsam et nulla.","email_body":"Qui dolores.","email_body_text":"Porro dicta ipsam cumque.","email_subject":"Nisi blanditiis veniam voluptatem.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"2014-03-04T22:25:37Z","last_modified_by":"Id quod.","latest_automated_reminder_sent_at":"2013-01-23T09:18:20Z","next_automated_reminder_at":"2000-04-24T23:39:00Z","nps_value":0.8567202275814672,"num_automated_reminders_sent":4849997741128336544,"num_automated_reminders_to_send":8250981986975932702,"num_detractors":5455946721173509686,"num_passives":6396227727816532693,"num_promoters":2633350034400695879,"response_status":"scheduled","send_immediately":true,"stage_filter":"Facilis aut doloribus perspiciatis expedita ipsam aut.","survey_cutoff_date":"1985-04-15T13:02:36Z","survey_monkey_id":"Minus magnam et.","survey_reminder_rate_days":815636587156196874,"survey_send_date":"2009-12-20T16:20:59Z","survey_status":"scheduled","survey_title":"Ipsum fugiat.","survey_url":"Nemo consequatur nihil aut neque.","total_bounced_emails":2286647374539067270,"total_recipients":1356697113763045090,"total_responses":3035120764609076041,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"},"required":["uid","survey_status"]},"SurveyScheduleSurveyRequestBody":{"title":"SurveyScheduleSurveyRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Optio aut."},"creator_name":{"type":"string","description":"Creator's full name","example":"Corporis magni nobis est neque sed ut."},"creator_username":{"type":"string","description":"Creator's username","example":"Sed possimus."},"email_body":{"type":"string","description":"Email body HTML content","example":"Aut earum odit dolorum."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Commodi fugiat."},"email_subject":{"type":"string","description":"Email subject line","example":"Harum sunt quasi ea aut id."},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","example":true},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","example":false},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Explicabo quidem perspiciatis quidem."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Rerum voluptate doloribus praesentium qui explicabo quia."},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Est minus eveniet perspiciatis."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":3101412374997671411,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Quia hic."},"survey_title":{"type":"string","description":"Survey title","example":"Natus pariatur dolor quae iure accusantium mollitia."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Beatae qui est.","creator_name":"Est maiores quibusdam.","creator_username":"Et voluptas non vel est.","email_body":"Eveniet corporis at aliquam eligendi.","email_body_text":"Et sed nulla unde nihil dolor.","email_subject":"Quia sunt vel quidem.","is_project_survey":false,"send_immediately":false,"stage_filter":"Ipsam dignissimos beatae dolor aliquam alias.","survey_cutoff_date":"Omnis ea vitae.","survey_monkey_id":"Rem aperiam aut iusto.","survey_reminder_rate_days":7674533990149798869,"survey_send_date":"Molestias a fuga.","survey_title":"Et dicta sed porro saepe eos unde."},"required":["committee_uid"]},"SurveyUpdateSurveyRequestBody":{"title":"SurveyUpdateSurveyRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Nemo architecto exercitationem autem dolores."},"email_body":{"type":"string","description":"Email body HTML content","example":"Ipsum sunt."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Eveniet aliquam provident quam dicta."},"email_subject":{"type":"string","description":"Email subject line","example":"Facilis rerum alias nisi."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Occaecati et quia quia."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":510201010043617786,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Et aspernatur aliquid aut."},"survey_title":{"type":"string","description":"Survey title","example":"Praesentium voluptas nihil atque velit molestiae."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Sit unde laudantium voluptate cum.","email_body":"Quidem officia.","email_body_text":"Repellendus beatae quae impedit quis.","email_subject":"Molestiae quod consequuntur qui vero.","survey_cutoff_date":"Voluptatum quod aliquam ducimus voluptas.","survey_reminder_rate_days":8771076406201222434,"survey_send_date":"Dolores voluptas.","survey_title":"Velit molestiae sunt."}},"SurveyValidateEmailRequestBody":{"title":"SurveyValidateEmailRequestBody","type":"object","properties":{"body":{"type":"string","description":"Email body template","example":"Aut officia accusantium nihil."},"subject":{"type":"string","description":"Email subject template","example":"Exercitationem maxime sunt quidem et."}},"example":{"body":"Quidem rem ex nesciunt natus.","subject":"Tempore est eveniet illo."}},"UnauthorizedError":{"title":"UnauthorizedError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Et quo voluptatem qui accusantium et."},"message":{"type":"string","description":"Error message","example":"Qui nesciunt qui."}},"description":"Unauthorized","example":{"code":"Vel neque dolorem totam ipsa iste omnis.","message":"Autem odit voluptas voluptatibus."},"required":["code","message"]},"UserEmail":{"title":"UserEmail","type":"object","properties":{"email_address":{"type":"string","description":"Email address","example":"Est beatae omnis veniam."},"id":{"type":"string","description":"Email ID","example":"Quas quia eius dolorum nemo sit."},"is_primary":{"type":"boolean","description":"Whether this is the primary email","example":false}},"description":"User email information","example":{"email_address":"Et maiores exercitationem voluptas numquam.","id":"Laboriosam aut tempora officiis voluptatem.","is_primary":true}},"ValidateEmailResult":{"title":"ValidateEmailResult","type":"object","properties":{"body":{"type":"string","description":"Validated email body","example":"An example survey body with the quarter Q1"},"subject":{"type":"string","description":"Validated email subject","example":"An example survey subject with the year 2023"}},"example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"},"required":["body","subject"]}},"securityDefinitions":{"jwt_header_Authorization":{"type":"apiKey","description":"Heimdall JWT authorization\n\n**Security Scopes**:\n * `read:projects`: Read project data\n * `manage:projects`: Manage projects\n * `manage:surveys`: Manage surveys","name":"Authorization","in":"header"}}} \ No newline at end of file +{"swagger":"2.0","info":{"title":"LFX V2 - Survey Service","description":"Proxy service for ITX survey system","version":"1.0"},"host":"localhost:8080","consumes":["application/json","application/xml","application/gob"],"produces":["application/json","application/xml","application/gob"],"paths":{"/surveys":{"post":{"tags":["survey"],"summary":"schedule_survey survey","description":"Create a scheduled survey for ITX project committee (proxies to ITX POST /surveys/schedule)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#schedule_survey","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"schedule_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyScheduleSurveyRequestBody","required":["committee_uid"]}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/exclusion":{"post":{"tags":["survey"],"summary":"create_exclusion survey","description":"Create a survey or global exclusion (proxies to ITX POST /v2/surveys/exclusion)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#create_exclusion","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"create_exclusion_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyCreateExclusionRequestBody"}}],"responses":{"201":{"description":"Created response.","schema":{"$ref":"#/definitions/ExclusionResult","required":["uid"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_exclusion survey","description":"Delete a survey or global exclusion (proxies to ITX DELETE /v2/surveys/exclusion)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_exclusion","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"delete_exclusion_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyDeleteExclusionRequestBody"}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/exclusion/{exclusion_id}":{"get":{"tags":["survey"],"summary":"get_exclusion survey","description":"Get exclusion by ID (proxies to ITX GET /v2/surveys/exclusion/{exclusion_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#get_exclusion","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ExtendedExclusionResult","required":["uid"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_exclusion_by_id survey","description":"Delete exclusion by ID (proxies to ITX DELETE /v2/surveys/exclusion/{exclusion_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_exclusion_by_id","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/validate_email":{"post":{"tags":["survey"],"summary":"validate_email survey","description":"Validate email template body and subject (proxies to ITX POST /v2/surveys/validate_email)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#validate_email","parameters":[{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"validate_email_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyValidateEmailRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/ValidateEmailResult","required":["body","subject"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}":{"get":{"tags":["survey"],"summary":"get_survey survey","description":"Get survey details (proxies to ITX GET /v2/surveys/{survey_uid})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#get_survey","parameters":[{"name":"project_uid","in":"query","description":"Optional LFX Project UID (V2) to filter survey data","required":false,"type":"string"},{"name":"project_uids","in":"query","description":"Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"put":{"tags":["survey"],"summary":"update_survey survey","description":"Update survey (proxies to ITX PUT /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#update_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"update_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyUpdateSurveyRequestBody"}}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/SurveyScheduleResult","required":["uid","survey_status"]}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]},"delete":{"tags":["survey"],"summary":"delete_survey survey","description":"Delete survey (proxies to ITX DELETE /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/bulk_resend":{"post":{"tags":["survey"],"summary":"bulk_resend_survey survey","description":"Bulk resend survey emails to select recipients (proxies to ITX POST /v2/surveys/{survey_uid}/bulk_resend)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#bulk_resend_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"},{"name":"bulk_resend_survey_request_body","in":"body","required":true,"schema":{"$ref":"#/definitions/SurveyBulkResendSurveyRequestBody","required":["recipient_ids"]}}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/preview_send":{"get":{"tags":["survey"],"summary":"preview_send_survey survey","description":"Preview which recipients, committees, and projects would be affected by a resend (proxies to ITX GET /v2/surveys/{survey_uid}/preview_send)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#preview_send_survey","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to filter preview","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"200":{"description":"OK response.","schema":{"$ref":"#/definitions/PreviewSendResult"}},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/recipient_group":{"delete":{"tags":["survey"],"summary":"delete_recipient_group survey","description":"Remove a recipient group (committee, project, or foundation) from survey and recalculate statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/recipient_group)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_recipient_group","parameters":[{"name":"committee_uid","in":"query","description":"Committee UID to remove (indicates specific committee in project)","required":false,"type":"string"},{"name":"project_uid","in":"query","description":"Project UID to remove (all removals are attached to a project)","required":false,"type":"string"},{"name":"foundation_id","in":"query","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/responses/{response_id}":{"delete":{"tags":["survey"],"summary":"delete_survey_response survey","description":"Delete survey response - removes recipient from survey and recalculates statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/responses/{response_id})\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#delete_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/responses/{response_id}/resend":{"post":{"tags":["survey"],"summary":"resend_survey_response survey","description":"Resend survey email to a specific user (proxies to ITX POST /v2/surveys/{survey_uid}/responses/{response_id}/resend)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#resend_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}},"/surveys/{survey_uid}/send_missing_recipients":{"post":{"tags":["survey"],"summary":"send_missing_recipients survey","description":"Send survey emails to committee members who haven't received it (proxies to ITX POST /v2/surveys/{survey_uid}/send_missing_recipients)\n\n**Required security scopes for jwt**:\n * `manage:projects`\n * `manage:surveys`","operationId":"survey#send_missing_recipients","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to resync only that committee","required":false,"type":"string"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"type":"string"},{"name":"Authorization","in":"header","description":"JWT token","required":false,"type":"string"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"Bad Request response.","schema":{"$ref":"#/definitions/BadRequestError","required":["code","message"]}},"401":{"description":"Unauthorized response.","schema":{"$ref":"#/definitions/UnauthorizedError","required":["code","message"]}},"403":{"description":"Forbidden response.","schema":{"$ref":"#/definitions/ForbiddenError","required":["code","message"]}},"404":{"description":"Not Found response.","schema":{"$ref":"#/definitions/NotFoundError","required":["code","message"]}},"500":{"description":"Internal Server Error response.","schema":{"$ref":"#/definitions/InternalServerError","required":["code","message"]}},"503":{"description":"Service Unavailable response.","schema":{"$ref":"#/definitions/ServiceUnavailableError","required":["code","message"]}}},"schemes":["http"],"security":[{"jwt_header_Authorization":null}]}}},"definitions":{"BadRequestError":{"title":"BadRequestError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Dolor culpa."},"message":{"type":"string","description":"Error message","example":"Qui ut cumque accusamus velit fugiat numquam."}},"description":"Bad request","example":{"code":"Aut sapiente.","message":"Nam voluptate accusantium voluptatem."},"required":["code","message"]},"ExcludedCommittee":{"title":"ExcludedCommittee","type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Technical Steering Committee","enum":["Legal Committee","Finance Committee","Special Interest Group","Board","Technical Oversight Committee/Technical Advisory Committee","Technical Steering Committee"]},"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"003170000123XHTAA2"}},"description":"Committee information for preview send","example":{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},"required":["project_uid","project_name","committee_uid","committee_name","committee_category"]},"ExclusionResult":{"title":"ExclusionResult","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Ut sapiente iure."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Ipsam nam ut officiis qui sunt."},"survey_uid":{"type":"string","description":"Survey UID","example":"Eum molestias quis occaecati repellendus."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Dicta rerum sapiente deserunt."}},"example":{"committee_uid":"Cupiditate ut labore doloremque.","email":"test@email.com","global_exclusion":"Cupiditate voluptatum et velit quaerat.","survey_uid":"Molestiae aliquam quam.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Sunt deleniti praesentium quaerat qui cum neque."},"required":["uid"]},"ExclusionUser":{"title":"ExclusionUser","type":"object","properties":{"emails":{"type":"array","items":{"$ref":"#/definitions/UserEmail"},"description":"User emails","example":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}]},"id":{"type":"string","description":"User ID","example":"Animi quas."},"username":{"type":"string","description":"Username","example":"Ipsa quia exercitationem ut eos rerum."}},"description":"User information for an exclusion","example":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Omnis occaecati atque numquam.","username":"Ut maiores et porro."}},"ExtendedExclusionResult":{"title":"ExtendedExclusionResult","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Molestias et voluptate nulla voluptatem."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Sequi at unde quia est et quo."},"survey_uid":{"type":"string","description":"Survey UID","example":"Minima molestiae ut suscipit perspiciatis cupiditate harum."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user":{"$ref":"#/definitions/ExclusionUser"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Et dicta ullam fuga in hic possimus."}},"example":{"committee_uid":"Molestiae nobis ducimus hic est.","email":"test@email.com","global_exclusion":"Quas ut et magni repellendus ea.","survey_uid":"Explicabo tempore nostrum autem et.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Rerum autem molestias necessitatibus dolores fuga.","username":"Ab vitae qui ad tenetur vitae."},"user_id":"Odio aut."},"required":["uid"]},"ForbiddenError":{"title":"ForbiddenError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nam molestiae."},"message":{"type":"string","description":"Error message","example":"Ipsam eius nisi consequatur."}},"description":"Forbidden","example":{"code":"Molestias saepe ab laboriosam.","message":"Eius dolor deserunt debitis."},"required":["code","message"]},"ITXPreviewRecipient":{"title":"ITXPreviewRecipient","type":"object","properties":{"email":{"type":"string","description":"Email address","example":"john.doe@example.com","format":"email"},"first_name":{"type":"string","description":"User first name","example":"John"},"last_name":{"type":"string","description":"User last name","example":"Doe"},"name":{"type":"string","description":"User full name","example":"John Doe"},"role":{"type":"string","description":"Role in committee","example":"Voting Rep","enum":["Chair","Voting Rep","Member"]},"user_id":{"type":"string","description":"LF user ID","example":"005f1000009RbC4AAK"},"username":{"type":"string","description":"Linux Foundation ID","example":"jdoe"}},"description":"Recipient information for preview send","example":{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},"required":["user_id","email"]},"InternalServerError":{"title":"InternalServerError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Voluptatem perspiciatis omnis."},"message":{"type":"string","description":"Error message","example":"Dicta dicta nesciunt quas."}},"description":"Internal server error","example":{"code":"Sequi consequuntur rerum omnis quos aut.","message":"Laborum quas corrupti voluptatum ea."},"required":["code","message"]},"LFXProject":{"title":"LFXProject","type":"object","properties":{"id":{"type":"string","description":"Project ID","example":"003170000123XHTAA2"},"logo_url":{"type":"string","description":"Project logo URL","example":"Fugit officiis cum rerum."},"name":{"type":"string","description":"Project name","example":"Express JS"},"slug":{"type":"string","description":"Project slug","example":"express-gateway"},"status":{"type":"string","description":"Project status/stage","example":"Active","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]}},"description":"LFX Project information","example":{"id":"003170000123XHTAA2","logo_url":"Dignissimos quo quibusdam non doloremque.","name":"Express JS","slug":"express-gateway","status":"Active"},"required":["id","name","slug","status"]},"NotFoundError":{"title":"NotFoundError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nostrum temporibus possimus."},"message":{"type":"string","description":"Error message","example":"Quas non."}},"description":"Not found","example":{"code":"Magnam optio.","message":"Earum qui eos id."},"required":["code","message"]},"PreviewSendResult":{"title":"PreviewSendResult","type":"object","properties":{"affected_committees":{"type":"array","items":{"$ref":"#/definitions/ExcludedCommittee"},"description":"List of affected committees","example":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}]},"affected_projects":{"type":"array","items":{"$ref":"#/definitions/LFXProject"},"description":"List of affected projects","example":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}]},"affected_recipients":{"type":"array","items":{"$ref":"#/definitions/ITXPreviewRecipient"},"description":"List of affected recipients","example":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"ServiceUnavailableError":{"title":"ServiceUnavailableError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Quis dolores ut et."},"message":{"type":"string","description":"Error message","example":"Aspernatur praesentium est impedit ut ut quaerat."}},"description":"Service unavailable","example":{"code":"Nisi perspiciatis.","message":"Delectus et consectetur illum unde autem omnis."},"required":["code","message"]},"SurveyBulkResendSurveyRequestBody":{"title":"SurveyBulkResendSurveyRequestBody","type":"object","properties":{"recipient_ids":{"type":"array","items":{"type":"string","example":"Inventore perferendis."},"description":"Array of recipient IDs to resend survey emails to","example":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]},"required":["recipient_ids"]},"SurveyCommittee":{"title":"SurveyCommittee","type":"object","properties":{"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"nps_value":{"type":"number","description":"NPS value for this committee","example":0.2719950762101171,"format":"double"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"survey_url":{"type":"string","description":"Survey URL for this committee","example":"https://surveymonkey.com/r/abc123"},"total_recipients":{"type":"integer","description":"Total recipients for this committee","example":8360805817855735579,"format":"int64"},"total_responses":{"type":"integer","description":"Total responses for this committee","example":2317337672288157344,"format":"int64"}},"description":"Survey committee details","example":{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.7274350005223461,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":898235292458345736,"total_responses":6716164380180638854}},"SurveyCreateExclusionRequestBody":{"title":"SurveyCreateExclusionRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Quasi aut ad hic ut voluptas dolorem."},"email":{"type":"string","description":"Survey responder's email","example":"Ea molestias et ipsam."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Deleniti officia numquam expedita."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Officia suscipit in fugiat."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Distinctio modi ratione deleniti."}},"example":{"committee_uid":"Ratione et.","email":"Et quidem sunt.","global_exclusion":"Sit delectus illum iure.","survey_uid":"Molestiae ut suscipit nulla.","user_id":"Ab eveniet et qui in odio doloribus."}},"SurveyDeleteExclusionRequestBody":{"title":"SurveyDeleteExclusionRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Ut quo reprehenderit."},"email":{"type":"string","description":"Survey responder's email","example":"Beatae cum exercitationem autem natus quae."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Vel rem vel id nobis optio fugit."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Cumque ad ut."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Rerum pariatur."}},"example":{"committee_uid":"Modi quisquam inventore vitae sed beatae.","email":"Mollitia et reprehenderit rerum.","global_exclusion":"Esse dolorem.","survey_uid":"Itaque saepe.","user_id":"Dolorem velit sit et."}},"SurveyScheduleResult":{"title":"SurveyScheduleResult","type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Optio laudantium aliquam et sit vel ea."},"committee_voting_enabled":{"type":"boolean","description":"Committee voting enabled","example":true},"committees":{"type":"array","items":{"$ref":"#/definitions/SurveyCommittee"},"description":"Survey committees","example":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}]},"created_at":{"type":"string","description":"Creation timestamp","example":"1991-06-14T04:12:59Z","format":"date-time"},"creator_id":{"type":"string","description":"Creator's user ID","example":"Quaerat dolor."},"creator_name":{"type":"string","description":"Creator's full name","example":"Facilis reiciendis et quos excepturi saepe voluptatum."},"creator_username":{"type":"string","description":"Creator's username","example":"Quisquam et qui."},"email_body":{"type":"string","description":"Email body HTML","example":"Et tempore ea ut officiis omnis voluptate."},"email_body_text":{"type":"string","description":"Email body plain text","example":"Repellat earum non ut id asperiores hic."},"email_subject":{"type":"string","description":"Email subject line","example":"In impedit repellat."},"is_nps_survey":{"type":"boolean","description":"Whether this is an NPS survey","example":true},"is_project_survey":{"type":"boolean","description":"Whether project-level or global-level survey","example":true},"last_modified_at":{"type":"string","description":"Last modification timestamp","example":"1996-03-05T09:04:50Z","format":"date-time"},"last_modified_by":{"type":"string","description":"User ID of last modifier","example":"Facere sit quaerat pariatur."},"latest_automated_reminder_sent_at":{"type":"string","description":"Latest automated reminder sent date","example":"1991-08-11T14:21:28Z","format":"date-time"},"next_automated_reminder_at":{"type":"string","description":"Next automated reminder date","example":"2012-10-19T00:51:29Z","format":"date-time"},"nps_value":{"type":"number","description":"NPS value","example":0.06048709593621433,"format":"double"},"num_automated_reminders_sent":{"type":"integer","description":"Number of automated reminders sent","example":7423717503328996703,"format":"int64"},"num_automated_reminders_to_send":{"type":"integer","description":"Number of automated reminders to send","example":4792105792390663775,"format":"int64"},"num_detractors":{"type":"integer","description":"Number of detractors","example":3721412613282556941,"format":"int64"},"num_passives":{"type":"integer","description":"Number of passives","example":630602705079431779,"format":"int64"},"num_promoters":{"type":"integer","description":"Number of promoters","example":9144982420120398791,"format":"int64"},"response_status":{"type":"string","description":"Response status","example":"scheduled","enum":["scheduled","open","closed"]},"send_immediately":{"type":"boolean","description":"Whether survey is sent immediately","example":false},"stage_filter":{"type":"string","description":"Project stage filter","example":"Esse perferendis."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff date","example":"2008-06-23T19:55:46Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"In porro aspernatur."},"survey_reminder_rate_days":{"type":"integer","description":"Days between reminder emails","example":5932690482610108701,"format":"int64"},"survey_send_date":{"type":"string","description":"Survey send date","example":"1986-11-11T13:54:53Z","format":"date-time"},"survey_status":{"type":"string","description":"Survey status","example":"scheduled","enum":["scheduled","sending","sent","cancelled"]},"survey_title":{"type":"string","description":"Survey title","example":"Quibusdam minima ut quis dolore incidunt velit."},"survey_url":{"type":"string","description":"Survey URL","example":"Ut excepturi velit expedita placeat."},"total_bounced_emails":{"type":"integer","description":"Number of bounced emails","example":5714015393000907159,"format":"int64"},"total_recipients":{"type":"integer","description":"Total number of recipients","example":5049480956996120320,"format":"int64"},"total_responses":{"type":"integer","description":"Total number of responses","example":949381826978715625,"format":"int64"},"uid":{"type":"string","description":"Survey unique identifier","example":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}},"example":{"committee_category":"Vitae et nesciunt culpa cupiditate.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1991-01-24T03:13:13Z","creator_id":"Rerum nostrum provident nihil quam quaerat.","creator_name":"Voluptate eius nihil ut ut quos.","creator_username":"Ipsam et nulla.","email_body":"Qui dolores.","email_body_text":"Porro dicta ipsam cumque.","email_subject":"Nisi blanditiis veniam voluptatem.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"2014-03-04T22:25:37Z","last_modified_by":"Id quod.","latest_automated_reminder_sent_at":"2013-01-23T09:18:20Z","next_automated_reminder_at":"2000-04-24T23:39:00Z","nps_value":0.8567202275814672,"num_automated_reminders_sent":4849997741128336544,"num_automated_reminders_to_send":8250981986975932702,"num_detractors":5455946721173509686,"num_passives":6396227727816532693,"num_promoters":2633350034400695879,"response_status":"scheduled","send_immediately":true,"stage_filter":"Facilis aut doloribus perspiciatis expedita ipsam aut.","survey_cutoff_date":"1985-04-15T13:02:36Z","survey_monkey_id":"Minus magnam et.","survey_reminder_rate_days":815636587156196874,"survey_send_date":"2009-12-20T16:20:59Z","survey_status":"scheduled","survey_title":"Ipsum fugiat.","survey_url":"Nemo consequatur nihil aut neque.","total_bounced_emails":2286647374539067270,"total_recipients":1356697113763045090,"total_responses":3035120764609076041,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"},"required":["uid","survey_status"]},"SurveyScheduleSurveyRequestBody":{"title":"SurveyScheduleSurveyRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Optio aut."},"creator_name":{"type":"string","description":"Creator's full name","example":"Corporis magni nobis est neque sed ut."},"creator_username":{"type":"string","description":"Creator's username","example":"Sed possimus."},"email_body":{"type":"string","description":"Email body HTML content","example":"Aut earum odit dolorum."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Commodi fugiat."},"email_subject":{"type":"string","description":"Email subject line","example":"Harum sunt quasi ea aut id."},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","example":true},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","example":false},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Explicabo quidem perspiciatis quidem."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Rerum voluptate doloribus praesentium qui explicabo quia."},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Est minus eveniet perspiciatis."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":3101412374997671411,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Quia hic."},"survey_title":{"type":"string","description":"Survey title","example":"Natus pariatur dolor quae iure accusantium mollitia."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Beatae qui est.","creator_name":"Est maiores quibusdam.","creator_username":"Et voluptas non vel est.","email_body":"Eveniet corporis at aliquam eligendi.","email_body_text":"Et sed nulla unde nihil dolor.","email_subject":"Quia sunt vel quidem.","is_project_survey":false,"send_immediately":false,"stage_filter":"Ipsam dignissimos beatae dolor aliquam alias.","survey_cutoff_date":"Omnis ea vitae.","survey_monkey_id":"Rem aperiam aut iusto.","survey_reminder_rate_days":7674533990149798869,"survey_send_date":"Molestias a fuga.","survey_title":"Et dicta sed porro saepe eos unde."},"required":["committee_uid"]},"SurveyUpdateSurveyRequestBody":{"title":"SurveyUpdateSurveyRequestBody","type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Nemo architecto exercitationem autem dolores."},"email_body":{"type":"string","description":"Email body HTML content","example":"Ipsum sunt."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Eveniet aliquam provident quam dicta."},"email_subject":{"type":"string","description":"Email subject line","example":"Facilis rerum alias nisi."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Occaecati et quia quia."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":510201010043617786,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Et aspernatur aliquid aut."},"survey_title":{"type":"string","description":"Survey title","example":"Praesentium voluptas nihil atque velit molestiae."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Sit unde laudantium voluptate cum.","email_body":"Quidem officia.","email_body_text":"Repellendus beatae quae impedit quis.","email_subject":"Molestiae quod consequuntur qui vero.","survey_cutoff_date":"Voluptatum quod aliquam ducimus voluptas.","survey_reminder_rate_days":8771076406201222434,"survey_send_date":"Dolores voluptas.","survey_title":"Velit molestiae sunt."}},"SurveyValidateEmailRequestBody":{"title":"SurveyValidateEmailRequestBody","type":"object","properties":{"body":{"type":"string","description":"Email body template","example":"Aut officia accusantium nihil."},"subject":{"type":"string","description":"Email subject template","example":"Exercitationem maxime sunt quidem et."}},"example":{"body":"Quidem rem ex nesciunt natus.","subject":"Tempore est eveniet illo."}},"UnauthorizedError":{"title":"UnauthorizedError","type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Et quo voluptatem qui accusantium et."},"message":{"type":"string","description":"Error message","example":"Qui nesciunt qui."}},"description":"Unauthorized","example":{"code":"Vel neque dolorem totam ipsa iste omnis.","message":"Autem odit voluptas voluptatibus."},"required":["code","message"]},"UserEmail":{"title":"UserEmail","type":"object","properties":{"email_address":{"type":"string","description":"Email address","example":"Est beatae omnis veniam."},"id":{"type":"string","description":"Email ID","example":"Quas quia eius dolorum nemo sit."},"is_primary":{"type":"boolean","description":"Whether this is the primary email","example":false}},"description":"User email information","example":{"email_address":"Et maiores exercitationem voluptas numquam.","id":"Laboriosam aut tempora officiis voluptatem.","is_primary":true}},"ValidateEmailResult":{"title":"ValidateEmailResult","type":"object","properties":{"body":{"type":"string","description":"Validated email body","example":"An example survey body with the quarter Q1"},"subject":{"type":"string","description":"Validated email subject","example":"An example survey subject with the year 2023"}},"example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"},"required":["body","subject"]}},"securityDefinitions":{"jwt_header_Authorization":{"type":"apiKey","description":"Heimdall JWT authorization\n\n**Security Scopes**:\n * `read:projects`: Read project data\n * `manage:projects`: Manage projects\n * `manage:surveys`: Manage surveys","name":"Authorization","in":"header"}}} \ No newline at end of file diff --git a/gen/http/openapi.yaml b/gen/http/openapi.yaml index 320825a..256a262 100644 --- a/gen/http/openapi.yaml +++ b/gen/http/openapi.yaml @@ -98,6 +98,16 @@ paths: * `manage:surveys` operationId: survey#get_survey parameters: + - name: project_uid + in: query + description: Optional LFX Project UID (V2) to filter survey data + required: false + type: string + - name: project_uids + in: query + description: Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid + required: false + type: string - name: survey_uid in: path description: Survey identifier diff --git a/gen/http/openapi3.json b/gen/http/openapi3.json index f0e69e5..c4e368c 100644 --- a/gen/http/openapi3.json +++ b/gen/http/openapi3.json @@ -1 +1 @@ -{"openapi":"3.0.3","info":{"title":"LFX V2 - Survey Service","description":"Proxy service for ITX survey system","version":"1.0"},"servers":[{"url":"http://localhost:8080"}],"paths":{"/surveys":{"post":{"tags":["survey"],"summary":"schedule_survey survey","description":"Create a scheduled survey for ITX project committee (proxies to ITX POST /surveys/schedule)","operationId":"survey#schedule_survey","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleSurveyRequestBody"},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Quam esse saepe eum non omnis amet.","creator_name":"Consequatur quod numquam et provident dolorem voluptatem.","creator_username":"Numquam eum suscipit labore odio rerum.","email_body":"Repellendus sunt omnis voluptate minima possimus.","email_body_text":"Occaecati sunt odit quia quia fugiat est.","email_subject":"Quis vero voluptatem et temporibus.","is_project_survey":true,"send_immediately":true,"stage_filter":"Dolorem quia et in.","survey_cutoff_date":"Omnis sint reprehenderit.","survey_monkey_id":"Omnis est at omnis.","survey_reminder_rate_days":3291766316701683331,"survey_send_date":"Et nulla quia.","survey_title":"Dolorum cumque."}}}},"responses":{"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Perferendis facilis minima.","committee_voting_enabled":false,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1997-02-08T02:16:04Z","creator_id":"Aliquam quia.","creator_name":"Sed consequatur magnam sit cumque.","creator_username":"Quibusdam perferendis perferendis expedita molestiae asperiores autem.","email_body":"Ex facere adipisci voluptatibus sapiente quidem.","email_body_text":"Odio quam voluptatibus quod.","email_subject":"Deleniti alias dolor ut voluptatem.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"1990-04-28T05:27:55Z","last_modified_by":"Non eos occaecati eveniet ut est.","latest_automated_reminder_sent_at":"1986-11-23T12:12:35Z","next_automated_reminder_at":"1990-01-15T20:28:07Z","nps_value":0.8489560388638391,"num_automated_reminders_sent":2546153251221068036,"num_automated_reminders_to_send":1987383043001567865,"num_detractors":6722206839176231374,"num_passives":7797190939681643122,"num_promoters":8175617102193956655,"response_status":"scheduled","send_immediately":false,"stage_filter":"Mollitia necessitatibus incidunt.","survey_cutoff_date":"2008-07-25T14:18:55Z","survey_monkey_id":"Quas eveniet eaque dicta.","survey_reminder_rate_days":2793305353261564275,"survey_send_date":"1983-04-29T16:58:00Z","survey_status":"scheduled","survey_title":"Iure explicabo explicabo ut dolorem.","survey_url":"Et atque quaerat.","total_bounced_emails":5809701518566913218,"total_recipients":8249359941071894662,"total_responses":6838673830197443373,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Reiciendis voluptas magni itaque.","message":"Ab magnam officia et."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Sit qui aut cupiditate illum eum.","message":"Voluptas quis qui quo."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Rem labore quisquam perspiciatis.","message":"Blanditiis sed unde incidunt."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Reiciendis quis dignissimos.","message":"Nostrum et."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Rerum ut quis incidunt.","message":"Eum explicabo error."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/exclusion":{"delete":{"tags":["survey"],"summary":"delete_exclusion survey","description":"Delete a survey or global exclusion (proxies to ITX DELETE /v2/surveys/exclusion)","operationId":"survey#delete_exclusion","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExclusionRequestBody"},"example":{"committee_uid":"Asperiores at dicta iusto adipisci est est.","email":"Repellendus modi illo voluptatem ab possimus.","global_exclusion":"Soluta facilis rerum exercitationem.","survey_uid":"Incidunt libero quo voluptates accusamus omnis saepe.","user_id":"Dolorem voluptatum ab accusantium magni nesciunt deleniti."}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Ut iusto eius qui.","message":"Recusandae itaque consequatur."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Et mollitia aut provident sint voluptas.","message":"Sed similique blanditiis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Tenetur sit facere ab.","message":"Veniam maiores distinctio temporibus facilis."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Velit quae dolor dolorem.","message":"Quo et eveniet repudiandae."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"post":{"tags":["survey"],"summary":"create_exclusion survey","description":"Create a survey or global exclusion (proxies to ITX POST /v2/surveys/exclusion)","operationId":"survey#create_exclusion","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExclusionRequestBody"},"example":{"committee_uid":"Tenetur omnis.","email":"Vel ipsam laborum quos provident ad.","global_exclusion":"Amet deleniti aut.","survey_uid":"Nihil eos molestiae numquam.","user_id":"Id minima id."}}}},"responses":{"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionResult"},"example":{"committee_uid":"Laudantium aut consectetur pariatur omnis.","email":"test@email.com","global_exclusion":"Rerum natus placeat explicabo ut.","survey_uid":"Blanditiis harum quis debitis voluptatem laborum.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Non eveniet esse consequatur omnis."}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Distinctio impedit cumque.","message":"Sit numquam et reprehenderit blanditiis animi aut."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quos consequatur voluptatum eius.","message":"Voluptatem ipsa quisquam vel velit."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Unde dolor veniam ut laborum quo eos.","message":"Magni optio."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Dolorum excepturi.","message":"Dolores temporibus odio cupiditate quam."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/exclusion/{exclusion_id}":{"delete":{"tags":["survey"],"summary":"delete_exclusion_by_id survey","description":"Delete exclusion by ID (proxies to ITX DELETE /v2/surveys/exclusion/{exclusion_id})","operationId":"survey#delete_exclusion_by_id","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"schema":{"type":"string","description":"Exclusion identifier","example":"12345"},"example":"12345"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Ut at ex quo.","message":"Et aliquid et id perspiciatis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Excepturi tempore unde porro cum ipsum.","message":"Est saepe numquam eum laudantium doloremque eum."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Id earum quod eum delectus autem et.","message":"Ad aut odio vero et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Et aut et eum iste veritatis.","message":"Quisquam ipsam."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"get":{"tags":["survey"],"summary":"get_exclusion survey","description":"Get exclusion by ID (proxies to ITX GET /v2/surveys/exclusion/{exclusion_id})","operationId":"survey#get_exclusion","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"schema":{"type":"string","description":"Exclusion identifier","example":"12345"},"example":"12345"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendedExclusionResult"},"example":{"committee_uid":"Quod pariatur.","email":"test@email.com","global_exclusion":"Aut autem omnis.","survey_uid":"Doloremque quia occaecati sunt hic quis.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Rerum autem molestias necessitatibus dolores fuga.","username":"Ab vitae qui ad tenetur vitae."},"user_id":"Distinctio id nihil dolores laboriosam."}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Harum error quis ea quos dicta odio.","message":"Reprehenderit et iure architecto numquam rerum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quis quis quos.","message":"Commodi soluta tempora molestiae error."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Veniam assumenda et odit veritatis.","message":"Quis enim."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Molestiae dolores laboriosam enim.","message":"Dolores debitis expedita quam."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Veniam aut molestiae.","message":"Enim ducimus corrupti."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/validate_email":{"post":{"tags":["survey"],"summary":"validate_email survey","description":"Validate email template body and subject (proxies to ITX POST /v2/surveys/validate_email)","operationId":"survey#validate_email","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateEmailRequestBody"},"example":{"body":"Vero in.","subject":"Ratione ut consequatur ullam."}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateEmailResult"},"example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Voluptatem maiores sunt quaerat praesentium reprehenderit eos.","message":"Consequuntur veniam."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quos minima odio.","message":"Necessitatibus molestias aperiam ea illum delectus optio."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Quod porro dignissimos qui sint quod.","message":"Sed in omnis ipsa fugit iusto."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Facilis sint.","message":"Quo qui est maxime ut itaque."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}":{"delete":{"tags":["survey"],"summary":"delete_survey survey","description":"Delete survey (proxies to ITX DELETE /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'","operationId":"survey#delete_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Sed laborum similique.","message":"Sunt voluptatem deserunt fugiat dicta."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Et laudantium.","message":"Facilis impedit ea placeat maxime."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Fuga corrupti nesciunt.","message":"Id assumenda aliquid tenetur iste maxime."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Ut nisi cupiditate quam.","message":"Similique quibusdam voluptates quis."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Consequuntur eum.","message":"Rerum voluptatem."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Consectetur at est nemo.","message":"Excepturi enim molestias reiciendis ut."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"get":{"tags":["survey"],"summary":"get_survey survey","description":"Get survey details (proxies to ITX GET /v2/surveys/{survey_uid})","operationId":"survey#get_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Sed ut.","committee_voting_enabled":false,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1990-05-26T18:10:13Z","creator_id":"Facilis est.","creator_name":"Laborum fuga dolores inventore sit est sed.","creator_username":"In autem provident blanditiis ab officiis ipsum.","email_body":"Quis mollitia ut minus.","email_body_text":"Sed ipsum nobis in aut similique.","email_subject":"Vitae unde.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"1994-01-14T00:41:21Z","last_modified_by":"Culpa consequatur aut.","latest_automated_reminder_sent_at":"1979-03-13T23:58:59Z","next_automated_reminder_at":"1983-11-22T04:37:25Z","nps_value":0.6379567056920531,"num_automated_reminders_sent":5955312177100105707,"num_automated_reminders_to_send":1501073311041553136,"num_detractors":2100042836277055694,"num_passives":4696138859968207767,"num_promoters":8946836443250022414,"response_status":"scheduled","send_immediately":false,"stage_filter":"Ab mollitia possimus et eum vero omnis.","survey_cutoff_date":"1991-03-10T03:13:24Z","survey_monkey_id":"Perspiciatis iste aut sit fugit.","survey_reminder_rate_days":8773992317131132630,"survey_send_date":"1992-05-28T13:28:36Z","survey_status":"scheduled","survey_title":"Quis distinctio quae.","survey_url":"Aliquam in aut laborum quod esse qui.","total_bounced_emails":7455921900934456301,"total_recipients":5590032177824588820,"total_responses":2896297817607758689,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Consequuntur inventore vel vel.","message":"Inventore quis voluptas dolore qui."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Saepe sed temporibus et est.","message":"Maiores dolorem aut odit dolorem repudiandae est."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Hic dolorem atque alias possimus eum qui.","message":"Molestiae quaerat voluptas."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Et dolorem reprehenderit.","message":"Ut suscipit assumenda."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Inventore a fuga ut aut nostrum.","message":"Cumque architecto laboriosam minus."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Voluptatem nihil.","message":"Quisquam quas veniam sequi ea quia."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"put":{"tags":["survey"],"summary":"update_survey survey","description":"Update survey (proxies to ITX PUT /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'","operationId":"survey#update_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSurveyRequestBody"},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Qui distinctio dolorum quia non quaerat nostrum.","email_body":"Veniam consequuntur sed praesentium.","email_body_text":"Similique et sapiente sunt sit.","email_subject":"Quo omnis maiores impedit.","survey_cutoff_date":"Consequatur rem et voluptatem et.","survey_reminder_rate_days":464515454408226755,"survey_send_date":"Sed in perspiciatis odit nesciunt.","survey_title":"Ut dicta eum ut vero animi."}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Veritatis nisi quasi totam nostrum.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"2012-11-29T16:25:11Z","creator_id":"Eos autem aut cum nesciunt.","creator_name":"Dolores corporis debitis harum earum autem et.","creator_username":"Modi excepturi et quas.","email_body":"Vero impedit doloribus saepe.","email_body_text":"Perspiciatis saepe culpa in dolores quam.","email_subject":"Error quisquam qui veritatis temporibus sit illum.","is_nps_survey":false,"is_project_survey":true,"last_modified_at":"2000-06-29T14:09:13Z","last_modified_by":"Possimus iure sint et sunt amet aut.","latest_automated_reminder_sent_at":"1999-02-24T22:35:21Z","next_automated_reminder_at":"2007-11-22T23:43:56Z","nps_value":0.23141298976984814,"num_automated_reminders_sent":8337289837672265763,"num_automated_reminders_to_send":8107375938073788662,"num_detractors":8419714383430859074,"num_passives":3773156406319571058,"num_promoters":7275587620146515160,"response_status":"scheduled","send_immediately":false,"stage_filter":"Sit id modi corporis.","survey_cutoff_date":"1981-11-20T11:20:01Z","survey_monkey_id":"Sed eligendi quo qui sint doloremque.","survey_reminder_rate_days":3045289415844103173,"survey_send_date":"1976-11-13T06:51:25Z","survey_status":"scheduled","survey_title":"Quo tempore porro.","survey_url":"Reprehenderit qui.","total_bounced_emails":920116411734754744,"total_recipients":7053772202910532748,"total_responses":3641612096555752497,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Voluptas sit ea.","message":"Est earum voluptatem eos corporis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Sit veniam.","message":"Facere perferendis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Et eveniet reprehenderit.","message":"Inventore rerum quisquam in dolorem."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Repudiandae distinctio consequuntur nam maiores omnis perspiciatis.","message":"Et et illum et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Laboriosam excepturi perferendis maiores ullam est.","message":"Qui alias beatae libero totam."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Est aut.","message":"Placeat error dolore molestiae."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/bulk_resend":{"post":{"tags":["survey"],"summary":"bulk_resend_survey survey","description":"Bulk resend survey emails to select recipients (proxies to ITX POST /v2/surveys/{survey_uid}/bulk_resend)","operationId":"survey#bulk_resend_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResendSurveyRequestBody"},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Quo porro et quam molestias excepturi.","message":"Fuga voluptatem aperiam ut delectus veritatis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quasi molestias fugiat laudantium.","message":"Et voluptatem est."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Quia necessitatibus maxime aperiam voluptatum et.","message":"Delectus totam et quaerat."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Laudantium rerum inventore sed quis.","message":"Mollitia explicabo inventore est dolorum omnis et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Velit velit a officiis voluptas porro.","message":"Quas in illum qui at hic necessitatibus."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Non ut.","message":"Aut delectus."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/preview_send":{"get":{"tags":["survey"],"summary":"preview_send_survey survey","description":"Preview which recipients, committees, and projects would be affected by a resend (proxies to ITX GET /v2/surveys/{survey_uid}/preview_send)","operationId":"survey#preview_send_survey","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to filter preview","allowEmptyValue":true,"schema":{"type":"string","description":"Optional committee UID to filter preview","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewSendResult"},"example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Quod illum.","message":"Aliquam harum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Dolores maxime accusantium perferendis itaque omnis provident.","message":"Officiis hic quis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Enim omnis ad.","message":"Voluptas repellat hic atque aut."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Beatae omnis explicabo sunt qui dolores laborum.","message":"Vero quia corporis ut."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Aut id mollitia voluptas aut maiores.","message":"Libero dolore non quos est autem."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Explicabo eius voluptates in asperiores ducimus aut.","message":"Adipisci consequatur sapiente at."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/recipient_group":{"delete":{"tags":["survey"],"summary":"delete_recipient_group survey","description":"Remove a recipient group (committee, project, or foundation) from survey and recalculate statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/recipient_group)","operationId":"survey#delete_recipient_group","parameters":[{"name":"committee_uid","in":"query","description":"Committee UID to remove (indicates specific committee in project)","allowEmptyValue":true,"schema":{"type":"string","description":"Committee UID to remove (indicates specific committee in project)","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"project_uid","in":"query","description":"Project UID to remove (all removals are attached to a project)","allowEmptyValue":true,"schema":{"type":"string","description":"Project UID to remove (all removals are attached to a project)","example":"003170000123XHTAA2"},"example":"003170000123XHTAA2"},{"name":"foundation_id","in":"query","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","allowEmptyValue":true,"schema":{"type":"string","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","example":"003170000123XHTAA2"},"example":"003170000123XHTAA2"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Iusto voluptates est recusandae.","message":"Corrupti eos repudiandae."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Deserunt ex et esse aut quo corporis.","message":"Animi laboriosam."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Illum aspernatur animi maxime est et.","message":"Eius ratione nisi facere."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Enim placeat harum voluptatem.","message":"Sed voluptatibus doloribus optio in sit reprehenderit."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Iusto autem.","message":"Qui sequi repudiandae est alias nisi doloremque."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"In cum ipsa aliquam.","message":"Nisi qui repudiandae omnis molestiae assumenda."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/responses/{response_id}":{"delete":{"tags":["survey"],"summary":"delete_survey_response survey","description":"Delete survey response - removes recipient from survey and recalculates statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/responses/{response_id})","operationId":"survey#delete_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"schema":{"type":"string","description":"Response identifier","example":"cba14f40-1636-11ec-9621-0242ac130002"},"example":"cba14f40-1636-11ec-9621-0242ac130002"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Consectetur modi quisquam non a omnis.","message":"Incidunt veritatis molestiae molestiae temporibus rerum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Laborum impedit sed minima molestiae.","message":"Non quisquam ea earum."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Non ea necessitatibus ut.","message":"Possimus et aut repudiandae beatae autem repellendus."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Rerum dolores enim distinctio rerum eius earum.","message":"Assumenda enim culpa."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Reiciendis facilis sunt.","message":"Eum possimus laudantium aut pariatur qui provident."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Eligendi quasi doloremque quidem.","message":"Est ducimus ut omnis et."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/responses/{response_id}/resend":{"post":{"tags":["survey"],"summary":"resend_survey_response survey","description":"Resend survey email to a specific user (proxies to ITX POST /v2/surveys/{survey_uid}/responses/{response_id}/resend)","operationId":"survey#resend_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"schema":{"type":"string","description":"Response identifier","example":"cba14f40-1636-11ec-9621-0242ac130002"},"example":"cba14f40-1636-11ec-9621-0242ac130002"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Aliquam nobis.","message":"Maiores id."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Qui fugit laboriosam.","message":"Error qui maiores."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Officiis cum voluptatem error eum.","message":"Error provident quo hic asperiores sint."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Aut eveniet harum quo aut.","message":"Ut maiores."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Id vel incidunt architecto inventore.","message":"At reiciendis non consequuntur."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Vel quia quisquam inventore sit.","message":"Est ad doloribus omnis sit."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/send_missing_recipients":{"post":{"tags":["survey"],"summary":"send_missing_recipients survey","description":"Send survey emails to committee members who haven't received it (proxies to ITX POST /v2/surveys/{survey_uid}/send_missing_recipients)","operationId":"survey#send_missing_recipients","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to resync only that committee","allowEmptyValue":true,"schema":{"type":"string","description":"Optional committee UID to resync only that committee","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Accusamus tempore nemo nulla.","message":"Et quasi nam eveniet omnis aspernatur doloremque."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Suscipit occaecati perferendis nostrum.","message":"Quam repellendus."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Temporibus nostrum qui labore.","message":"Necessitatibus facere enim natus."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Laborum doloribus maxime ullam voluptatum pariatur iure.","message":"Expedita ut."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Nesciunt vel voluptatem cupiditate consectetur.","message":"Ut provident sed in qui."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Nostrum voluptatem.","message":"At omnis."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}}},"components":{"schemas":{"BadRequestError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Explicabo omnis sunt maiores blanditiis dolores."},"message":{"type":"string","description":"Error message","example":"Ut inventore consequuntur culpa vitae."}},"description":"Bad request error response","example":{"code":"Est sunt dolor enim autem provident.","message":"Expedita ipsum."},"required":["code","message"]},"BulkResendSurveyRequestBody":{"type":"object","properties":{"recipient_ids":{"type":"array","items":{"type":"string","example":"Voluptas qui fuga ut ut maiores."},"description":"Array of recipient IDs to resend survey emails to","example":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]},"required":["recipient_ids"]},"ConflictError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Ad ipsa et cumque in inventore a."},"message":{"type":"string","description":"Error message","example":"Molestiae repellendus sed."}},"description":"Conflict error response","example":{"code":"Iste est eaque aliquid sunt.","message":"Nihil sunt."},"required":["code","message"]},"CreateExclusionRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Voluptates aut cupiditate dolorum dolorem voluptatem."},"email":{"type":"string","description":"Survey responder's email","example":"Ducimus qui ad qui."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Et eligendi provident."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Veritatis numquam vel et enim repudiandae."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Dolor fuga temporibus sed."}},"example":{"committee_uid":"Ullam rem amet minus cupiditate quam in.","email":"Aut sunt ut.","global_exclusion":"Sed incidunt rerum labore.","survey_uid":"Qui dolorum quia voluptatem in beatae omnis.","user_id":"Laborum id aut reprehenderit veniam sit ut."}},"ExcludedCommittee":{"type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Technical Steering Committee","enum":["Legal Committee","Finance Committee","Special Interest Group","Board","Technical Oversight Committee/Technical Advisory Committee","Technical Steering Committee"]},"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"003170000123XHTAA2"}},"description":"Committee information for preview send","example":{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},"required":["project_uid","project_name","committee_uid","committee_name","committee_category"]},"ExclusionResult":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Delectus saepe."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Consequuntur consequuntur pariatur."},"survey_uid":{"type":"string","description":"Survey UID","example":"Suscipit harum sequi ipsum vitae quia dolore."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Quo totam fuga maxime eveniet velit sed."}},"description":"A survey or global exclusion","example":{"committee_uid":"Soluta illo iure reprehenderit culpa.","email":"test@email.com","global_exclusion":"Nihil iste in.","survey_uid":"Et fugiat et.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Qui totam esse unde cupiditate laboriosam."},"required":["uid"]},"ExclusionUser":{"type":"object","properties":{"emails":{"type":"array","items":{"$ref":"#/components/schemas/UserEmail"},"description":"User emails","example":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}]},"id":{"type":"string","description":"User ID","example":"Cumque similique."},"username":{"type":"string","description":"Username","example":"Rerum nesciunt fugiat."}},"description":"User information for an exclusion","example":{"emails":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}],"id":"At ipsam deleniti.","username":"Quis aut voluptates deserunt laborum."}},"ExtendedExclusionResult":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Ab numquam."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Illum debitis."},"survey_uid":{"type":"string","description":"Survey UID","example":"Labore similique dolore quod consectetur qui."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user":{"$ref":"#/components/schemas/ExclusionUser"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Eum pariatur laborum consectetur."}},"description":"A survey or global exclusion with user information","example":{"committee_uid":"Sit error delectus quos.","email":"test@email.com","global_exclusion":"Et sed velit qui.","survey_uid":"Assumenda accusantium nulla aperiam sit et doloribus.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}],"id":"Cum reiciendis ad expedita iusto sunt ab.","username":"Voluptatum porro ut quo occaecati."},"user_id":"Quos quis sint incidunt qui est harum."},"required":["uid"]},"ForbiddenError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Unde quibusdam ex."},"message":{"type":"string","description":"Error message","example":"Dolor cupiditate incidunt nesciunt voluptas a."}},"description":"Forbidden error response","example":{"code":"Eius repellat est.","message":"Inventore recusandae ab qui voluptate."},"required":["code","message"]},"ITXPreviewRecipient":{"type":"object","properties":{"email":{"type":"string","description":"Email address","example":"john.doe@example.com","format":"email"},"first_name":{"type":"string","description":"User first name","example":"John"},"last_name":{"type":"string","description":"User last name","example":"Doe"},"name":{"type":"string","description":"User full name","example":"John Doe"},"role":{"type":"string","description":"Role in committee","example":"Voting Rep","enum":["Chair","Voting Rep","Member"]},"user_id":{"type":"string","description":"LF user ID","example":"005f1000009RbC4AAK"},"username":{"type":"string","description":"Linux Foundation ID","example":"jdoe"}},"description":"Recipient information for preview send","example":{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},"required":["user_id","email"]},"InternalServerError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nemo odit."},"message":{"type":"string","description":"Error message","example":"Impedit veniam voluptatem laboriosam voluptatem."}},"description":"Internal server error response","example":{"code":"Reprehenderit et et.","message":"Consequatur voluptas eos qui dolore rerum."},"required":["code","message"]},"LFXProject":{"type":"object","properties":{"id":{"type":"string","description":"Project ID","example":"003170000123XHTAA2"},"logo_url":{"type":"string","description":"Project logo URL","example":"Incidunt et."},"name":{"type":"string","description":"Project name","example":"Express JS"},"slug":{"type":"string","description":"Project slug","example":"express-gateway"},"status":{"type":"string","description":"Project status/stage","example":"Active","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]}},"description":"LFX Project information","example":{"id":"003170000123XHTAA2","logo_url":"Reiciendis sit maiores magnam deserunt et perspiciatis.","name":"Express JS","slug":"express-gateway","status":"Active"},"required":["id","name","slug","status"]},"NotFoundError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Iste velit perspiciatis animi reprehenderit."},"message":{"type":"string","description":"Error message","example":"Qui autem et ea."}},"description":"Not found error response","example":{"code":"Culpa illum.","message":"Voluptatem dolor quasi sed sed nostrum."},"required":["code","message"]},"PreviewSendResult":{"type":"object","properties":{"affected_committees":{"type":"array","items":{"$ref":"#/components/schemas/ExcludedCommittee"},"description":"List of affected committees","example":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}]},"affected_projects":{"type":"array","items":{"$ref":"#/components/schemas/LFXProject"},"description":"List of affected projects","example":[{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"}]},"affected_recipients":{"type":"array","items":{"$ref":"#/components/schemas/ITXPreviewRecipient"},"description":"List of affected recipients","example":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"description":"Preview of recipients, committees, and projects affected by a resend","example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"ScheduleSurveyRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":false},"creator_id":{"type":"string","description":"Creator's user ID","example":"Non et."},"creator_name":{"type":"string","description":"Creator's full name","example":"Quia a ut molestias qui."},"creator_username":{"type":"string","description":"Creator's username","example":"Aliquid est sit laborum sit quia."},"email_body":{"type":"string","description":"Email body HTML content","example":"Saepe doloribus recusandae."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Ex id voluptas."},"email_subject":{"type":"string","description":"Email subject line","example":"Excepturi qui ut architecto."},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","example":true},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","example":true},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Sunt ex."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Quidem rerum quae."},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Voluptas exercitationem."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":7328611094451502257,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Explicabo ullam alias quisquam et sed quis."},"survey_title":{"type":"string","description":"Survey title","example":"Et aut blanditiis qui libero et tempore."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":false,"creator_id":"Corrupti voluptas qui est suscipit nihil aliquid.","creator_name":"Ipsa velit rem totam.","creator_username":"Officiis voluptatem.","email_body":"Nemo neque natus deleniti assumenda et.","email_body_text":"Molestiae temporibus.","email_subject":"Libero reprehenderit dicta repellat beatae.","is_project_survey":false,"send_immediately":true,"stage_filter":"Esse explicabo et deleniti.","survey_cutoff_date":"Numquam in facilis.","survey_monkey_id":"Excepturi qui perspiciatis blanditiis voluptas totam aut.","survey_reminder_rate_days":4814888659035368650,"survey_send_date":"Provident eligendi praesentium voluptatem reiciendis suscipit molestiae.","survey_title":"Est reiciendis nulla sed voluptatem quam consequatur."},"required":["committee_uid"]},"ServiceUnavailableError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Animi ab sapiente."},"message":{"type":"string","description":"Error message","example":"Ut id consequuntur sit aut aspernatur."}},"description":"Service unavailable error response","example":{"code":"Quasi est fugiat placeat enim.","message":"Perferendis aliquid reprehenderit sit possimus magnam omnis."},"required":["code","message"]},"SurveyCommittee":{"type":"object","properties":{"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"nps_value":{"type":"number","description":"NPS value for this committee","example":0.3474379275416848,"format":"double"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"survey_url":{"type":"string","description":"Survey URL for this committee","example":"https://surveymonkey.com/r/abc123"},"total_recipients":{"type":"integer","description":"Total recipients for this committee","example":3141893145609172741,"format":"int64"},"total_responses":{"type":"integer","description":"Total responses for this committee","example":2728308064949776656,"format":"int64"}},"description":"Survey committee details","example":{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.21872305851724838,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":8693291114078661955,"total_responses":8056228715476607245}},"SurveySchedulePayload":{"type":"object","properties":{"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","default":false,"example":true},"committees":{"type":"array","items":{"type":"string","example":"Modi a provident ex ad exercitationem beatae."},"description":"Array of committee IDs to send survey to","example":["com-123","com-456"]},"creator_id":{"type":"string","description":"Creator's user ID","example":"john-doe-id"},"creator_name":{"type":"string","description":"Creator's full name","example":"John Doe"},"creator_username":{"type":"string","description":"Creator's username","example":"john23"},"email_body":{"type":"string","description":"Email body HTML content","example":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003cbody\u003e\u003ch3\u003eHi there\u003c/h3\u003e\u003cp\u003ePlease take our survey\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e"},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Hi there! Please take our survey at: https://surveymonkey.com/..."},"email_subject":{"type":"string","description":"Email subject line","example":"You're invited: Q1 2026 Developer Survey","maxLength":200},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","default":false,"example":false},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","default":false,"example":false},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Formation - Engaged"},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"2026-03-15T09:00:00Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"123456789"},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":7,"format":"int64","minimum":0},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"2026-02-15T09:00:00Z","format":"date-time"},"survey_title":{"type":"string","description":"Survey title","example":"Q1 2026 Developer Satisfaction Survey","maxLength":255}},"description":"Payload for scheduling a survey","example":{"committee_voting_enabled":true,"committees":["com-123","com-456"],"creator_id":"john-doe-id","creator_name":"John Doe","creator_username":"john23","email_body":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003cbody\u003e\u003ch3\u003eHi there\u003c/h3\u003e\u003cp\u003ePlease take our survey\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e","email_body_text":"Hi there! Please take our survey at: https://surveymonkey.com/...","email_subject":"You're invited: Q1 2026 Developer Survey","is_project_survey":false,"send_immediately":false,"stage_filter":"Formation - Engaged","survey_cutoff_date":"2026-03-15T09:00:00Z","survey_monkey_id":"123456789","survey_reminder_rate_days":7,"survey_send_date":"2026-02-15T09:00:00Z","survey_title":"Q1 2026 Developer Satisfaction Survey"}},"SurveyScheduleResult":{"type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Rem rem earum nihil."},"committee_voting_enabled":{"type":"boolean","description":"Committee voting enabled","example":false},"committees":{"type":"array","items":{"$ref":"#/components/schemas/SurveyCommittee"},"description":"Survey committees","example":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628}]},"created_at":{"type":"string","description":"Creation timestamp","example":"2004-05-27T21:17:31Z","format":"date-time"},"creator_id":{"type":"string","description":"Creator's user ID","example":"Fugiat quis dolores sint perspiciatis eos earum."},"creator_name":{"type":"string","description":"Creator's full name","example":"Omnis nam et."},"creator_username":{"type":"string","description":"Creator's username","example":"Ipsam assumenda quam rerum."},"email_body":{"type":"string","description":"Email body HTML","example":"Harum quaerat sequi perspiciatis omnis provident."},"email_body_text":{"type":"string","description":"Email body plain text","example":"Quibusdam sapiente."},"email_subject":{"type":"string","description":"Email subject line","example":"Voluptatem tempora id et."},"is_nps_survey":{"type":"boolean","description":"Whether this is an NPS survey","example":false},"is_project_survey":{"type":"boolean","description":"Whether project-level or global-level survey","example":false},"last_modified_at":{"type":"string","description":"Last modification timestamp","example":"1983-10-27T13:38:12Z","format":"date-time"},"last_modified_by":{"type":"string","description":"User ID of last modifier","example":"Adipisci et quibusdam et voluptatem provident."},"latest_automated_reminder_sent_at":{"type":"string","description":"Latest automated reminder sent date","example":"1983-06-06T00:53:44Z","format":"date-time"},"next_automated_reminder_at":{"type":"string","description":"Next automated reminder date","example":"2002-03-15T16:21:47Z","format":"date-time"},"nps_value":{"type":"number","description":"NPS value","example":0.8519164409906,"format":"double"},"num_automated_reminders_sent":{"type":"integer","description":"Number of automated reminders sent","example":1972904916392206914,"format":"int64"},"num_automated_reminders_to_send":{"type":"integer","description":"Number of automated reminders to send","example":4001396657159876410,"format":"int64"},"num_detractors":{"type":"integer","description":"Number of detractors","example":3576976694752166473,"format":"int64"},"num_passives":{"type":"integer","description":"Number of passives","example":3639497964781799593,"format":"int64"},"num_promoters":{"type":"integer","description":"Number of promoters","example":6776505088433966539,"format":"int64"},"response_status":{"type":"string","description":"Response status","example":"scheduled","enum":["scheduled","open","closed"]},"send_immediately":{"type":"boolean","description":"Whether survey is sent immediately","example":false},"stage_filter":{"type":"string","description":"Project stage filter","example":"Est quos id voluptates odit velit."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff date","example":"2013-05-30T01:48:04Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Repudiandae vel."},"survey_reminder_rate_days":{"type":"integer","description":"Days between reminder emails","example":1268332027555056005,"format":"int64"},"survey_send_date":{"type":"string","description":"Survey send date","example":"2003-03-21T17:17:44Z","format":"date-time"},"survey_status":{"type":"string","description":"Survey status","example":"scheduled","enum":["scheduled","sending","sent","cancelled"]},"survey_title":{"type":"string","description":"Survey title","example":"Voluptatem ullam nemo libero eos et."},"survey_url":{"type":"string","description":"Survey URL","example":"Sit earum doloribus quibusdam quasi."},"total_bounced_emails":{"type":"integer","description":"Number of bounced emails","example":254440082301907429,"format":"int64"},"total_recipients":{"type":"integer","description":"Total number of recipients","example":3165488552227472947,"format":"int64"},"total_responses":{"type":"integer","description":"Total number of responses","example":1742409208008675494,"format":"int64"},"uid":{"type":"string","description":"Survey unique identifier","example":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}},"description":"Scheduled survey details","example":{"committee_category":"Quis quibusdam velit ut blanditiis et voluptatem.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628}],"created_at":"1991-02-16T17:29:02Z","creator_id":"Odio quas incidunt neque facere sit debitis.","creator_name":"Minus tempore.","creator_username":"Ab est velit aperiam recusandae voluptatum qui.","email_body":"In id dolores.","email_body_text":"Tenetur esse veritatis.","email_subject":"Incidunt voluptas quis suscipit iste nisi at.","is_nps_survey":false,"is_project_survey":true,"last_modified_at":"2004-08-13T14:38:40Z","last_modified_by":"Facilis qui ut.","latest_automated_reminder_sent_at":"1984-04-10T15:20:14Z","next_automated_reminder_at":"2003-02-01T02:11:33Z","nps_value":0.15364128203492167,"num_automated_reminders_sent":2145270834145761878,"num_automated_reminders_to_send":6632543082441364214,"num_detractors":6351795924184130794,"num_passives":3280994576108905970,"num_promoters":777312228626795634,"response_status":"scheduled","send_immediately":false,"stage_filter":"Consequatur quasi.","survey_cutoff_date":"1988-07-31T19:17:28Z","survey_monkey_id":"Quos aut necessitatibus in est.","survey_reminder_rate_days":7084723093881984689,"survey_send_date":"2009-11-01T12:03:22Z","survey_status":"scheduled","survey_title":"Maxime id.","survey_url":"Maiores inventore.","total_bounced_emails":55392808957965234,"total_recipients":5713742991241156416,"total_responses":6837913107047442008,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"},"required":["uid","survey_status"]},"UnauthorizedError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Dicta magni quasi architecto."},"message":{"type":"string","description":"Error message","example":"Dolorum velit ratione possimus velit labore voluptatem."}},"description":"Unauthorized error response","example":{"code":"Culpa dolor id pariatur.","message":"Consectetur porro aut eius ab officia."},"required":["code","message"]},"UpdateSurveyRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Nihil dolore."},"email_body":{"type":"string","description":"Email body HTML content","example":"Deleniti autem doloribus rem temporibus."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"In et ullam."},"email_subject":{"type":"string","description":"Email subject line","example":"Est vitae quia."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"A cumque nesciunt quasi aliquam tempora soluta."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":3018393064459007843,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Molestiae aut quis aut vel omnis."},"survey_title":{"type":"string","description":"Survey title","example":"Recusandae et laboriosam."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":false,"creator_id":"Asperiores dicta quis temporibus.","email_body":"Quod qui veniam sunt et explicabo.","email_body_text":"Assumenda asperiores minus eaque facilis fugit.","email_subject":"Totam et optio atque quidem.","survey_cutoff_date":"Laborum optio sunt ipsam rerum.","survey_reminder_rate_days":6334930941210685040,"survey_send_date":"Architecto quaerat nemo amet est est.","survey_title":"Odio non."}},"UserEmail":{"type":"object","properties":{"email_address":{"type":"string","description":"Email address","example":"Molestias dolorem doloremque in sit qui."},"id":{"type":"string","description":"Email ID","example":"Est quisquam aut est illum veritatis labore."},"is_primary":{"type":"boolean","description":"Whether this is the primary email","example":true}},"description":"User email information","example":{"email_address":"Esse qui non veniam iure labore.","id":"Minima at suscipit.","is_primary":false}},"ValidateEmailRequestBody":{"type":"object","properties":{"body":{"type":"string","description":"Email body template","example":"Excepturi qui vitae aut repudiandae."},"subject":{"type":"string","description":"Email subject template","example":"Voluptatem consequuntur nostrum velit sunt."}},"example":{"body":"Alias hic sed et aut porro.","subject":"Corporis harum dolores sint dignissimos in."}},"ValidateEmailResult":{"type":"object","properties":{"body":{"type":"string","description":"Validated email body","example":"An example survey body with the quarter Q1"},"subject":{"type":"string","description":"Validated email subject","example":"An example survey subject with the year 2023"}},"description":"Validated email template body and subject","example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"},"required":["body","subject"]}},"securitySchemes":{"jwt_header_Authorization":{"type":"http","description":"Heimdall JWT authorization","scheme":"bearer"}}},"tags":[{"name":"survey","description":"Survey service that proxies to ITX survey API"}]} \ No newline at end of file +{"openapi":"3.0.3","info":{"title":"LFX V2 - Survey Service","description":"Proxy service for ITX survey system","version":"1.0"},"servers":[{"url":"http://localhost:8080"}],"paths":{"/surveys":{"post":{"tags":["survey"],"summary":"schedule_survey survey","description":"Create a scheduled survey for ITX project committee (proxies to ITX POST /surveys/schedule)","operationId":"survey#schedule_survey","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScheduleSurveyRequestBody"},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Quam esse saepe eum non omnis amet.","creator_name":"Consequatur quod numquam et provident dolorem voluptatem.","creator_username":"Numquam eum suscipit labore odio rerum.","email_body":"Repellendus sunt omnis voluptate minima possimus.","email_body_text":"Occaecati sunt odit quia quia fugiat est.","email_subject":"Quis vero voluptatem et temporibus.","is_project_survey":true,"send_immediately":true,"stage_filter":"Dolorem quia et in.","survey_cutoff_date":"Omnis sint reprehenderit.","survey_monkey_id":"Omnis est at omnis.","survey_reminder_rate_days":3291766316701683331,"survey_send_date":"Et nulla quia.","survey_title":"Dolorum cumque."}}}},"responses":{"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Perferendis facilis minima.","committee_voting_enabled":false,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1997-02-08T02:16:04Z","creator_id":"Aliquam quia.","creator_name":"Sed consequatur magnam sit cumque.","creator_username":"Quibusdam perferendis perferendis expedita molestiae asperiores autem.","email_body":"Ex facere adipisci voluptatibus sapiente quidem.","email_body_text":"Odio quam voluptatibus quod.","email_subject":"Deleniti alias dolor ut voluptatem.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"1990-04-28T05:27:55Z","last_modified_by":"Non eos occaecati eveniet ut est.","latest_automated_reminder_sent_at":"1986-11-23T12:12:35Z","next_automated_reminder_at":"1990-01-15T20:28:07Z","nps_value":0.8489560388638391,"num_automated_reminders_sent":2546153251221068036,"num_automated_reminders_to_send":1987383043001567865,"num_detractors":6722206839176231374,"num_passives":7797190939681643122,"num_promoters":8175617102193956655,"response_status":"scheduled","send_immediately":false,"stage_filter":"Mollitia necessitatibus incidunt.","survey_cutoff_date":"2008-07-25T14:18:55Z","survey_monkey_id":"Quas eveniet eaque dicta.","survey_reminder_rate_days":2793305353261564275,"survey_send_date":"1983-04-29T16:58:00Z","survey_status":"scheduled","survey_title":"Iure explicabo explicabo ut dolorem.","survey_url":"Et atque quaerat.","total_bounced_emails":5809701518566913218,"total_recipients":8249359941071894662,"total_responses":6838673830197443373,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Reiciendis voluptas magni itaque.","message":"Ab magnam officia et."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Sit qui aut cupiditate illum eum.","message":"Voluptas quis qui quo."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Rem labore quisquam perspiciatis.","message":"Blanditiis sed unde incidunt."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Reiciendis quis dignissimos.","message":"Nostrum et."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Rerum ut quis incidunt.","message":"Eum explicabo error."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/exclusion":{"delete":{"tags":["survey"],"summary":"delete_exclusion survey","description":"Delete a survey or global exclusion (proxies to ITX DELETE /v2/surveys/exclusion)","operationId":"survey#delete_exclusion","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExclusionRequestBody"},"example":{"committee_uid":"Asperiores at dicta iusto adipisci est est.","email":"Repellendus modi illo voluptatem ab possimus.","global_exclusion":"Soluta facilis rerum exercitationem.","survey_uid":"Incidunt libero quo voluptates accusamus omnis saepe.","user_id":"Dolorem voluptatum ab accusantium magni nesciunt deleniti."}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Ut iusto eius qui.","message":"Recusandae itaque consequatur."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Et mollitia aut provident sint voluptas.","message":"Sed similique blanditiis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Tenetur sit facere ab.","message":"Veniam maiores distinctio temporibus facilis."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Velit quae dolor dolorem.","message":"Quo et eveniet repudiandae."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"post":{"tags":["survey"],"summary":"create_exclusion survey","description":"Create a survey or global exclusion (proxies to ITX POST /v2/surveys/exclusion)","operationId":"survey#create_exclusion","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExclusionRequestBody"},"example":{"committee_uid":"Tenetur omnis.","email":"Vel ipsam laborum quos provident ad.","global_exclusion":"Amet deleniti aut.","survey_uid":"Nihil eos molestiae numquam.","user_id":"Id minima id."}}}},"responses":{"201":{"description":"Created response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionResult"},"example":{"committee_uid":"Laudantium aut consectetur pariatur omnis.","email":"test@email.com","global_exclusion":"Rerum natus placeat explicabo ut.","survey_uid":"Blanditiis harum quis debitis voluptatem laborum.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Non eveniet esse consequatur omnis."}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Distinctio impedit cumque.","message":"Sit numquam et reprehenderit blanditiis animi aut."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quos consequatur voluptatum eius.","message":"Voluptatem ipsa quisquam vel velit."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Unde dolor veniam ut laborum quo eos.","message":"Magni optio."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Dolorum excepturi.","message":"Dolores temporibus odio cupiditate quam."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/exclusion/{exclusion_id}":{"delete":{"tags":["survey"],"summary":"delete_exclusion_by_id survey","description":"Delete exclusion by ID (proxies to ITX DELETE /v2/surveys/exclusion/{exclusion_id})","operationId":"survey#delete_exclusion_by_id","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"schema":{"type":"string","description":"Exclusion identifier","example":"12345"},"example":"12345"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Ut at ex quo.","message":"Et aliquid et id perspiciatis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Excepturi tempore unde porro cum ipsum.","message":"Est saepe numquam eum laudantium doloremque eum."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Id earum quod eum delectus autem et.","message":"Ad aut odio vero et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Et aut et eum iste veritatis.","message":"Quisquam ipsam."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"get":{"tags":["survey"],"summary":"get_exclusion survey","description":"Get exclusion by ID (proxies to ITX GET /v2/surveys/exclusion/{exclusion_id})","operationId":"survey#get_exclusion","parameters":[{"name":"exclusion_id","in":"path","description":"Exclusion identifier","required":true,"schema":{"type":"string","description":"Exclusion identifier","example":"12345"},"example":"12345"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExtendedExclusionResult"},"example":{"committee_uid":"Quod pariatur.","email":"test@email.com","global_exclusion":"Aut autem omnis.","survey_uid":"Doloremque quia occaecati sunt hic quis.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false},{"email_address":"Excepturi totam et qui vel.","id":"Officiis officiis quasi possimus aut eum eum.","is_primary":false}],"id":"Rerum autem molestias necessitatibus dolores fuga.","username":"Ab vitae qui ad tenetur vitae."},"user_id":"Distinctio id nihil dolores laboriosam."}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Harum error quis ea quos dicta odio.","message":"Reprehenderit et iure architecto numquam rerum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quis quis quos.","message":"Commodi soluta tempora molestiae error."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Veniam assumenda et odit veritatis.","message":"Quis enim."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Molestiae dolores laboriosam enim.","message":"Dolores debitis expedita quam."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Veniam aut molestiae.","message":"Enim ducimus corrupti."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/validate_email":{"post":{"tags":["survey"],"summary":"validate_email survey","description":"Validate email template body and subject (proxies to ITX POST /v2/surveys/validate_email)","operationId":"survey#validate_email","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateEmailRequestBody"},"example":{"body":"Vero in.","subject":"Ratione ut consequatur ullam."}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateEmailResult"},"example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Voluptatem maiores sunt quaerat praesentium reprehenderit eos.","message":"Consequuntur veniam."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quos minima odio.","message":"Necessitatibus molestias aperiam ea illum delectus optio."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Quod porro dignissimos qui sint quod.","message":"Sed in omnis ipsa fugit iusto."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Facilis sint.","message":"Quo qui est maxime ut itaque."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}":{"delete":{"tags":["survey"],"summary":"delete_survey survey","description":"Delete survey (proxies to ITX DELETE /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'","operationId":"survey#delete_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Sed laborum similique.","message":"Sunt voluptatem deserunt fugiat dicta."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Et laudantium.","message":"Facilis impedit ea placeat maxime."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Fuga corrupti nesciunt.","message":"Id assumenda aliquid tenetur iste maxime."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Ut nisi cupiditate quam.","message":"Similique quibusdam voluptates quis."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Consequuntur eum.","message":"Rerum voluptatem."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Consectetur at est nemo.","message":"Excepturi enim molestias reiciendis ut."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"get":{"tags":["survey"],"summary":"get_survey survey","description":"Get survey details (proxies to ITX GET /v2/surveys/{survey_uid})","operationId":"survey#get_survey","parameters":[{"name":"project_uid","in":"query","description":"Optional LFX Project UID (V2) to filter survey data","allowEmptyValue":true,"schema":{"type":"string","description":"Optional LFX Project UID (V2) to filter survey data","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"project_uids","in":"query","description":"Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid","allowEmptyValue":true,"schema":{"type":"string","description":"Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid","example":"qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Sed ut.","committee_voting_enabled":false,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"1990-05-26T18:10:13Z","creator_id":"Facilis est.","creator_name":"Laborum fuga dolores inventore sit est sed.","creator_username":"In autem provident blanditiis ab officiis ipsum.","email_body":"Quis mollitia ut minus.","email_body_text":"Sed ipsum nobis in aut similique.","email_subject":"Vitae unde.","is_nps_survey":false,"is_project_survey":false,"last_modified_at":"1994-01-14T00:41:21Z","last_modified_by":"Culpa consequatur aut.","latest_automated_reminder_sent_at":"1979-03-13T23:58:59Z","next_automated_reminder_at":"1983-11-22T04:37:25Z","nps_value":0.6379567056920531,"num_automated_reminders_sent":5955312177100105707,"num_automated_reminders_to_send":1501073311041553136,"num_detractors":2100042836277055694,"num_passives":4696138859968207767,"num_promoters":8946836443250022414,"response_status":"scheduled","send_immediately":false,"stage_filter":"Ab mollitia possimus et eum vero omnis.","survey_cutoff_date":"1991-03-10T03:13:24Z","survey_monkey_id":"Perspiciatis iste aut sit fugit.","survey_reminder_rate_days":8773992317131132630,"survey_send_date":"1992-05-28T13:28:36Z","survey_status":"scheduled","survey_title":"Quis distinctio quae.","survey_url":"Aliquam in aut laborum quod esse qui.","total_bounced_emails":7455921900934456301,"total_recipients":5590032177824588820,"total_responses":2896297817607758689,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Consequuntur inventore vel vel.","message":"Inventore quis voluptas dolore qui."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Saepe sed temporibus et est.","message":"Maiores dolorem aut odit dolorem repudiandae est."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Hic dolorem atque alias possimus eum qui.","message":"Molestiae quaerat voluptas."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Et dolorem reprehenderit.","message":"Ut suscipit assumenda."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Inventore a fuga ut aut nostrum.","message":"Cumque architecto laboriosam minus."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Voluptatem nihil.","message":"Quisquam quas veniam sequi ea quia."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]},"put":{"tags":["survey"],"summary":"update_survey survey","description":"Update survey (proxies to ITX PUT /v2/surveys/{survey_uid}). Only allowed when status is 'disabled'","operationId":"survey#update_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSurveyRequestBody"},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":true,"creator_id":"Qui distinctio dolorum quia non quaerat nostrum.","email_body":"Veniam consequuntur sed praesentium.","email_body_text":"Similique et sapiente sunt sit.","email_subject":"Quo omnis maiores impedit.","survey_cutoff_date":"Consequatur rem et voluptatem et.","survey_reminder_rate_days":464515454408226755,"survey_send_date":"Sed in perspiciatis odit nesciunt.","survey_title":"Ut dicta eum ut vero animi."}}}},"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SurveyScheduleResult"},"example":{"committee_category":"Veritatis nisi quasi totam nostrum.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.6266969501277094,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":256525687450027157,"total_responses":8506409821911103766}],"created_at":"2012-11-29T16:25:11Z","creator_id":"Eos autem aut cum nesciunt.","creator_name":"Dolores corporis debitis harum earum autem et.","creator_username":"Modi excepturi et quas.","email_body":"Vero impedit doloribus saepe.","email_body_text":"Perspiciatis saepe culpa in dolores quam.","email_subject":"Error quisquam qui veritatis temporibus sit illum.","is_nps_survey":false,"is_project_survey":true,"last_modified_at":"2000-06-29T14:09:13Z","last_modified_by":"Possimus iure sint et sunt amet aut.","latest_automated_reminder_sent_at":"1999-02-24T22:35:21Z","next_automated_reminder_at":"2007-11-22T23:43:56Z","nps_value":0.23141298976984814,"num_automated_reminders_sent":8337289837672265763,"num_automated_reminders_to_send":8107375938073788662,"num_detractors":8419714383430859074,"num_passives":3773156406319571058,"num_promoters":7275587620146515160,"response_status":"scheduled","send_immediately":false,"stage_filter":"Sit id modi corporis.","survey_cutoff_date":"1981-11-20T11:20:01Z","survey_monkey_id":"Sed eligendi quo qui sint doloremque.","survey_reminder_rate_days":3045289415844103173,"survey_send_date":"1976-11-13T06:51:25Z","survey_status":"scheduled","survey_title":"Quo tempore porro.","survey_url":"Reprehenderit qui.","total_bounced_emails":920116411734754744,"total_recipients":7053772202910532748,"total_responses":3641612096555752497,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Voluptas sit ea.","message":"Est earum voluptatem eos corporis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Sit veniam.","message":"Facere perferendis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Et eveniet reprehenderit.","message":"Inventore rerum quisquam in dolorem."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Repudiandae distinctio consequuntur nam maiores omnis perspiciatis.","message":"Et et illum et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Laboriosam excepturi perferendis maiores ullam est.","message":"Qui alias beatae libero totam."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Est aut.","message":"Placeat error dolore molestiae."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/bulk_resend":{"post":{"tags":["survey"],"summary":"bulk_resend_survey survey","description":"Bulk resend survey emails to select recipients (proxies to ITX POST /v2/surveys/{survey_uid}/bulk_resend)","operationId":"survey#bulk_resend_survey","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkResendSurveyRequestBody"},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}}}},"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Quo porro et quam molestias excepturi.","message":"Fuga voluptatem aperiam ut delectus veritatis."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Quasi molestias fugiat laudantium.","message":"Et voluptatem est."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Quia necessitatibus maxime aperiam voluptatum et.","message":"Delectus totam et quaerat."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Laudantium rerum inventore sed quis.","message":"Mollitia explicabo inventore est dolorum omnis et."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Velit velit a officiis voluptas porro.","message":"Quas in illum qui at hic necessitatibus."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Non ut.","message":"Aut delectus."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/preview_send":{"get":{"tags":["survey"],"summary":"preview_send_survey survey","description":"Preview which recipients, committees, and projects would be affected by a resend (proxies to ITX GET /v2/surveys/{survey_uid}/preview_send)","operationId":"survey#preview_send_survey","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to filter preview","allowEmptyValue":true,"schema":{"type":"string","description":"Optional committee UID to filter preview","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"200":{"description":"OK response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewSendResult"},"example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Eveniet earum nesciunt dicta quidem voluptatem aut.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}}}},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Quod illum.","message":"Aliquam harum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Dolores maxime accusantium perferendis itaque omnis provident.","message":"Officiis hic quis."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Enim omnis ad.","message":"Voluptas repellat hic atque aut."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Beatae omnis explicabo sunt qui dolores laborum.","message":"Vero quia corporis ut."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Aut id mollitia voluptas aut maiores.","message":"Libero dolore non quos est autem."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Explicabo eius voluptates in asperiores ducimus aut.","message":"Adipisci consequatur sapiente at."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/recipient_group":{"delete":{"tags":["survey"],"summary":"delete_recipient_group survey","description":"Remove a recipient group (committee, project, or foundation) from survey and recalculate statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/recipient_group)","operationId":"survey#delete_recipient_group","parameters":[{"name":"committee_uid","in":"query","description":"Committee UID to remove (indicates specific committee in project)","allowEmptyValue":true,"schema":{"type":"string","description":"Committee UID to remove (indicates specific committee in project)","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"project_uid","in":"query","description":"Project UID to remove (all removals are attached to a project)","allowEmptyValue":true,"schema":{"type":"string","description":"Project UID to remove (all removals are attached to a project)","example":"003170000123XHTAA2"},"example":"003170000123XHTAA2"},{"name":"foundation_id","in":"query","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","allowEmptyValue":true,"schema":{"type":"string","description":"Foundation ID (indicates project_uid references a foundation and all subprojects should be removed)","example":"003170000123XHTAA2"},"example":"003170000123XHTAA2"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Iusto voluptates est recusandae.","message":"Corrupti eos repudiandae."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Deserunt ex et esse aut quo corporis.","message":"Animi laboriosam."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Illum aspernatur animi maxime est et.","message":"Eius ratione nisi facere."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Enim placeat harum voluptatem.","message":"Sed voluptatibus doloribus optio in sit reprehenderit."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Iusto autem.","message":"Qui sequi repudiandae est alias nisi doloremque."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"In cum ipsa aliquam.","message":"Nisi qui repudiandae omnis molestiae assumenda."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/responses/{response_id}":{"delete":{"tags":["survey"],"summary":"delete_survey_response survey","description":"Delete survey response - removes recipient from survey and recalculates statistics (proxies to ITX DELETE /v2/surveys/{survey_uid}/responses/{response_id})","operationId":"survey#delete_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"schema":{"type":"string","description":"Response identifier","example":"cba14f40-1636-11ec-9621-0242ac130002"},"example":"cba14f40-1636-11ec-9621-0242ac130002"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Consectetur modi quisquam non a omnis.","message":"Incidunt veritatis molestiae molestiae temporibus rerum."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Laborum impedit sed minima molestiae.","message":"Non quisquam ea earum."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Non ea necessitatibus ut.","message":"Possimus et aut repudiandae beatae autem repellendus."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Rerum dolores enim distinctio rerum eius earum.","message":"Assumenda enim culpa."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Reiciendis facilis sunt.","message":"Eum possimus laudantium aut pariatur qui provident."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Eligendi quasi doloremque quidem.","message":"Est ducimus ut omnis et."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/responses/{response_id}/resend":{"post":{"tags":["survey"],"summary":"resend_survey_response survey","description":"Resend survey email to a specific user (proxies to ITX POST /v2/surveys/{survey_uid}/responses/{response_id}/resend)","operationId":"survey#resend_survey_response","parameters":[{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},{"name":"response_id","in":"path","description":"Response identifier","required":true,"schema":{"type":"string","description":"Response identifier","example":"cba14f40-1636-11ec-9621-0242ac130002"},"example":"cba14f40-1636-11ec-9621-0242ac130002"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Aliquam nobis.","message":"Maiores id."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Qui fugit laboriosam.","message":"Error qui maiores."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Officiis cum voluptatem error eum.","message":"Error provident quo hic asperiores sint."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Aut eveniet harum quo aut.","message":"Ut maiores."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Id vel incidunt architecto inventore.","message":"At reiciendis non consequuntur."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Vel quia quisquam inventore sit.","message":"Est ad doloribus omnis sit."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}},"/surveys/{survey_uid}/send_missing_recipients":{"post":{"tags":["survey"],"summary":"send_missing_recipients survey","description":"Send survey emails to committee members who haven't received it (proxies to ITX POST /v2/surveys/{survey_uid}/send_missing_recipients)","operationId":"survey#send_missing_recipients","parameters":[{"name":"committee_uid","in":"query","description":"Optional committee UID to resync only that committee","allowEmptyValue":true,"schema":{"type":"string","description":"Optional committee UID to resync only that committee","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},{"name":"survey_uid","in":"path","description":"Survey identifier","required":true,"schema":{"type":"string","description":"Survey identifier","example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"},"example":"b03cdbaf-53b1-4d47-bc04-dd7e459dd309"}],"responses":{"204":{"description":"No Content response."},"400":{"description":"BadRequest: Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadRequestError"},"example":{"code":"Accusamus tempore nemo nulla.","message":"Et quasi nam eveniet omnis aspernatur doloremque."}}}},"401":{"description":"Unauthorized: Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnauthorizedError"},"example":{"code":"Suscipit occaecati perferendis nostrum.","message":"Quam repellendus."}}}},"403":{"description":"Forbidden: Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"code":"Temporibus nostrum qui labore.","message":"Necessitatibus facere enim natus."}}}},"404":{"description":"NotFound: Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"code":"Laborum doloribus maxime ullam voluptatum pariatur iure.","message":"Expedita ut."}}}},"500":{"description":"InternalServerError: Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalServerError"},"example":{"code":"Nesciunt vel voluptatem cupiditate consectetur.","message":"Ut provident sed in qui."}}}},"503":{"description":"ServiceUnavailable: Service unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceUnavailableError"},"example":{"code":"Nostrum voluptatem.","message":"At omnis."}}}}},"security":[{"jwt_header_Authorization":["manage:projects","manage:surveys"]}]}}},"components":{"schemas":{"BadRequestError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Explicabo omnis sunt maiores blanditiis dolores."},"message":{"type":"string","description":"Error message","example":"Ut inventore consequuntur culpa vitae."}},"description":"Bad request error response","example":{"code":"Est sunt dolor enim autem provident.","message":"Expedita ipsum."},"required":["code","message"]},"BulkResendSurveyRequestBody":{"type":"object","properties":{"recipient_ids":{"type":"array","items":{"type":"string","example":"Voluptas qui fuga ut ut maiores."},"description":"Array of recipient IDs to resend survey emails to","example":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]}},"example":{"recipient_ids":["cba14f40-1636-11ec-9621-0242ac130002","cba14f40-1636-11ec-9621-0242ac130003"]},"required":["recipient_ids"]},"ConflictError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Ad ipsa et cumque in inventore a."},"message":{"type":"string","description":"Error message","example":"Molestiae repellendus sed."}},"description":"Conflict error response","example":{"code":"Iste est eaque aliquid sunt.","message":"Nihil sunt."},"required":["code","message"]},"CreateExclusionRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID for survey-specific exclusion","example":"Voluptates aut cupiditate dolorum dolorem voluptatem."},"email":{"type":"string","description":"Survey responder's email","example":"Ducimus qui ad qui."},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Et eligendi provident."},"survey_uid":{"type":"string","description":"Survey UID for survey-specific exclusion","example":"Veritatis numquam vel et enim repudiandae."},"user_id":{"type":"string","description":"Recipient's user ID","example":"Dolor fuga temporibus sed."}},"example":{"committee_uid":"Ullam rem amet minus cupiditate quam in.","email":"Aut sunt ut.","global_exclusion":"Sed incidunt rerum labore.","survey_uid":"Qui dolorum quia voluptatem in beatae omnis.","user_id":"Laborum id aut reprehenderit veniam sit ut."}},"ExcludedCommittee":{"type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Technical Steering Committee","enum":["Legal Committee","Finance Committee","Special Interest Group","Board","Technical Oversight Committee/Technical Advisory Committee","Technical Steering Committee"]},"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"003170000123XHTAA2"}},"description":"Committee information for preview send","example":{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},"required":["project_uid","project_name","committee_uid","committee_name","committee_category"]},"ExclusionResult":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Delectus saepe."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Consequuntur consequuntur pariatur."},"survey_uid":{"type":"string","description":"Survey UID","example":"Suscipit harum sequi ipsum vitae quia dolore."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Quo totam fuga maxime eveniet velit sed."}},"description":"A survey or global exclusion","example":{"committee_uid":"Soluta illo iure reprehenderit culpa.","email":"test@email.com","global_exclusion":"Nihil iste in.","survey_uid":"Et fugiat et.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user_id":"Qui totam esse unde cupiditate laboriosam."},"required":["uid"]},"ExclusionUser":{"type":"object","properties":{"emails":{"type":"array","items":{"$ref":"#/components/schemas/UserEmail"},"description":"User emails","example":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}]},"id":{"type":"string","description":"User ID","example":"Cumque similique."},"username":{"type":"string","description":"Username","example":"Rerum nesciunt fugiat."}},"description":"User information for an exclusion","example":{"emails":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}],"id":"At ipsam deleniti.","username":"Quis aut voluptates deserunt laborum."}},"ExtendedExclusionResult":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID","example":"Ab numquam."},"email":{"type":"string","description":"Survey responder's email","example":"test@email.com"},"global_exclusion":{"type":"string","description":"Global exclusion flag","example":"Illum debitis."},"survey_uid":{"type":"string","description":"Survey UID","example":"Labore similique dolore quod consectetur qui."},"uid":{"type":"string","description":"Exclusion unique identifier","example":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e"},"user":{"$ref":"#/components/schemas/ExclusionUser"},"user_id":{"type":"string","description":"Recipient's user ID","example":"Eum pariatur laborum consectetur."}},"description":"A survey or global exclusion with user information","example":{"committee_uid":"Sit error delectus quos.","email":"test@email.com","global_exclusion":"Et sed velit qui.","survey_uid":"Assumenda accusantium nulla aperiam sit et doloribus.","uid":"5f8b3c4d-9a2e-4f1b-8c7d-6e5a4b3c2d1e","user":{"emails":[{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true},{"email_address":"Saepe voluptas.","id":"Laboriosam ipsam explicabo et consequuntur accusantium.","is_primary":true}],"id":"Cum reiciendis ad expedita iusto sunt ab.","username":"Voluptatum porro ut quo occaecati."},"user_id":"Quos quis sint incidunt qui est harum."},"required":["uid"]},"ForbiddenError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Unde quibusdam ex."},"message":{"type":"string","description":"Error message","example":"Dolor cupiditate incidunt nesciunt voluptas a."}},"description":"Forbidden error response","example":{"code":"Eius repellat est.","message":"Inventore recusandae ab qui voluptate."},"required":["code","message"]},"ITXPreviewRecipient":{"type":"object","properties":{"email":{"type":"string","description":"Email address","example":"john.doe@example.com","format":"email"},"first_name":{"type":"string","description":"User first name","example":"John"},"last_name":{"type":"string","description":"User last name","example":"Doe"},"name":{"type":"string","description":"User full name","example":"John Doe"},"role":{"type":"string","description":"Role in committee","example":"Voting Rep","enum":["Chair","Voting Rep","Member"]},"user_id":{"type":"string","description":"LF user ID","example":"005f1000009RbC4AAK"},"username":{"type":"string","description":"Linux Foundation ID","example":"jdoe"}},"description":"Recipient information for preview send","example":{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},"required":["user_id","email"]},"InternalServerError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Nemo odit."},"message":{"type":"string","description":"Error message","example":"Impedit veniam voluptatem laboriosam voluptatem."}},"description":"Internal server error response","example":{"code":"Reprehenderit et et.","message":"Consequatur voluptas eos qui dolore rerum."},"required":["code","message"]},"LFXProject":{"type":"object","properties":{"id":{"type":"string","description":"Project ID","example":"003170000123XHTAA2"},"logo_url":{"type":"string","description":"Project logo URL","example":"Incidunt et."},"name":{"type":"string","description":"Project name","example":"Express JS"},"slug":{"type":"string","description":"Project slug","example":"express-gateway"},"status":{"type":"string","description":"Project status/stage","example":"Active","enum":["Formation - Exploratory","Formation - Engaged","Active","Archived","Formation - On Hold","Formation - Disengaged","Formation - Confidential","Prospect"]}},"description":"LFX Project information","example":{"id":"003170000123XHTAA2","logo_url":"Reiciendis sit maiores magnam deserunt et perspiciatis.","name":"Express JS","slug":"express-gateway","status":"Active"},"required":["id","name","slug","status"]},"NotFoundError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Iste velit perspiciatis animi reprehenderit."},"message":{"type":"string","description":"Error message","example":"Qui autem et ea."}},"description":"Not found error response","example":{"code":"Culpa illum.","message":"Voluptatem dolor quasi sed sed nostrum."},"required":["code","message"]},"PreviewSendResult":{"type":"object","properties":{"affected_committees":{"type":"array","items":{"$ref":"#/components/schemas/ExcludedCommittee"},"description":"List of affected committees","example":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}]},"affected_projects":{"type":"array","items":{"$ref":"#/components/schemas/LFXProject"},"description":"List of affected projects","example":[{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"}]},"affected_recipients":{"type":"array","items":{"$ref":"#/components/schemas/ITXPreviewRecipient"},"description":"List of affected recipients","example":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"description":"Preview of recipients, committees, and projects affected by a resend","example":{"affected_committees":[{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"},{"committee_category":"Technical Steering Committee","committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","project_name":"Kubernetes","project_uid":"003170000123XHTAA2"}],"affected_projects":[{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"},{"id":"003170000123XHTAA2","logo_url":"Quisquam ipsum eum mollitia ea magni.","name":"Express JS","slug":"express-gateway","status":"Active"}],"affected_recipients":[{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"},{"email":"john.doe@example.com","first_name":"John","last_name":"Doe","name":"John Doe","role":"Voting Rep","user_id":"005f1000009RbC4AAK","username":"jdoe"}]}},"ScheduleSurveyRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":false},"creator_id":{"type":"string","description":"Creator's user ID","example":"Non et."},"creator_name":{"type":"string","description":"Creator's full name","example":"Quia a ut molestias qui."},"creator_username":{"type":"string","description":"Creator's username","example":"Aliquid est sit laborum sit quia."},"email_body":{"type":"string","description":"Email body HTML content","example":"Saepe doloribus recusandae."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Ex id voluptas."},"email_subject":{"type":"string","description":"Email subject line","example":"Excepturi qui ut architecto."},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","example":true},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","example":true},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Sunt ex."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"Quidem rerum quae."},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Voluptas exercitationem."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":7328611094451502257,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Explicabo ullam alias quisquam et sed quis."},"survey_title":{"type":"string","description":"Survey title","example":"Et aut blanditiis qui libero et tempore."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":false,"creator_id":"Corrupti voluptas qui est suscipit nihil aliquid.","creator_name":"Ipsa velit rem totam.","creator_username":"Officiis voluptatem.","email_body":"Nemo neque natus deleniti assumenda et.","email_body_text":"Molestiae temporibus.","email_subject":"Libero reprehenderit dicta repellat beatae.","is_project_survey":false,"send_immediately":true,"stage_filter":"Esse explicabo et deleniti.","survey_cutoff_date":"Numquam in facilis.","survey_monkey_id":"Excepturi qui perspiciatis blanditiis voluptas totam aut.","survey_reminder_rate_days":4814888659035368650,"survey_send_date":"Provident eligendi praesentium voluptatem reiciendis suscipit molestiae.","survey_title":"Est reiciendis nulla sed voluptatem quam consequatur."},"required":["committee_uid"]},"ServiceUnavailableError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Animi ab sapiente."},"message":{"type":"string","description":"Error message","example":"Ut id consequuntur sit aut aspernatur."}},"description":"Service unavailable error response","example":{"code":"Quasi est fugiat placeat enim.","message":"Perferendis aliquid reprehenderit sit possimus magnam omnis."},"required":["code","message"]},"SurveyCommittee":{"type":"object","properties":{"committee_name":{"type":"string","description":"Committee name","example":"Technical Steering Committee"},"committee_uid":{"type":"string","description":"Committee UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"nps_value":{"type":"number","description":"NPS value for this committee","example":0.3474379275416848,"format":"double"},"project_name":{"type":"string","description":"Project name","example":"Kubernetes"},"project_uid":{"type":"string","description":"Project UID","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"survey_url":{"type":"string","description":"Survey URL for this committee","example":"https://surveymonkey.com/r/abc123"},"total_recipients":{"type":"integer","description":"Total recipients for this committee","example":3141893145609172741,"format":"int64"},"total_responses":{"type":"integer","description":"Total responses for this committee","example":2728308064949776656,"format":"int64"}},"description":"Survey committee details","example":{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.21872305851724838,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":8693291114078661955,"total_responses":8056228715476607245}},"SurveySchedulePayload":{"type":"object","properties":{"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","default":false,"example":true},"committees":{"type":"array","items":{"type":"string","example":"Modi a provident ex ad exercitationem beatae."},"description":"Array of committee IDs to send survey to","example":["com-123","com-456"]},"creator_id":{"type":"string","description":"Creator's user ID","example":"john-doe-id"},"creator_name":{"type":"string","description":"Creator's full name","example":"John Doe"},"creator_username":{"type":"string","description":"Creator's username","example":"john23"},"email_body":{"type":"string","description":"Email body HTML content","example":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003cbody\u003e\u003ch3\u003eHi there\u003c/h3\u003e\u003cp\u003ePlease take our survey\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e"},"email_body_text":{"type":"string","description":"Email body plain text content","example":"Hi there! Please take our survey at: https://surveymonkey.com/..."},"email_subject":{"type":"string","description":"Email subject line","example":"You're invited: Q1 2026 Developer Survey","maxLength":200},"is_project_survey":{"type":"boolean","description":"Whether the survey is project-level (true) or global-level (false)","default":false,"example":false},"send_immediately":{"type":"boolean","description":"Send immediately (true) or schedule for later (false)","default":false,"example":false},"stage_filter":{"type":"string","description":"Project stage filter for global surveys","example":"Formation - Engaged"},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"2026-03-15T09:00:00Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"123456789"},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":7,"format":"int64","minimum":0},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"2026-02-15T09:00:00Z","format":"date-time"},"survey_title":{"type":"string","description":"Survey title","example":"Q1 2026 Developer Satisfaction Survey","maxLength":255}},"description":"Payload for scheduling a survey","example":{"committee_voting_enabled":true,"committees":["com-123","com-456"],"creator_id":"john-doe-id","creator_name":"John Doe","creator_username":"john23","email_body":"\u003c!DOCTYPE html\u003e\u003chtml\u003e\u003cbody\u003e\u003ch3\u003eHi there\u003c/h3\u003e\u003cp\u003ePlease take our survey\u003c/p\u003e\u003c/body\u003e\u003c/html\u003e","email_body_text":"Hi there! Please take our survey at: https://surveymonkey.com/...","email_subject":"You're invited: Q1 2026 Developer Survey","is_project_survey":false,"send_immediately":false,"stage_filter":"Formation - Engaged","survey_cutoff_date":"2026-03-15T09:00:00Z","survey_monkey_id":"123456789","survey_reminder_rate_days":7,"survey_send_date":"2026-02-15T09:00:00Z","survey_title":"Q1 2026 Developer Satisfaction Survey"}},"SurveyScheduleResult":{"type":"object","properties":{"committee_category":{"type":"string","description":"Committee category","example":"Rem rem earum nihil."},"committee_voting_enabled":{"type":"boolean","description":"Committee voting enabled","example":false},"committees":{"type":"array","items":{"$ref":"#/components/schemas/SurveyCommittee"},"description":"Survey committees","example":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628}]},"created_at":{"type":"string","description":"Creation timestamp","example":"2004-05-27T21:17:31Z","format":"date-time"},"creator_id":{"type":"string","description":"Creator's user ID","example":"Fugiat quis dolores sint perspiciatis eos earum."},"creator_name":{"type":"string","description":"Creator's full name","example":"Omnis nam et."},"creator_username":{"type":"string","description":"Creator's username","example":"Ipsam assumenda quam rerum."},"email_body":{"type":"string","description":"Email body HTML","example":"Harum quaerat sequi perspiciatis omnis provident."},"email_body_text":{"type":"string","description":"Email body plain text","example":"Quibusdam sapiente."},"email_subject":{"type":"string","description":"Email subject line","example":"Voluptatem tempora id et."},"is_nps_survey":{"type":"boolean","description":"Whether this is an NPS survey","example":false},"is_project_survey":{"type":"boolean","description":"Whether project-level or global-level survey","example":false},"last_modified_at":{"type":"string","description":"Last modification timestamp","example":"1983-10-27T13:38:12Z","format":"date-time"},"last_modified_by":{"type":"string","description":"User ID of last modifier","example":"Adipisci et quibusdam et voluptatem provident."},"latest_automated_reminder_sent_at":{"type":"string","description":"Latest automated reminder sent date","example":"1983-06-06T00:53:44Z","format":"date-time"},"next_automated_reminder_at":{"type":"string","description":"Next automated reminder date","example":"2002-03-15T16:21:47Z","format":"date-time"},"nps_value":{"type":"number","description":"NPS value","example":0.8519164409906,"format":"double"},"num_automated_reminders_sent":{"type":"integer","description":"Number of automated reminders sent","example":1972904916392206914,"format":"int64"},"num_automated_reminders_to_send":{"type":"integer","description":"Number of automated reminders to send","example":4001396657159876410,"format":"int64"},"num_detractors":{"type":"integer","description":"Number of detractors","example":3576976694752166473,"format":"int64"},"num_passives":{"type":"integer","description":"Number of passives","example":3639497964781799593,"format":"int64"},"num_promoters":{"type":"integer","description":"Number of promoters","example":6776505088433966539,"format":"int64"},"response_status":{"type":"string","description":"Response status","example":"scheduled","enum":["scheduled","open","closed"]},"send_immediately":{"type":"boolean","description":"Whether survey is sent immediately","example":false},"stage_filter":{"type":"string","description":"Project stage filter","example":"Est quos id voluptates odit velit."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff date","example":"2013-05-30T01:48:04Z","format":"date-time"},"survey_monkey_id":{"type":"string","description":"SurveyMonkey survey ID","example":"Repudiandae vel."},"survey_reminder_rate_days":{"type":"integer","description":"Days between reminder emails","example":1268332027555056005,"format":"int64"},"survey_send_date":{"type":"string","description":"Survey send date","example":"2003-03-21T17:17:44Z","format":"date-time"},"survey_status":{"type":"string","description":"Survey status","example":"scheduled","enum":["scheduled","sending","sent","cancelled"]},"survey_title":{"type":"string","description":"Survey title","example":"Voluptatem ullam nemo libero eos et."},"survey_url":{"type":"string","description":"Survey URL","example":"Sit earum doloribus quibusdam quasi."},"total_bounced_emails":{"type":"integer","description":"Number of bounced emails","example":254440082301907429,"format":"int64"},"total_recipients":{"type":"integer","description":"Total number of recipients","example":3165488552227472947,"format":"int64"},"total_responses":{"type":"integer","description":"Total number of responses","example":1742409208008675494,"format":"int64"},"uid":{"type":"string","description":"Survey unique identifier","example":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"}},"description":"Scheduled survey details","example":{"committee_category":"Quis quibusdam velit ut blanditiis et voluptatem.","committee_voting_enabled":true,"committees":[{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628},{"committee_name":"Technical Steering Committee","committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","nps_value":0.5183088611218446,"project_name":"Kubernetes","project_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","survey_url":"https://surveymonkey.com/r/abc123","total_recipients":2315858510787901347,"total_responses":4319941305328081628}],"created_at":"1991-02-16T17:29:02Z","creator_id":"Odio quas incidunt neque facere sit debitis.","creator_name":"Minus tempore.","creator_username":"Ab est velit aperiam recusandae voluptatum qui.","email_body":"In id dolores.","email_body_text":"Tenetur esse veritatis.","email_subject":"Incidunt voluptas quis suscipit iste nisi at.","is_nps_survey":false,"is_project_survey":true,"last_modified_at":"2004-08-13T14:38:40Z","last_modified_by":"Facilis qui ut.","latest_automated_reminder_sent_at":"1984-04-10T15:20:14Z","next_automated_reminder_at":"2003-02-01T02:11:33Z","nps_value":0.15364128203492167,"num_automated_reminders_sent":2145270834145761878,"num_automated_reminders_to_send":6632543082441364214,"num_detractors":6351795924184130794,"num_passives":3280994576108905970,"num_promoters":777312228626795634,"response_status":"scheduled","send_immediately":false,"stage_filter":"Consequatur quasi.","survey_cutoff_date":"1988-07-31T19:17:28Z","survey_monkey_id":"Quos aut necessitatibus in est.","survey_reminder_rate_days":7084723093881984689,"survey_send_date":"2009-11-01T12:03:22Z","survey_status":"scheduled","survey_title":"Maxime id.","survey_url":"Maiores inventore.","total_bounced_emails":55392808957965234,"total_recipients":5713742991241156416,"total_responses":6837913107047442008,"uid":"4e8165a9-9b29-4506-b093-ab0a4aae9b84"},"required":["uid","survey_status"]},"UnauthorizedError":{"type":"object","properties":{"code":{"type":"string","description":"HTTP status code","example":"Dicta magni quasi architecto."},"message":{"type":"string","description":"Error message","example":"Dolorum velit ratione possimus velit labore voluptatem."}},"description":"Unauthorized error response","example":{"code":"Culpa dolor id pariatur.","message":"Consectetur porro aut eius ab officia."},"required":["code","message"]},"UpdateSurveyRequestBody":{"type":"object","properties":{"committee_uid":{"type":"string","description":"Committee UID to send survey to","example":"qa1e8536-a985-4cf5-b981-a170927a1d11"},"committee_voting_enabled":{"type":"boolean","description":"Whether committee voting is enabled","example":true},"creator_id":{"type":"string","description":"Creator's user ID","example":"Nihil dolore."},"email_body":{"type":"string","description":"Email body HTML content","example":"Deleniti autem doloribus rem temporibus."},"email_body_text":{"type":"string","description":"Email body plain text content","example":"In et ullam."},"email_subject":{"type":"string","description":"Email subject line","example":"Est vitae quia."},"survey_cutoff_date":{"type":"string","description":"Survey cutoff/end date (RFC3339 format)","example":"A cumque nesciunt quasi aliquam tempora soluta."},"survey_reminder_rate_days":{"type":"integer","description":"Days between automatic reminder emails (0 = no reminders)","example":3018393064459007843,"format":"int64"},"survey_send_date":{"type":"string","description":"Date to send the survey (RFC3339 format)","example":"Molestiae aut quis aut vel omnis."},"survey_title":{"type":"string","description":"Survey title","example":"Recusandae et laboriosam."}},"example":{"committee_uid":"qa1e8536-a985-4cf5-b981-a170927a1d11","committee_voting_enabled":false,"creator_id":"Asperiores dicta quis temporibus.","email_body":"Quod qui veniam sunt et explicabo.","email_body_text":"Assumenda asperiores minus eaque facilis fugit.","email_subject":"Totam et optio atque quidem.","survey_cutoff_date":"Laborum optio sunt ipsam rerum.","survey_reminder_rate_days":6334930941210685040,"survey_send_date":"Architecto quaerat nemo amet est est.","survey_title":"Odio non."}},"UserEmail":{"type":"object","properties":{"email_address":{"type":"string","description":"Email address","example":"Molestias dolorem doloremque in sit qui."},"id":{"type":"string","description":"Email ID","example":"Est quisquam aut est illum veritatis labore."},"is_primary":{"type":"boolean","description":"Whether this is the primary email","example":true}},"description":"User email information","example":{"email_address":"Esse qui non veniam iure labore.","id":"Minima at suscipit.","is_primary":false}},"ValidateEmailRequestBody":{"type":"object","properties":{"body":{"type":"string","description":"Email body template","example":"Excepturi qui vitae aut repudiandae."},"subject":{"type":"string","description":"Email subject template","example":"Voluptatem consequuntur nostrum velit sunt."}},"example":{"body":"Alias hic sed et aut porro.","subject":"Corporis harum dolores sint dignissimos in."}},"ValidateEmailResult":{"type":"object","properties":{"body":{"type":"string","description":"Validated email body","example":"An example survey body with the quarter Q1"},"subject":{"type":"string","description":"Validated email subject","example":"An example survey subject with the year 2023"}},"description":"Validated email template body and subject","example":{"body":"An example survey body with the quarter Q1","subject":"An example survey subject with the year 2023"},"required":["body","subject"]}},"securitySchemes":{"jwt_header_Authorization":{"type":"http","description":"Heimdall JWT authorization","scheme":"bearer"}}},"tags":[{"name":"survey","description":"Survey service that proxies to ITX survey API"}]} \ No newline at end of file diff --git a/gen/http/openapi3.yaml b/gen/http/openapi3.yaml index 80dd2bf..76a821b 100644 --- a/gen/http/openapi3.yaml +++ b/gen/http/openapi3.yaml @@ -238,6 +238,24 @@ paths: description: Get survey details (proxies to ITX GET /v2/surveys/{survey_uid}) operationId: survey#get_survey parameters: + - name: project_uid + in: query + description: Optional LFX Project UID (V2) to filter survey data + allowEmptyValue: true + schema: + type: string + description: Optional LFX Project UID (V2) to filter survey data + example: qa1e8536-a985-4cf5-b981-a170927a1d11 + example: qa1e8536-a985-4cf5-b981-a170927a1d11 + - name: project_uids + in: query + description: Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid + allowEmptyValue: true + schema: + type: string + description: Optional comma-delimited list of LFX Project UIDs (V2). Should not be combined with project_uid + example: qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12 + example: qa1e8536-a985-4cf5-b981-a170927a1d11,qa1e8536-a985-4cf5-b981-a170927a1d12 - name: survey_uid in: path description: Survey identifier diff --git a/gen/http/survey/client/cli.go b/gen/http/survey/client/cli.go index 28ffd93..0800de7 100644 --- a/gen/http/survey/client/cli.go +++ b/gen/http/survey/client/cli.go @@ -58,11 +58,23 @@ func BuildScheduleSurveyPayload(surveyScheduleSurveyBody string, surveyScheduleS // BuildGetSurveyPayload builds the payload for the survey get_survey endpoint // from CLI flags. -func BuildGetSurveyPayload(surveyGetSurveySurveyUID string, surveyGetSurveyToken string) (*survey.GetSurveyPayload, error) { +func BuildGetSurveyPayload(surveyGetSurveySurveyUID string, surveyGetSurveyProjectUID string, surveyGetSurveyProjectUids string, surveyGetSurveyToken string) (*survey.GetSurveyPayload, error) { var surveyUID string { surveyUID = surveyGetSurveySurveyUID } + var projectUID *string + { + if surveyGetSurveyProjectUID != "" { + projectUID = &surveyGetSurveyProjectUID + } + } + var projectUids *string + { + if surveyGetSurveyProjectUids != "" { + projectUids = &surveyGetSurveyProjectUids + } + } var token *string { if surveyGetSurveyToken != "" { @@ -71,6 +83,8 @@ func BuildGetSurveyPayload(surveyGetSurveySurveyUID string, surveyGetSurveyToken } v := &survey.GetSurveyPayload{} v.SurveyUID = surveyUID + v.ProjectUID = projectUID + v.ProjectUids = projectUids v.Token = token return v, nil diff --git a/gen/http/survey/client/encode_decode.go b/gen/http/survey/client/encode_decode.go index 296c332..b0a91de 100644 --- a/gen/http/survey/client/encode_decode.go +++ b/gen/http/survey/client/encode_decode.go @@ -217,6 +217,14 @@ func EncodeGetSurveyRequest(encoder func(*http.Request) goahttp.Encoder) func(*h req.Header.Set("Authorization", head) } } + values := req.URL.Query() + if p.ProjectUID != nil { + values.Add("project_uid", *p.ProjectUID) + } + if p.ProjectUids != nil { + values.Add("project_uids", *p.ProjectUids) + } + req.URL.RawQuery = values.Encode() return nil } } diff --git a/gen/http/survey/server/encode_decode.go b/gen/http/survey/server/encode_decode.go index 705601d..71fe182 100644 --- a/gen/http/survey/server/encode_decode.go +++ b/gen/http/survey/server/encode_decode.go @@ -174,17 +174,28 @@ func EncodeGetSurveyResponse(encoder func(context.Context, http.ResponseWriter) func DecodeGetSurveyRequest(mux goahttp.Muxer, decoder func(*http.Request) goahttp.Decoder) func(*http.Request) (*survey.GetSurveyPayload, error) { return func(r *http.Request) (*survey.GetSurveyPayload, error) { var ( - surveyUID string - token *string + surveyUID string + projectUID *string + projectUids *string + token *string params = mux.Vars(r) ) surveyUID = params["survey_uid"] + qp := r.URL.Query() + projectUIDRaw := qp.Get("project_uid") + if projectUIDRaw != "" { + projectUID = &projectUIDRaw + } + projectUidsRaw := qp.Get("project_uids") + if projectUidsRaw != "" { + projectUids = &projectUidsRaw + } tokenRaw := r.Header.Get("Authorization") if tokenRaw != "" { token = &tokenRaw } - payload := NewGetSurveyPayload(surveyUID, token) + payload := NewGetSurveyPayload(surveyUID, projectUID, projectUids, token) if payload.Token != nil { if strings.Contains(*payload.Token, " ") { // Remove authorization scheme prefix (e.g. "Bearer") diff --git a/gen/http/survey/server/types.go b/gen/http/survey/server/types.go index 7a5567e..76c900c 100644 --- a/gen/http/survey/server/types.go +++ b/gen/http/survey/server/types.go @@ -2363,9 +2363,11 @@ func NewScheduleSurveyPayload(body *ScheduleSurveyRequestBody, token *string) *s } // NewGetSurveyPayload builds a survey service get_survey endpoint payload. -func NewGetSurveyPayload(surveyUID string, token *string) *survey.GetSurveyPayload { +func NewGetSurveyPayload(surveyUID string, projectUID *string, projectUids *string, token *string) *survey.GetSurveyPayload { v := &survey.GetSurveyPayload{} v.SurveyUID = surveyUID + v.ProjectUID = projectUID + v.ProjectUids = projectUids v.Token = token return v diff --git a/gen/survey/service.go b/gen/survey/service.go index 49a5236..4a94e0f 100644 --- a/gen/survey/service.go +++ b/gen/survey/service.go @@ -274,6 +274,11 @@ type GetSurveyPayload struct { Token *string // Survey identifier SurveyUID string + // Optional LFX Project UID (V2) to filter survey data + ProjectUID *string + // Optional comma-delimited list of LFX Project UIDs (V2). Should not be + // combined with project_uid + ProjectUids *string } // Recipient information for preview send diff --git a/internal/domain/proxy.go b/internal/domain/proxy.go index 6d60a99..53a93c4 100644 --- a/internal/domain/proxy.go +++ b/internal/domain/proxy.go @@ -15,7 +15,7 @@ type SurveyClient interface { ScheduleSurvey(ctx context.Context, req *itx.ScheduleSurveyRequest) (*itx.SurveyScheduleResponse, error) // GetSurvey retrieves survey details from ITX - GetSurvey(ctx context.Context, surveyID string) (*itx.SurveyScheduleResponse, error) + GetSurvey(ctx context.Context, surveyID string, queryParams *itx.GetSurveyParams) (*itx.SurveyScheduleResponse, error) // UpdateSurvey updates a survey in ITX (only when status is "disabled") UpdateSurvey(ctx context.Context, surveyID string, req *itx.UpdateSurveyRequest) (*itx.SurveyScheduleResponse, error) diff --git a/internal/infrastructure/proxy/client.go b/internal/infrastructure/proxy/client.go index 8bfd9de..604756b 100644 --- a/internal/infrastructure/proxy/client.go +++ b/internal/infrastructure/proxy/client.go @@ -168,10 +168,28 @@ func (c *Client) ScheduleSurvey(ctx context.Context, req *itx.ScheduleSurveyRequ } // GetSurvey retrieves survey details from ITX -func (c *Client) GetSurvey(ctx context.Context, surveyID string) (*itx.SurveyScheduleResponse, error) { +func (c *Client) GetSurvey(ctx context.Context, surveyID string, params *itx.GetSurveyParams) (*itx.SurveyScheduleResponse, error) { + // Build URL with query parameters + baseURL := fmt.Sprintf("%sv2/surveys/%s/schedule", c.config.BaseURL, surveyID) + parsedURL, err := url.Parse(baseURL) + if err != nil { + return nil, domain.NewInternalError("failed to parse URL", err) + } + + // Add query parameters if provided + if params != nil { + query := parsedURL.Query() + if params.ProjectID != nil && *params.ProjectID != "" { + query.Add("project_id", *params.ProjectID) + } + if params.ProjectIDs != nil && *params.ProjectIDs != "" { + query.Add("project_ids", *params.ProjectIDs) + } + parsedURL.RawQuery = query.Encode() + } + // Create HTTP request - url := fmt.Sprintf("%sv2/surveys/%s/schedule", c.config.BaseURL, surveyID) - httpReq, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) + httpReq, err := http.NewRequestWithContext(ctx, http.MethodGet, parsedURL.String(), nil) if err != nil { return nil, domain.NewInternalError("failed to create request", err) } diff --git a/internal/service/survey_service.go b/internal/service/survey_service.go index e1b65e8..c0d22a6 100644 --- a/internal/service/survey_service.go +++ b/internal/service/survey_service.go @@ -7,6 +7,7 @@ import ( "context" "errors" "log/slog" + "strings" "github.com/linuxfoundation/lfx-v2-survey-service/gen/survey" "github.com/linuxfoundation/lfx-v2-survey-service/internal/domain" @@ -122,10 +123,52 @@ func (s *SurveyService) GetSurvey(ctx context.Context, p *survey.GetSurveyPayloa s.logger.InfoContext(ctx, "getting survey", "principal", principal, "survey_uid", p.SurveyUID, + "project_uid", p.ProjectUID, + "project_uids", p.ProjectUids, ) + // Build query parameters with V2 to V1 ID mapping + var queryParams *itx.GetSurveyParams + if p.ProjectUID != nil || p.ProjectUids != nil { + queryParams = &itx.GetSurveyParams{} + + // Map single project_uid from V2 to V1 + if p.ProjectUID != nil && *p.ProjectUID != "" { + projectV1, err := s.idMapper.MapProjectV2ToV1(ctx, *p.ProjectUID) + if err != nil { + s.logger.ErrorContext(ctx, "failed to map project_uid to V1", + "project_uid", *p.ProjectUID, + "error", err, + ) + return nil, mapDomainError(err) + } + queryParams.ProjectID = &projectV1 + s.logger.DebugContext(ctx, "mapped project_uid", + "project_v2_uid", *p.ProjectUID, + "project_v1_sfid", projectV1, + ) + } + + // Map project_uids from V2 to V1 (comma-delimited list) + if p.ProjectUids != nil && *p.ProjectUids != "" { + projectV1IDs, err := s.mapProjectUIDsV2ToV1(ctx, *p.ProjectUids) + if err != nil { + s.logger.ErrorContext(ctx, "failed to map project_uids to V1", + "project_uids", *p.ProjectUids, + "error", err, + ) + return nil, mapDomainError(err) + } + queryParams.ProjectIDs = &projectV1IDs + s.logger.DebugContext(ctx, "mapped project_uids", + "project_v2_uids", *p.ProjectUids, + "project_v1_sfids", projectV1IDs, + ) + } + } + // Call ITX API - itxResponse, err := s.proxy.GetSurvey(ctx, p.SurveyUID) + itxResponse, err := s.proxy.GetSurvey(ctx, p.SurveyUID, queryParams) if err != nil { return nil, mapDomainError(err) } @@ -692,6 +735,37 @@ func (s *SurveyService) mapOptionalProjectV2ToV1(ctx context.Context, projectUID return &mapped, nil } +// mapProjectUIDsV2ToV1 maps a comma-delimited list of project UIDs from V2 to V1 +func (s *SurveyService) mapProjectUIDsV2ToV1(ctx context.Context, projectUIDs string) (string, error) { + if projectUIDs == "" { + return "", nil + } + + // Split comma-delimited list and trim whitespace + v2UIDs := strings.Split(projectUIDs, ",") + v1IDs := make([]string, 0, len(v2UIDs)) + + // Map each UID from V2 to V1 + for _, v2UID := range v2UIDs { + trimmed := strings.TrimSpace(v2UID) + if trimmed == "" { + continue + } + v1ID, err := s.idMapper.MapProjectV2ToV1(ctx, trimmed) + if err != nil { + s.logger.ErrorContext(ctx, "failed to map project UID to V1", + "project_v2_uid", trimmed, + "error", err, + ) + return "", err + } + v1IDs = append(v1IDs, v1ID) + } + + // Join back into comma-delimited string + return strings.Join(v1IDs, ","), nil +} + // mapITXResponseToResult maps ITX response to Goa result with V1→V2 ID mapping func (s *SurveyService) mapITXResponseToResult(ctx context.Context, itxResponse *itx.SurveyScheduleResponse) (*survey.SurveyScheduleResult, error) { // Map committees from V1 to V2 diff --git a/pkg/models/itx/models.go b/pkg/models/itx/models.go index 80d4292..01238cd 100644 --- a/pkg/models/itx/models.go +++ b/pkg/models/itx/models.go @@ -5,6 +5,12 @@ package itx import "time" +// GetSurveyParams holds optional query parameters for GetSurvey endpoint +type GetSurveyParams struct { + ProjectID *string // Optional project ID (V1 SFID) to filter survey data + ProjectIDs *string // Optional comma-delimited list of project IDs (V1 SFIDs) +} + // ScheduleSurveyRequest represents the request to schedule a survey in ITX type ScheduleSurveyRequest struct { IsProjectSurvey *bool `json:"is_project_survey,omitempty"`