/** * Question asked to members when joining a group. * Only group admins can create or update membership questions * and can set whether it is required to answer membership questions. */ export interface MembershipQuestion { /** * Question ID. * @readonly */ id?: string | null; /** Whether a member must answer this question when joining the group. */ required?: boolean; /** Question text. */ text?: string; } export interface ListMembershipQuestionsRequest { /** Group ID. */ groupId: string; } export interface ListMembershipQuestionsResponse { /** Retrieved membership questions. */ questions?: MembershipQuestion[]; } export interface CreateOrReplaceAllMembershipQuestionsRequest { /** Group ID. */ groupId: string; /** New membership questions. */ questions?: MembershipQuestion[]; } export interface CreateOrReplaceAllMembershipQuestionsResponse { /** Membership questions. */ questions?: MembershipQuestion[]; } export interface ListAnswersRequest { /** Group ID. */ groupId: string; /** Member IDs. If no member ID is provided, answers for all members will be returned. See the Members API for more details. */ memberIds?: string[]; paging?: Paging; } export interface Paging { /** Number of items to load. */ limit?: number | null; /** Number of items to skip in the current sort order. */ offset?: number | null; } export interface ListAnswersResponse { /** Answers to the membership questions, grouped by member. */ memberAnswers?: MemberMembershipQuestionAnswers[]; /** Membership questions by question ID. Includes only questions that have been answered by the specified members. */ questions?: Record; metadata?: PagingMetadata; } export interface MemberMembershipQuestionAnswers { /** Member ID. See the Members API for more details. */ memberId?: string; /** Answers to the membership question. */ answers?: MembershipQuestionAnswer[]; } /** Answer to a membership question. */ export interface MembershipQuestionAnswer { /** Question ID. */ id?: string; /** Answer text. */ text?: string | null; } export interface PagingMetadata { /** Number of items returned in the response. */ count?: number | null; /** Offset that was requested. */ offset?: number | null; /** Total number of items that match the query. */ total?: number | null; /** Flag that indicates the server failed to calculate the `total` field. */ tooManyToCount?: boolean | null; } export interface ListAnswerCountsRequest { memberIds?: string[]; } export interface ListAnswerCountsResponse { memberAnswerCounts?: MemberAnswerCount[]; } export interface MemberAnswerCount { memberId?: string; groupId?: string; count?: number; } interface MembershipQuestionNonNullableFields { required: boolean; text: string; } export interface ListMembershipQuestionsResponseNonNullableFields { questions: MembershipQuestionNonNullableFields[]; } export interface CreateOrReplaceAllMembershipQuestionsResponseNonNullableFields { questions: MembershipQuestionNonNullableFields[]; } interface MembershipQuestionAnswerNonNullableFields { id: string; } interface MemberMembershipQuestionAnswersNonNullableFields { memberId: string; answers: MembershipQuestionAnswerNonNullableFields[]; } export interface ListAnswersResponseNonNullableFields { memberAnswers: MemberMembershipQuestionAnswersNonNullableFields[]; } export {};