use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::ops::{Deref, DerefMut};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(transparent)]
pub struct DynamicResponse(pub Value);
impl Deref for DynamicResponse {
type Target = Value;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl DerefMut for DynamicResponse {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
impl From<Value> for DynamicResponse {
fn from(value: Value) -> Self {
Self(value)
}
}
impl PartialEq<Value> for DynamicResponse {
fn eq(&self, other: &Value) -> bool {
self.0 == *other
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CodeRequest {
pub code: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct EmailLinkRequest {
pub email: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub frontend_redirect_uri: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct LoginTokenRequest {
pub token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct IntegrationTokenRequest {
pub key: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum FeedbackType {
Bug,
Feature,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CreateFeedbackRequest {
#[serde(rename = "type")]
pub kind: FeedbackType,
pub title: String,
pub body: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct IngestFeedbackRequest {
#[serde(rename = "type")]
pub kind: FeedbackType,
pub title: String,
pub body: String,
pub product: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub origin: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub external_ref: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct FeedbackCommentRequest {
pub body: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct FeedbackVoteRequest {
pub value: i8,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct ClaimReferralRequest {
pub code: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub device_fingerprint: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct BillingPortalRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub return_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum BillingPlan {
BasicMonthly,
BasicYearly,
ProMonthly,
ProYearly,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct PurchasePlanRequest {
pub plan: BillingPlan,
#[serde(skip_serializing_if = "Option::is_none")]
pub success_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancel_url: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct CreateTeamInviteRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub expires_in_days: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_uses: Option<u32>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct EmailInviteRequest {
pub email: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct JoinMeetingRequest {
pub meet_url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub mascot_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub agent_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub display_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub platform: Option<MeetingPlatform>,
#[serde(skip_serializing_if = "Option::is_none")]
pub system_prompt: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub muted: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rive_colors: Option<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum MeetingPlatform {
Gmeet,
Zoom,
Teams,
Webex,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct OrchestrationEventRequest {
pub protocol: u32,
pub counterpart_agent_id: String,
pub session_id: String,
pub event: OrchestrationEvent,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "camelCase")]
pub struct OrchestrationEvent {
pub seq: u64,
pub role: OrchestrationRole,
pub sender: String,
pub body: String,
pub ts: u64,
pub kind: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum OrchestrationRole {
User,
Assistant,
System,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct ContinueRunRequest {
pub cycle_id: String,
pub tool_results: Vec<Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[serde(rename_all = "camelCase")]
pub struct SubmitWorldDiffRequest {
#[serde(flatten)]
pub fields: serde_json::Map<String, Value>,
}