traq/apis/
channel_api.rs

1/*
2 * traQ v3
3 *
4 * traQ v3 API
5 *
6 * The version of the OpenAPI document: 3.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::apis::ResponseContent;
15
16/// struct for typed errors of method [`create_channel`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum CreateChannelError {
20    Status400(),
21    Status403(),
22    Status409(),
23    UnknownValue(serde_json::Value),
24}
25
26/// struct for typed errors of method [`edit_channel`]
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[serde(untagged)]
29pub enum EditChannelError {
30    Status400(),
31    Status403(),
32    Status404(),
33    Status409(),
34    UnknownValue(serde_json::Value),
35}
36
37/// struct for typed errors of method [`edit_channel_subscribers`]
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[serde(untagged)]
40pub enum EditChannelSubscribersError {
41    Status400(),
42    Status403(),
43    Status404(),
44    UnknownValue(serde_json::Value),
45}
46
47/// struct for typed errors of method [`edit_channel_topic`]
48#[derive(Debug, Clone, Serialize, Deserialize)]
49#[serde(untagged)]
50pub enum EditChannelTopicError {
51    Status400(),
52    Status404(),
53    UnknownValue(serde_json::Value),
54}
55
56/// struct for typed errors of method [`get_channel`]
57#[derive(Debug, Clone, Serialize, Deserialize)]
58#[serde(untagged)]
59pub enum GetChannelError {
60    Status404(),
61    UnknownValue(serde_json::Value),
62}
63
64/// struct for typed errors of method [`get_channel_bots`]
65#[derive(Debug, Clone, Serialize, Deserialize)]
66#[serde(untagged)]
67pub enum GetChannelBotsError {
68    Status404(),
69    UnknownValue(serde_json::Value),
70}
71
72/// struct for typed errors of method [`get_channel_events`]
73#[derive(Debug, Clone, Serialize, Deserialize)]
74#[serde(untagged)]
75pub enum GetChannelEventsError {
76    Status400(),
77    Status404(),
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`get_channel_pins`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum GetChannelPinsError {
85    Status404(),
86    UnknownValue(serde_json::Value),
87}
88
89/// struct for typed errors of method [`get_channel_stats`]
90#[derive(Debug, Clone, Serialize, Deserialize)]
91#[serde(untagged)]
92pub enum GetChannelStatsError {
93    Status404(),
94    UnknownValue(serde_json::Value),
95}
96
97/// struct for typed errors of method [`get_channel_subscribers`]
98#[derive(Debug, Clone, Serialize, Deserialize)]
99#[serde(untagged)]
100pub enum GetChannelSubscribersError {
101    Status403(),
102    Status404(),
103    UnknownValue(serde_json::Value),
104}
105
106/// struct for typed errors of method [`get_channel_topic`]
107#[derive(Debug, Clone, Serialize, Deserialize)]
108#[serde(untagged)]
109pub enum GetChannelTopicError {
110    Status404(),
111    UnknownValue(serde_json::Value),
112}
113
114/// struct for typed errors of method [`get_channel_viewers`]
115#[derive(Debug, Clone, Serialize, Deserialize)]
116#[serde(untagged)]
117pub enum GetChannelViewersError {
118    Status404(),
119    UnknownValue(serde_json::Value),
120}
121
122/// struct for typed errors of method [`get_channels`]
123#[derive(Debug, Clone, Serialize, Deserialize)]
124#[serde(untagged)]
125pub enum GetChannelsError {
126    UnknownValue(serde_json::Value),
127}
128
129/// struct for typed errors of method [`get_messages`]
130#[derive(Debug, Clone, Serialize, Deserialize)]
131#[serde(untagged)]
132pub enum GetMessagesError {
133    Status400(),
134    Status404(),
135    UnknownValue(serde_json::Value),
136}
137
138/// struct for typed errors of method [`get_user_dm_channel`]
139#[derive(Debug, Clone, Serialize, Deserialize)]
140#[serde(untagged)]
141pub enum GetUserDmChannelError {
142    Status404(),
143    UnknownValue(serde_json::Value),
144}
145
146/// struct for typed errors of method [`post_message`]
147#[derive(Debug, Clone, Serialize, Deserialize)]
148#[serde(untagged)]
149pub enum PostMessageError {
150    Status400(),
151    Status404(),
152    UnknownValue(serde_json::Value),
153}
154
155/// struct for typed errors of method [`set_channel_subscribers`]
156#[derive(Debug, Clone, Serialize, Deserialize)]
157#[serde(untagged)]
158pub enum SetChannelSubscribersError {
159    Status400(),
160    Status403(),
161    Status404(),
162    UnknownValue(serde_json::Value),
163}
164
165/// チャンネルを作成します。 階層が6以上になるチャンネルは作成できません。
166pub async fn create_channel(
167    configuration: &configuration::Configuration,
168    post_channel_request: Option<crate::models::PostChannelRequest>,
169) -> Result<crate::models::Channel, Error<CreateChannelError>> {
170    let local_var_configuration = configuration;
171
172    let local_var_client = &local_var_configuration.client;
173
174    let local_var_uri_str = format!("{}/channels", local_var_configuration.base_path);
175    let mut local_var_req_builder =
176        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
177
178    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
179        local_var_req_builder =
180            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
181    }
182    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
183        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
184    };
185    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
186        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
187    };
188    local_var_req_builder = local_var_req_builder.json(&post_channel_request);
189
190    let local_var_req = local_var_req_builder.build()?;
191    let local_var_resp = local_var_client.execute(local_var_req).await?;
192
193    let local_var_status = local_var_resp.status();
194    let local_var_content = local_var_resp.text().await?;
195
196    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
197        serde_json::from_str(&local_var_content).map_err(Error::from)
198    } else {
199        let local_var_entity: Option<CreateChannelError> =
200            serde_json::from_str(&local_var_content).ok();
201        let local_var_error = ResponseContent {
202            status: local_var_status,
203            content: local_var_content,
204            entity: local_var_entity,
205        };
206        Err(Error::ResponseError(local_var_error))
207    }
208}
209
210/// 指定したチャンネルの情報を変更します。 変更には権限が必要です。 ルートチャンネルに移動させる場合は、`parent`に`00000000-0000-0000-0000-000000000000`を指定してください。
211pub async fn edit_channel(
212    configuration: &configuration::Configuration,
213    channel_id: &str,
214    patch_channel_request: Option<crate::models::PatchChannelRequest>,
215) -> Result<(), Error<EditChannelError>> {
216    let local_var_configuration = configuration;
217
218    let local_var_client = &local_var_configuration.client;
219
220    let local_var_uri_str = format!(
221        "{}/channels/{channelId}",
222        local_var_configuration.base_path,
223        channelId = crate::apis::urlencode(channel_id)
224    );
225    let mut local_var_req_builder =
226        local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
227
228    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
229        local_var_req_builder =
230            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
231    }
232    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
233        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
234    };
235    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
236        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
237    };
238    local_var_req_builder = local_var_req_builder.json(&patch_channel_request);
239
240    let local_var_req = local_var_req_builder.build()?;
241    let local_var_resp = local_var_client.execute(local_var_req).await?;
242
243    let local_var_status = local_var_resp.status();
244    let local_var_content = local_var_resp.text().await?;
245
246    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
247        Ok(())
248    } else {
249        let local_var_entity: Option<EditChannelError> =
250            serde_json::from_str(&local_var_content).ok();
251        let local_var_error = ResponseContent {
252            status: local_var_status,
253            content: local_var_content,
254            entity: local_var_entity,
255        };
256        Err(Error::ResponseError(local_var_error))
257    }
258}
259
260/// 指定したチャンネルの通知購読者を編集します。 リクエストに含めなかったユーザーの通知購読状態は変更しません。 また、存在しないユーザーを指定した場合は無視されます。
261pub async fn edit_channel_subscribers(
262    configuration: &configuration::Configuration,
263    channel_id: &str,
264    patch_channel_subscribers_request: Option<crate::models::PatchChannelSubscribersRequest>,
265) -> Result<(), Error<EditChannelSubscribersError>> {
266    let local_var_configuration = configuration;
267
268    let local_var_client = &local_var_configuration.client;
269
270    let local_var_uri_str = format!(
271        "{}/channels/{channelId}/subscribers",
272        local_var_configuration.base_path,
273        channelId = crate::apis::urlencode(channel_id)
274    );
275    let mut local_var_req_builder =
276        local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
277
278    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
279        local_var_req_builder =
280            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
281    }
282    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
283        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
284    };
285    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
286        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
287    };
288    local_var_req_builder = local_var_req_builder.json(&patch_channel_subscribers_request);
289
290    let local_var_req = local_var_req_builder.build()?;
291    let local_var_resp = local_var_client.execute(local_var_req).await?;
292
293    let local_var_status = local_var_resp.status();
294    let local_var_content = local_var_resp.text().await?;
295
296    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
297        Ok(())
298    } else {
299        let local_var_entity: Option<EditChannelSubscribersError> =
300            serde_json::from_str(&local_var_content).ok();
301        let local_var_error = ResponseContent {
302            status: local_var_status,
303            content: local_var_content,
304            entity: local_var_entity,
305        };
306        Err(Error::ResponseError(local_var_error))
307    }
308}
309
310/// 指定したチャンネルのトピックを編集します。 アーカイブされているチャンネルのトピックは編集できません。
311pub async fn edit_channel_topic(
312    configuration: &configuration::Configuration,
313    channel_id: &str,
314    put_channel_topic_request: Option<crate::models::PutChannelTopicRequest>,
315) -> Result<(), Error<EditChannelTopicError>> {
316    let local_var_configuration = configuration;
317
318    let local_var_client = &local_var_configuration.client;
319
320    let local_var_uri_str = format!(
321        "{}/channels/{channelId}/topic",
322        local_var_configuration.base_path,
323        channelId = crate::apis::urlencode(channel_id)
324    );
325    let mut local_var_req_builder =
326        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
327
328    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
329        local_var_req_builder =
330            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
331    }
332    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
333        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
334    };
335    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
336        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
337    };
338    local_var_req_builder = local_var_req_builder.json(&put_channel_topic_request);
339
340    let local_var_req = local_var_req_builder.build()?;
341    let local_var_resp = local_var_client.execute(local_var_req).await?;
342
343    let local_var_status = local_var_resp.status();
344    let local_var_content = local_var_resp.text().await?;
345
346    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
347        Ok(())
348    } else {
349        let local_var_entity: Option<EditChannelTopicError> =
350            serde_json::from_str(&local_var_content).ok();
351        let local_var_error = ResponseContent {
352            status: local_var_status,
353            content: local_var_content,
354            entity: local_var_entity,
355        };
356        Err(Error::ResponseError(local_var_error))
357    }
358}
359
360/// 指定したチャンネルの情報を取得します。
361pub async fn get_channel(
362    configuration: &configuration::Configuration,
363    channel_id: &str,
364) -> Result<crate::models::Channel, Error<GetChannelError>> {
365    let local_var_configuration = configuration;
366
367    let local_var_client = &local_var_configuration.client;
368
369    let local_var_uri_str = format!(
370        "{}/channels/{channelId}",
371        local_var_configuration.base_path,
372        channelId = crate::apis::urlencode(channel_id)
373    );
374    let mut local_var_req_builder =
375        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
376
377    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
378        local_var_req_builder =
379            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
380    }
381    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
382        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
383    };
384    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
385        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
386    };
387
388    let local_var_req = local_var_req_builder.build()?;
389    let local_var_resp = local_var_client.execute(local_var_req).await?;
390
391    let local_var_status = local_var_resp.status();
392    let local_var_content = local_var_resp.text().await?;
393
394    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
395        serde_json::from_str(&local_var_content).map_err(Error::from)
396    } else {
397        let local_var_entity: Option<GetChannelError> =
398            serde_json::from_str(&local_var_content).ok();
399        let local_var_error = ResponseContent {
400            status: local_var_status,
401            content: local_var_content,
402            entity: local_var_entity,
403        };
404        Err(Error::ResponseError(local_var_error))
405    }
406}
407
408/// 指定したチャンネルに参加しているBOTのリストを取得します。
409pub async fn get_channel_bots(
410    configuration: &configuration::Configuration,
411    channel_id: &str,
412) -> Result<Vec<crate::models::BotUser>, Error<GetChannelBotsError>> {
413    let local_var_configuration = configuration;
414
415    let local_var_client = &local_var_configuration.client;
416
417    let local_var_uri_str = format!(
418        "{}/channels/{channelId}/bots",
419        local_var_configuration.base_path,
420        channelId = crate::apis::urlencode(channel_id)
421    );
422    let mut local_var_req_builder =
423        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
424
425    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
426        local_var_req_builder =
427            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
428    }
429    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
430        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
431    };
432    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
433        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
434    };
435
436    let local_var_req = local_var_req_builder.build()?;
437    let local_var_resp = local_var_client.execute(local_var_req).await?;
438
439    let local_var_status = local_var_resp.status();
440    let local_var_content = local_var_resp.text().await?;
441
442    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
443        serde_json::from_str(&local_var_content).map_err(Error::from)
444    } else {
445        let local_var_entity: Option<GetChannelBotsError> =
446            serde_json::from_str(&local_var_content).ok();
447        let local_var_error = ResponseContent {
448            status: local_var_status,
449            content: local_var_content,
450            entity: local_var_entity,
451        };
452        Err(Error::ResponseError(local_var_error))
453    }
454}
455
456/// 指定したチャンネルのイベントリストを取得します。
457pub async fn get_channel_events(
458    configuration: &configuration::Configuration,
459    channel_id: &str,
460    limit: Option<i32>,
461    offset: Option<i32>,
462    since: Option<String>,
463    until: Option<String>,
464    inclusive: Option<bool>,
465    order: Option<&str>,
466) -> Result<Vec<crate::models::ChannelEvent>, Error<GetChannelEventsError>> {
467    let local_var_configuration = configuration;
468
469    let local_var_client = &local_var_configuration.client;
470
471    let local_var_uri_str = format!(
472        "{}/channels/{channelId}/events",
473        local_var_configuration.base_path,
474        channelId = crate::apis::urlencode(channel_id)
475    );
476    let mut local_var_req_builder =
477        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
478
479    if let Some(ref local_var_str) = limit {
480        local_var_req_builder =
481            local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
482    }
483    if let Some(ref local_var_str) = offset {
484        local_var_req_builder =
485            local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
486    }
487    if let Some(ref local_var_str) = since {
488        local_var_req_builder =
489            local_var_req_builder.query(&[("since", &local_var_str.to_string())]);
490    }
491    if let Some(ref local_var_str) = until {
492        local_var_req_builder =
493            local_var_req_builder.query(&[("until", &local_var_str.to_string())]);
494    }
495    if let Some(ref local_var_str) = inclusive {
496        local_var_req_builder =
497            local_var_req_builder.query(&[("inclusive", &local_var_str.to_string())]);
498    }
499    if let Some(ref local_var_str) = order {
500        local_var_req_builder =
501            local_var_req_builder.query(&[("order", &local_var_str.to_string())]);
502    }
503    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
504        local_var_req_builder =
505            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
506    }
507    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
508        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
509    };
510    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
511        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
512    };
513
514    let local_var_req = local_var_req_builder.build()?;
515    let local_var_resp = local_var_client.execute(local_var_req).await?;
516
517    let local_var_status = local_var_resp.status();
518    let local_var_content = local_var_resp.text().await?;
519
520    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
521        serde_json::from_str(&local_var_content).map_err(Error::from)
522    } else {
523        let local_var_entity: Option<GetChannelEventsError> =
524            serde_json::from_str(&local_var_content).ok();
525        let local_var_error = ResponseContent {
526            status: local_var_status,
527            content: local_var_content,
528            entity: local_var_entity,
529        };
530        Err(Error::ResponseError(local_var_error))
531    }
532}
533
534/// 指定したチャンネルにピン留めされているピンメッセージのリストを取得します。
535pub async fn get_channel_pins(
536    configuration: &configuration::Configuration,
537    channel_id: &str,
538) -> Result<Vec<crate::models::Pin>, Error<GetChannelPinsError>> {
539    let local_var_configuration = configuration;
540
541    let local_var_client = &local_var_configuration.client;
542
543    let local_var_uri_str = format!(
544        "{}/channels/{channelId}/pins",
545        local_var_configuration.base_path,
546        channelId = crate::apis::urlencode(channel_id)
547    );
548    let mut local_var_req_builder =
549        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
550
551    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
552        local_var_req_builder =
553            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
554    }
555    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
556        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
557    };
558    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
559        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
560    };
561
562    let local_var_req = local_var_req_builder.build()?;
563    let local_var_resp = local_var_client.execute(local_var_req).await?;
564
565    let local_var_status = local_var_resp.status();
566    let local_var_content = local_var_resp.text().await?;
567
568    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
569        serde_json::from_str(&local_var_content).map_err(Error::from)
570    } else {
571        let local_var_entity: Option<GetChannelPinsError> =
572            serde_json::from_str(&local_var_content).ok();
573        let local_var_error = ResponseContent {
574            status: local_var_status,
575            content: local_var_content,
576            entity: local_var_entity,
577        };
578        Err(Error::ResponseError(local_var_error))
579    }
580}
581
582/// 指定したチャンネルの統計情報を取得します。
583pub async fn get_channel_stats(
584    configuration: &configuration::Configuration,
585    channel_id: &str,
586) -> Result<crate::models::ChannelStats, Error<GetChannelStatsError>> {
587    let local_var_configuration = configuration;
588
589    let local_var_client = &local_var_configuration.client;
590
591    let local_var_uri_str = format!(
592        "{}/channels/{channelId}/stats",
593        local_var_configuration.base_path,
594        channelId = crate::apis::urlencode(channel_id)
595    );
596    let mut local_var_req_builder =
597        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
598
599    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
600        local_var_req_builder =
601            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
602    }
603    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
604        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
605    };
606    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
607        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
608    };
609
610    let local_var_req = local_var_req_builder.build()?;
611    let local_var_resp = local_var_client.execute(local_var_req).await?;
612
613    let local_var_status = local_var_resp.status();
614    let local_var_content = local_var_resp.text().await?;
615
616    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
617        serde_json::from_str(&local_var_content).map_err(Error::from)
618    } else {
619        let local_var_entity: Option<GetChannelStatsError> =
620            serde_json::from_str(&local_var_content).ok();
621        let local_var_error = ResponseContent {
622            status: local_var_status,
623            content: local_var_content,
624            entity: local_var_entity,
625        };
626        Err(Error::ResponseError(local_var_error))
627    }
628}
629
630/// 指定したチャンネルを通知購読しているユーザーのUUIDのリストを取得します。
631pub async fn get_channel_subscribers(
632    configuration: &configuration::Configuration,
633    channel_id: &str,
634) -> Result<Vec<uuid::Uuid>, Error<GetChannelSubscribersError>> {
635    let local_var_configuration = configuration;
636
637    let local_var_client = &local_var_configuration.client;
638
639    let local_var_uri_str = format!(
640        "{}/channels/{channelId}/subscribers",
641        local_var_configuration.base_path,
642        channelId = crate::apis::urlencode(channel_id)
643    );
644    let mut local_var_req_builder =
645        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
646
647    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
648        local_var_req_builder =
649            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
650    }
651    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
652        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
653    };
654    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
655        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
656    };
657
658    let local_var_req = local_var_req_builder.build()?;
659    let local_var_resp = local_var_client.execute(local_var_req).await?;
660
661    let local_var_status = local_var_resp.status();
662    let local_var_content = local_var_resp.text().await?;
663
664    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
665        serde_json::from_str(&local_var_content).map_err(Error::from)
666    } else {
667        let local_var_entity: Option<GetChannelSubscribersError> =
668            serde_json::from_str(&local_var_content).ok();
669        let local_var_error = ResponseContent {
670            status: local_var_status,
671            content: local_var_content,
672            entity: local_var_entity,
673        };
674        Err(Error::ResponseError(local_var_error))
675    }
676}
677
678/// 指定したチャンネルのトピックを取得します。
679pub async fn get_channel_topic(
680    configuration: &configuration::Configuration,
681    channel_id: &str,
682) -> Result<crate::models::ChannelTopic, Error<GetChannelTopicError>> {
683    let local_var_configuration = configuration;
684
685    let local_var_client = &local_var_configuration.client;
686
687    let local_var_uri_str = format!(
688        "{}/channels/{channelId}/topic",
689        local_var_configuration.base_path,
690        channelId = crate::apis::urlencode(channel_id)
691    );
692    let mut local_var_req_builder =
693        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
694
695    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
696        local_var_req_builder =
697            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
698    }
699    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
700        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
701    };
702    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
703        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
704    };
705
706    let local_var_req = local_var_req_builder.build()?;
707    let local_var_resp = local_var_client.execute(local_var_req).await?;
708
709    let local_var_status = local_var_resp.status();
710    let local_var_content = local_var_resp.text().await?;
711
712    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
713        serde_json::from_str(&local_var_content).map_err(Error::from)
714    } else {
715        let local_var_entity: Option<GetChannelTopicError> =
716            serde_json::from_str(&local_var_content).ok();
717        let local_var_error = ResponseContent {
718            status: local_var_status,
719            content: local_var_content,
720            entity: local_var_entity,
721        };
722        Err(Error::ResponseError(local_var_error))
723    }
724}
725
726/// 指定したチャンネルの閲覧者のリストを取得します。
727pub async fn get_channel_viewers(
728    configuration: &configuration::Configuration,
729    channel_id: &str,
730) -> Result<Vec<crate::models::ChannelViewer>, Error<GetChannelViewersError>> {
731    let local_var_configuration = configuration;
732
733    let local_var_client = &local_var_configuration.client;
734
735    let local_var_uri_str = format!(
736        "{}/channels/{channelId}/viewers",
737        local_var_configuration.base_path,
738        channelId = crate::apis::urlencode(channel_id)
739    );
740    let mut local_var_req_builder =
741        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
742
743    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
744        local_var_req_builder =
745            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
746    }
747    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
748        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
749    };
750    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
751        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
752    };
753
754    let local_var_req = local_var_req_builder.build()?;
755    let local_var_resp = local_var_client.execute(local_var_req).await?;
756
757    let local_var_status = local_var_resp.status();
758    let local_var_content = local_var_resp.text().await?;
759
760    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
761        serde_json::from_str(&local_var_content).map_err(Error::from)
762    } else {
763        let local_var_entity: Option<GetChannelViewersError> =
764            serde_json::from_str(&local_var_content).ok();
765        let local_var_error = ResponseContent {
766            status: local_var_status,
767            content: local_var_content,
768            entity: local_var_entity,
769        };
770        Err(Error::ResponseError(local_var_error))
771    }
772}
773
774/// チャンネルのリストを取得します。
775pub async fn get_channels(
776    configuration: &configuration::Configuration,
777    include_dm: Option<bool>,
778) -> Result<crate::models::ChannelList, Error<GetChannelsError>> {
779    let local_var_configuration = configuration;
780
781    let local_var_client = &local_var_configuration.client;
782
783    let local_var_uri_str = format!("{}/channels", local_var_configuration.base_path);
784    let mut local_var_req_builder =
785        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
786
787    if let Some(ref local_var_str) = include_dm {
788        local_var_req_builder =
789            local_var_req_builder.query(&[("include-dm", &local_var_str.to_string())]);
790    }
791    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
792        local_var_req_builder =
793            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
794    }
795    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
796        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
797    };
798    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
799        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
800    };
801
802    let local_var_req = local_var_req_builder.build()?;
803    let local_var_resp = local_var_client.execute(local_var_req).await?;
804
805    let local_var_status = local_var_resp.status();
806    let local_var_content = local_var_resp.text().await?;
807
808    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
809        serde_json::from_str(&local_var_content).map_err(Error::from)
810    } else {
811        let local_var_entity: Option<GetChannelsError> =
812            serde_json::from_str(&local_var_content).ok();
813        let local_var_error = ResponseContent {
814            status: local_var_status,
815            content: local_var_content,
816            entity: local_var_entity,
817        };
818        Err(Error::ResponseError(local_var_error))
819    }
820}
821
822/// 指定したチャンネルのメッセージのリストを取得します。
823pub async fn get_messages(
824    configuration: &configuration::Configuration,
825    channel_id: &str,
826    limit: Option<i32>,
827    offset: Option<i32>,
828    since: Option<String>,
829    until: Option<String>,
830    inclusive: Option<bool>,
831    order: Option<&str>,
832) -> Result<Vec<crate::models::Message>, Error<GetMessagesError>> {
833    let local_var_configuration = configuration;
834
835    let local_var_client = &local_var_configuration.client;
836
837    let local_var_uri_str = format!(
838        "{}/channels/{channelId}/messages",
839        local_var_configuration.base_path,
840        channelId = crate::apis::urlencode(channel_id)
841    );
842    let mut local_var_req_builder =
843        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
844
845    if let Some(ref local_var_str) = limit {
846        local_var_req_builder =
847            local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
848    }
849    if let Some(ref local_var_str) = offset {
850        local_var_req_builder =
851            local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
852    }
853    if let Some(ref local_var_str) = since {
854        local_var_req_builder =
855            local_var_req_builder.query(&[("since", &local_var_str.to_string())]);
856    }
857    if let Some(ref local_var_str) = until {
858        local_var_req_builder =
859            local_var_req_builder.query(&[("until", &local_var_str.to_string())]);
860    }
861    if let Some(ref local_var_str) = inclusive {
862        local_var_req_builder =
863            local_var_req_builder.query(&[("inclusive", &local_var_str.to_string())]);
864    }
865    if let Some(ref local_var_str) = order {
866        local_var_req_builder =
867            local_var_req_builder.query(&[("order", &local_var_str.to_string())]);
868    }
869    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
870        local_var_req_builder =
871            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
872    }
873    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
874        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
875    };
876    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
877        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
878    };
879
880    let local_var_req = local_var_req_builder.build()?;
881    let local_var_resp = local_var_client.execute(local_var_req).await?;
882
883    let local_var_status = local_var_resp.status();
884    let local_var_content = local_var_resp.text().await?;
885
886    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
887        serde_json::from_str(&local_var_content).map_err(Error::from)
888    } else {
889        let local_var_entity: Option<GetMessagesError> =
890            serde_json::from_str(&local_var_content).ok();
891        let local_var_error = ResponseContent {
892            status: local_var_status,
893            content: local_var_content,
894            entity: local_var_entity,
895        };
896        Err(Error::ResponseError(local_var_error))
897    }
898}
899
900/// 指定したユーザーとのダイレクトメッセージチャンネルの情報を返します。 ダイレクトメッセージチャンネルが存在しなかった場合、自動的に作成されます。
901pub async fn get_user_dm_channel(
902    configuration: &configuration::Configuration,
903    user_id: &str,
904) -> Result<crate::models::DmChannel, Error<GetUserDmChannelError>> {
905    let local_var_configuration = configuration;
906
907    let local_var_client = &local_var_configuration.client;
908
909    let local_var_uri_str = format!(
910        "{}/users/{userId}/dm-channel",
911        local_var_configuration.base_path,
912        userId = crate::apis::urlencode(user_id)
913    );
914    let mut local_var_req_builder =
915        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
916
917    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
918        local_var_req_builder =
919            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
920    }
921    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
922        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
923    };
924    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
925        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
926    };
927
928    let local_var_req = local_var_req_builder.build()?;
929    let local_var_resp = local_var_client.execute(local_var_req).await?;
930
931    let local_var_status = local_var_resp.status();
932    let local_var_content = local_var_resp.text().await?;
933
934    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
935        serde_json::from_str(&local_var_content).map_err(Error::from)
936    } else {
937        let local_var_entity: Option<GetUserDmChannelError> =
938            serde_json::from_str(&local_var_content).ok();
939        let local_var_error = ResponseContent {
940            status: local_var_status,
941            content: local_var_content,
942            entity: local_var_entity,
943        };
944        Err(Error::ResponseError(local_var_error))
945    }
946}
947
948/// 指定したチャンネルにメッセージを投稿します。 embedをtrueに指定すると、メッセージ埋め込みが自動で行われます。 アーカイブされているチャンネルに投稿することはできません。
949pub async fn post_message(
950    configuration: &configuration::Configuration,
951    channel_id: &str,
952    post_message_request: Option<crate::models::PostMessageRequest>,
953) -> Result<crate::models::Message, Error<PostMessageError>> {
954    let local_var_configuration = configuration;
955
956    let local_var_client = &local_var_configuration.client;
957
958    let local_var_uri_str = format!(
959        "{}/channels/{channelId}/messages",
960        local_var_configuration.base_path,
961        channelId = crate::apis::urlencode(channel_id)
962    );
963    let mut local_var_req_builder =
964        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
965
966    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
967        local_var_req_builder =
968            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
969    }
970    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
971        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
972    };
973    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
974        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
975    };
976    local_var_req_builder = local_var_req_builder.json(&post_message_request);
977
978    let local_var_req = local_var_req_builder.build()?;
979    let local_var_resp = local_var_client.execute(local_var_req).await?;
980
981    let local_var_status = local_var_resp.status();
982    let local_var_content = local_var_resp.text().await?;
983
984    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
985        serde_json::from_str(&local_var_content).map_err(Error::from)
986    } else {
987        let local_var_entity: Option<PostMessageError> =
988            serde_json::from_str(&local_var_content).ok();
989        let local_var_error = ResponseContent {
990            status: local_var_status,
991            content: local_var_content,
992            entity: local_var_entity,
993        };
994        Err(Error::ResponseError(local_var_error))
995    }
996}
997
998/// 指定したチャンネルの通知購読者を設定します。 リクエストに含めなかったユーザーの通知購読状態はオフになります。 また、存在しないユーザーを指定した場合は無視されます。
999pub async fn set_channel_subscribers(
1000    configuration: &configuration::Configuration,
1001    channel_id: &str,
1002    put_channel_subscribers_request: Option<crate::models::PutChannelSubscribersRequest>,
1003) -> Result<(), Error<SetChannelSubscribersError>> {
1004    let local_var_configuration = configuration;
1005
1006    let local_var_client = &local_var_configuration.client;
1007
1008    let local_var_uri_str = format!(
1009        "{}/channels/{channelId}/subscribers",
1010        local_var_configuration.base_path,
1011        channelId = crate::apis::urlencode(channel_id)
1012    );
1013    let mut local_var_req_builder =
1014        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1015
1016    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1017        local_var_req_builder =
1018            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1019    }
1020    if let Some(ref local_var_token) = local_var_configuration.oauth_access_token {
1021        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1022    };
1023    if let Some(ref local_var_token) = local_var_configuration.bearer_access_token {
1024        local_var_req_builder = local_var_req_builder.bearer_auth(local_var_token.to_owned());
1025    };
1026    local_var_req_builder = local_var_req_builder.json(&put_channel_subscribers_request);
1027
1028    let local_var_req = local_var_req_builder.build()?;
1029    let local_var_resp = local_var_client.execute(local_var_req).await?;
1030
1031    let local_var_status = local_var_resp.status();
1032    let local_var_content = local_var_resp.text().await?;
1033
1034    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1035        Ok(())
1036    } else {
1037        let local_var_entity: Option<SetChannelSubscribersError> =
1038            serde_json::from_str(&local_var_content).ok();
1039        let local_var_error = ResponseContent {
1040            status: local_var_status,
1041            content: local_var_content,
1042            entity: local_var_entity,
1043        };
1044        Err(Error::ResponseError(local_var_error))
1045    }
1046}