import {z} from 'zod' export type GetApiEnterpriseEnterpriseIdDevicegroupGroupIdBlueprintBlueprintIdArgs = {enterprise_id: string, group_id: string, blueprint_id: string, without_details?: boolean | undefined}; export type GetApiEnterpriseEnterpriseIdDevicegroupGroupIdBlueprintBlueprintIdOptions = {baseUrl?: string | undefined, esperCloudApiApiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const esperCloudApiConnectivitySection = z.object({sms_disabled: z.boolean().optional(), enable_bluetooth: z.boolean().optional(), wifi_state: z.boolean().optional(), nfc_beam_disabled: z.boolean().optional(), ethernet_settings: z.object({ethernet_auth_mode: z.enum(["EAP_TLS", "NONE"]), ethernet_ca_cert_alias: z.string().optional(), ethernet_client_cert_alias: z.string().optional(), ethernet_eap_identity: z.string().optional()}).optional(), wifi_settings: z.array(z.object({wifi_ssid: z.string().optional(), wifi_password: z.string().optional(), wifi_security_type: z.enum(["NONE", "WAP", "WEP", "EAP", "WPA2", "SAE"]).optional(), wifi_phase2_auth: z.enum(["NONE", "PAP", "MSCHAP", "MSCHAPV2", "GTC", "SIM", "AKA", "AKA_PRIME"]).optional(), wifi_eap_method: z.enum(["PEAP", "TLS", "TTLS", "PWD", "NONE", "SIM", "AKA", "AKA_PRIME"]).optional(), identity: z.string().optional(), anonymous_identity: z.string().optional(), domain: z.string().optional(), hidden: z.boolean().optional()})).optional(), incoming_numbers_with_tags: z.array(z.object({number: z.string().optional(), tags: z.array(z.string()).optional()})).optional(), outgoing_numbers_with_tags: z.array(z.object({number: z.string().optional(), tags: z.array(z.string()).optional()})).optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiSoundSection = z.object({alarm_volume: z.number().int().optional(), notification_volume: z.number().int().optional(), music_volume: z.number().int().optional(), ring_volume: z.number().int().optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiDisplayBrandingSection = z.object({screenshot_disabled: z.boolean().optional(), status_bar_disabled: z.boolean().optional(), rotation_state: z.enum(["AUTO", "LANDSCAPE_ONLY", "POTRAIT_ONLY", "INVERTED_PORTRAIT_ONLY", "INVERTED_LANDSCAPE_ONLY"]).optional(), brightness_scale: z.number().int().optional(), wallpapers: z.array(z.object({wallpaper: z.string().optional(), wallpaper_url: z.string().optional(), thumbnail_url: z.string().optional(), orientation: z.string().optional(), screen_types: z.array(z.enum(["LOCKSCREEN", "HOMESCREEN"])).optional(), orientations: z.array(z.enum(["PORTRAIT", "LANDSCAPE"])).optional()})).optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiHardwareSettingsSection = z.object({gps_state: z.enum(["LOCATION_MODE_HIGH_ACCURACY", "LOCATION_MODE_SENSORS_ONLY", "LOCATION_MODE_BATTERY_SAVING", "LOCATION_MODE_OFF", "LOCATION_MODE_ON"]).optional(), usb_file_transfer_disabled: z.boolean().optional(), tethering_disabled: z.boolean().optional(), camera_disabled: z.boolean().optional(), usb_connectivity_disabled: z.boolean().optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiDateTimeSection = z.object({timezone_string: z.string().optional(), device_locale: z.string().optional(), date_time_config_disabled: z.boolean().optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiSettingsAppSection = z.object({enable_android_settings_app: z.boolean().optional(), settings_access_level: z.enum(["NONE", "SHOONYA", "SYSTEM"]).optional(), esper_settings_app: z.object({only_dock_accessible: z.boolean().optional(), admin_mode_password: z.string().optional(), esper_settings_app_policy: z.object({flashlight: z.string().optional(), wifi: z.string().optional(), auto_rotation: z.string().optional(), reboot: z.string().optional(), kiosk_app_selection: z.string().optional(), esper_branding: z.string().optional(), factory_reset: z.string().optional(), about: z.string().optional(), display: z.string().optional(), sound: z.string().optional(), keyboard: z.string().optional(), input_selection: z.string().optional(), accessibility: z.string().optional(), mobile_data: z.string().optional(), bluetooth: z.string().optional(), language: z.string().optional(), time_and_date: z.string().optional(), clear_app_data: z.string().optional(), storage: z.string().optional(), data_roaming: z.string().optional(), wifi_tethering: z.string().optional(), airplane_mode: z.string().optional(), accessibility_reset_to_default: z.string().optional(), accessibility_high_contrast_text: z.string().optional(), accessibility_cc_deuteranomaly: z.string().optional(), accessibility_cc_protanomaly: z.string().optional(), accessibility_cc_tritanomaly: z.string().optional(), accessibility_mono_audio: z.string().optional(), accessibility_display_size: z.string().optional(), accessibility_talkback: z.string().optional(), accessibility_text_to_speech: z.string().optional()}).optional()}).optional(), config_json: z.object({}).optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiSystemUpdatesSection = z.object({locked: z.boolean().optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), type: z.enum(["TYPE_POSTPONE", "TYPE_INSTALL_AUTOMATIC", "TYPE_INSTALL_WINDOWED", "TYPE_INSTALL_DISABLED"]).optional(), maintenance_start: z.number().int().optional(), maintenance_end: z.number().int().optional()}); export const esperCloudApiGoogleServicesSection = z.object({disable_play_store: z.boolean().optional(), google_assistant_disabled: z.boolean().optional(), managed_google_play_disabled: z.boolean().optional(), max_account: z.number().int().optional(), emails: z.array(z.string()).optional(), domains: z.array(z.string()).optional(), frp_googles: z.array(z.object({google_id: z.string().optional(), email: z.string().optional(), type: z.enum(["USER", "ADMIN"]).optional()})).optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiSecuritySection = z.object({password_quality: z.enum(["PASSWORD_QUALITY_ALPHABETIC", "PASSWORD_QUALITY_ALPHANUMERIC", "PASSWORD_QUALITY_UNSPECIFIED", "PASSWORD_QUALITY_COMPLEX", "PASSWORD_QUALITY_BIOMETRIC_WEAK", "PASSWORD_QUALITY_NUMERIC"]).optional(), minimum_password_length: z.number().int().optional(), adb_disabled: z.boolean().optional(), safe_boot_disabled: z.boolean().optional(), screen_off_timeout: z.number().int().optional(), factory_reset_disabled: z.boolean().optional(), keyguard_disabled: z.boolean().optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiApplicationSection = z.object({app_mode: z.enum(["KIOSK", "MULTI_APP"]).optional(), launch_on_start: z.string().optional(), start_on_boot: z.string().nullable().optional(), launcher_less_dpc: z.boolean().optional(), disable_local_app_install: z.boolean().optional(), app_uninstall_disabled: z.boolean().optional(), permission_policy: z.enum(["PERMISSION_POLICY_AUTO_GRANT", "PERMISSION_POLICY_PROMPT", "PERMISSION_POLICY_AUTO_DENY"]).optional(), locked: z.boolean().optional(), preload_apps: z.array(z.object({package_name: z.string().optional(), state: z.enum(["SHOW", "HIDE", "DISABLED", "LAUNCHABLE_BUT_HIDDEN"]).optional()})).optional(), apps: z.array(z.object({version_codes: z.array(z.string()).optional(), is_g_play: z.boolean().optional(), app_version: z.string().optional(), app_version_url: z.string().optional(), hash_string: z.string().optional(), package_name: z.string().optional(), download_url: z.string().optional(), installation_rule: z.enum(["DURING", "POST"]).optional(), state: z.enum(["SHOW", "HIDE", "DISABLED", "LAUNCHABLE_BUT_HIDDEN"]).optional(), managed_config: z.object({}).optional()})).optional(), section_type: z.enum(["Inherited", "Independent"]).optional()}); export const esperCloudApiContentSection = z.object({files: z.array(z.object({file: z.number().int().optional(), file_url: z.string().optional(), hash: z.string().optional(), url: z.string().optional(), destination_path: z.string().optional()})).optional(), section_type: z.enum(["Inherited", "Independent"]).optional(), locked: z.boolean().optional()}); export const esperCloudApiBlueprintRevision = z.object({id: z.string().optional(), revision: z.string().optional(), created_by: z.string().optional(), current: z.boolean().optional(), type: z.enum(["Independent", "Inherited"]).optional(), comments: z.string().optional(), locked: z.boolean().optional(), connectivity: esperCloudApiConnectivitySection.optional(), sound: esperCloudApiSoundSection.optional(), display_branding: esperCloudApiDisplayBrandingSection.optional(), hardware_settings: esperCloudApiHardwareSettingsSection.optional(), date_time: esperCloudApiDateTimeSection.optional(), settings_app: esperCloudApiSettingsAppSection.optional(), system_updates: esperCloudApiSystemUpdatesSection.optional(), google_services: esperCloudApiGoogleServicesSection.optional(), security: esperCloudApiSecuritySection.optional(), application: esperCloudApiApplicationSection.optional(), content: esperCloudApiContentSection.optional(), created_on: z.string().optional()}); export const esperCloudApiBlueprint = z.object({id: z.string().optional(), name: z.string().optional(), description: z.string().optional(), locked: z.boolean().optional(), group: z.string().optional(), latest_revision: esperCloudApiBlueprintRevision.optional(), created_on: z.string().optional(), updated_on: z.string().optional()}); 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 }; /** * Get Blueprint detail * * GET /enterprise/{enterprise_id}/devicegroup/{group_id}/blueprint/{blueprint_id}/ */ export const getApiEnterpriseEnterpriseIdDevicegroupGroupIdBlueprintBlueprintId = async (args: GetApiEnterpriseEnterpriseIdDevicegroupGroupIdBlueprintBlueprintIdArgs, options?: GetApiEnterpriseEnterpriseIdDevicegroupGroupIdBlueprintBlueprintIdOptions) => { const {baseUrl = "https://develop-api.esper.cloud/api", fetch: fetchFn = fetch, esperCloudApiApiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.without_details != null) query.append("without_details", String(args.without_details)) if (esperCloudApiApiKey !== undefined) headers.set('authorization', `Bearer ${esperCloudApiApiKey}`) const url = `${baseUrl.replace(/\/+$/, '')}/enterprise/${encodeURIComponent(String(args.enterprise_id))}/devicegroup/${encodeURIComponent(String(args.group_id))}/blueprint/${encodeURIComponent(String(args.blueprint_id))}/${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(esperCloudApiBlueprint, await res.json()) };