/** * @example * { * id: "id" * } */ export interface UpdateAppsRequest { /** App ID (prefixed `app_`). Retrieval also accepts the app's claimed route, an active verified custom hostname, or its proxy domain id; a custom hostname returns `404` when its assignment is inactive, the owning account is suspended, or the app is deleted. */ id: string; /** The detailed description shown on the app store's in-depth app view page. */ app_store_description?: string; /** The type of end-user the app is built for. Cannot be changed on an app whose type is already `website`. */ app_type?: UpdateAppsRequest.AppType; /** The base production URL where the app is hosted. Set to `null` to take the app proxy offline. */ base_url?: string | null; /** The URL path for the account dashboard view. */ dashboard_path?: string | null; /** A short description of the app shown in listings and search results. */ description?: string; /** The URL path for the discover view. */ discover_path?: string | null; /** The URL path for the member-facing hub view, such as `/experiences/[experienceId]`. */ experience_path?: string | null; /** The icon image for the app in PNG, JPEG, or GIF format, referencing an uploaded file: `{ id }` for an existing attachment or `{ direct_upload_id }` for a new direct upload. */ icon?: UpdateAppsRequest.Icon; /** The address of the existing website this app is imported from, such as `https://shop.example.com`. Must be an `http` or `https` URL. Set to `null` to clear it. */ imported_from_url?: string | null; /** The display name for the app, shown to users on the app store and product pages. */ name?: string; /** How the app authenticates at the OAuth token endpoint. */ oauth_client_type?: UpdateAppsRequest.OauthClientType; /** The URL path to the app's OpenAPI spec file (requires the ai_chat capability). */ openapi_path?: string | null; /** Five-field cron expression, read in UTC, on which Whop runs the production web build's `scheduled()` export once for every installation, with the installation in `ctx.props.app_installation`. It must fire at least once and no more often than every 15 minutes. Slots are skipped while the app has no production web build with a server entry. Set to `null` or an empty string to stop the per-install schedule. */ per_install_schedule?: string | null; /** The app build (`abld_` tag) to serve as the Android production build, or `null` to unassign it. Same rules as `production_web_build_id`. */ production_android_build_id?: string | null; /** The app build (`abld_` tag) to serve as the iOS production build, or `null` to unassign it. Same rules as `production_web_build_id`. */ production_ios_build_id?: string | null; /** The app build (`abld_` tag) to serve as the web production build, or `null` to unassign it. The build must belong to this app, target web, and be in the draft or approved status; a draft build is queued for approval and takes over once approved. Requires the `developer:manage_builds` scope. */ production_web_build_id?: string | null; /** The whitelisted OAuth callback URLs users are redirected to after authorizing the app. */ redirect_uris?: string[]; /** The OAuth scopes the app requests from users when they install it. */ required_scopes?: string[]; /** The subdomain route where the app's hosted web builds are served. */ route?: string; /** Five-field cron expression, read in UTC, on which Whop runs the production web build's `scheduled()` export once per slot, such as `* /15 * * * *`. It must fire at least once. Slots are skipped while the app has no production web build with a server entry. Set to `null` or an empty string to stop the global schedule. */ schedule?: string | null; /** Secrets to add or overwrite on the app, as an object of string values. Keys not included are left untouched; pass null or an empty string as the value to delete a secret. Encrypted at rest and injected into the app's hosted server runtime. */ secrets?: Record; /** The URL path to the app's skills directory (requires the ai_chat capability). */ skills_path?: string | null; /** Controls whether the app is published on Whop discovery or accessible only through its direct link. Publishing requires a name, icon, and description. */ status?: UpdateAppsRequest.Status; } export declare namespace UpdateAppsRequest { /** The type of end-user the app is built for. Cannot be changed on an app whose type is already `website`. */ const AppType: { readonly B2BApp: "b2b_app"; readonly B2CApp: "b2c_app"; readonly CompanyApp: "company_app"; readonly Component: "component"; readonly Website: "website"; }; type AppType = (typeof AppType)[keyof typeof AppType]; /** * The icon image for the app in PNG, JPEG, or GIF format, referencing an uploaded file: `{ id }` for an existing attachment or `{ direct_upload_id }` for a new direct upload. */ interface Icon { /** The signed id of a completed direct upload. */ direct_upload_id?: string | undefined; /** The tag of an already-uploaded attachment. */ id?: string | undefined; } /** How the app authenticates at the OAuth token endpoint. */ const OauthClientType: { readonly Public: "public"; readonly Confidential: "confidential"; }; type OauthClientType = (typeof OauthClientType)[keyof typeof OauthClientType]; /** Controls whether the app is published on Whop discovery or accessible only through its direct link. Publishing requires a name, icon, and description. */ const Status: { readonly Live: "live"; readonly Unlisted: "unlisted"; readonly Hidden: "hidden"; }; type Status = (typeof Status)[keyof typeof Status]; }