import { AppContext } from './AppContext'; import { DotenvParseOutput } from 'dotenv'; export declare namespace Rivendell { enum AppVersionState { NEW = "NEW", PUBLISHED = "PUBLISHED", BUILD_FAILED = "BUILD_FAILED", STARTING = "STARTING", START_FAILED = "START_FAILED", RUNNING = "RUNNING", UPGRADING_RUNTIME = "UPGRADING_RUNTIME", STOPPING = "STOPPING", STOP_FAILED = "STOP_FAILED", STOPPED = "STOPPED", ABANDONED = "ABANDONED" } enum ReviewStatus { NOT_STARTED = "NOT_STARTED", IN_REVIEW = "IN_REVIEW", APPROVED = "APPROVED", NOT_REQUIRED = "NOT_REQUIRED" } enum BuildState { NEW = "NEW", QUEUED = "QUEUED", RUNNING = "RUNNING", FINISHED = "FINISHED" } enum BuildMode { VALIDATE = "VALIDATE", PUBLISH = "PUBLISH" } enum BuildStatus { SUCCESS = "SUCCESS", FAILURE = "FAILURE", ERROR = "ERROR" } enum DeploymentStage { TEST = "TEST", PRODUCTION = "PRODUCTION" } enum JobStatus { PENDING = "PENDING", SCHEDULED = "SCHEDULED", RUNNING = "RUNNING", COMPLETE = "COMPLETE", ERROR = "ERROR", TERMINATED = "TERMINATED" } enum JobTriggerType { IMMEDIATE = "IMMEDIATE", RECURRING = "RECURRING" } enum LogLevel { DEBUG = "DEBUG", INFO = "INFO", WARN = "WARN", ERROR = "ERROR", NEVER = "NEVER" } enum InstallationResolutionType { GUUID = "GUUID", HEADER = "HEADER", QUERY_PARAM = "QUERY_PARAM", JSON_BODY_FIELD = "JSON_BODY_FIELD" } interface AppVersionId { appId: string; version: string; } interface Build { id: number; appVersionId: AppVersionId; mode: BuildMode; state: BuildState; status?: BuildStatus; errors?: string[]; queuedAt?: string; runningAt?: string; finishedAt?: string; dependencySet?: string; } interface App { id: string; name: string; createdAt: string; updatedAt: string; } interface AppVersion { id: AppVersionId; manifestJson: string; packageUrl: string; state: string; reviewStatus?: string; stage: string; image: string; accountType: string; createdAt: string; updatedAt: string; } interface AppInstallation { id: number; appId: string; version: string; accountId: number; trackerId: string; createdAt: string; updatedAt: string; } interface Job { id: string; accountId: number; trackerId: string; status: JobStatus; definition: JobDefinition; errors: string; triggeredAt: string; scheduledAt: string; startedAt: string; completedAt: string; terminatedAt: string; createdAt: string; updatedAt: string; } interface JobRuntimeStatus { status: string; } interface JobDefinition { id: string; appId: string; version: string; function: string; parameters: string; trigger: JobTriggerType; } interface Webhook { id: string; url: string; attributes: WebhookAttributes; createdAt: string; updatedAt?: string; deletedAt?: string; } interface WebhookAttributes { appId: string; appVersion: string; appInstallId?: number; taskName: string; internal: boolean; enabled: boolean; installationResolutionType: InstallationResolutionType; installationResolutionKey: string; installationResolutionValue: string; dataSyncId?: string; } interface AppVersionSearchCriteria { appId?: string; version?: string; appName?: string; states?: AppVersionState[]; reviewStatuses?: ReviewStatus[]; stages?: DeploymentStage[]; categories?: Set; sorts?: Sort[]; } interface AppInstallationSearchCriteria { appId?: string; version?: string; trackerIds?: string[]; sorts?: Sort[]; } interface WebhookSearchCriteria { appId?: string; appInstallId?: number; includeInternal?: boolean; includeDisabled?: boolean; } interface JobSearchCriteria { appId: string; versions?: string[]; trackerIds?: string[]; states?: JobStatus[]; functions?: string[]; minDurationMillis?: number; sort?: Sort[]; limit?: number; start?: number; end?: number; } interface Upgrade { id: number; status: UpgradeStatus; message?: string; } enum UpgradeStatus { SCHEDULED = "SCHEDULED", UPGRADING_LIFECYCLE = "UPGRADING_LIFECYLES", UPGRADING_LIFECYCLE_FAILED = "UPGRADING_LIFECYCLE_FAILED", UPDATING_WEBHOOKS = "UPDATING_WEBHOOKS", UPDATING_WEBHOOKS_FAILED = "UPGRADING_LIFECYCLE_FAILED", FINALIZING_LIFECYCLE = "FINALIZING_LIFECYCLE", FINALIZING_LIFECYCLE_FAILED = "FINALIZING_LIFECYCLE_FAILED", COMPLETE = "COMPLETE" } interface AppReview { url: string; } enum SortDirection { ASC = "ASC", DESC = "DESC" } interface Sort { field: string; direction?: SortDirection; } enum Audience { USER = "USER", DEVELOPER = "DEVELOPER", ZAIUS = "ZAIUS" } interface AwsCredentials { accessKeyId: string; secretAccessKey: string; sessionToken: string; expiration: string; } interface Account { id: number; trackerId: string; name: string; accountType: string; } interface DeveloperApp { id: string; } interface Developer { id: string; email: string; role: string; vendor: string; personal_apps: DeveloperApp[]; vendor_apps: DeveloperApp[]; } interface Shard { id: string; description: string; url: string; live: boolean; } interface LogLevelRecord { appId: string; version: string; trackerId?: string; logLevel: string; } interface JwtResponse { jwt: string; } interface JwtHeader { kid: string; typ: string; alg: string; } interface JwtPayload { aud: string; exp: number; iss: string; sub: string; } interface Jwt { token: string; header: JwtHeader; payload: JwtPayload; } function searchAccounts(term: string, shard: string): Promise; function whoami(): Promise; function isAdmin(): Promise; /** * Register a new App. * @param appId * @param name * @param accountType * @param personalApp * @param shard */ function registerApp(appId: string, name: string, accountType: any, personalApp: boolean, shard: string): Promise; /** * Fetch an App by identifier. * @param appId */ function fetchApp(appId: string, shard?: string): Promise; /** * Get app version review url. * @param appId */ function getReviewUrl(appVersion: string): Promise; /** * Search for AppVersions using the supplied criteria. * @param criteria */ function searchAppVersions(criteria: AppVersionSearchCriteria, shard: string): Promise; /** * Fetch an AppVersion by identifier. * @param appContext */ function fetchAppVersion(appContext: AppContext, shard: string): Promise; /** * Register a new app version. */ function registerAppVersion(appId: string, version: string, packageUrl: string, appEnvValues: DotenvParseOutput, usePreviousAppEnvValues: boolean, shard: string): Promise; /** * Register a new app version. */ function updateAppVersion(appId: string, version: string, packageUrl: string, appEnvValues: DotenvParseOutput, usePreviousAppEnvValues: boolean, shard: string): Promise; /** * Review an app version. */ function reviewAppVersion(appId: string, version: string): Promise; /** * Search for AppVersions using the supplied criteria. * @param criteria */ function searchAppInstallations(criteria: AppInstallationSearchCriteria, shard: string): Promise; /** * Search for Webhooks using the supplied criteria. * @param criteria */ function searchWebhooks(criteria: WebhookSearchCriteria, shard: string): Promise; /** * Loads a single AppInstallation. * @param appId * @param trackerId */ function fetchAppInstallation(appId: string, trackerId: string, shard?: string): Promise; /** * Trigger an installation. */ function install(appId: string, version: string, trackerId: string, shard: string): Promise; /** * Trigger an uninstall. */ function uninstall(appInstallationId: number, shard: string): Promise; /** * Request an upgrade. */ function upgrade(appInstallationId: number, appId: string, version: string, shard: string): Promise; function fetchUpgrade(upgradeId: number, shard: string): Promise; /** * Trigger a publish. */ function publish(appId: string, version: string, shard: string): Promise; /** * Trigger a unpublish. */ function unpublish(appId: string, version: string, shard: string): Promise; /** * Check if an app version can be unpublished. */ function canUnpublish(appId: string, version: string, shard: string): Promise<{ [key: string]: any; }>; /** * Trigger a abandon. */ function abandon(appId: string, version: string, shard: string): Promise; /** * Set logLevel of an app version or an installation */ function setLogLevel(shard: string, appId: string, version: string, logLevel: string, timeToLive: number, trackerId?: string): Promise; /** * Get logLevel of an app version or an installation */ function getLogLevel(shard: string, appId: string, version: string, trackerId?: string): Promise; /** * Fetch a build by id. */ function fetchBuild(id: number): Promise; /** * Trigger a build. */ function build(appId: string, version: string, useRCDependencySet: boolean): Promise; /** * Trigger a verification. */ function verify(appId: string, version: string): Promise; /** * Fetch temp credentials to upload to s3. */ function uploadCredentials(vendor: string, appId: string, version: string, checksum: string): Promise; /** * List shards. */ function shards(): Promise; /** * Search Jobs. */ function searchJobs(criteria: JobSearchCriteria, shard: string): Promise; /** * Terminate Jobs */ function terminateJob(jobId: string, shard: string): Promise; /** * Trigger a Job */ function triggerJob(appId: string, jobName: string, trackerId: string, parameters: string, shard: string): Promise; /** * Fetch a Job */ function fetchJob(jobId: string, shard: string): Promise; /** * Fetch a jobs runtimeStatus */ function fetchJobRuntimeStatus(jobId: string, shard: string): Promise; function jwt(shard: string): Promise; }