jira_api_v2/apis/
issue_remote_links_api.rs

1/*
2 * The Jira Cloud platform REST API
3 *
4 * Jira Cloud platform REST API documentation
5 *
6 * The version of the OpenAPI document: 1001.0.0-SNAPSHOT
7 * Contact: ecosystem@atlassian.com
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration};
16
17
18/// struct for typed errors of method [`create_or_update_remote_issue_link`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum CreateOrUpdateRemoteIssueLinkError {
22    Status400(),
23    Status401(),
24    Status403(),
25    Status404(),
26    UnknownValue(serde_json::Value),
27}
28
29/// struct for typed errors of method [`delete_remote_issue_link_by_global_id`]
30#[derive(Debug, Clone, Serialize, Deserialize)]
31#[serde(untagged)]
32pub enum DeleteRemoteIssueLinkByGlobalIdError {
33    Status400(),
34    Status401(),
35    Status403(),
36    Status404(),
37    UnknownValue(serde_json::Value),
38}
39
40/// struct for typed errors of method [`delete_remote_issue_link_by_id`]
41#[derive(Debug, Clone, Serialize, Deserialize)]
42#[serde(untagged)]
43pub enum DeleteRemoteIssueLinkByIdError {
44    Status400(),
45    Status401(),
46    Status403(),
47    Status404(),
48    UnknownValue(serde_json::Value),
49}
50
51/// struct for typed errors of method [`get_remote_issue_link_by_id`]
52#[derive(Debug, Clone, Serialize, Deserialize)]
53#[serde(untagged)]
54pub enum GetRemoteIssueLinkByIdError {
55    Status400(),
56    Status401(),
57    Status403(),
58    Status404(),
59    UnknownValue(serde_json::Value),
60}
61
62/// struct for typed errors of method [`get_remote_issue_links`]
63#[derive(Debug, Clone, Serialize, Deserialize)]
64#[serde(untagged)]
65pub enum GetRemoteIssueLinksError {
66    Status400(),
67    Status401(),
68    Status403(),
69    Status404(),
70    UnknownValue(serde_json::Value),
71}
72
73/// struct for typed errors of method [`update_remote_issue_link`]
74#[derive(Debug, Clone, Serialize, Deserialize)]
75#[serde(untagged)]
76pub enum UpdateRemoteIssueLinkError {
77    Status400(),
78    Status401(),
79    Status403(),
80    Status404(),
81    UnknownValue(serde_json::Value),
82}
83
84
85/// Creates or updates a remote issue link for an issue.  If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without values in the request are set to null. Otherwise, the remote issue link is created.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects* and *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
86pub async fn create_or_update_remote_issue_link(configuration: &configuration::Configuration, issue_id_or_key: &str, remote_issue_link_request: models::RemoteIssueLinkRequest) -> Result<models::RemoteIssueLinkIdentifies, Error<CreateOrUpdateRemoteIssueLinkError>> {
87    // add a prefix to parameters to efficiently prevent name collisions
88    let p_issue_id_or_key = issue_id_or_key;
89    let p_remote_issue_link_request = remote_issue_link_request;
90
91    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key));
92    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
93
94    if let Some(ref user_agent) = configuration.user_agent {
95        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
96    }
97    if let Some(ref token) = configuration.oauth_access_token {
98        req_builder = req_builder.bearer_auth(token.to_owned());
99    };
100    if let Some(ref auth_conf) = configuration.basic_auth {
101        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
102    };
103    req_builder = req_builder.json(&p_remote_issue_link_request);
104
105    let req = req_builder.build()?;
106    let resp = configuration.client.execute(req).await?;
107
108    let status = resp.status();
109
110    if !status.is_client_error() && !status.is_server_error() {
111        let content = resp.text().await?;
112        serde_json::from_str(&content).map_err(Error::from)
113    } else {
114        let content = resp.text().await?;
115        let entity: Option<CreateOrUpdateRemoteIssueLinkError> = serde_json::from_str(&content).ok();
116        Err(Error::ResponseError(ResponseContent { status, content, entity }))
117    }
118}
119
120/// Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects* and *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is implemented, issue-level security permission to view the issue.
121pub async fn delete_remote_issue_link_by_global_id(configuration: &configuration::Configuration, issue_id_or_key: &str, global_id: &str) -> Result<(), Error<DeleteRemoteIssueLinkByGlobalIdError>> {
122    // add a prefix to parameters to efficiently prevent name collisions
123    let p_issue_id_or_key = issue_id_or_key;
124    let p_global_id = global_id;
125
126    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key));
127    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
128
129    req_builder = req_builder.query(&[("globalId", &p_global_id.to_string())]);
130    if let Some(ref user_agent) = configuration.user_agent {
131        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
132    }
133    if let Some(ref token) = configuration.oauth_access_token {
134        req_builder = req_builder.bearer_auth(token.to_owned());
135    };
136    if let Some(ref auth_conf) = configuration.basic_auth {
137        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
138    };
139
140    let req = req_builder.build()?;
141    let resp = configuration.client.execute(req).await?;
142
143    let status = resp.status();
144
145    if !status.is_client_error() && !status.is_server_error() {
146        Ok(())
147    } else {
148        let content = resp.text().await?;
149        let entity: Option<DeleteRemoteIssueLinkByGlobalIdError> = serde_json::from_str(&content).ok();
150        Err(Error::ResponseError(ResponseContent { status, content, entity }))
151    }
152}
153
154/// Deletes a remote issue link from an issue.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects*, *Edit issues*, and *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
155pub async fn delete_remote_issue_link_by_id(configuration: &configuration::Configuration, issue_id_or_key: &str, link_id: &str) -> Result<(), Error<DeleteRemoteIssueLinkByIdError>> {
156    // add a prefix to parameters to efficiently prevent name collisions
157    let p_issue_id_or_key = issue_id_or_key;
158    let p_link_id = link_id;
159
160    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId}", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key), linkId=crate::apis::urlencode(p_link_id));
161    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
162
163    if let Some(ref user_agent) = configuration.user_agent {
164        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
165    }
166    if let Some(ref token) = configuration.oauth_access_token {
167        req_builder = req_builder.bearer_auth(token.to_owned());
168    };
169    if let Some(ref auth_conf) = configuration.basic_auth {
170        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
171    };
172
173    let req = req_builder.build()?;
174    let resp = configuration.client.execute(req).await?;
175
176    let status = resp.status();
177
178    if !status.is_client_error() && !status.is_server_error() {
179        Ok(())
180    } else {
181        let content = resp.text().await?;
182        let entity: Option<DeleteRemoteIssueLinkByIdError> = serde_json::from_str(&content).ok();
183        Err(Error::ResponseError(ResponseContent { status, content, entity }))
184    }
185}
186
187/// Returns a remote issue link for an issue.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
188pub async fn get_remote_issue_link_by_id(configuration: &configuration::Configuration, issue_id_or_key: &str, link_id: &str) -> Result<models::RemoteIssueLink, Error<GetRemoteIssueLinkByIdError>> {
189    // add a prefix to parameters to efficiently prevent name collisions
190    let p_issue_id_or_key = issue_id_or_key;
191    let p_link_id = link_id;
192
193    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId}", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key), linkId=crate::apis::urlencode(p_link_id));
194    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
195
196    if let Some(ref user_agent) = configuration.user_agent {
197        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
198    }
199    if let Some(ref token) = configuration.oauth_access_token {
200        req_builder = req_builder.bearer_auth(token.to_owned());
201    };
202    if let Some(ref auth_conf) = configuration.basic_auth {
203        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
204    };
205
206    let req = req_builder.build()?;
207    let resp = configuration.client.execute(req).await?;
208
209    let status = resp.status();
210
211    if !status.is_client_error() && !status.is_server_error() {
212        let content = resp.text().await?;
213        serde_json::from_str(&content).map_err(Error::from)
214    } else {
215        let content = resp.text().await?;
216        let entity: Option<GetRemoteIssueLinkByIdError> = serde_json::from_str(&content).ok();
217        Err(Error::ResponseError(ResponseContent { status, content, entity }))
218    }
219}
220
221/// Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1` as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
222pub async fn get_remote_issue_links(configuration: &configuration::Configuration, issue_id_or_key: &str, global_id: Option<&str>) -> Result<models::RemoteIssueLink, Error<GetRemoteIssueLinksError>> {
223    // add a prefix to parameters to efficiently prevent name collisions
224    let p_issue_id_or_key = issue_id_or_key;
225    let p_global_id = global_id;
226
227    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key));
228    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
229
230    if let Some(ref param_value) = p_global_id {
231        req_builder = req_builder.query(&[("globalId", &param_value.to_string())]);
232    }
233    if let Some(ref user_agent) = configuration.user_agent {
234        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
235    }
236    if let Some(ref token) = configuration.oauth_access_token {
237        req_builder = req_builder.bearer_auth(token.to_owned());
238    };
239    if let Some(ref auth_conf) = configuration.basic_auth {
240        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
241    };
242
243    let req = req_builder.build()?;
244    let resp = configuration.client.execute(req).await?;
245
246    let status = resp.status();
247
248    if !status.is_client_error() && !status.is_server_error() {
249        let content = resp.text().await?;
250        serde_json::from_str(&content).map_err(Error::from)
251    } else {
252        let content = resp.text().await?;
253        let entity: Option<GetRemoteIssueLinksError> = serde_json::from_str(&content).ok();
254        Err(Error::ResponseError(ResponseContent { status, content, entity }))
255    }
256}
257
258/// Updates a remote issue link for an issue.  Note: Fields without values in the request are set to null.  This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).  This operation can be accessed anonymously.  **[Permissions](#permissions) required:**   *  *Browse projects* and *Link issues* [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.  *  If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission to view the issue.
259pub async fn update_remote_issue_link(configuration: &configuration::Configuration, issue_id_or_key: &str, link_id: &str, remote_issue_link_request: models::RemoteIssueLinkRequest) -> Result<serde_json::Value, Error<UpdateRemoteIssueLinkError>> {
260    // add a prefix to parameters to efficiently prevent name collisions
261    let p_issue_id_or_key = issue_id_or_key;
262    let p_link_id = link_id;
263    let p_remote_issue_link_request = remote_issue_link_request;
264
265    let uri_str = format!("{}/rest/api/2/issue/{issueIdOrKey}/remotelink/{linkId}", configuration.base_path, issueIdOrKey=crate::apis::urlencode(p_issue_id_or_key), linkId=crate::apis::urlencode(p_link_id));
266    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
267
268    if let Some(ref user_agent) = configuration.user_agent {
269        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
270    }
271    if let Some(ref token) = configuration.oauth_access_token {
272        req_builder = req_builder.bearer_auth(token.to_owned());
273    };
274    if let Some(ref auth_conf) = configuration.basic_auth {
275        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
276    };
277    req_builder = req_builder.json(&p_remote_issue_link_request);
278
279    let req = req_builder.build()?;
280    let resp = configuration.client.execute(req).await?;
281
282    let status = resp.status();
283
284    if !status.is_client_error() && !status.is_server_error() {
285        let content = resp.text().await?;
286        serde_json::from_str(&content).map_err(Error::from)
287    } else {
288        let content = resp.text().await?;
289        let entity: Option<UpdateRemoteIssueLinkError> = serde_json::from_str(&content).ok();
290        Err(Error::ResponseError(ResponseContent { status, content, entity }))
291    }
292}
293