"""
GAM API endpoint constants.

This module defines the OAuth 2.0 and API endpoint paths for GAM (GeneXus Access Manager).
These endpoints are appended to the base_url to construct full API URLs.
"""

GAM_SIGNIN_ENDPOINT = "oauth/gam/signin"
"""
OAuth 2.0 authorization endpoint for the authorization code grant flow.

This endpoint initiates the authorization code flow, directing users to authenticate
with GAM and grant permission for client applications to access their resources.
"""

GAM_OAUTH_AUTHCODE_GRANT_ENDPOINT = "oauth/gam/access_token"
"""
OAuth 2.0 token endpoint for the authorization code grant flow.

This endpoint exchanges an authorization code for access tokens. Used as the final
step in the authorization code grant flow after the user has authenticated and granted
permission. Returns access token and refresh token for subsequent API requests.
"""

GAM_USERINFO_AUTHCODE_GRANT_ENDPOINT = "oauth/gam/userinfo"
"""
OAuth 2.0 user information endpoint for the authorization code grant flow.

This endpoint retrieves user profile information for users authenticated via the
authorization code grant flow. Requires a valid access token obtained from the
token endpoint.
"""

GAM_OAUTH_PASSWORD_GRANT_ENDPOINT = "oauth/gam/v2.0/access_token"
"""
OAuth 2.0 token endpoint for the password grant flow.

This endpoint provides access tokens using username and password credentials.
Used when a user provides their credentials directly to the client application,
which then exchanges them for access and refresh tokens.
"""

GAM_PASSWORD_GRANT_USERINFO_ENDPOINT = "oauth/gam/v2.0/userinfo"
"""
OAuth 2.0 user information endpoint for the password grant flow.

This endpoint retrieves user profile information for users authenticated via the
password grant flow. Requires a valid access token obtained from the token endpoint.
"""

GAM_AUTHENTICATION_TYPES_ENDPOINT = "v1/gam/authentication-types"
"""
Endpoint for discovering available authentication types in the GAM instance.

This public endpoint allows clients to dynamically discover which authentication
mechanisms are supported by the GAM instance without requiring prior knowledge
or authentication.
"""
