# coding: utf-8

# flake8: noqa

"""
    BinoAuth Tenant API

     A comprehensive multi-tenant authentication and authorization API supporting OAuth2, OpenID Connect, API keys, and multiple authentication methods.  ## Features  - **Multi-Tenant Architecture**: Isolated tenant-specific authentication - **OAuth2 & OpenID Connect**: Full OAuth2/OIDC implementation with PKCE support - **API Keys**: Long-lived keys for programmatic access - **Multiple Auth Methods**: Password, magic links, phone OTP, social login, MFA - **Session Management**: Secure session handling with Redis backing - **Comprehensive Security**: Rate limiting, audit logging, secure token handling  ## Authentication Methods  ### 1. Session-Based (Web Applications) - HTTP-only secure cookies - Automatic session management - CSRF protection  ### 2. API Keys (Programmatic Access) - Long-lived keys with scoped permissions - SHA-256 hashed storage - Usage tracking and analytics - **Header**: `X-API-Key: ak_live_...`  ### 3. OAuth2 Bearer Tokens - Short-lived JWT tokens - Full OAuth2/OIDC support - Refresh token capability - **Header**: `Authorization: Bearer ...`  ## Getting Started  ### For Web Applications 1. Use `/auth/login` for password authentication 2. Session cookies are automatically managed 3. Access protected endpoints directly  ### For Mobile Applications   1. Use OAuth2 authorization code flow with PKCE 2. Handle deep links for OAuth callbacks 3. Store and use refresh tokens for long-lived sessions  ### For Backend Services 1. Create API keys via `/api-keys` endpoint 2. Use API keys for direct authentication 3. Generate short-lived tokens when needed  ## Error Handling  All endpoints return structured error responses:  ```json {   \"detail\": \"Error description\",   \"error\": \"error_code\",    \"error_description\": \"Detailed error message\" } ```  ## Rate Limiting  API endpoints are rate limited to prevent abuse: - Authentication endpoints: 10 requests/minute - API key operations: 100 requests/hour   - General endpoints: 1000 requests/hour  ## Support  - Documentation: [API Documentation](https://docs.binoauth.com) - Support: support@binoauth.com - Status: [Status Page](https://status.binoauth.com)

    The version of the OpenAPI document: 1.0.0
    Contact: support@binoauth.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


__version__ = "1.0.0"

# Define package exports
__all__ = [
    "AuthenticationApi",
    "ExternalAuthApi",
    "OAuth2Api",
    "SystemApi",
    "UserProfileApi",
    "AuthenticationApi",
    "OpenidApi",
    "ApiResponse",
    "ApiClient",
    "Configuration",
    "OpenApiException",
    "ApiTypeError",
    "ApiValueError",
    "ApiKeyError",
    "ApiAttributeError",
    "ApiException",
    "ApiKeyTokenRequest",
    "ApiKeyTokenResponse",
    "ClientConfigResponse",
    "ClientDiscoveryResponse",
    "ConsentRequest",
    "Credentials",
    "DeviceAuthResponse",
    "DeviceAuthenticationRequest",
    "DeviceAuthorizationRequest",
    "EmailVerificationRequest",
    "HTTPValidationError",
    "IntrospectTokenRequest",
    "IntrospectTokenResponse",
    "LoginRequest",
    "LoginResponse",
    "LogoutRequest",
    "MFARequest",
    "MagicLinkRequest",
    "PhoneOTPRequest",
    "PhoneOTPVerificationRequest",
    "ProviderResponse",
    "ProviderType",
    "RequestMagicLinkResponse",
    "ResendEmailVerificationRequest",
    "SignupRequest",
    "SignupResponse",
    "TokenRequest",
    "TokenResponse",
    "UserInfoResponse",
    "ValidationError",
    "ValidationErrorLocInner",
    "VerifyMagicLinkCodeRequest",
    "VerifyMagicLinkTokenRequest",
]

# import apis into sdk package
from binoauth.tenant.api.authentication_api import AuthenticationApi as AuthenticationApi
from binoauth.tenant.api.external_auth_api import ExternalAuthApi as ExternalAuthApi
from binoauth.tenant.api.o_auth2_api import OAuth2Api as OAuth2Api
from binoauth.tenant.api.system_api import SystemApi as SystemApi
from binoauth.tenant.api.user_profile_api import UserProfileApi as UserProfileApi
from binoauth.tenant.api.authentication_api import AuthenticationApi as AuthenticationApi
from binoauth.tenant.api.openid_api import OpenidApi as OpenidApi

# import ApiClient
from binoauth.tenant.api_response import ApiResponse as ApiResponse
from binoauth.tenant.api_client import ApiClient as ApiClient
from binoauth.tenant.configuration import Configuration as Configuration
from binoauth.tenant.exceptions import OpenApiException as OpenApiException
from binoauth.tenant.exceptions import ApiTypeError as ApiTypeError
from binoauth.tenant.exceptions import ApiValueError as ApiValueError
from binoauth.tenant.exceptions import ApiKeyError as ApiKeyError
from binoauth.tenant.exceptions import ApiAttributeError as ApiAttributeError
from binoauth.tenant.exceptions import ApiException as ApiException

# import models into sdk package
from binoauth.tenant.models.api_key_token_request import ApiKeyTokenRequest as ApiKeyTokenRequest
from binoauth.tenant.models.api_key_token_response import ApiKeyTokenResponse as ApiKeyTokenResponse
from binoauth.tenant.models.client_config_response import ClientConfigResponse as ClientConfigResponse
from binoauth.tenant.models.client_discovery_response import ClientDiscoveryResponse as ClientDiscoveryResponse
from binoauth.tenant.models.consent_request import ConsentRequest as ConsentRequest
from binoauth.tenant.models.credentials import Credentials as Credentials
from binoauth.tenant.models.device_auth_response import DeviceAuthResponse as DeviceAuthResponse
from binoauth.tenant.models.device_authentication_request import DeviceAuthenticationRequest as DeviceAuthenticationRequest
from binoauth.tenant.models.device_authorization_request import DeviceAuthorizationRequest as DeviceAuthorizationRequest
from binoauth.tenant.models.email_verification_request import EmailVerificationRequest as EmailVerificationRequest
from binoauth.tenant.models.http_validation_error import HTTPValidationError as HTTPValidationError
from binoauth.tenant.models.introspect_token_request import IntrospectTokenRequest as IntrospectTokenRequest
from binoauth.tenant.models.introspect_token_response import IntrospectTokenResponse as IntrospectTokenResponse
from binoauth.tenant.models.login_request import LoginRequest as LoginRequest
from binoauth.tenant.models.login_response import LoginResponse as LoginResponse
from binoauth.tenant.models.logout_request import LogoutRequest as LogoutRequest
from binoauth.tenant.models.mfa_request import MFARequest as MFARequest
from binoauth.tenant.models.magic_link_request import MagicLinkRequest as MagicLinkRequest
from binoauth.tenant.models.phone_otp_request import PhoneOTPRequest as PhoneOTPRequest
from binoauth.tenant.models.phone_otp_verification_request import PhoneOTPVerificationRequest as PhoneOTPVerificationRequest
from binoauth.tenant.models.provider_response import ProviderResponse as ProviderResponse
from binoauth.tenant.models.provider_type import ProviderType as ProviderType
from binoauth.tenant.models.request_magic_link_response import RequestMagicLinkResponse as RequestMagicLinkResponse
from binoauth.tenant.models.resend_email_verification_request import ResendEmailVerificationRequest as ResendEmailVerificationRequest
from binoauth.tenant.models.signup_request import SignupRequest as SignupRequest
from binoauth.tenant.models.signup_response import SignupResponse as SignupResponse
from binoauth.tenant.models.token_request import TokenRequest as TokenRequest
from binoauth.tenant.models.token_response import TokenResponse as TokenResponse
from binoauth.tenant.models.user_info_response import UserInfoResponse as UserInfoResponse
from binoauth.tenant.models.validation_error import ValidationError as ValidationError
from binoauth.tenant.models.validation_error_loc_inner import ValidationErrorLocInner as ValidationErrorLocInner
from binoauth.tenant.models.verify_magic_link_code_request import VerifyMagicLinkCodeRequest as VerifyMagicLinkCodeRequest
from binoauth.tenant.models.verify_magic_link_token_request import VerifyMagicLinkTokenRequest as VerifyMagicLinkTokenRequest
