import {z} from 'zod' export type GetApiApiV1StatuspagesArgs = {page?: number | undefined, page_size?: number | undefined, search?: string | undefined, ordering?: ('pk' | '-pk' | 'name' | '-name' | 'slug' | '-slug' | 'cname' | '-cname') | undefined, visibility_level?: ('UPTIME_USERS' | 'EXTERNAL_USERS' | 'PUBLIC') | undefined}; export type GetApiApiV1StatuspagesOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const statusPage = z.object({pk: z.number().int().optional(), name: z.string().max(100), visibility_level: z.enum(["UPTIME_USERS", "EXTERNAL_USERS", "PUBLIC"]).optional(), description: z.string().optional(), page_type: z.enum(["PUBLIC", "PUBLIC_SLA", "INTERNAL"]), public_url: z.string().optional(), private_url: z.string().optional(), cname_url: z.string().optional(), url: z.string().optional(), incidents_url: z.string().optional(), components_url: z.string().optional(), metrics_url: z.string().optional(), history_url: z.string().optional(), current_status_url: z.string().optional(), slug: z.string().min(3).max(100).nullable().optional(), page_type_display: z.string().optional(), cname: z.string().max(255).nullable().optional(), allow_subscriptions: z.boolean().optional(), allow_subscriptions_slack: z.boolean().optional(), allow_subscriptions_sms: z.boolean().optional(), allow_subscriptions_webhook: z.boolean().optional(), allow_subscriptions_rss: z.boolean().optional(), allow_subscriptions_email: z.boolean().optional(), allow_notifications: z.boolean().optional(), allow_search_indexing: z.boolean().optional(), allow_drill_down: z.boolean().optional(), auth_username: z.string().max(100).optional(), auth_password: z.string().max(100).optional(), description_html: z.string().optional(), max_visible_component_days: z.number().int().gte(0).lte(2147483647).nullable().optional(), show_status_tab: z.boolean().optional(), default_status_date_range: z.number().int().gte(1).lte(90).optional(), show_active_incidents: z.boolean().optional(), show_component_response_time: z.boolean().optional(), show_history_tab: z.boolean().optional(), default_history_date_range: z.number().int().gte(1).lte(90).optional(), uptime_calculation_type: z.enum(["BY_INCIDENTS", "BY_CHECKS"]).optional(), show_history_snake: z.boolean().optional(), show_component_history: z.boolean().optional(), hide_empty_tabs_status: z.boolean().optional(), hide_empty_tabs_history: z.boolean().optional(), show_summary_metrics: z.boolean().optional(), show_past_incidents: z.boolean().optional(), allow_pdf_report: z.boolean().optional(), layout_preset: z.enum(["EXPANDED", "COMPACT", "MINIMAL"]).optional(), show_component_bars: z.boolean().optional(), show_component_descriptions: z.boolean().optional(), show_overall_status: z.boolean().optional(), show_branding_footer: z.boolean().optional(), google_analytics_code: z.string().max(1024).optional(), contact_email: z.string().max(254).optional(), email_from: z.string().max(254).optional(), email_reply_to: z.string().max(254).optional(), custom_header_html: z.string().optional(), custom_footer_html: z.string().optional(), custom_css: z.string().optional(), custom_header_html_inspire: z.string().optional(), custom_footer_html_inspire: z.string().optional(), custom_css_inspire: z.string().optional(), email_logo_url: z.string().optional(), logo_url: z.string().optional(), favicon_url: z.string().optional(), company_website_url: z.string().max(200).optional(), timezone: z.enum(["Pacific/Midway", "Pacific/Niue", "Pacific/Pago_Pago", "America/Adak", "Pacific/Honolulu", "Pacific/Rarotonga", "Pacific/Tahiti", "US/Hawaii", "Pacific/Marquesas", "America/Anchorage", "Pacific/Gambier", "America/Juneau", "America/Metlakatla", "America/Nome", "America/Sitka", "US/Alaska", "America/Yakutat", "America/Dawson", "America/Los_Angeles", "Pacific/Pitcairn", "America/Tijuana", "US/Pacific", "America/Vancouver", "America/Whitehorse", "America/Boise", "America/Cambridge_Bay", "America/Chihuahua", "America/Ciudad_Juarez", "America/Creston", "America/Dawson_Creek", "America/Denver", "America/Edmonton", "America/Fort_Nelson", "America/Hermosillo", "America/Inuvik", "America/Mazatlan", "America/Ojinaga", "America/Phoenix", "US/Arizona", "US/Mountain", "America/Bahia_Banderas", "America/Belize", "America/North_Dakota/Beulah", "America/North_Dakota/Center", "America/Chicago", "America/Costa_Rica", "Pacific/Easter", "America/El_Salvador", "Pacific/Galapagos", "America/Guatemala", "America/Indiana/Knox", "America/Managua", "America/Matamoros", "America/Menominee", "America/Merida", "America/Mexico_City", "America/Monterrey", "America/North_Dakota/New_Salem", "America/Rankin_Inlet", "America/Regina", "America/Resolute", "America/Swift_Current", "America/Tegucigalpa", "America/Indiana/Tell_City", "US/Central", "America/Winnipeg", "America/Atikokan", "America/Bogota", "America/Cancun", "America/Cayman", "America/Detroit", "America/Eirunepe", "America/Guayaquil", "America/Havana", "America/Indiana/Indianapolis", "America/Iqaluit", "America/Jamaica", "America/Lima", "America/Kentucky/Louisville", "America/Indiana/Marengo", "America/Kentucky/Monticello", "America/Nassau", "America/New_York", "America/Panama", "America/Indiana/Petersburg", "America/Port-au-Prince", "America/Rio_Branco", "America/Toronto", "US/Eastern", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Caracas", "America/Anguilla", "America/Antigua", "America/Aruba", "America/Asuncion", "America/Barbados", "Atlantic/Bermuda", "America/Blanc-Sablon", "America/Boa_Vista", "America/Campo_Grande", "America/Cuiaba", "America/Curacao", "America/Dominica", "America/Glace_Bay", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guyana", "America/Halifax", "America/Kralendijk", "America/La_Paz", "America/Lower_Princes", "America/Manaus", "America/Marigot", "America/Martinique", "America/Moncton", "America/Montserrat", "America/Port_of_Spain", "America/Porto_Velho", "America/Puerto_Rico", "America/Punta_Arenas", "America/Santiago", "America/Santo_Domingo", "America/St_Barthelemy", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Thule", "America/Tortola", "America/St_Johns", "America/Araguaina", "America/Bahia", "America/Belem", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Cayenne", "America/Argentina/Cordoba", "America/Fortaleza", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Maceio", "America/Argentina/Mendoza", "America/Miquelon", "America/Montevideo", "America/Nuuk", "America/Paramaribo", "America/Recife", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Santarem", "America/Sao_Paulo", "Atlantic/Stanley", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Noronha", "Atlantic/South_Georgia", "Atlantic/Azores", "Atlantic/Cape_Verde", "America/Scoresbysund", "Africa/Abidjan", "Africa/Accra", "Africa/Bamako", "Africa/Banjul", "Africa/Bissau", "Atlantic/Canary", "Africa/Casablanca", "Africa/Conakry", "Africa/Dakar", "America/Danmarkshavn", "Africa/El_Aaiun", "Atlantic/Faroe", "Africa/Freetown", "GMT", "Europe/Guernsey", "Europe/Isle_of_Man", "Europe/Jersey", "Europe/Lisbon", "Africa/Lome", "Europe/London", "Atlantic/Madeira", "Africa/Monrovia", "Africa/Nouakchott", "Africa/Ouagadougou", "Atlantic/Reykjavik", "Africa/Sao_Tome", "Atlantic/St_Helena", "UTC", "Africa/Algiers", "Europe/Amsterdam", "Europe/Andorra", "Africa/Bangui", "Europe/Belgrade", "Europe/Berlin", "Europe/Bratislava", "Africa/Brazzaville", "Europe/Brussels", "Europe/Budapest", "Europe/Busingen", "Africa/Ceuta", "Europe/Copenhagen", "Africa/Douala", "Europe/Dublin", "Europe/Gibraltar", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Europe/Ljubljana", "Africa/Luanda", "Europe/Luxembourg", "Europe/Madrid", "Africa/Malabo", "Europe/Malta", "Europe/Monaco", "Africa/Ndjamena", "Africa/Niamey", "Europe/Oslo", "Europe/Paris", "Europe/Podgorica", "Africa/Porto-Novo", "Europe/Prague", "Europe/Rome", "Europe/San_Marino", "Europe/Sarajevo", "Europe/Skopje", "Europe/Stockholm", "Europe/Tirane", "Africa/Tunis", "Europe/Vaduz", "Europe/Vatican", "Europe/Vienna", "Europe/Warsaw", "Europe/Zagreb", "Europe/Zurich", "Asia/Amman", "Europe/Athens", "Asia/Beirut", "Africa/Blantyre", "Europe/Bucharest", "Africa/Bujumbura", "Africa/Cairo", "Europe/Chisinau", "Asia/Damascus", "Asia/Famagusta", "Africa/Gaborone", "Asia/Gaza", "Africa/Harare", "Asia/Hebron", "Europe/Helsinki", "Europe/Istanbul", "Asia/Jerusalem", "Africa/Johannesburg", "Europe/Kaliningrad", "Europe/Kiev", "Africa/Kigali", "Europe/Kyiv", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Maputo", "Europe/Mariehamn", "Africa/Maseru", "Africa/Mbabane", "Asia/Nicosia", "Europe/Riga", "Europe/Sofia", "Europe/Tallinn", "Africa/Tripoli", "Europe/Uzhgorod", "Europe/Vilnius", "Africa/Windhoek", "Africa/Addis_Ababa", "Asia/Aden", "Indian/Antananarivo", "Africa/Asmara", "Europe/Astrakhan", "Asia/Baghdad", "Asia/Bahrain", "Indian/Comoro", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Juba", "Africa/Kampala", "Africa/Khartoum", "Europe/Kirov", "Asia/Kuwait", "Indian/Mayotte", "Europe/Minsk", "Africa/Mogadishu", "Europe/Moscow", "Africa/Nairobi", "Asia/Qatar", "Asia/Riyadh", "Europe/Saratov", "Europe/Simferopol", "Europe/Ulyanovsk", "Europe/Volgograd", "Asia/Tehran", "Asia/Baku", "Asia/Dubai", "Indian/Mahe", "Indian/Mauritius", "Asia/Muscat", "Indian/Reunion", "Europe/Samara", "Asia/Tbilisi", "Asia/Yerevan", "Asia/Kabul", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Atyrau", "Asia/Dushanbe", "Asia/Karachi", "Indian/Kerguelen", "Indian/Maldives", "Asia/Oral", "Asia/Samarkand", "Asia/Tashkent", "Asia/Yekaterinburg", "Asia/Colombo", "Asia/Kolkata", "Asia/Kathmandu", "Asia/Almaty", "Asia/Barnaul", "Asia/Bishkek", "Indian/Chagos", "Asia/Dhaka", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Qostanay", "Asia/Qyzylorda", "Asia/Thimphu", "Asia/Tomsk", "Asia/Urumqi", "Indian/Cocos", "Asia/Yangon", "Asia/Bangkok", "Indian/Christmas", "Asia/Ho_Chi_Minh", "Asia/Hovd", "Asia/Jakarta", "Asia/Krasnoyarsk", "Asia/Novokuznetsk", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Vientiane", "Asia/Brunei", "Asia/Chita", "Asia/Choibalsan", "Asia/Hong_Kong", "Asia/Irkutsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Macau", "Asia/Makassar", "Asia/Manila", "Australia/Perth", "Asia/Shanghai", "Asia/Singapore", "Asia/Taipei", "Asia/Ulaanbaatar", "Asia/Pyongyang", "Australia/Eucla", "Asia/Dili", "Asia/Jayapura", "Asia/Khandyga", "Pacific/Palau", "Asia/Seoul", "Asia/Tokyo", "Asia/Yakutsk", "Australia/Adelaide", "Australia/Broken_Hill", "Australia/Darwin", "Australia/Brisbane", "Pacific/Chuuk", "Pacific/Guam", "Australia/Hobart", "Australia/Lindeman", "Asia/Magadan", "Australia/Melbourne", "Pacific/Port_Moresby", "Pacific/Saipan", "Asia/Sakhalin", "Australia/Sydney", "Asia/Ust-Nera", "Asia/Vladivostok", "Australia/Lord_Howe", "Pacific/Bougainville", "Pacific/Efate", "Pacific/Guadalcanal", "Pacific/Kosrae", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pohnpei", "Asia/Srednekolymsk", "Asia/Anadyr", "Pacific/Auckland", "Pacific/Fiji", "Pacific/Funafuti", "Asia/Kamchatka", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Nauru", "Pacific/Tarawa", "Pacific/Wake", "Pacific/Wallis", "Pacific/Chatham", "Pacific/Apia", "Pacific/Fakaofo", "Pacific/Kanton", "Pacific/Tongatapu", "Pacific/Kiritimati"]).optional(), theme: z.literal("INSPIRE").optional(), custom_header_text_color_hex: z.string().max(25).optional(), custom_header_bg_color_hex: z.string().max(25).optional()}); export const getApiApiV1StatuspagesResponse = z.object({count: z.number().int(), next: z.string().nullable().optional(), previous: z.string().nullable().optional(), results: z.array(statusPage)}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List all status pages * * GET /api/v1/statuspages/ */ export const getApiApiV1Statuspages = async (args: GetApiApiV1StatuspagesArgs, options: GetApiApiV1StatuspagesOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.page != null) query.append("page", String(args.page)) if (args.page_size != null) query.append("page_size", String(args.page_size)) if (args.search != null) query.append("search", String(args.search)) if (args.ordering != null) query.append("ordering", String(args.ordering)) if (args.visibility_level != null) query.append("visibility_level", String(args.visibility_level)) const url = `${baseUrl.replace(/\/+$/, '')}/api/v1/statuspages/${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiApiV1StatuspagesResponse, await res.json()) };