Sourcetype flow_type = | AuthorizationCode| ClientCredentials| DeviceCode| RefreshToken
Sourcetype token_auth_method = | Basic| Body
Sourcetype pkce_style = | No_Pkce| Plain| S256
Sourcetype authorization_code_config = {authorization_endpoint : Uri.t;client_id : string;client_secret : string;pkce : pkce_style;pkce_verifier : string option;redirect_uri : Uri.t;scope : string list;token_auth_method : token_auth_method;token_endpoint : Uri.t;
} Sourcetype client_credentials_config = {client_id : string;client_secret : string;scope : string list;token_auth_method : token_auth_method;token_endpoint : Uri.t;
} Sourcetype device_code_config = {client_id : string;device_authorization_endpoint : Uri.t;token_endpoint : Uri.t;scope : string list;
} Sourcetype refresh_token_config = {client_id : string;client_secret : string;token_endpoint : Uri.t;refresh_token : string;scope : string list option;token_auth_method : token_auth_method;
} Sourcetype token_response = {access_token : string;token_type : string;expires_in : int option;refresh_token : string option;scope : string option;
} Sourcetype device_code_response = {device_code : string;user_code : string;verification_uri : Uri.t;verification_uri_complete : Uri.t option;expires_in : int;interval : int;
}