jira_api_v2/apis/
project_permission_schemes_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 [`assign_permission_scheme`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum AssignPermissionSchemeError {
22    Status401(),
23    Status403(),
24    Status404(),
25    UnknownValue(serde_json::Value),
26}
27
28/// struct for typed errors of method [`get_assigned_permission_scheme`]
29#[derive(Debug, Clone, Serialize, Deserialize)]
30#[serde(untagged)]
31pub enum GetAssignedPermissionSchemeError {
32    Status401(),
33    Status403(),
34    Status404(),
35    UnknownValue(serde_json::Value),
36}
37
38/// struct for typed errors of method [`get_project_issue_security_scheme`]
39#[derive(Debug, Clone, Serialize, Deserialize)]
40#[serde(untagged)]
41pub enum GetProjectIssueSecuritySchemeError {
42    Status400(),
43    Status401(),
44    Status403(),
45    Status404(),
46    UnknownValue(serde_json::Value),
47}
48
49/// struct for typed errors of method [`get_security_levels_for_project`]
50#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(untagged)]
52pub enum GetSecurityLevelsForProjectError {
53    Status404(),
54    UnknownValue(serde_json::Value),
55}
56
57
58/// Assigns a permission scheme with a project. See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes.  **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg)
59pub async fn assign_permission_scheme(configuration: &configuration::Configuration, project_key_or_id: &str, id_bean: models::IdBean, expand: Option<&str>) -> Result<models::PermissionScheme, Error<AssignPermissionSchemeError>> {
60    // add a prefix to parameters to efficiently prevent name collisions
61    let p_project_key_or_id = project_key_or_id;
62    let p_id_bean = id_bean;
63    let p_expand = expand;
64
65    let uri_str = format!("{}/rest/api/2/project/{projectKeyOrId}/permissionscheme", configuration.base_path, projectKeyOrId=crate::apis::urlencode(p_project_key_or_id));
66    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
67
68    if let Some(ref param_value) = p_expand {
69        req_builder = req_builder.query(&[("expand", &param_value.to_string())]);
70    }
71    if let Some(ref user_agent) = configuration.user_agent {
72        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
73    }
74    if let Some(ref token) = configuration.oauth_access_token {
75        req_builder = req_builder.bearer_auth(token.to_owned());
76    };
77    if let Some(ref auth_conf) = configuration.basic_auth {
78        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
79    };
80    req_builder = req_builder.json(&p_id_bean);
81
82    let req = req_builder.build()?;
83    let resp = configuration.client.execute(req).await?;
84
85    let status = resp.status();
86
87    if !status.is_client_error() && !status.is_server_error() {
88        let content = resp.text().await?;
89        serde_json::from_str(&content).map_err(Error::from)
90    } else {
91        let content = resp.text().await?;
92        let entity: Option<AssignPermissionSchemeError> = serde_json::from_str(&content).ok();
93        Err(Error::ResponseError(ResponseContent { status, content, entity }))
94    }
95}
96
97/// Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project.  **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or *Administer projects* [project permission](https://confluence.atlassian.com/x/yodKLg).
98pub async fn get_assigned_permission_scheme(configuration: &configuration::Configuration, project_key_or_id: &str, expand: Option<&str>) -> Result<models::PermissionScheme, Error<GetAssignedPermissionSchemeError>> {
99    // add a prefix to parameters to efficiently prevent name collisions
100    let p_project_key_or_id = project_key_or_id;
101    let p_expand = expand;
102
103    let uri_str = format!("{}/rest/api/2/project/{projectKeyOrId}/permissionscheme", configuration.base_path, projectKeyOrId=crate::apis::urlencode(p_project_key_or_id));
104    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
105
106    if let Some(ref param_value) = p_expand {
107        req_builder = req_builder.query(&[("expand", &param_value.to_string())]);
108    }
109    if let Some(ref user_agent) = configuration.user_agent {
110        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
111    }
112    if let Some(ref token) = configuration.oauth_access_token {
113        req_builder = req_builder.bearer_auth(token.to_owned());
114    };
115    if let Some(ref auth_conf) = configuration.basic_auth {
116        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
117    };
118
119    let req = req_builder.build()?;
120    let resp = configuration.client.execute(req).await?;
121
122    let status = resp.status();
123
124    if !status.is_client_error() && !status.is_server_error() {
125        let content = resp.text().await?;
126        serde_json::from_str(&content).map_err(Error::from)
127    } else {
128        let content = resp.text().await?;
129        let entity: Option<GetAssignedPermissionSchemeError> = serde_json::from_str(&content).ok();
130        Err(Error::ResponseError(ResponseContent { status, content, entity }))
131    }
132}
133
134/// Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project.  **[Permissions](#permissions) required:** *Administer Jira* [global permission](https://confluence.atlassian.com/x/x4dKLg) or the *Administer Projects* [project permission](https://confluence.atlassian.com/x/yodKLg).
135pub async fn get_project_issue_security_scheme(configuration: &configuration::Configuration, project_key_or_id: &str) -> Result<models::SecurityScheme, Error<GetProjectIssueSecuritySchemeError>> {
136    // add a prefix to parameters to efficiently prevent name collisions
137    let p_project_key_or_id = project_key_or_id;
138
139    let uri_str = format!("{}/rest/api/2/project/{projectKeyOrId}/issuesecuritylevelscheme", configuration.base_path, projectKeyOrId=crate::apis::urlencode(p_project_key_or_id));
140    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
141
142    if let Some(ref user_agent) = configuration.user_agent {
143        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
144    }
145    if let Some(ref token) = configuration.oauth_access_token {
146        req_builder = req_builder.bearer_auth(token.to_owned());
147    };
148    if let Some(ref auth_conf) = configuration.basic_auth {
149        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
150    };
151
152    let req = req_builder.build()?;
153    let resp = configuration.client.execute(req).await?;
154
155    let status = resp.status();
156
157    if !status.is_client_error() && !status.is_server_error() {
158        let content = resp.text().await?;
159        serde_json::from_str(&content).map_err(Error::from)
160    } else {
161        let content = resp.text().await?;
162        let entity: Option<GetProjectIssueSecuritySchemeError> = serde_json::from_str(&content).ok();
163        Err(Error::ResponseError(ResponseContent { status, content, entity }))
164    }
165}
166
167/// Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has access to.  This operation can be accessed anonymously.  **[Permissions](#permissions) required:** *Browse projects* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security levels are only returned for authenticated user with *Set Issue Security* [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project.
168pub async fn get_security_levels_for_project(configuration: &configuration::Configuration, project_key_or_id: &str) -> Result<models::ProjectIssueSecurityLevels, Error<GetSecurityLevelsForProjectError>> {
169    // add a prefix to parameters to efficiently prevent name collisions
170    let p_project_key_or_id = project_key_or_id;
171
172    let uri_str = format!("{}/rest/api/2/project/{projectKeyOrId}/securitylevel", configuration.base_path, projectKeyOrId=crate::apis::urlencode(p_project_key_or_id));
173    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
174
175    if let Some(ref user_agent) = configuration.user_agent {
176        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
177    }
178    if let Some(ref token) = configuration.oauth_access_token {
179        req_builder = req_builder.bearer_auth(token.to_owned());
180    };
181    if let Some(ref auth_conf) = configuration.basic_auth {
182        req_builder = req_builder.basic_auth(auth_conf.0.to_owned(), auth_conf.1.to_owned());
183    };
184
185    let req = req_builder.build()?;
186    let resp = configuration.client.execute(req).await?;
187
188    let status = resp.status();
189
190    if !status.is_client_error() && !status.is_server_error() {
191        let content = resp.text().await?;
192        serde_json::from_str(&content).map_err(Error::from)
193    } else {
194        let content = resp.text().await?;
195        let entity: Option<GetSecurityLevelsForProjectError> = serde_json::from_str(&content).ok();
196        Err(Error::ResponseError(ResponseContent { status, content, entity }))
197    }
198}
199