export interface paths { "/body_key_list": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Restricted endpoint. Get a list of all bodies and their relations to * each other * @description For security reasons this endpoint is not publicly available and can * only be used by internally developed systems. */ get: operations["listBodyKeys"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/project/get/groups": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get a list of groups with members attending a project * @description Get a list of groups with members attending a project */ get: operations["getProjectGroups"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/project/get/participants": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get a list of members who are registered on the project * @description Get a list of members who are registered on the project */ get: operations["getProjectParticipants"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/project/checkin": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; /** * Update the check-in state of participant(s) on the project * @description Update the check-in state of participant(s) on the project. */ put: operations["updateCheckin"]; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/project/get/questions": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** Get a list of forms associated with a project */ get: operations["getProjectFormts"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/organisation/group": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get information about the authenticated group * @description Returns basic information and statistics about the authenticated group and its primary leader. */ get: operations["getOrganisationGroup"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/group/memberlist": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * Get a detailed list of all group members * @description Returns a full member list for the authenticated group. By default returns * active members; use `waiting` and/or `awaiting_approval` query parameters to * include members in those states instead. */ get: operations["getGroupMemberlist"]; put?: never; post?: never; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/organisation/register/member": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Register a group member on the waiting list * @description Validation rules and required fields are determined by the system * configuration — refer to the system UI for current requirements. */ post: operations["registerGroupMember"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; "/organisation/update/membership": { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; get?: never; put?: never; /** * Update group membership status, troop, or patrol * @description Update one or more group memberships in a single request. A common use * case is moving a member from the waiting list into a troop/patrol and * confirming their membership status. * * Any error causes the entire request to be rejected. */ post: operations["updateGroupMembership"]; delete?: never; options?: never; head?: never; patch?: never; trace?: never; }; } export type webhooks = Record; export interface components { schemas: { body: { /** @description Unique key for the body. Usually body type and body ID separated by an underscore. */ body_key: string; /** @description The name of the body. */ body_name: string; /** @enum {string} */ body_type: "organisation" | "region" | "network" | "district" | "corps" | "group" | "troop" | "patrol"; /** @description ID of the body. */ body_id: number; /** @description ID of the organisation this body belongs to. If this body is an organisation, this is the same as body_id. */ organisation_id: number; }; group_troop: { /** @description The name of the troop. */ name: string; /** * @description 1: Bäverscouter * 2: Spårarscouter * 3: Upptäckarscouter * 4: Äventyrarscouter * 5: Utmanarscouter * 6: Roverscouter * 7: Annat * 8: Familjescouter */ type: number; /** @description Minimum age for the troop. */ min_age: number; /** @description Maximum age for the troop. */ max_age: number; /** @description NOT YET DOCUMENTED */ meeting_info?: unknown | null; /** @description ID of the section this troop belongs to. */ section_id: number; }; group_section: { /** @description The name of the troop. */ name: string; /** @description A description of the troop. */ description?: string | null; /** @description Section ID number. */ id: number; /** @description NOT YET DOCUMENTED */ address_ids?: unknown | null; }; address: { care_of?: string | null; location_name?: string | null; line_1?: string | null; line_2?: string | null; line_3?: string | null; post_code?: string | null; post_town?: string | null; latitude?: string | null; longitude?: string | null; info?: string | null; country_code?: string | null; section_name?: string | null; section_priority?: boolean | null; }; project_stats: { project_id?: number | null; group_participants?: number | null; project_name?: string | null; /** @description NOT YET DOCUMENTED */ questions?: unknown | null; }; group: { /** @description The name of the group. */ name?: string | null; /** @description A description of the group. */ description?: string | null; /** @description Group ID number. */ group_no: number; /** @description Corps or "samverkansorganisation". `null` means Scouterna. */ corps_id?: number | null; /** * @description 1: Scoutkår * 2: Sjöscoutkår * 3: Hub-Kår */ group_types?: number[] | null; /** * @description 1: Bäverscouter * 2: Spårarscouter * 3: Upptäckarscouter * 4: Äventyrarscouter * 5: Utmanarscouter * 6: Roverscouter * 7: Annat * 8: Familjescouter */ troop_types?: number[] | null; /** @description Municipality ID. Name can be found in the region object. */ municipality_id?: number | null; /** @description County ID. Name can be found in the region object. */ county_id?: number | null; /** @description Whether the group is open for new members or not. */ public_registration_enabled?: boolean | null; /** * @description Destination list for public registration. * 1: Medlemskap som väntar på godkännande (Membership waiting for approval) * 2: Flytta till väntelista (Move to waiting list) */ destination_list?: number | null; /** @description NOT YET DOCUMENTED */ badges?: unknown | null; troops?: { [key: string]: components["schemas"]["group_troop"]; } | null; sections?: { [key: string]: components["schemas"]["group_section"]; } | null; addresses?: { [key: string]: components["schemas"]["address"]; } | null; email?: { [key: string]: string; } | null; email_membership?: { [key: string]: string; } | null; project_stats?: { [key: string]: components["schemas"]["project_stats"]; } | null; }; district: { /** @description The name of the district. */ name: string; groups: { [key: string]: components["schemas"]["group"]; }; }; region: { /** @description The name of the region. */ name?: string | null; districts?: { [key: string]: components["schemas"]["district"]; } | null; /** @description NOT YET DOCUMENTED */ corps?: unknown | null; /** @description Key-value map of municipality IDs (used in the response) to their names. */ municipalities?: { [key: string]: string; } | null; /** @description Key-value map of country IDs (used in the response) to their names. */ conties?: { [key: string]: string; } | null; }; organisation: { /** @description The name of the organisation. */ name?: string | null; regions?: { [key: string]: components["schemas"]["region"]; } | null; }; project_member: { checked_in?: boolean | null; pc_details?: { required?: boolean | null; valid?: boolean | null; shown?: string | null; missing?: boolean | null; } | null; /** @description Course ID to completion date, or null if not completed. See the `pc_courses` map in the getProjectParticipants response for the course ID to name lookup. */ pc_courses?: { [key: string]: string | null; } | null; attended?: boolean | null; cancelled?: boolean | null; confirmed?: boolean | null; confirmed_at?: string | null; member_status?: number | null; member_no?: number | null; group_registration?: boolean | null; first_name?: string | null; last_name?: string | null; ssno?: string | null; registration_date?: string | null; cancelled_date?: string | null; primary_email?: string | null; fee_id?: number | null; primary_membership_info?: ({ patrol_id?: number | null; patrol_name?: string | null; troop_id?: number | null; troop_name?: string | null; group_id?: number | null; group_name?: string | null; district_id?: number | null; district_name?: string | null; region_id?: number | null; region_name?: string | null; organisation_id?: number | null; organisation_name?: string | null; } | unknown[]) | null; group_registration_info?: ({ group_id?: number | null; patrol_id?: number | null; group_name?: string | null; org_id?: number | null; org_name?: string | null; district_id?: number | null; district_name?: string | null; patrol_name?: string | null; } | unknown[]) | null; questions?: { [key: string]: string | null; } | null; contact_info?: { [key: string]: string; } | null; }; project_get_participants_labels: { member_status?: { [key: string]: string; } | null; sex?: { [key: string]: string; } | null; project_fee?: { [key: string]: string; } | null; contact_type?: { [key: string]: string; } | null; }; checkin: { /** * @description Set to 1 to mark the participant as checked in, 0 to mark as checked out. * @enum {number} */ checked_in?: (0 | 1) | null; /** * @description A comment to be stored with the check-in. If checked_in is not provided a comment will be stored without changing the check-in state. * @example Checked in by Scoutin checkin system */ comment?: string | null; /** * @description Only applicable when checking out. Set to 1 to mark the participant as attended, 0 to mark as not attended. Default is 1. * @default 1 * @enum {number} */ attended: 0 | 1; }; checkin_response: { /** @description List of member IDs that were checked in. */ checked_in?: number[] | null; /** @description List of member IDs that were checked out and marked as attended. */ checked_out_attended?: number[] | null; /** @description List of member IDs that were checked out and marked as not attended. */ checked_out_not_attended?: number[] | null; /** @description List of member IDs that were not changed. If only a comment was added, the member is still in this list. */ unchanged?: number[] | null; /** @description List of member IDs that exist but are not participants on the project. */ not_found?: number[] | null; /** @description List of member IDs that do not exist in the system. */ no_member?: number[] | null; /** @description Total number of members that were processed. Unchanged members are counted as well. */ total?: number | null; /** @description NOT YET DOCUMENTED */ updated_questions?: unknown | null; }; form: { /** @description The title of the form. */ title?: string | null; /** @description The form ID number. */ id?: number | null; /** * @description The type of form. * @enum {string} */ form_type?: ("individual" | "group") | null; /** @description A direct, authenticated URL to access the full form data. */ endpoint_url?: string | null; }; question_choice: { /** @description The choice ID. */ value?: number | null; /** @description The choice text. */ option?: string | null; /** @description The choice description. */ description?: string | null; }; question: { /** @description The question name. */ question?: string | null; /** @description The question description. */ description?: string | null; /** @description ID of the tab the question belongs to. */ tab_id?: number | null; /** @description ID of the section the question belongs to. */ section_id?: number | null; /** @description The default value of the question. */ default_value?: string | null; /** @description The type of question. */ type?: string | null; choices?: { [key: string]: components["schemas"]["question_choice"]; } | null; }; form_tab: { id?: number | null; title?: string | null; description?: string | null; }; form_section: { id?: number | null; title?: string | null; }; /** * @description Keyed by age group ID (string), then by sex code * (string: 0=unknown, 1=male, 2=female, 3=other), then member count. */ group_stat_breakdown: { [key: string]: { [key: string]: number; }; }; group_stat_term: { sum?: number | null; term_id?: number | null; term_label?: string | null; breakdown?: components["schemas"]["group_stat_breakdown"] | null; }; memberlist_field: { value?: unknown | null; raw_value?: string | null; }; register_member_profile: { first_name?: string | null; last_name?: string | null; /** * @description 0 = unknown, 1 = male, 2 = female, 3 = other * @enum {integer|null} */ sex?: (0 | 1 | 2 | 3 | null) | null; /** Format: email */ email?: string | null; /** Format: date */ date_of_birth?: string | null; ssno?: string | null; note?: string | null; nick_name?: (string | null) | null; newsletter?: (string | null) | null; magazine?: (string | null) | null; force_police_check?: (string | null) | null; }; register_member_membership: { /** * @description 1 = waiting list, 2 = pending approval, 4 = approve in group * @enum {integer} */ status?: (1 | 2 | 4) | null; troop_id?: (number | null) | null; patrol_id?: (number | null) | null; feegroup_id?: (number | null) | null; }; register_address_entry: { address_type?: string | null; address_line1?: string | null; address_line2?: string | null; country_code?: string | null; zip_code?: string | null; zip_name?: string | null; }; register_member_profile_response: components["schemas"]["register_member_profile"] & { id?: (number | null) | null; }; }; responses: { /** @description When unauthorized there will be no response body. */ not_authorized: { headers: { [name: string]: unknown; }; content?: never; }; }; parameters: never; requestBodies: never; headers: never; pathItems: never; } export type $defs = Record; export interface operations { listBodyKeys: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description A list of all bodies and their relations to each other. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: components["schemas"]["body"]; }; }; }; 401: components["responses"]["not_authorized"]; }; }; getProjectGroups: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Keys of the response object are group IDs and values are group objects. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: components["schemas"]["organisation"]; }; }; }; 401: components["responses"]["not_authorized"]; }; }; getProjectParticipants: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description A list of members registered on the project. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { participants?: ({ [key: string]: components["schemas"]["project_member"]; } | unknown[] | null) | null; labels?: components["schemas"]["project_get_participants_labels"] | null; /** @description Course ID to course name, e.g. `{ "89": "Trygga möten" }`. Cross-reference with the `pc_courses` map on each project member to get a member's completion date per course. */ pc_courses?: { [key: string]: string; } | null; }; }; }; 401: components["responses"]["not_authorized"]; }; }; updateCheckin: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * @description An object where the keys are member IDs and the values are objects * with check-in details. */ requestBody: { content: { "application/json": { [key: string]: components["schemas"]["checkin"]; }; }; }; responses: { /** @description A summary of the check-in operation. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": components["schemas"]["checkin_response"]; }; }; 401: components["responses"]["not_authorized"]; }; }; getProjectFormts: { parameters: { query?: { /** * @description If provided, details of the specific form will be included in the * response. */ form_id?: number; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Keys of the response object are form IDs and values are form objects. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { forms?: { [key: string]: components["schemas"]["form"]; } | null; form?: components["schemas"]["form"] | null; questions?: { [key: string]: components["schemas"]["question"]; } | null; tabs?: { [key: string]: components["schemas"]["form_tab"]; } | null; sections?: { [key: string]: components["schemas"]["form_section"]; } | null; messages?: string[] | null; }; }; }; 401: components["responses"]["not_authorized"]; }; }; getOrganisationGroup: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Group information. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { Group?: { name?: string | null; membercount?: number | null; rolecount?: number | null; waitingcount?: number | null; group_email?: (boolean | null) | null; /** Format: email */ email?: string | null; description?: string | null; stats?: ({ active?: { sum?: number | null; breakdown?: components["schemas"]["group_stat_breakdown"] | null; } | null; active_paid?: components["schemas"]["group_stat_term"] | null; active_paid_previous?: components["schemas"]["group_stat_term"] | null; /** @description Count of active members aged 26 or under. */ below_26?: number | null; /** Format: date-time */ generated?: string | null; active_troops?: number | null; } | null) | null; } | null; Leader?: { name?: string | null; contactdetails?: string | null; } | null; }; }; }; 401: components["responses"]["not_authorized"]; }; }; getGroupMemberlist: { parameters: { query?: { /** @description Include members on the waiting list. */ waiting?: 1; /** @description Include members awaiting approval. */ awaiting_approval?: 1; }; header?: never; path?: never; cookie?: never; }; requestBody?: never; responses: { /** @description Member list with translated labels. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { /** @description Keyed by member number. */ data?: { [key: string]: { member_no?: components["schemas"]["memberlist_field"]; first_name?: components["schemas"]["memberlist_field"]; last_name?: components["schemas"]["memberlist_field"]; ssno?: components["schemas"]["memberlist_field"]; date_of_birth?: components["schemas"]["memberlist_field"]; status?: components["schemas"]["memberlist_field"]; created_at?: components["schemas"]["memberlist_field"]; confirmed_at?: components["schemas"]["memberlist_field"]; group?: components["schemas"]["memberlist_field"]; unit?: components["schemas"]["memberlist_field"]; unit_type?: components["schemas"]["memberlist_field"]; sex?: components["schemas"]["memberlist_field"]; address_1?: components["schemas"]["memberlist_field"]; postcode?: components["schemas"]["memberlist_field"]; town?: components["schemas"]["memberlist_field"]; country?: components["schemas"]["memberlist_field"]; email?: components["schemas"]["memberlist_field"]; prev_term?: components["schemas"]["memberlist_field"]; current_term?: components["schemas"]["memberlist_field"]; current_term_due_date?: components["schemas"]["memberlist_field"]; kid?: components["schemas"]["memberlist_field"]; roles?: components["schemas"]["memberlist_field"]; waiting_since?: components["schemas"]["memberlist_field"]; awaiting_approval?: components["schemas"]["memberlist_field"]; } & { [key: string]: components["schemas"]["memberlist_field"]; }; } | null; /** @description Translated column labels keyed by field name. */ labels?: { [key: string]: string; } | null; }; }; }; 401: components["responses"]["not_authorized"]; }; }; registerGroupMember: { parameters: { query?: { /** * @description An internal route name. When provided the system redirects to this * route on success instead of returning the registered values. */ redirect?: string; }; header?: never; path?: never; cookie?: never; }; /** * @description Member registration data including profile, membership, and optional * address and contact information. */ requestBody: { content: { "application/json": { profile?: components["schemas"]["register_member_profile"] | null; membership?: components["schemas"]["register_member_membership"] | null; registration_preferences?: { troop_id?: number[] | null; section_id?: number[] | null; } | null; address_list?: { addresses?: { [key: string]: components["schemas"]["register_address_entry"]; } | null; } | null; contact_list?: { contacts?: { [key: string]: { contact_type_id?: string | null; details?: string | null; }; } | null; } | null; /** @description Custom field answers, keyed by field ID. */ custom_data?: { [key: string]: string; } | null; }; }; }; responses: { /** @description Member successfully registered. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { profile?: components["schemas"]["register_member_profile_response"] | null; membership?: components["schemas"]["register_member_membership"] | null; registration_preferences?: { troop_id?: number[] | null; section_id?: number[] | null; } | null; address_list?: { addresses?: { [key: string]: components["schemas"]["register_address_entry"]; } | null; } | null; contact_list?: { contacts?: { [key: string]: { contact_type_id?: string | null; details?: string | null; }; } | null; } | null; custom_data?: { [key: string]: string; } | null; }; }; }; /** * @description Validation errors. Profile errors are an array of error objects. Nested * errors (e.g. address_list) are objects keyed by sub-field name. */ 400: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: { key?: string | null; subkey?: string | null; value?: unknown | null; msg?: string | null; }[] | { [key: string]: { [key: string]: { key?: string | null; subkey?: string | null; value?: unknown | null; msg?: string | null; }; }; }; }; }; }; 401: components["responses"]["not_authorized"]; }; }; updateGroupMembership: { parameters: { query?: never; header?: never; path?: never; cookie?: never; }; /** * @description An object where the keys are member numbers and the values are objects * describing the membership fields to update. */ requestBody: { content: { "application/json": { [key: string]: { /** @enum {string} */ status: "confirmed" | "waiting" | "cancelled"; troop_id?: number | null; patrol_id?: number | null; }; }; }; }; responses: { /** @description All memberships updated successfully. */ 200: { headers: { [name: string]: unknown; }; content: { "application/json": { success?: boolean | null; /** @description Member numbers that were updated. */ updated?: number[] | null; }; }; }; /** * @description One or more members failed validation. The entire request is rejected. * Keys are member numbers; values are error message strings. */ 400: { headers: { [name: string]: unknown; }; content: { "application/json": { [key: string]: string; }; }; }; 401: components["responses"]["not_authorized"]; }; }; }