// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { ModelChangeEvent } from "./ModelChangeEvent"; 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 = { name: string; value: string; domain: CookieDomain; expires: CookieExpires; path: string; secure: boolean; httpOnly: boolean; sameSite: CookieSameSite | null; }; 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; name: string; }; export type CookieSameSite = "Strict" | "Lax" | "None"; export type DnsOverride = { hostname: string; ipv4: Array; ipv6: Array; 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 defined in this environment scope. * Child environments override parent variables by name. */ variables: Array; 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; authenticationType: string | null; description: string; headers: Array; name: string; sortPriority: number; settingSendCookies: InheritedBoolSetting; settingStoreCookies: InheritedBoolSetting; settingValidateCertificates: InheritedBoolSetting; settingFollowRedirects: InheritedBoolSetting; settingRequestTimeout: InheritedIntSetting; }; 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; description: string; message: string; metadata: Array; method: string | null; name: string; service: string | null; sortPriority: number; /** * Server URL (http for plaintext or https for secure) */ url: string; settingSendCookies: InheritedBoolSetting; settingStoreCookies: InheritedBoolSetting; }; export type HttpRequest = { model: "http_request"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authentication: Record; authenticationType: string | null; body: Record; bodyType: string | null; description: string; headers: Array; method: string; name: string; sortPriority: number; url: string; /** * URL parameters used for both path placeholders (`:id`) and query string entries. */ urlParameters: Array; settingSendCookies: InheritedBoolSetting; settingStoreCookies: InheritedBoolSetting; settingValidateCertificates: InheritedBoolSetting; settingFollowRedirects: InheritedBoolSetting; settingRequestTimeout: InheritedIntSetting; }; 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; remoteAddr: string | null; requestContentLength: number | null; requestHeaders: Array; 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; dropped_body: boolean; dropped_headers: Array; } | { 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; duration: bigint; overridden: boolean; }; export type HttpResponseHeader = { name: string; value: string }; export type HttpResponseState = "initialized" | "connected" | "closed"; export type HttpUrlParameter = { enabled?: boolean; /** * Colon-prefixed parameters are treated as path parameters if they match, like `/users/:id` * Other entries are appended as query parameters */ name: string; value: string; id?: string; }; export type InheritedBoolSetting = { enabled?: boolean; value: boolean }; export type InheritedIntSetting = { enabled?: boolean; value: number }; export type KeyValue = { model: "key_value"; id: string; createdAt: string; updatedAt: string; key: string; namespace: string; value: string; }; export type ModelPayload = { model: AnyModel; updateSource: UpdateSource; change: ModelChangeEvent; }; export type ParentAuthentication = { authentication: Record; authenticationType: string | null; }; export type ParentHeaders = { headers: Array }; export type Plugin = { model: "plugin"; id: string; createdAt: string; updatedAt: string; checkedAt: string | null; directory: string; enabled: boolean; url: string | null; source: PluginSource; }; export type PluginKeyValue = { model: "plugin_key_value"; createdAt: string; updatedAt: string; pluginName: string; key: string; value: string; }; export type PluginSource = "bundled" | "filesystem" | "registry"; 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; 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 }; }; 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 UpdateSource = | { type: "background" } | { type: "import" } | { type: "plugin" } | { type: "sync" } | { type: "window"; label: string }; export type WebsocketConnection = { model: "websocket_connection"; id: string; createdAt: string; updatedAt: string; workspaceId: string; requestId: string; elapsed: number; error: string | null; headers: Array; 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; messageType: WebsocketEventType; }; export type WebsocketEventType = "binary" | "close" | "frame" | "open" | "ping" | "pong" | "text"; export type WebsocketMessageType = "text" | "binary"; export type WebsocketRequest = { model: "websocket_request"; id: string; createdAt: string; updatedAt: string; workspaceId: string; folderId: string | null; authentication: Record; authenticationType: string | null; description: string; headers: Array; message: string; name: string; sortPriority: number; url: string; /** * URL parameters used for both path placeholders (`:id`) and query string entries. */ urlParameters: Array; settingSendCookies: InheritedBoolSetting; settingStoreCookies: InheritedBoolSetting; }; export type Workspace = { model: "workspace"; id: string; createdAt: string; updatedAt: string; authentication: Record; authenticationType: string | null; description: string; headers: Array; name: string; encryptionKeyChallenge: string | null; settingValidateCertificates: boolean; settingFollowRedirects: boolean; settingRequestTimeout: number; settingDnsOverrides: Array; settingSendCookies: boolean; settingStoreCookies: boolean; }; export type WorkspaceMeta = { model: "workspace_meta"; id: string; workspaceId: string; createdAt: string; updatedAt: string; encryptionKey: EncryptedKey | null; settingSyncDir: string | null; };