1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use std::sync::Arc;
4
5#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
6pub struct ExtensionApiManifest {
7 pub name: String,
8 pub version: Arc<str>,
9 pub description: Option<String>,
10 pub authors: Vec<String>,
11 pub repository: String,
12 pub schema_version: Option<i32>,
13 pub wasm_api_version: Option<String>,
14}
15
16#[derive(Clone, Serialize, Deserialize, Debug, PartialEq)]
17pub struct ExtensionMetadata {
18 pub id: Arc<str>,
19 #[serde(flatten)]
20 pub manifest: ExtensionApiManifest,
21 pub published_at: DateTime<Utc>,
22 pub download_count: u64,
23}
24
25#[derive(Serialize, Deserialize)]
26pub struct GetExtensionsResponse {
27 pub data: Vec<ExtensionMetadata>,
28}