Skip to main content

systemprompt_api/routes/oauth/endpoints/authorize/
mod.rs

1mod handler;
2pub mod response_builder;
3pub mod validation;
4
5pub use handler::{handle_authorize_get, handle_authorize_post};
6
7use serde::{Deserialize, Serialize};
8use systemprompt_identifiers::ClientId;
9
10#[derive(Debug, Deserialize)]
11pub struct AuthorizeQuery {
12    pub response_type: String,
13    pub client_id: ClientId,
14    pub redirect_uri: Option<String>,
15    pub scope: Option<String>,
16    pub state: Option<String>,
17    pub code_challenge: Option<String>,
18    pub code_challenge_method: Option<String>,
19    pub response_mode: Option<String>,
20    pub display: Option<String>,
21    pub prompt: Option<String>,
22    pub max_age: Option<i64>,
23    pub ui_locales: Option<String>,
24    pub resource: Option<String>,
25}
26
27#[derive(Debug, Serialize)]
28pub struct AuthorizeResponse {
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub code: Option<String>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub state: Option<String>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub error: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub error_description: Option<String>,
37}
38
39#[derive(Debug, Deserialize)]
40pub struct AuthorizeRequest {
41    pub response_type: String,
42    pub client_id: ClientId,
43    pub redirect_uri: Option<String>,
44    pub scope: Option<String>,
45    pub state: Option<String>,
46    pub code_challenge: Option<String>,
47    pub code_challenge_method: Option<String>,
48    pub user_consent: Option<String>,
49    pub username: Option<String>,
50    pub password: Option<String>,
51    pub resource: Option<String>,
52}