### Install SideStore Operation Source: https://context7.com/nab138/iloader/llms.txt Downloads, signs, and installs SideStore. Use `nightly` and `liveContainer` flags to specify the version and installation type. ```rust #[tauri::command] pub async fn install_sidestore_operation( handle: AppHandle, window: Window, device_state: State<'_, DeviceInfoMutex>, sideloader_state: State<'_, SideloaderMutex>, nightly: bool, live_container: bool, ) -> Result<(), AppError> ``` ```typescript import { listen } from "@tauri-apps/api/event"; // Listen for operation progress updates const unlisten = await listen("operation_install_sidestore", (event) => { if (event.payload.updateType === "started") { console.log(`Started: ${event.payload.stepId}`); } else if (event.payload.updateType === "finished") { console.log(`Completed: ${event.payload.stepId}`); } else if (event.payload.updateType === "failed") { console.error(`Failed: ${event.payload.stepId}`, event.payload.extraDetails); } }); // Install SideStore stable await invoke("install_sidestore_operation", { nightly: false, liveContainer: false }); // Install LiveContainer + SideStore nightly await invoke("install_sidestore_operation", { nightly: true, liveContainer: true }); unlisten(); ``` -------------------------------- ### GET /installed_pairing_apps Source: https://context7.com/nab138/iloader/llms.txt Returns a list of installed apps that support pairing file placement. ```APIDOC ## GET /installed_pairing_apps ### Description Returns a list of installed apps that support pairing file placement (SideStore, StikDebug, Feather, etc.). ### Method GET ### Endpoint /installed_pairing_apps ### Response #### Success Response (200) - **apps** (array of PairingAppInfo) - A list of apps that support pairing files. - **name** (string) - The name of the app. - **bundle_id** (string) - The bundle ID of the app. - **path** (string) - The path where the pairing file should be placed. #### Response Example ```json [ { "name": "SideStore", "bundleId": "com.SideStore.App", "path": "/path/to/SideStore/pairing" } ] ``` #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### POST /install_sidestore_operation Source: https://context7.com/nab138/iloader/llms.txt Downloads, signs, installs SideStore (or LiveContainer+SideStore), and automatically places the pairing file. ```APIDOC ## POST /install_sidestore_operation ### Description Downloads, signs, installs SideStore (or LiveContainer+SideStore), and automatically places the pairing file. ### Method POST ### Endpoint /install_sidestore_operation ### Parameters #### Query Parameters - **nightly** (boolean) - Optional - Whether to install the nightly build. - **live_container** (boolean) - Optional - Whether to install LiveContainer along with SideStore. ### Request Example ```json { "nightly": false, "liveContainer": false } ``` ### Response #### Success Response (200) - **None** - Indicates successful operation. #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### POST /sideload_operation Source: https://context7.com/nab138/iloader/llms.txt Signs and installs a custom IPA file to the selected device. ```APIDOC ## POST /sideload_operation ### Description Signs and installs a custom IPA file to the selected device. ### Method POST ### Endpoint /sideload_operation ### Parameters #### Request Body - **app_path** (string) - Required - The file path to the IPA file. ### Request Example ```json { "appPath": "/path/to/your/app.ipa" } ``` ### Response #### Success Response (200) - **None** - Indicates successful operation. #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### List Apps Supporting Pairing Files Source: https://context7.com/nab138/iloader/llms.txt Returns a list of installed applications that support pairing file placement. This includes apps like SideStore, StikDebug, and Feather. The `PairingAppInfo` struct provides the app's name, bundle ID, and path. ```rust #[tauri::command] pub async fn installed_pairing_apps( device_state: State<'_, DeviceInfoMutex>, ) -> Result, AppError> #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct PairingAppInfo { pub name: String, pub bundle_id: String, pub path: String, } ``` ```typescript const apps = await invoke("installed_pairing_apps"); apps.forEach(app => { console.log(`${app.name} (${app.bundleId})`); console.log(` Pairing path: ${app.path}`); }); ``` -------------------------------- ### Sideload Custom IPA Operation Source: https://context7.com/nab138/iloader/llms.txt Signs and installs a custom IPA file to the selected device. Requires opening a file dialog to select the IPA. ```rust #[tauri::command] pub async fn sideload_operation( window: Window, device_state: State<'_, DeviceInfoMutex>, sideloader_state: State<'_, SideloaderMutex>, app_path: String, ) -> Result<(), AppError> ``` ```typescript import { open as openFileDialog } from "@tauri-apps/plugin-dialog"; // Open file picker for IPA const path = await openFileDialog({ multiple: false, filters: [{ name: "IPA Files", extensions: ["ipa"] }] }); if (path) { // Listen for operation updates const unlisten = await listen("operation_sideload", (event) => { console.log(`${event.payload.updateType}: ${event.payload.stepId}`); }); await invoke("sideload_operation", { appPath: path as string }); unlisten(); } ``` -------------------------------- ### GET /get_certificates Source: https://context7.com/nab138/iloader/llms.txt Retrieves all development certificates associated with the logged-in Apple ID. ```APIDOC ## GET /get_certificates ### Description Retrieves all development certificates associated with the logged-in Apple ID. ### Method GET ### Endpoint /get_certificates ### Response #### Success Response (200) - **certificates** (array of CertificateInfo) - A list of development certificates. - **name** (string) - Optional - The name of the certificate. - **certificate_id** (string) - Optional - The ID of the certificate. - **serial_number** (string) - Optional - The serial number of the certificate. - **machine_name** (string) - Optional - The name of the machine the certificate is associated with. - **machine_id** (string) - Optional - The ID of the machine the certificate is associated with. #### Response Example ```json [ { "name": "Apple Development: John Doe (XXXXXXXXXX)", "certificateId": "XXXXXXXXXX", "serialNumber": "XXXXXXXXXX", "machineName": "MyMacBookPro", "machineId": "XXXXXXXXXX" } ] ``` #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### GET /list_devices Source: https://context7.com/nab138/iloader/llms.txt Lists all iOS devices connected via USB or network, returning device information including name, UDID, and iOS version. ```APIDOC ## GET /list_devices ### Description Lists all iOS devices connected via USB or network, returning device information including name, UDID, and iOS version. ### Method GET ### Endpoint /list_devices ### Response #### Success Response (200) - **devices** (array) - An array of device information objects. - **name** (string) - The name of the iOS device. - **id** (integer) - The internal ID of the device. - **udid** (string) - The unique device identifier. - **connection_type** (string) - The connection type (e.g., "USB", "Network"). - **version** (string) - The iOS version running on the device. #### Error Response (400/500) - **error** (object) - Contains error details. - **code** (string) - Error code. - **message** (string) - Error message. ### Response Example ```json [ { "Ok": { "name": "My iPhone", "id": 12345, "udid": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "connectionType": "USB", "version": "16.5.1" } }, { "Err": { "code": "DEVICE_NOT_RESPONDING", "message": "Device is not responding." } } ] ``` ``` -------------------------------- ### GET /list_app_ids Source: https://context7.com/nab138/iloader/llms.txt Retrieves all App IDs registered under the developer account with availability information. ```APIDOC ## GET /list_app_ids ### Description Retrieves all App IDs registered under the developer account with availability information. ### Method GET ### Endpoint /list_app_ids ### Response #### Success Response (200) - **response** (ListAppIdsResponse) - The response containing App ID information. - **availableQuantity** (integer) - The number of available App IDs. - **maxQuantity** (integer) - The maximum number of App IDs allowed. - **appIds** (array of AppIdInfo) - A list of registered App IDs. - **name** (string) - The name of the App ID. - **identifier** (string) - The unique identifier of the App ID. #### Response Example ```json { "availableQuantity": 10, "maxQuantity": 100, "appIds": [ { "name": "My App", "identifier": "com.example.myapp" } ] } ``` #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### Listen to Operation Progress Events (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Listens for operation progress events emitted by the backend via Tauri's event system. Handles 'started', 'finished', and 'failed' update types to update the UI. ```typescript type OperationUpdate = { updateType: "started" | "finished" | "failed"; stepId: string; extraDetails?: AppError; }; // Listen to operation events const unlisten = await listen( `operation_${operationId}`, (event) => { switch (event.payload.updateType) { case "started": setActiveStep(event.payload.stepId); break; case "finished": markStepComplete(event.payload.stepId); break; case "failed": showError(event.payload.extraDetails); break; } } ); ``` -------------------------------- ### Select and Pair Device (Rust) Source: https://context7.com/nab138/iloader/llms.txt Backend command to select a specific iOS device for subsequent operations and initiate the pairing process. It takes an optional DeviceInfo object and updates the device state. Requires AppHandle, DeviceInfoMutex state, and PairingCancelToken state. ```rust #[tauri::command] pub async fn set_selected_device( app: AppHandle, device_state: State<'_, DeviceInfoMutex>, cancel_state: State<'_, PairingCancelToken>, device: Option, ) -> Result<(), AppError> ``` -------------------------------- ### Login with Saved Credentials (Rust) Source: https://context7.com/nab138/iloader/llms.txt Backend command to authenticate using previously saved Apple ID credentials from the system keyring. Requires AppHandle, Window, email, anisette server, and SideloaderMutex state. ```rust #[tauri::command] pub async fn login_stored( handle: AppHandle, window: Window, email: String, anisette_server: String, sideloader_state: State<'_, SideloaderMutex>, ) -> Result<(), AppError> ``` -------------------------------- ### Export Pairing File to Disk (Rust) Source: https://context7.com/nab138/iloader/llms.txt Exports the pairing file to a user-selected location on the computer. Requires device state and app handle. ```rust #[tauri::command] pub async fn export_pairing_cmd( device_state: State<'_, DeviceInfoMutex>, app: AppHandle, ) -> Result<(), AppError> ``` -------------------------------- ### Place Pairing File in App (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `place_pairing_cmd` Tauri command to transfer a pairing file. Specify the target bundle ID and file path. ```typescript // Place pairing file in SideStore await invoke("place_pairing_cmd", { bundleId: "com.SideStore.SideStore", path: "ALTPairingFile.mobiledevicepairing" }); // Place pairing file in StikDebug await invoke("place_pairing_cmd", { bundleId: "com.stik.stikdebug", path: "pairingFile.plist" }); ``` -------------------------------- ### List Connected iOS Devices (Rust) Source: https://context7.com/nab138/iloader/llms.txt Backend command to enumerate all iOS devices connected via USB or network. Returns a vector of DeviceInfo structs, each containing device name, ID, UDID, connection type, and iOS version. Handles potential errors during device enumeration. ```rust #[tauri::command] pub async fn list_devices() -> Result>, AppError> #[derive(Deserialize, Serialize, Clone)] #[serde(rename_all = "camelCase")] pub struct DeviceInfo { pub name: String, pub id: u32, pub udid: String, pub connection_type: String, pub version: String, } ``` -------------------------------- ### Handle 2FA and Login (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Frontend code for handling two-factor authentication prompts and initiating a new login with provided credentials. Uses `listen` for 2FA events and `emit` to send the code, then `invoke` to call the backend login command. ```typescript // Frontend usage import { invoke } from "@tauri-apps/api/core"; import { listen } from "@tauri-apps/api/event"; import { emit } from "@tauri-apps/api/event"; // Listen for 2FA requirement await listen("2fa-required", () => { // Show 2FA input dialog setTfaOpen(true); }); // Submit 2FA code when received await emit("2fa-recieved", "123456"); // Login with new credentials await invoke("login_new", { email: "user@example.com", password: "password123", saveCredentials: true, anisetteServer: "ani.sidestore.io" }); ``` -------------------------------- ### Check Keyring Availability (Rust) Source: https://context7.com/nab138/iloader/llms.txt Checks if the system keyring is available for secure credential storage. Returns a boolean indicating availability. ```rust #[tauri::command] pub fn keyring_available() -> bool ``` -------------------------------- ### export_pairing_cmd Source: https://context7.com/nab138/iloader/llms.txt Exports the pairing file to a user-selected location on the computer. ```APIDOC ## POST export_pairing_cmd ### Description Exports the pairing file to a user-selected location on the computer via a file save dialog. ``` -------------------------------- ### Authenticate New Apple ID (Rust) Source: https://context7.com/nab138/iloader/llms.txt Backend command to authenticate a new Apple ID using email and password. Supports two-factor authentication and optional credential storage. Requires AppHandle, Window, SideloaderMutex state, email, password, anisette server, and a boolean for saving credentials. ```rust #[tauri::command] pub async fn login_new( handle: AppHandle, window: Window, sideloader_state: State<'_, SideloaderMutex>, email: String, password: String, anisette_server: String, save_credentials: bool, ) -> Result<(), AppError> ``` -------------------------------- ### Check Keyring Availability (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `keyring_available` Tauri command to check for system keyring support. Logs a warning if the keyring is unavailable. ```typescript const available = await invoke("keyring_available"); if (!available) { console.warn("Keyring unavailable - credentials will not be saved securely"); } ``` -------------------------------- ### place_pairing_cmd Source: https://context7.com/nab138/iloader/llms.txt Transfers the pairing file to a specific app's Documents directory on the device. ```APIDOC ## POST place_pairing_cmd ### Description Transfers the pairing file to a specific app's Documents directory on the device. ### Method POST ### Parameters #### Request Body - **bundle_id** (String) - Required - The bundle ID of the target app. - **path** (String) - Required - The file path to the pairing file. ``` -------------------------------- ### POST /set_selected_device Source: https://context7.com/nab138/iloader/llms.txt Selects a device for operations and initiates the pairing process to generate lockdown and remote pairing files. ```APIDOC ## POST /set_selected_device ### Description Selects a device for operations and initiates the pairing process to generate lockdown and remote pairing files. ### Method POST ### Endpoint /set_selected_device ### Parameters #### Request Body - **device** (object | null) - Optional - The device information object to select. If null, the current selection is cleared. - **name** (string) - The name of the iOS device. - **id** (integer) - The internal ID of the device. - **udid** (string) - The unique device identifier. - **connection_type** (string) - The connection type (e.g., "USB", "Network"). - **version** (string) - The iOS version running on the device. ### Request Example ```json // Select a device { "device": { "name": "My iPhone", "id": 12345, "udid": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "connectionType": "USB", "version": "16.5.1" } } // Clear selection { "device": null } ``` ### Response #### Success Response (200) - **message** (string) - Indicates the device was successfully selected or deselected. #### Error Response (400/500) - **error** (object) - Contains error details. - **code** (string) - Error code. - **message** (string) - Error message. ``` -------------------------------- ### Place Pairing File in App (Rust) Source: https://context7.com/nab138/iloader/llms.txt Transfers a pairing file to a specific app's Documents directory on the device. Requires device state and target path. ```rust #[tauri::command] pub async fn place_pairing_cmd( device_state: State<'_, DeviceInfoMutex>, bundle_id: String, path: String, ) -> Result<(), AppError> ``` -------------------------------- ### POST /login_stored Source: https://context7.com/nab138/iloader/llms.txt Authenticates using previously saved credentials from the system keyring. ```APIDOC ## POST /login_stored ### Description Authenticates using previously saved credentials from the system keyring. ### Method POST ### Endpoint /login_stored ### Parameters #### Request Body - **email** (string) - Required - The email address associated with the saved credentials. - **anisette_server** (string) - Required - The anisette server to use for authentication. ### Request Example ```json { "email": "user@example.com", "anisetteServer": "ani.sidestore.io" } ``` ### Response #### Success Response (200) - **message** (string) - Indicates successful authentication. #### Error Response (400/500) - **error** (object) - Contains error details. - **code** (string) - Error code. - **message** (string) - Error message. ``` -------------------------------- ### keyring_available Source: https://context7.com/nab138/iloader/llms.txt Checks if the system keyring is available for secure credential storage. ```APIDOC ## GET keyring_available ### Description Checks if the system keyring is available for secure credential storage. ### Response #### Success Response (200) - **result** (bool) - Returns true if the keyring is available. ``` -------------------------------- ### Export Pairing File to Disk (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `export_pairing_cmd` Tauri command to save the pairing file to disk. This will open a file save dialog. ```typescript // Opens file save dialog and exports pairing file await invoke("export_pairing_cmd"); ``` -------------------------------- ### Login with Stored Credentials (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Frontend code to invoke the backend command for logging in with stored credentials. Requires the user's email and the anisette server address. ```typescript // Login with stored credentials await invoke("login_stored", { email: "user@example.com", anisetteServer: "ani.sidestore.io" }); ``` -------------------------------- ### POST /login_new Source: https://context7.com/nab138/iloader/llms.txt Authenticates a new Apple ID with email and password. Supports two-factor authentication and optional credential storage. ```APIDOC ## POST /login_new ### Description Authenticates a new Apple ID with email and password, supporting two-factor authentication and optional credential storage. ### Method POST ### Endpoint /login_new ### Parameters #### Request Body - **email** (string) - Required - The Apple ID email address. - **password** (string) - Required - The Apple ID password. - **anisette_server** (string) - Required - The anisette server to use for authentication. - **save_credentials** (boolean) - Optional - Whether to save the credentials in the system keyring. ### Request Example ```json { "email": "user@example.com", "password": "password123", "saveCredentials": true, "anisetteServer": "ani.sidestore.io" } ``` ### Response #### Success Response (200) - **message** (string) - Indicates successful authentication. #### Error Response (400/500) - **error** (object) - Contains error details. - **code** (string) - Error code. - **message** (string) - Error message. ### Events - **2fa-required**: Emitted when two-factor authentication is required. Listen for this event to prompt the user for a 2FA code. - **2fa-recieved**: Emit this event with the 2FA code when received from the user. ``` -------------------------------- ### Control Device Selection and Pairing (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Frontend code to select a device for operations, which may trigger pairing, or to clear the selection. Also includes a command to cancel an ongoing pairing process. ```typescript // Select a device (triggers pairing if needed) await invoke("set_selected_device", { device: selectedDevice }); // Clear selection await invoke("set_selected_device", { device: null }); // Cancel ongoing pairing await invoke("cancel_pairing"); ``` -------------------------------- ### Toggle Keyring Usage (Rust) Source: https://context7.com/nab138/iloader/llms.txt Forcefully disables keyring usage, falling back to less secure filesystem storage. Accepts a boolean to enable or disable. ```rust #[tauri::command] pub fn force_disable_keyring(force: bool) ``` -------------------------------- ### List Development Certificates Source: https://context7.com/nab138/iloader/llms.txt Retrieves all development certificates associated with the logged-in Apple ID. The `CertificateInfo` struct contains details like name, ID, serial number, and machine information. ```rust #[tauri::command] pub async fn get_certificates( sideloader_state: State<'_, SideloaderMutex>, ) -> Result, AppError> #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CertificateInfo { pub name: Option, pub certificate_id: Option, pub serial_number: Option, pub machine_name: Option, pub machine_id: Option, } ``` ```typescript const certificates = await invoke("get_certificates"); certificates.forEach(cert => { console.log(`Certificate: ${cert.name}`); console.log(` Serial: ${cert.serialNumber}`); console.log(` Machine: ${cert.machineName}`); }); ``` -------------------------------- ### Process Device List (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Frontend code to call the `list_devices` command and process the results. It iterates through the returned array, logging device information for successful results or error messages for failures. It expects results to be either `Ok(DeviceInfo)` or `Err(AppError)`. ```typescript // List all connected devices const results = await invoke>("list_devices"); const devices: DeviceInfo[] = []; for (const result of results) { if ("Ok" in result) { devices.push(result.Ok); console.log(`Found: ${result.Ok.name} (iOS ${result.Ok.version})`); } else if ("Err" in result) { console.error("Device error:", result.Err.message); } } ``` -------------------------------- ### force_disable_keyring Source: https://context7.com/nab138/iloader/llms.txt Forcefully disables keyring usage, falling back to filesystem storage. ```APIDOC ## POST force_disable_keyring ### Description Forcefully disables keyring usage, falling back to filesystem storage (less secure). ### Parameters #### Request Body - **force** (bool) - Required - Set to true to disable, false to re-enable. ``` -------------------------------- ### Handle Certificate Limit Events (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Manages prompts when the maximum number of certificates is reached. Listens for 'max-certs-reached' events and responds with certificates to revoke or null to cancel. ```typescript // Backend emits when certificate limit is reached await listen("max-certs-reached", (event) => { setCertsToRevoke(event.payload); setChooseCertsModalOpen(true); }); // Frontend responds with certificates to revoke (or null to cancel) await emit("max-certs-response", selectedSerialNumbers); // or await emit("max-certs-response", null); // Cancel operation ``` -------------------------------- ### Structured Error Handling with Suggestions Source: https://context7.com/nab138/iloader/llms.txt Handles structured errors with specific types and provides contextual suggestions based on the error type. Ensure the AppError type is defined and imported. ```typescript type AppError = { type: ErrorVariant; message: string; }; type ErrorVariant = | "underage" | "account_locked" | "developer" | "auth" | "download" | "house_arrest" | "remote_pairing" | "lockdown_pairing" | "canceled" | "device_coms" | "usbmuxd" | "not_logged_in" | "no_device_selected" | "anisette" | "keyring" | "storage" | "misc" | "filesystem" | "not_enough_app_ids" | "max_apps"; // Error handling with suggestions try { await invoke("login_new", { ... }); } catch (e) { const error = e as AppError; console.error(`Error type: ${error.type}`); console.error(`Message: ${error.message}`); // Get contextual suggestions based on error type const suggestions = getErrorSuggestions(t, error.type, platform, anisetteServer); suggestions.forEach(suggestion => console.log(`Suggestion: ${suggestion}`)); } ``` -------------------------------- ### Handle Two-Factor Authentication Events (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Manages the two-factor authentication (2FA) flow between the backend and frontend. Listens for '2fa-required' events and emits '2fa-recieved' with the user's code. ```typescript // Backend emits when 2FA is required await listen("2fa-required", () => { setTfaModalOpen(true); }); // Frontend emits the code back await emit("2fa-recieved", tfaCode); ``` -------------------------------- ### List Registered App IDs Source: https://context7.com/nab138/iloader/llms.txt Retrieves all App IDs registered under the developer account, including their availability status. The response contains the quantity of available App IDs and a list of registered App IDs with their names and identifiers. ```rust #[tauri::command] pub async fn list_app_ids( sideloader_state: State<'_, SideloaderMutex>, ) -> Result ``` ```typescript const response = await invoke("list_app_ids"); console.log(`Available: ${response.availableQuantity}/${response.maxQuantity}`); response.appIds.forEach(appId => { console.log(`${appId.name}: ${appId.identifier}`); }); ``` -------------------------------- ### Toggle Keyring Usage (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `force_disable_keyring` Tauri command to control keyring usage. Set `force` to `true` to disable, `false` to re-enable. ```typescript // Disable keyring (use filesystem storage) await invoke("force_disable_keyring", { force: true }); // Re-enable keyring await invoke("force_disable_keyring", { force: false }); ``` -------------------------------- ### Check for Cached Pairing (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `has_stored_rppairing` Tauri command to check for a cached remote pairing file for a given device. Logs a message if a pairing is found. ```typescript const hasPairing = await invoke("has_stored_rppairing", { device }); if (hasPairing) { console.log("Device has cached pairing - no trust prompt needed"); } ``` -------------------------------- ### Define Supported Languages in i18next Source: https://github.com/nab138/iloader/blob/main/README.md Register new languages in the i18next configuration file to enable localization support. ```ts const languages = [ ["en", "English"], ["es", "EspaƱol"], // Your language here... ] as const; ``` -------------------------------- ### Reset Anisette Authentication State (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `reset_anisette_state` Tauri command to clear anisette authentication data. Logs a message indicating whether the state was cleared or not found. ```typescript const wasReset = await invoke("reset_anisette_state"); if (wasReset) { console.log("Anisette state cleared - 2FA required on next login"); } else { console.log("No anisette state found"); } ``` -------------------------------- ### reset_anisette_state Source: https://context7.com/nab138/iloader/llms.txt Clears the stored anisette state, requiring 2FA re-authentication on next login. ```APIDOC ## POST reset_anisette_state ### Description Clears the stored anisette state, requiring 2FA re-authentication on next login. ### Response #### Success Response (200) - **result** (bool) - Returns true if the state was successfully cleared. ``` -------------------------------- ### POST /cancel_pairing Source: https://context7.com/nab138/iloader/llms.txt Cancels any ongoing pairing process with a selected device. ```APIDOC ## POST /cancel_pairing ### Description Cancels any ongoing pairing process with a selected device. ### Method POST ### Endpoint /cancel_pairing ### Response #### Success Response (200) - **message** (string) - Indicates that the pairing process was cancelled. #### Error Response (400/500) - **error** (object) - Contains error details. - **code** (string) - Error code. - **message** (string) - Error message. ``` -------------------------------- ### Check for Cached Pairing (Rust) Source: https://context7.com/nab138/iloader/llms.txt Checks if a remote pairing file is cached for a device, specifically for iOS 17.4+. Requires device info and app handle. ```rust #[tauri::command] pub async fn has_stored_rppairing(device: DeviceInfo, app: AppHandle) -> Result ``` -------------------------------- ### delete_stored_rppairing Source: https://context7.com/nab138/iloader/llms.txt Removes the cached remote pairing file for the selected device. ```APIDOC ## POST delete_stored_rppairing ### Description Removes the cached remote pairing file for the selected device. ``` -------------------------------- ### Delete Cached Pairing (Rust) Source: https://context7.com/nab138/iloader/llms.txt Removes the cached remote pairing file for the selected device. Requires device state and app handle. ```rust #[tauri::command] pub async fn delete_stored_rppairing( device_state: State<'_, DeviceInfoMutex>, app: AppHandle, ) -> Result<(), AppError> ``` -------------------------------- ### Delete Cached Pairing (TypeScript) Source: https://context7.com/nab138/iloader/llms.txt Invokes the `delete_stored_rppairing` Tauri command to remove the cached remote pairing file for the current device. ```typescript await invoke("delete_stored_rppairing"); ``` -------------------------------- ### has_stored_rppairing Source: https://context7.com/nab138/iloader/llms.txt Checks if a remote pairing file is cached for a device (iOS 17.4+). ```APIDOC ## POST has_stored_rppairing ### Description Checks if a remote pairing file is cached for a device (iOS 17.4+). ### Parameters #### Request Body - **device** (DeviceInfo) - Required - The device information object. ``` -------------------------------- ### Reset Anisette Authentication State (Rust) Source: https://context7.com/nab138/iloader/llms.txt Clears the stored anisette state, requiring 2FA re-authentication on the next login. Returns a boolean indicating if the state was reset. ```rust #[tauri::command] pub fn reset_anisette_state() -> Result ``` -------------------------------- ### Revoke Development Certificate Source: https://context7.com/nab138/iloader/llms.txt Revokes a specific development certificate using its serial number. Ensure the provided serial number is correct. ```rust #[tauri::command] pub async fn revoke_certificate( serial_number: String, sideloader_state: State<'_, SideloaderMutex>, ) -> Result<(), AppError> ``` ```typescript await invoke("revoke_certificate", { serialNumber: "ABC123DEF456" }); ``` -------------------------------- ### POST /revoke_certificate Source: https://context7.com/nab138/iloader/llms.txt Revokes a specific development certificate by its serial number. ```APIDOC ## POST /revoke_certificate ### Description Revokes a specific development certificate by its serial number. ### Method POST ### Endpoint /revoke_certificate ### Parameters #### Request Body - **serial_number** (string) - Required - The serial number of the certificate to revoke. ### Request Example ```json { "serialNumber": "ABC123DEF456" } ``` ### Response #### Success Response (200) - **None** - Indicates successful operation. #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` -------------------------------- ### Delete App ID Source: https://context7.com/nab138/iloader/llms.txt Removes a specific App ID from the developer account. Use the `appIdId` to identify the App ID to be deleted. ```rust #[tauri::command] pub async fn delete_app_id( app_id_id: String, sideloader_state: State<'_, SideloaderMutex>, ) -> Result<(), AppError> ``` ```typescript await invoke("delete_app_id", { appIdId: "APPID123456" }); ``` -------------------------------- ### DELETE /delete_app_id Source: https://context7.com/nab138/iloader/llms.txt Removes an App ID from the developer account. ```APIDOC ## DELETE /delete_app_id ### Description Removes an App ID from the developer account. ### Method DELETE ### Endpoint /delete_app_id ### Parameters #### Request Body - **app_id_id** (string) - Required - The ID of the App ID to delete. ### Request Example ```json { "appIdId": "APPID123456" } ``` ### Response #### Success Response (200) - **None** - Indicates successful operation. #### Error Response (4xx/5xx) - **AppError** - Details about the error during the operation. ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.