""" OpenAPI Schema Extensions for drf-spectacular Custom extensions for JWT authentication and unified response format """ from drf_spectacular.extensions import OpenApiAuthenticationExtension from drf_spectacular.plumbing import build_bearer_security_scheme_object from drf_spectacular.utils import extend_schema, OpenApiResponse from rest_framework import status class JWTAuthenticationExtension(OpenApiAuthenticationExtension): """ OpenAPI extension for JWT Bearer Token authentication """ target_class = 'igny8_core.api.authentication.JWTAuthentication' name = 'JWTAuthentication' def get_security_definition(self, auto_schema): return build_bearer_security_scheme_object( header_name='Authorization', token_prefix='Bearer', bearer_format='JWT' ) class CSRFExemptSessionAuthenticationExtension(OpenApiAuthenticationExtension): """ OpenAPI extension for CSRF-exempt session authentication """ target_class = 'igny8_core.api.authentication.CSRFExemptSessionAuthentication' name = 'SessionAuthentication' def get_security_definition(self, auto_schema): return { 'type': 'apiKey', 'in': 'cookie', 'name': 'sessionid' }