UNPKG

@yaakapp/api

Version:

Yaak is a desktop [API client](https://yaak.app/blog/yet-another-api-client) for interacting with REST, GraphQL, Server Sent Events (SSE), WebSocket, and gRPC APIs. It's built using Tauri, Rust, and ReactJS.

408 lines (407 loc) 10.3 kB
export type AnyModel = CookieJar | Environment | Folder | GraphQlIntrospection | GrpcConnection | GrpcEvent | GrpcRequest | HttpRequest | HttpResponse | HttpResponseEvent | KeyValue | Plugin | Settings | SyncState | WebsocketConnection | WebsocketEvent | WebsocketRequest | Workspace | WorkspaceMeta; export type ClientCertificate = { host: string; port: number | null; crtFile: string | null; keyFile: string | null; pfxFile: string | null; passphrase: string | null; enabled?: boolean; }; export type Cookie = { raw_cookie: string; domain: CookieDomain; expires: CookieExpires; path: [string, boolean]; }; export type CookieDomain = { "HostOnly": string; } | { "Suffix": string; } | "NotPresent" | "Empty"; export type CookieExpires = { "AtUtc": string; } | "SessionEnd"; export type CookieJar = { model: "cookie_jar"; id: string; createdAt: string; updatedAt: string; workspaceId: string; cookies: Array<Cookie>; name: string; }; export type DnsOverride = { hostname: string; ipv4: Array<string>; ipv6: Array<string>; enabled?: boolean; }; export type EditorKeymap = "default" | "vim" | "vscode" | "emacs"; export type EncryptedKey = { encryptedKey: string; }; export type Environment = { model: "environment"; id: string; workspaceId: string; createdAt: string; updatedAt: string; name: string; public: boolean; parentModel: string; parentId: string | null; variables: Array<EnvironmentVariable>; color: string | null; sortPriority: number; }; export type EnvironmentVariable = { enabled?: boolean; name: string; value: string; id?: string; }; export type Folder = { model: "folder"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authentication: Record<string, any>; authenticationType: string | null; description: string; headers: Array<HttpRequestHeader>; name: string; sortPriority: number; }; export type GraphQlIntrospection = { model: "graphql_introspection"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; content: string | null; }; export type GrpcConnection = { model: "grpc_connection"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; elapsed: number; error: string | null; method: string; service: string; status: number; state: GrpcConnectionState; trailers: { [key in string]?: string; }; url: string; }; export type GrpcConnectionState = "initialized" | "connected" | "closed"; export type GrpcEvent = { model: "grpc_event"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; connectionId: string; content: string; error: string | null; eventType: GrpcEventType; metadata: { [key in string]?: string; }; status: number | null; }; export type GrpcEventType = "info" | "error" | "client_message" | "server_message" | "connection_start" | "connection_end"; export type GrpcRequest = { model: "grpc_request"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authenticationType: string | null; authentication: Record<string, any>; description: string; message: string; metadata: Array<HttpRequestHeader>; method: string | null; name: string; service: string | null; sortPriority: number; url: string; }; export type HttpRequest = { model: "http_request"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authentication: Record<string, any>; authenticationType: string | null; body: Record<string, any>; bodyType: string | null; description: string; headers: Array<HttpRequestHeader>; method: string; name: string; sortPriority: number; url: string; urlParameters: Array<HttpUrlParameter>; }; export type HttpRequestHeader = { enabled?: boolean; name: string; value: string; id?: string; }; export type HttpResponse = { model: "http_response"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; bodyPath: string | null; contentLength: number | null; contentLengthCompressed: number | null; elapsed: number; elapsedHeaders: number; elapsedDns: number; error: string | null; headers: Array<HttpResponseHeader>; remoteAddr: string | null; requestContentLength: number | null; requestHeaders: Array<HttpResponseHeader>; status: number; statusReason: string | null; state: HttpResponseState; url: string; version: string | null; }; export type HttpResponseEvent = { model: "http_response_event"; id: string; createdAt: string; updatedAt: string; workspaceId: string; responseId: string; event: HttpResponseEventData; }; /** * Serializable representation of HTTP response events for DB storage. * This mirrors `yaak_http::sender::HttpResponseEvent` but with serde support. * The `From` impl is in yaak-http to avoid circular dependencies. */ export type HttpResponseEventData = { "type": "setting"; name: string; value: string; } | { "type": "info"; message: string; } | { "type": "redirect"; url: string; status: number; behavior: string; } | { "type": "send_url"; method: string; scheme: string; username: string; password: string; host: string; port: number; path: string; query: string; fragment: string; } | { "type": "receive_url"; version: string; status: string; } | { "type": "header_up"; name: string; value: string; } | { "type": "header_down"; name: string; value: string; } | { "type": "chunk_sent"; bytes: number; } | { "type": "chunk_received"; bytes: number; } | { "type": "dns_resolved"; hostname: string; addresses: Array<string>; duration: bigint; overridden: boolean; }; export type HttpResponseHeader = { name: string; value: string; }; export type HttpResponseState = "initialized" | "connected" | "closed"; export type HttpUrlParameter = { enabled?: boolean; name: string; value: string; id?: string; }; export type KeyValue = { model: "key_value"; id: string; createdAt: string; updatedAt: string; key: string; namespace: string; value: string; }; export type Plugin = { model: "plugin"; id: string; createdAt: string; updatedAt: string; checkedAt: string | null; directory: string; enabled: boolean; url: string | null; }; export type ProxySetting = { "type": "enabled"; http: string; https: string; auth: ProxySettingAuth | null; bypass: string; disabled: boolean; } | { "type": "disabled"; }; export type ProxySettingAuth = { user: string; password: string; }; export type Settings = { model: "settings"; id: string; createdAt: string; updatedAt: string; appearance: string; clientCertificates: Array<ClientCertificate>; coloredMethods: boolean; editorFont: string | null; editorFontSize: number; editorKeymap: EditorKeymap; editorSoftWrap: boolean; hideWindowControls: boolean; useNativeTitlebar: boolean; interfaceFont: string | null; interfaceFontSize: number; interfaceScale: number; openWorkspaceNewWindow: boolean | null; proxy: ProxySetting | null; themeDark: string; themeLight: string; updateChannel: string; hideLicenseBadge: boolean; autoupdate: boolean; autoDownloadUpdates: boolean; checkNotifications: boolean; hotkeys: { [key in string]?: Array<string>; }; }; export type SyncState = { model: "sync_state"; id: string; workspaceId: string; createdAt: string; updatedAt: string; flushedAt: string; modelId: string; checksum: string; relPath: string; syncDir: string; }; export type WebsocketConnection = { model: "websocket_connection"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; elapsed: number; error: string | null; headers: Array<HttpResponseHeader>; state: WebsocketConnectionState; status: number; url: string; }; export type WebsocketConnectionState = "initialized" | "connected" | "closing" | "closed"; export type WebsocketEvent = { model: "websocket_event"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; connectionId: string; isServer: boolean; message: Array<number>; messageType: WebsocketEventType; }; export type WebsocketEventType = "binary" | "close" | "frame" | "open" | "ping" | "pong" | "text"; export type WebsocketRequest = { model: "websocket_request"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authentication: Record<string, any>; authenticationType: string | null; description: string; headers: Array<HttpRequestHeader>; message: string; name: string; sortPriority: number; url: string; urlParameters: Array<HttpUrlParameter>; }; export type Workspace = { model: "workspace"; id: string; createdAt: string; updatedAt: string; authentication: Record<string, any>; authenticationType: string | null; description: string; headers: Array<HttpRequestHeader>; name: string; encryptionKeyChallenge: string | null; settingValidateCertificates: boolean; settingFollowRedirects: boolean; settingRequestTimeout: number; settingDnsOverrides: Array<DnsOverride>; }; export type WorkspaceMeta = { model: "workspace_meta"; id: string; workspaceId: string; createdAt: string; updatedAt: string; encryptionKey: EncryptedKey | null; settingSyncDir: string | null; };