leash-integration-jira 0.1.0

Typed Jira integration for Leash
Documentation
//! Auto-generated by leash-codegen — do not edit manually

use leash_sdk::LeashIntegrations;

/// Parameters for [`JiraClient::jira_get`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct JiraGetParams {
    pub path: String,
    #[serde(rename = "queryParams")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub queryparams: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub jq: Option<String>,
    #[serde(rename = "outputFormat")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub outputformat: Option<String>,
}
/// Parameters for [`JiraClient::jira_post`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct JiraPostParams {
    pub path: String,
    #[serde(rename = "queryParams")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub queryparams: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub jq: Option<String>,
    #[serde(rename = "outputFormat")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub outputformat: Option<String>,
    pub body: serde_json::Value,
}
/// Parameters for [`JiraClient::jira_put`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct JiraPutParams {
    pub path: String,
    #[serde(rename = "queryParams")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub queryparams: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub jq: Option<String>,
    #[serde(rename = "outputFormat")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub outputformat: Option<String>,
    pub body: serde_json::Value,
}
/// Parameters for [`JiraClient::jira_patch`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct JiraPatchParams {
    pub path: String,
    #[serde(rename = "queryParams")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub queryparams: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub jq: Option<String>,
    #[serde(rename = "outputFormat")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub outputformat: Option<String>,
    pub body: serde_json::Value,
}
/// Parameters for [`JiraClient::jira_delete`].
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct JiraDeleteParams {
    pub path: String,
    #[serde(rename = "queryParams")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub queryparams: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub jq: Option<String>,
    #[serde(rename = "outputFormat")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub outputformat: Option<String>,
}

/// Typed Jira integration client for Leash.
pub struct JiraClient {
    leash: LeashIntegrations,
}

impl JiraClient {
    /// Create a new JiraClient.
    pub fn new(leash: LeashIntegrations) -> Self {
        Self { leash }
    }

    /// 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...
    pub async fn jira_get(&self, params: &JiraGetParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("jira", "jira_get", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// 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:...
    pub async fn jira_post(&self, params: &JiraPostParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("jira", "jira_post", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// 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)...
    pub async fn jira_put(&self, params: &JiraPutParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("jira", "jira_put", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// 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...
    pub async fn jira_patch(&self, params: &JiraPatchParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("jira", "jira_patch", Some(serde_json::to_value(params).unwrap_or_default())).await
    }

    /// 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...
    pub async fn jira_delete(&self, params: &JiraDeleteParams) -> Result<serde_json::Value, leash_sdk::LeashError> {
        self.leash.call("jira", "jira_delete", Some(serde_json::to_value(params).unwrap_or_default())).await
    }
}