"""
Cómo se documenta la autenticación de la API.

Sin esta extensión, el esquema generado no menciona cómo autenticarse: quien
lea la documentación va a ver los endpoints y ninguna forma de llamarlos. Una
documentación que omite eso no está incompleta, está rota (principio IV).
"""

from drf_spectacular.extensions import OpenApiAuthenticationExtension


class ApiKeyAuthenticationScheme(OpenApiAuthenticationExtension):
    target_class = 'apps.accounts.authentication.ApiKeyAuthentication'
    name = 'ApiKeyAuth'

    def get_security_definition(self, auto_schema):
        return {
            'type': 'apiKey',
            'in': 'header',
            'name': 'Authorization',
            'description': 'Formato: `Api-Key <clave>`',
        }
