reasoninglayer 0.1.2

Rust client SDK for the Reasoning Layer API
Documentation
//! Webhook action DTOs.

use std::collections::BTreeMap;

use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ExternalActionSummaryDto {
    pub action_id: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    pub enabled: bool,
    pub name: String,
    #[serde(default)]
    pub outputs: Vec<String>,
    #[serde(default)]
    pub required_inputs: Vec<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub sort_id: Option<String>,
    pub webhook_url: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PendingInvocationDto {
    pub action_name: String,
    #[serde(default)]
    pub inputs: BTreeMap<String, serde_json::Value>,
    pub invocation_id: String,
    pub invoked_at: String,
    pub status: String,
    pub term_id: String,
    pub timeout_at: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegisterExternalActionRequest {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    pub name: String,
    #[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
    pub optional_inputs: BTreeMap<String, serde_json::Value>,
    #[serde(default)]
    pub outputs: Vec<String>,
    #[serde(default)]
    pub required_inputs: Vec<String>,
    pub tenant_id: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub timeout_secs: Option<u64>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub webhook_secret: Option<String>,
    pub webhook_url: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct RegisterExternalActionResponse {
    pub action_id: String,
    pub message: String,
    pub name: String,
    pub sort_id: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InvokeActionRequest {
    pub action_name: String,
    #[serde(default)]
    pub inputs: BTreeMap<String, serde_json::Value>,
    pub tenant_id: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct InvokeActionResponse {
    pub callback_url: String,
    pub demons_attached: u32,
    pub invocation_id: String,
    pub message: String,
    pub status: String,
    pub term_id: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WebhookCallbackRequest {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub error: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub notify_agent_id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub notify_tenant_id: Option<String>,
    #[serde(default)]
    pub outputs: BTreeMap<String, serde_json::Value>,
    pub status: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WebhookCallbackResponse {
    pub demons_fired: u32,
    pub message: String,
    pub status: String,
    pub term_updated: bool,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListExternalActionsResponse {
    #[serde(default)]
    pub actions: Vec<ExternalActionSummaryDto>,
    pub tenant_id: String,
    pub total: u64,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ListPendingInvocationsResponse {
    #[serde(default)]
    pub invocations: Vec<PendingInvocationDto>,
    pub tenant_id: String,
    pub total_pending: u64,
}