browsr-types 0.4.0

Shared data models and schemas for Browsr browser automation flows.
Documentation
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

/// Response from the /v1/search endpoint.
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct SearchResponse {
    pub success: bool,
    pub total: usize,
    pub data: Vec<SearchResultEntry>,
}

/// A single search result entry from /v1/search.
#[derive(Serialize, Deserialize, Debug, Clone, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct SearchResultEntry {
    pub url: String,
    pub title: String,
    pub description: String,
    pub position: usize,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub content: Option<serde_json::Value>,
}

#[derive(Serialize, Deserialize, Debug, Default, JsonSchema, Clone)]
pub struct SearchOptions {
    pub query: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub limit: Option<usize>,
}