Skip to main content

leash_integration_jira/
lib.rs

1//! Auto-generated by leash-codegen — do not edit manually
2
3use leash_sdk::LeashIntegrations;
4
5/// Parameters for [`JiraClient::jira_get`].
6#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
7pub struct JiraGetParams {
8    pub path: String,
9    #[serde(rename = "queryParams")]
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub queryparams: Option<serde_json::Value>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub jq: Option<String>,
14    #[serde(rename = "outputFormat")]
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub outputformat: Option<String>,
17}
18/// Parameters for [`JiraClient::jira_post`].
19#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
20pub struct JiraPostParams {
21    pub path: String,
22    #[serde(rename = "queryParams")]
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub queryparams: Option<serde_json::Value>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub jq: Option<String>,
27    #[serde(rename = "outputFormat")]
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub outputformat: Option<String>,
30    pub body: serde_json::Value,
31}
32/// Parameters for [`JiraClient::jira_put`].
33#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
34pub struct JiraPutParams {
35    pub path: String,
36    #[serde(rename = "queryParams")]
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub queryparams: Option<serde_json::Value>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub jq: Option<String>,
41    #[serde(rename = "outputFormat")]
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub outputformat: Option<String>,
44    pub body: serde_json::Value,
45}
46/// Parameters for [`JiraClient::jira_patch`].
47#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
48pub struct JiraPatchParams {
49    pub path: String,
50    #[serde(rename = "queryParams")]
51    #[serde(skip_serializing_if = "Option::is_none")]
52    pub queryparams: Option<serde_json::Value>,
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub jq: Option<String>,
55    #[serde(rename = "outputFormat")]
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub outputformat: Option<String>,
58    pub body: serde_json::Value,
59}
60/// Parameters for [`JiraClient::jira_delete`].
61#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
62pub struct JiraDeleteParams {
63    pub path: String,
64    #[serde(rename = "queryParams")]
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub queryparams: Option<serde_json::Value>,
67    #[serde(skip_serializing_if = "Option::is_none")]
68    pub jq: Option<String>,
69    #[serde(rename = "outputFormat")]
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub outputformat: Option<String>,
72}
73
74/// Typed Jira integration client for Leash.
75pub struct JiraClient {
76    leash: LeashIntegrations,
77}
78
79impl JiraClient {
80    /// Create a new JiraClient.
81    pub fn new(leash: LeashIntegrations) -> Self {
82        Self { leash }
83    }
84
85    /// Read any Jira data. Returns TOON format by default (30-60% fewer tokens than JSON). **IMPORTANT - Cost Optimization:** - ALWAYS use `jq` param to filter response fields. Unfiltered responses are ve...
86    pub async fn jira_get(&self, params: &JiraGetParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
87        self.leash.call("jira", "jira_get", Some(serde_json::to_value(params).unwrap_or_default())).await
88    }
89
90    /// Create Jira resources. Returns TOON format by default (token-efficient). **IMPORTANT - Cost Optimization:** - Use `jq` param to extract only needed fields from response (e.g., `jq: "{key: key, id:...
91    pub async fn jira_post(&self, params: &JiraPostParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
92        self.leash.call("jira", "jira_post", Some(serde_json::to_value(params).unwrap_or_default())).await
93    }
94
95    /// Replace Jira resources (full update). Returns TOON format by default. **IMPORTANT - Cost Optimization:** Use `jq` param to extract only needed fields from response **Output format:** TOON (default)...
96    pub async fn jira_put(&self, params: &JiraPutParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
97        self.leash.call("jira", "jira_put", Some(serde_json::to_value(params).unwrap_or_default())).await
98    }
99
100    /// Partially update Jira resources. Returns TOON format by default. **IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields. **Output format:** TOON (default) or JSON (`outputForma...
101    pub async fn jira_patch(&self, params: &JiraPatchParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
102        self.leash.call("jira", "jira_patch", Some(serde_json::to_value(params).unwrap_or_default())).await
103    }
104
105    /// Delete Jira resources. Returns TOON format by default. **Output format:** TOON (default) or JSON (`outputFormat: "json"`) **Common operations:** 1. **Delete issue:** `/rest/api/3/issue/{issueIdOrKe...
106    pub async fn jira_delete(&self, params: &JiraDeleteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
107        self.leash.call("jira", "jira_delete", Some(serde_json::to_value(params).unwrap_or_default())).await
108    }
109}