use serde::{Deserialize, Serialize}; use std::collections::HashMap; use ts_rs::TS; use yaak_models::models::{ Environment, Folder, GrpcRequest, HttpRequest, HttpResponse, Workspace, }; #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct InternalEvent { pub id: String, pub plugin_ref_id: String, pub reply_id: Option, pub payload: InternalEventPayload, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case", tag = "type")] #[ts(export, export_to="events.ts")] pub enum InternalEventPayload { BootRequest(BootRequest), BootResponse(BootResponse), ReloadRequest, ReloadResponse, TerminateRequest, TerminateResponse, ImportRequest(ImportRequest), ImportResponse(ImportResponse), FilterRequest(FilterRequest), FilterResponse(FilterResponse), ExportHttpRequestRequest(ExportHttpRequestRequest), ExportHttpRequestResponse(ExportHttpRequestResponse), SendHttpRequestRequest(SendHttpRequestRequest), SendHttpRequestResponse(SendHttpRequestResponse), GetHttpRequestActionsRequest(GetHttpRequestActionsRequest), GetHttpRequestActionsResponse(GetHttpRequestActionsResponse), CallHttpRequestActionRequest(CallHttpRequestActionRequest), GetTemplateFunctionsRequest, GetTemplateFunctionsResponse(GetTemplateFunctionsResponse), CallTemplateFunctionRequest(CallTemplateFunctionRequest), CallTemplateFunctionResponse(CallTemplateFunctionResponse), CopyTextRequest(CopyTextRequest), RenderHttpRequestRequest(RenderHttpRequestRequest), RenderHttpRequestResponse(RenderHttpRequestResponse), ShowToastRequest(ShowToastRequest), GetHttpRequestByIdRequest(GetHttpRequestByIdRequest), GetHttpRequestByIdResponse(GetHttpRequestByIdResponse), FindHttpResponsesRequest(FindHttpResponsesRequest), FindHttpResponsesResponse(FindHttpResponsesResponse), /// Returned when a plugin doesn't get run, just so the server /// has something to listen for EmptyResponse, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct BootRequest { pub dir: String, pub watch: bool, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct BootResponse { pub name: String, pub version: String, pub capabilities: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ImportRequest { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ImportResponse { pub resources: ImportResources, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct FilterRequest { pub content: String, pub filter: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct FilterResponse { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ExportHttpRequestRequest { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ExportHttpRequestResponse { pub content: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct SendHttpRequestRequest { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct SendHttpRequestResponse { pub http_response: HttpResponse, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CopyTextRequest { pub text: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct RenderHttpRequestRequest { pub http_request: HttpRequest, pub purpose: RenderPurpose, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct RenderHttpRequestResponse { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ShowToastRequest { pub message: String, #[ts(optional = nullable)] pub color: Option, #[ts(optional = nullable)] pub icon: Option, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case")] #[ts(export, export_to="events.ts")] pub enum Color { Custom, Default, Primary, Secondary, Info, Success, Notice, Warning, Danger, } impl Default for Color { fn default() -> Self { Color::Default } } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case")] #[ts(export, export_to="events.ts")] pub enum Icon { Copy, Info, CheckCircle, AlertTriangle, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct GetTemplateFunctionsResponse { pub functions: Vec, pub plugin_ref_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunction { pub name: String, pub args: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case", tag = "type")] #[ts(export, export_to="events.ts")] pub enum TemplateFunctionArg { Text(TemplateFunctionTextArg), Select(TemplateFunctionSelectArg), Checkbox(TemplateFunctionCheckboxArg), HttpRequest(TemplateFunctionHttpRequestArg), } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionBaseArg { pub name: String, #[ts(optional = nullable)] pub optional: Option, #[ts(optional = nullable)] pub label: Option, #[ts(optional = nullable)] pub default_value: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionTextArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, #[ts(optional = nullable)] pub placeholder: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionHttpRequestArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionSelectArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, pub options: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionCheckboxArg { #[serde(flatten)] pub base: TemplateFunctionBaseArg, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct TemplateFunctionSelectOption { pub name: String, pub value: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CallTemplateFunctionRequest { pub name: String, pub args: CallTemplateFunctionArgs, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CallTemplateFunctionResponse { pub value: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CallTemplateFunctionArgs { pub purpose: RenderPurpose, pub values: HashMap, } #[derive(Debug, Clone, Serialize, Deserialize, TS)] #[serde(rename_all = "snake_case")] #[ts(export, export_to="events.ts")] pub enum RenderPurpose { Send, Preview, } impl Default for RenderPurpose { fn default() -> Self { RenderPurpose::Preview } } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default)] #[ts(export, export_to="events.ts")] pub struct GetHttpRequestActionsRequest {} #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct GetHttpRequestActionsResponse { pub actions: Vec, pub plugin_ref_id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct HttpRequestAction { pub key: String, pub label: String, pub icon: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CallHttpRequestActionRequest { pub key: String, pub plugin_ref_id: String, pub args: CallHttpRequestActionArgs, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct CallHttpRequestActionArgs { pub http_request: HttpRequest, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct GetHttpRequestByIdRequest { pub id: String, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct GetHttpRequestByIdResponse { pub http_request: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct FindHttpResponsesRequest { pub request_id: String, pub limit: Option, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct FindHttpResponsesResponse { pub http_responses: Vec, } #[derive(Debug, Clone, Default, Serialize, Deserialize, TS)] #[serde(default, rename_all = "camelCase")] #[ts(export, export_to="events.ts")] pub struct ImportResources { pub workspaces: Vec, pub environments: Vec, pub folders: Vec, pub http_requests: Vec, pub grpc_requests: Vec, }