export interface ApeContext { account: Account; project: Project; environment: Environment; } export interface Account { id: string; name: string; label?: string; createdOn: string; isSharingEnabled: boolean; isMfaEnforced: boolean; isSsoAutoJoinEnabled: boolean; requireSsoAuth: boolean; plan: "CUSTOM" | "FREE_V1" | "BUSINESS_V1" | "EMPLOYEE" | "BUILDER_V1"; supportPin?: string; logoUrl: string | null; entitlements: { customDomains: number; aliasDomains: boolean; devPortalZuploBranding: boolean; egressGbPerMonth: number; kvStoreEnabled: boolean; numberOfApiKeys: number; numberOfProjects: number; numberOfUsers: number; requestsPerMonth: number; advancedAnalyticsEnabled: boolean; analyticsHistoryDays: number; logHistoryMinutes: number; premiumSupport: boolean; emergencyPhoneSupport: boolean; rbacEnabled: boolean; mfaEnforcement: boolean; enterpriseSingleSignOn: boolean; auditLogsEnabled: boolean; }; customDomainsInUse: number; tenantId: string | null; } export type ProjectType = "managed-edge" | "managed-dedicated" | "self-hosted"; export interface Project { sourceControlProvider: "GITHUB" | "GITLAB" | "BITBUCKET"; accountName: string; name: string; productType: "standard" | "ai"; createdOn: string; sourceRepoUrl: string | null; defaultBranch: string | null; /** * If there are any working copies for this project (across any user) */ hasWorkingCopy: boolean; /** * If the current user has a working copy for this project */ hasCurrentUserWorkingCopy: boolean; /** * Number of non-working copy environments deployed for this project */ deployedEnvironmentCount: number; isProjectMember: boolean; id: string; type?: ProjectType; } export declare enum EnvironmentType { PRODUCTION = "PRODUCTION", PREVIEW = "PREVIEW", WORKING_COPY = "WORKING_COPY" } export type EnvironmentState = "IS_STARTING" | "STARTED" | "STOPPED" | "ERRORED" | "UNKNOWN" | "DELETE_SCHEDULED"; export interface Environment { /** * This is the semi-friendly unique name of the environment, * generally this is not shown to the user. Prefer `label`. */ name: string; /** * The user facing name of the environment. This is essentially * the branch name or "working copy" */ label: string; /** * This is not URL encoded, React-Router does not automatically * encode URI components, BUT it does decode them. */ urlParameter: string; createdOn: number; accountName: string; projectName: string; state: EnvironmentState; message: string | null; /** * The raw git branch name. Null for working copies */ branchName: string | null; environmentType: EnvironmentType; customDomain: string | undefined; lastDeployedOn?: string; updatedOn: number; deploymentVersion?: DeploymentLog; } /** * The state of the current deployment version */ export type DeploymentStageStatus = "failed" | "in-progress" | "success" | "skipped"; export type DeploymentStageName = "api" | "dev-portal"; export interface DeploymentStage { id: string; url: string; stage: DeploymentStageName; status: DeploymentStageStatus; } export interface DeploymentLog { id: string; createdOn: string; repoUrl: string; branch: string; sha: string; url?: string; traceId?: string; stages: DeploymentStage[]; }