@twilio-labs/serverless-api
Version:
API-wrapper for the Twilio Serverless API
123 lines (122 loc) • 3.35 kB
TypeScript
/** @module @twilio-labs/serverless-api */
import { Dependency } from './generic';
export type Sid = string;
export interface ResourceBase {
sid: Sid;
account_sid: Sid;
date_created: string;
url: string;
}
export interface BaseList<TKey extends string> {
[key: string]: any;
meta: {
first_page_url: string;
key: TKey;
next_page_url: string | null;
page: number;
page_size: number;
previous_page_url: string | null;
url: string;
};
}
export interface UpdateableResourceBase extends ResourceBase {
date_updated: string;
}
export interface FunctionApiResource extends UpdateableResourceBase {
friendly_name: string;
}
export interface FunctionList extends BaseList<'functions'> {
functions: FunctionApiResource[];
}
export interface AssetApiResource extends UpdateableResourceBase {
friendly_name: string;
}
export interface AssetList extends BaseList<'assets'> {
assets: AssetApiResource[];
}
export interface ServiceResource extends UpdateableResourceBase {
unique_name: string;
include_credentials: boolean;
friendly_name: string;
}
export interface ServiceList extends BaseList<'services'> {
services: ServiceResource[];
}
export interface EnvironmentResource extends UpdateableResourceBase {
unique_name: string;
domain_name: string;
build_sid: string;
domain_suffix: string;
}
export interface EnvironmentList extends BaseList<'environments'> {
environments: EnvironmentResource[];
}
export interface VersionResource extends UpdateableResourceBase {
pre_signed_upload_url: {
url: string;
kmsARN: string;
};
}
export type FunctionContent = {
sid: Sid;
account_sid: Sid;
service_sid: Sid;
function_sid: Sid;
content: string;
url: string;
};
export type BuildStatus = 'building' | 'completed' | 'failed';
export interface VersionOnBuild extends UpdateableResourceBase {
path: string;
visibility: 'public' | 'protected' | 'private';
service_sid: string;
}
export interface FunctionVersion extends VersionOnBuild {
function_sid: string;
}
export interface AssetVersion extends VersionOnBuild {
asset_sid: string;
}
export interface BuildResource extends UpdateableResourceBase {
status: BuildStatus;
function_versions: FunctionVersion[];
asset_versions: AssetVersion[];
runtime: string;
}
export interface BuildStatusResource {
sid: Sid;
service_sid: Sid;
account_sid: Sid;
url: string;
status: BuildStatus;
}
export interface BuildList extends BaseList<'builds'> {
builds: BuildResource[];
}
export interface VariableResource extends UpdateableResourceBase {
environment_sid: string;
value: string;
key: string;
service_sid: string;
}
export interface VariableList extends BaseList<'variables'> {
variables: VariableResource[];
}
export type BuildConfig = {
dependencies?: Dependency[];
functionVersions?: Sid[];
assetVersions?: Sid[];
runtime?: string;
};
export interface LogApiResource extends ResourceBase {
service_sid: string;
environment_sid: string;
deployment_sid: string;
function_sid: string;
request_sid: string;
level: string;
message: string;
}
export interface LogList extends BaseList<'logs'> {
logs: LogApiResource[];
}