jacquard_api/tools_ozone/communication/
create_template.rs1#[allow(unused_imports)]
9use alloc::collections::BTreeMap;
10
11#[allow(unused_imports)]
12use core::marker::PhantomData;
13use jacquard_common::CowStr;
14use jacquard_common::types::string::{Did, Language};
15use jacquard_derive::{IntoStatic, lexicon, open_union};
16use serde::{Serialize, Deserialize};
17use crate::tools_ozone::communication::TemplateView;
18
19#[lexicon]
20#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic, Default)]
21#[serde(rename_all = "camelCase")]
22pub struct CreateTemplate<'a> {
23 #[serde(borrow)]
25 pub content_markdown: CowStr<'a>,
26 #[serde(skip_serializing_if = "Option::is_none")]
28 #[serde(borrow)]
29 pub created_by: Option<Did<'a>>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub lang: Option<Language>,
33 #[serde(borrow)]
35 pub name: CowStr<'a>,
36 #[serde(borrow)]
38 pub subject: CowStr<'a>,
39}
40
41
42#[lexicon]
43#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, IntoStatic)]
44#[serde(rename_all = "camelCase")]
45pub struct CreateTemplateOutput<'a> {
46 #[serde(flatten)]
47 #[serde(borrow)]
48 pub value: TemplateView<'a>,
49}
50
51
52#[open_union]
53#[derive(
54 Serialize,
55 Deserialize,
56 Debug,
57 Clone,
58 PartialEq,
59 Eq,
60 thiserror::Error,
61 miette::Diagnostic,
62 IntoStatic
63)]
64
65#[serde(tag = "error", content = "message")]
66#[serde(bound(deserialize = "'de: 'a"))]
67pub enum CreateTemplateError<'a> {
68 #[serde(rename = "DuplicateTemplateName")]
69 DuplicateTemplateName(Option<CowStr<'a>>),
70}
71
72impl core::fmt::Display for CreateTemplateError<'_> {
73 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
74 match self {
75 Self::DuplicateTemplateName(msg) => {
76 write!(f, "DuplicateTemplateName")?;
77 if let Some(msg) = msg {
78 write!(f, ": {}", msg)?;
79 }
80 Ok(())
81 }
82 Self::Unknown(err) => write!(f, "Unknown error: {:?}", err),
83 }
84 }
85}
86
87pub struct CreateTemplateResponse;
89impl jacquard_common::xrpc::XrpcResp for CreateTemplateResponse {
90 const NSID: &'static str = "tools.ozone.communication.createTemplate";
91 const ENCODING: &'static str = "application/json";
92 type Output<'de> = CreateTemplateOutput<'de>;
93 type Err<'de> = CreateTemplateError<'de>;
94}
95
96impl<'a> jacquard_common::xrpc::XrpcRequest for CreateTemplate<'a> {
97 const NSID: &'static str = "tools.ozone.communication.createTemplate";
98 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
99 "application/json",
100 );
101 type Response = CreateTemplateResponse;
102}
103
104pub struct CreateTemplateRequest;
106impl jacquard_common::xrpc::XrpcEndpoint for CreateTemplateRequest {
107 const PATH: &'static str = "/xrpc/tools.ozone.communication.createTemplate";
108 const METHOD: jacquard_common::xrpc::XrpcMethod = jacquard_common::xrpc::XrpcMethod::Procedure(
109 "application/json",
110 );
111 type Request<'de> = CreateTemplate<'de>;
112 type Response = CreateTemplateResponse;
113}