turso
Version:
Build and manage your Turso database with ease.
196 lines (180 loc) • 3.69 kB
text/typescript
export type DatabaseAPI = {
create({
name,
location,
image,
group,
}: {
name: string;
location?: string;
image?: 'latest' | 'canary';
group?: string;
seed?: {
type: 'database';
name: string;
};
}): Promise<{
database: LogicalDatabase;
}>;
};
export type GroupAPI = {
getAll(): Promise<{
groups: Group[];
}>;
create(
name: string,
location: string
): Promise<{
group: Group;
}>;
get(group: string): Promise<{
group: Group;
}>;
delete(group: string): Promise<{
group: Group;
}>;
addLocation(
group: string,
location: string
): Promise<{
group: Group;
}>;
removeLocation(
group: string,
location: string
): Promise<{
group: Group;
}>;
};
type Group = {
locations: string[];
name: string;
primary: string;
};
export type AuthenticationAPI = {
listTokens(): Promise<{
tokens: PlatformApiToken[];
}>;
mintToken(token_name: string): Promise<PlatformApiToken & {token: string}>;
revokeToken(token_name: string): Promise<{token: string}>;
validateToken(): Promise<{exp: number}>;
};
export type OrganizationAPI = {
list(): Promise<{
organizations: Organization[];
}>;
listMembers(org_slug: string): Promise<{
members: OrganizationMember[];
}>;
};
export type LocationAPI = {
list(): Promise<{
locations: Record<string, string>;
}>;
};
export type LogicalDatabaseAPI = {
getAll(org_slug: string): Promise<{
databases: LogicalDatabase[];
}>;
getByName(
org_slug: string,
db_name: string
): Promise<{
database: LogicalDatabase;
}>;
create(
org_slug: string,
name: string,
image: 'latest' | 'canary'
): Promise<{
database: LogicalDatabase;
}>;
updateAll(org_slug: string, db_name: string): Promise<void>;
destroy(org_slug: string, db_name: string): Promise<{database: string}>;
mintAuthToken(
org_slug: string,
db_name: string,
expiration?: string,
authorization?: 'read-only' | 'full-access'
): Promise<{jwt: string}>;
invalidateAllAuthTokens(org_slug: string, db_name: string): Promise<void>;
getCurrentMonthUsage(
org_slug: string,
db_name: string
): Promise<{
database: LogicalDatabase;
}>;
};
export type DatabaseInstanceAPI = {
getAll(
org_slug: string,
db_name: string
): Promise<{
instances: DatabaseInstance[];
}>;
get(
org_slug: string,
db_name: string,
instance_name: string
): Promise<{
instance: DatabaseInstance;
}>;
create(
org_slug: string,
db_name: string,
location: string,
image?: 'latest' | 'canary'
): Promise<{
instance: DatabaseInstance;
}>;
destroy(
org_slug: string,
db_name: string,
instance_name: string
): Promise<{
instance: string;
}>;
};
export type Organization = {
name: string;
slug: string;
type: 'personal' | 'team';
};
export type OrganizationMember = {
username: string;
role: 'owner' | 'member';
};
export type PlatformApiToken = {
id: string;
name: string;
};
export type LogicalDatabase = {
Name: string;
Hostname: string;
IssuedCertLimit: number;
IssuedCertCount: number;
DbId: string;
regions: string[];
primaryRegion: string;
type: 'logical';
};
export type LogicalDatabaseUsage = {
uuid: string;
instances: DatabaseInstanceUsage[];
};
export type DatabaseInstanceUsage = {
uuid: string;
usage: Usage;
};
export type Usage = {
rows_read: number;
rows_written: number;
storage_bytes: number;
};
export type DatabaseInstance = {
uuid: string;
name: string;
type: 'primary' | 'replica';
region: string;
hostname: string;
};