1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
//! PCS External API client — `v0.3.0`.
//!
//! Phantom-typed gRPC client for the PCS External Developer Platform
//! (`chat.external` package). OAuth2 JWT auth is built-in via
//! `ppoppo-sdk-core`'s `TokenCache` + `AuthInterceptor`.
//!
//! ## Quick start
//!
//! ```no_run
//! # async fn example() -> Result<(), pcs_external::Error> {
//! use pcs_external::{PcsExternalClientBuilder, scopes::SendOnly};
//! use pcs_external::types::{Ppnum, RecipientList, TemplateId};
//!
//! // Build a send-only client from environment variables.
//! let client = PcsExternalClientBuilder::from_env()
//! .ok_or_else(|| pcs_external::Error::Transport("missing env vars".into()))?
//! .build::<SendOnly>()
//! .await?;
//!
//! let recipients = RecipientList::from_ppnums(vec![
//! Ppnum::try_new("12345678901").map_err(|e| pcs_external::Error::Transport(e.to_string()))?,
//! ])
//! .map_err(|e| pcs_external::Error::Transport(e.to_string()))?;
//!
//! let outcome = client.send_alert(&TemplateId::new("tmpl_v1"), &recipients, None).await?;
//! println!("queued: {:?}", outcome.id);
//! # Ok(())
//! # }
//! ```
//!
//! ## Scope sets
//!
//! Construct the client with the scope set that matches your OAuth2 grant.
//! Method availability is enforced at compile time:
//!
//! | Scope set | `send_alert` | `get_send_status` |
//! |---|:---:|:---:|
//! | `ReadOnly` | — | ✓ |
//! | `SendOnly` | ✓ | — |
//! | `ReadAndSend` | ✓ | ✓ |
//! | `FullAccess` | ✓ | ✓ |
pub use PcsExternalClientBuilder;
pub use PcsExternalClient;
pub use Error;
pub use prost_types;
pub use tonic;