drf-spectacular-auth


Namedrf-spectacular-auth JSON
Version 1.2.1 PyPI version JSON
download
home_pageNone
SummaryEnhanced Authentication UI for DRF Spectacular with AWS Cognito support and Django integration
upload_time2025-08-29 14:40:13
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords django drf spectacular swagger cognito auth ui
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # DRF Spectacular Auth

πŸ” **Authentication UI for DRF Spectacular with AWS Cognito support**

[![PyPI version](https://badge.fury.io/py/drf-spectacular-auth.svg)](https://badge.fury.io/py/drf-spectacular-auth)
[![Python](https://img.shields.io/pypi/pyversions/drf-spectacular-auth.svg)](https://pypi.org/project/drf-spectacular-auth/)
[![Django](https://img.shields.io/badge/django-3.2%2B-blue.svg)](https://www.djangoproject.com/)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)

A Django package that adds a beautiful authentication panel to your DRF Spectacular (Swagger UI) documentation, with built-in support for AWS Cognito and extensible authentication providers.

## πŸ†• What's New in v1.2.0

- βœ… **Fixed topbar issues** - No more unwanted UI overlays
- 🎯 **Proper template inheritance** - Uses correct `{% extends 'drf_spectacular/swagger_ui.html' %}`
- 🧹 **Major code cleanup** - 50% reduction in files, 800+ lines of code removed
- ⚑ **Improved performance** - Faster loading and cleaner structure
- πŸ“ **Simplified architecture** - Easier maintenance and understanding

## ✨ Features

- 🎨 **Beautiful UI**: Clean, modern authentication panel that integrates seamlessly with Swagger UI
- πŸ” **AWS Cognito Support**: Built-in integration with AWS Cognito User Pools
- πŸ“‹ **Token Management**: Easy token copying with clipboard integration and manual fallback
- 🎯 **Auto Authorization**: Automatically populates Swagger UI authorization headers
- 🎨 **Customizable**: Flexible theming and positioning options
- 🌍 **i18n Ready**: Multi-language support (Korean, English, Japanese)
- πŸ”§ **Extensible**: Plugin system for additional authentication providers
- πŸ“¦ **Easy Integration**: Minimal setup with sensible defaults

## πŸš€ Quick Start

### Installation

```bash
pip install drf-spectacular-auth
```

Or get the latest version:

```bash
pip install --upgrade drf-spectacular-auth
```

### Basic Setup

1. Add to your Django settings:

```python
INSTALLED_APPS = [
    'drf_spectacular_auth',  # Add 'drf_spectacular_auth' before 'drf_spectacular'
    'drf_spectacular',
    # ... your other apps
]

# Optional: Add authentication backend for better integration
AUTHENTICATION_BACKENDS = [
    'drf_spectacular_auth.backend.SpectacularAuthBackend',
    'django.contrib.auth.backends.ModelBackend',  # Keep default backend
]

# Optional: Add middleware for automatic authentication
MIDDLEWARE = [
    # ... your existing middleware
    'drf_spectacular_auth.middleware.SpectacularAuthMiddleware',
    # ... rest of your middleware
]

DRF_SPECTACULAR_AUTH = {
    'COGNITO_REGION': 'your-aws-region',
    'COGNITO_CLIENT_ID': 'your-cognito-client-id',
    'COGNITO_CLIENT_SECRET': 'your-client-secret',  # Private client인 κ²½μš°μ—λ§Œ ν•„μš”
    
    # Optional: User management settings
    'AUTO_CREATE_USERS': True,  # Auto-create users from Cognito
    'REQUIRE_AUTHENTICATION': False,  # Require auth to access Swagger UI
}
```

2. Update your URLs:

```python
from drf_spectacular_auth.views import SpectacularAuthSwaggerView

urlpatterns = [
    path('api/auth/', include('drf_spectacular_auth.urls')),  # Authentication endpoints
    path('api/docs/', SpectacularAuthSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
    # ... your other urls
]
```

3. That's it! πŸŽ‰ Your Swagger UI now has an authentication panel.

## πŸ“ Examples

Please Example Check [examples/](./examples/).

- **[basic_usage/](./examples/basic_usage/)** - Basic Django + DRF + AWS Cognito integration example
- **cognito_integration/** - AWS Cognito integration (Not yet)
- **custom_theming/** - Custom thema example (Not yet)  
- **hooks_example/** - Login and Logout hook example (Not yet)

### Test

```bash
cd examples/basic_usage
pip install -r requirements.txt
python manage.py migrate
python manage.py runserver
```

Check browser `http://localhost:8000/docs/` 

## πŸ—οΈ Architecture

### Integration Strategies

This package offers multiple integration strategies to suit different use cases:

**1. Simple Auth Panel (Default)**
- Adds authentication panel to Swagger UI
- Minimal configuration required
- Good for basic documentation with optional authentication

**2. Middleware Integration (Recommended)**
- Automatic authentication handling
- Session-based auth persistence
- Better integration with existing Django auth

**3. Backend Integration (Advanced)**
- Full Django user integration
- Auto-create users from Cognito
- Supports existing Django permission systems

### Comparison with django-auth-adfs

Unlike django-auth-adfs which focuses on ADFS/Azure AD integration, this package:
- Specializes in AWS Cognito authentication
- Focuses on API documentation (Swagger UI) integration
- Offers lighter-weight integration options
- Supports both simple overlay and full Django auth integration

## βš™οΈ Configuration

### AWS Cognito Client Types

**Public Client** (Basic):
- Not Client Secret
- `COGNITO_CLIENT_SECRET=None`

**Private Client** (Enhanced):
- Need Client Secret
- Must have `COGNITO_CLIENT_SECRET`
- Automatic calculate SECRET_HASH

```python
# Public Client (Basic)
DRF_SPECTACULAR_AUTH = {
    'COGNITO_REGION': 'ap-northeast-2',
    'COGNITO_CLIENT_ID': 'your-public-client-id',
}

# Private Client (Enhanced)
DRF_SPECTACULAR_AUTH = {
    'COGNITO_REGION': 'ap-northeast-2',
    'COGNITO_CLIENT_ID': 'your-private-client-id',
    'COGNITO_CLIENT_SECRET': os.getenv('COGNITO_CLIENT_SECRET'),
}
```

### Full Configuration Options

```python
DRF_SPECTACULAR_AUTH = {
    # AWS Cognito Settings
    'COGNITO_REGION': 'ap-northeast-2',
    'COGNITO_CLIENT_ID': 'your-client-id',
    'COGNITO_CLIENT_SECRET': None,
    
    # API Endpoints
    'LOGIN_ENDPOINT': '/api/auth/login/',
    'LOGOUT_ENDPOINT': '/api/auth/logout/',
    
    # UI Settings
    'PANEL_POSITION': 'top-right',  # top-left, top-right, bottom-left, bottom-right
    'PANEL_STYLE': 'floating',      # floating, embedded
    'AUTO_AUTHORIZE': True,         # Auto-fill authorization headers
    'SHOW_COPY_BUTTON': True,       # Show token copy button
    'SHOW_USER_INFO': True,         # Show user email in panel
    
    # Theming
    'THEME': {
        'PRIMARY_COLOR': '#61affe',
        'SUCCESS_COLOR': '#28a745',
        'ERROR_COLOR': '#dc3545',
        'BACKGROUND_COLOR': '#ffffff',
        'BORDER_RADIUS': '8px',
        'SHADOW': '0 2px 10px rgba(0,0,0,0.1)',
    },
    
    # Localization
    'DEFAULT_LANGUAGE': 'ko',
    'SUPPORTED_LANGUAGES': ['ko', 'en', 'ja'],
    
    # Security
    'TOKEN_STORAGE': 'localStorage',  # localStorage, sessionStorage
    'CSRF_PROTECTION': True,
    
    # User Management
    'AUTO_CREATE_USERS': False,  # Auto-create users from successful authentication
    'CREATE_TEMP_USER': True,   # Create temporary users for documentation access
    'REQUIRE_AUTHENTICATION': False,  # Require auth to access Swagger UI
    
    # Extensibility
    'CUSTOM_AUTH_PROVIDERS': [],
    'HOOKS': {
        'PRE_LOGIN': None,
        'POST_LOGIN': None,
        'PRE_LOGOUT': None,
        'POST_LOGOUT': None,
    }
}
```

## 🎨 Customization

### Custom Authentication Provider

```python
from drf_spectacular_auth.providers.base import AuthProvider

class CustomAuthProvider(AuthProvider):
    def authenticate(self, credentials):
        # Your custom authentication logic
        return {
            'access_token': 'your-token',
            'user': {'email': 'user@example.com'}
        }
    
    def get_user_info(self, token):
        # Get user information from token
        return {'email': 'user@example.com'}

# Register your provider
DRF_SPECTACULAR_AUTH = {
    'CUSTOM_AUTH_PROVIDERS': [
        'path.to.your.CustomAuthProvider'
    ]
}
```

### Custom Templates

```python
DRF_SPECTACULAR_AUTH = {
    'CUSTOM_TEMPLATES': {
        'auth_panel': 'your_app/custom_auth_panel.html',
        'login_form': 'your_app/custom_login_form.html',
    }
}
```

## πŸ› Troubleshooting

### Common Issues

**Q: I see unwanted topbar in my Swagger UI**  
A: Update to v1.2.0+ which fixes the template inheritance issue.

**Q: Authentication panel is not showing**  
A: Make sure you're using `SpectacularAuthSwaggerView` instead of the default Swagger view.

**Q: Token not being auto-authorized in Swagger**  
A: Verify that `AUTO_AUTHORIZE: True` is set in your settings and check browser console for errors.

**Q: AWS Cognito authentication fails**  
A: Check your Cognito configuration:
- Verify `COGNITO_REGION`, `COGNITO_CLIENT_ID` are correct
- For private clients, ensure `COGNITO_CLIENT_SECRET` is set
- Check AWS Cognito logs for detailed error messages

**Q: Template loading errors**  
A: Ensure `drf_spectacular_auth` is added to `INSTALLED_APPS` before `drf_spectacular`.

### Migration from Previous Versions

**From v1.1.x to v1.2.0:**
- No breaking changes - just update your package
- Topbar issues will be automatically resolved
- Remove any custom workarounds for template conflicts

## πŸ”§ Development

### Local Development

```bash
git clone https://github.com/CodeMath/drf-spectacular-auth.git
cd drf-spectacular-auth
pip install -e ".[dev]"
```

### Running Tests

```bash
pytest
pytest --cov=drf_spectacular_auth
```

### Code Quality

```bash
black .
isort .
flake8
```

## 🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## πŸ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## πŸ™ Acknowledgments

- [DRF Spectacular](https://github.com/tfranzel/drf-spectacular) for the excellent API documentation framework
- [AWS Cognito](https://aws.amazon.com/cognito/) for authentication services
- [Swagger UI](https://swagger.io/tools/swagger-ui/) for the beautiful API documentation interface

## πŸ“š Links

- [Documentation](https://github.com/CodeMath/drf-spectacular-auth#readme)
- [PyPI](https://pypi.org/project/drf-spectacular-auth/)
- [GitHub](https://github.com/CodeMath/drf-spectacular-auth)
- [Issues](https://github.com/CodeMath/drf-spectacular-auth/issues)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "drf-spectacular-auth",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "django, drf, spectacular, swagger, cognito, auth, ui",
    "author": null,
    "author_email": "CodeMath <jadecon2655@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1d/84/615d1040c04daa2ba7f82a1c58391f7f7ec30b260a98663274145f0ceae6/drf_spectacular_auth-1.2.1.tar.gz",
    "platform": null,
    "description": "# DRF Spectacular Auth\n\n\ud83d\udd10 **Authentication UI for DRF Spectacular with AWS Cognito support**\n\n[![PyPI version](https://badge.fury.io/py/drf-spectacular-auth.svg)](https://badge.fury.io/py/drf-spectacular-auth)\n[![Python](https://img.shields.io/pypi/pyversions/drf-spectacular-auth.svg)](https://pypi.org/project/drf-spectacular-auth/)\n[![Django](https://img.shields.io/badge/django-3.2%2B-blue.svg)](https://www.djangoproject.com/)\n[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n\nA Django package that adds a beautiful authentication panel to your DRF Spectacular (Swagger UI) documentation, with built-in support for AWS Cognito and extensible authentication providers.\n\n## \ud83c\udd95 What's New in v1.2.0\n\n- \u2705 **Fixed topbar issues** - No more unwanted UI overlays\n- \ud83c\udfaf **Proper template inheritance** - Uses correct `{% extends 'drf_spectacular/swagger_ui.html' %}`\n- \ud83e\uddf9 **Major code cleanup** - 50% reduction in files, 800+ lines of code removed\n- \u26a1 **Improved performance** - Faster loading and cleaner structure\n- \ud83d\udcc1 **Simplified architecture** - Easier maintenance and understanding\n\n## \u2728 Features\n\n- \ud83c\udfa8 **Beautiful UI**: Clean, modern authentication panel that integrates seamlessly with Swagger UI\n- \ud83d\udd10 **AWS Cognito Support**: Built-in integration with AWS Cognito User Pools\n- \ud83d\udccb **Token Management**: Easy token copying with clipboard integration and manual fallback\n- \ud83c\udfaf **Auto Authorization**: Automatically populates Swagger UI authorization headers\n- \ud83c\udfa8 **Customizable**: Flexible theming and positioning options\n- \ud83c\udf0d **i18n Ready**: Multi-language support (Korean, English, Japanese)\n- \ud83d\udd27 **Extensible**: Plugin system for additional authentication providers\n- \ud83d\udce6 **Easy Integration**: Minimal setup with sensible defaults\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install drf-spectacular-auth\n```\n\nOr get the latest version:\n\n```bash\npip install --upgrade drf-spectacular-auth\n```\n\n### Basic Setup\n\n1. Add to your Django settings:\n\n```python\nINSTALLED_APPS = [\n    'drf_spectacular_auth',  # Add 'drf_spectacular_auth' before 'drf_spectacular'\n    'drf_spectacular',\n    # ... your other apps\n]\n\n# Optional: Add authentication backend for better integration\nAUTHENTICATION_BACKENDS = [\n    'drf_spectacular_auth.backend.SpectacularAuthBackend',\n    'django.contrib.auth.backends.ModelBackend',  # Keep default backend\n]\n\n# Optional: Add middleware for automatic authentication\nMIDDLEWARE = [\n    # ... your existing middleware\n    'drf_spectacular_auth.middleware.SpectacularAuthMiddleware',\n    # ... rest of your middleware\n]\n\nDRF_SPECTACULAR_AUTH = {\n    'COGNITO_REGION': 'your-aws-region',\n    'COGNITO_CLIENT_ID': 'your-cognito-client-id',\n    'COGNITO_CLIENT_SECRET': 'your-client-secret',  # Private client\uc778 \uacbd\uc6b0\uc5d0\ub9cc \ud544\uc694\n    \n    # Optional: User management settings\n    'AUTO_CREATE_USERS': True,  # Auto-create users from Cognito\n    'REQUIRE_AUTHENTICATION': False,  # Require auth to access Swagger UI\n}\n```\n\n2. Update your URLs:\n\n```python\nfrom drf_spectacular_auth.views import SpectacularAuthSwaggerView\n\nurlpatterns = [\n    path('api/auth/', include('drf_spectacular_auth.urls')),  # Authentication endpoints\n    path('api/docs/', SpectacularAuthSwaggerView.as_view(url_name='schema'), name='swagger-ui'),\n    # ... your other urls\n]\n```\n\n3. That's it! \ud83c\udf89 Your Swagger UI now has an authentication panel.\n\n## \ud83d\udcc1 Examples\n\nPlease Example Check [examples/](./examples/).\n\n- **[basic_usage/](./examples/basic_usage/)** - Basic Django + DRF + AWS Cognito integration example\n- **cognito_integration/** - AWS Cognito integration (Not yet)\n- **custom_theming/** - Custom thema example (Not yet)  \n- **hooks_example/** - Login and Logout hook example (Not yet)\n\n### Test\n\n```bash\ncd examples/basic_usage\npip install -r requirements.txt\npython manage.py migrate\npython manage.py runserver\n```\n\nCheck browser `http://localhost:8000/docs/` \n\n## \ud83c\udfd7\ufe0f Architecture\n\n### Integration Strategies\n\nThis package offers multiple integration strategies to suit different use cases:\n\n**1. Simple Auth Panel (Default)**\n- Adds authentication panel to Swagger UI\n- Minimal configuration required\n- Good for basic documentation with optional authentication\n\n**2. Middleware Integration (Recommended)**\n- Automatic authentication handling\n- Session-based auth persistence\n- Better integration with existing Django auth\n\n**3. Backend Integration (Advanced)**\n- Full Django user integration\n- Auto-create users from Cognito\n- Supports existing Django permission systems\n\n### Comparison with django-auth-adfs\n\nUnlike django-auth-adfs which focuses on ADFS/Azure AD integration, this package:\n- Specializes in AWS Cognito authentication\n- Focuses on API documentation (Swagger UI) integration\n- Offers lighter-weight integration options\n- Supports both simple overlay and full Django auth integration\n\n## \u2699\ufe0f Configuration\n\n### AWS Cognito Client Types\n\n**Public Client** (Basic):\n- Not Client Secret\n- `COGNITO_CLIENT_SECRET=None`\n\n**Private Client** (Enhanced):\n- Need Client Secret\n- Must have `COGNITO_CLIENT_SECRET`\n- Automatic calculate SECRET_HASH\n\n```python\n# Public Client (Basic)\nDRF_SPECTACULAR_AUTH = {\n    'COGNITO_REGION': 'ap-northeast-2',\n    'COGNITO_CLIENT_ID': 'your-public-client-id',\n}\n\n# Private Client (Enhanced)\nDRF_SPECTACULAR_AUTH = {\n    'COGNITO_REGION': 'ap-northeast-2',\n    'COGNITO_CLIENT_ID': 'your-private-client-id',\n    'COGNITO_CLIENT_SECRET': os.getenv('COGNITO_CLIENT_SECRET'),\n}\n```\n\n### Full Configuration Options\n\n```python\nDRF_SPECTACULAR_AUTH = {\n    # AWS Cognito Settings\n    'COGNITO_REGION': 'ap-northeast-2',\n    'COGNITO_CLIENT_ID': 'your-client-id',\n    'COGNITO_CLIENT_SECRET': None,\n    \n    # API Endpoints\n    'LOGIN_ENDPOINT': '/api/auth/login/',\n    'LOGOUT_ENDPOINT': '/api/auth/logout/',\n    \n    # UI Settings\n    'PANEL_POSITION': 'top-right',  # top-left, top-right, bottom-left, bottom-right\n    'PANEL_STYLE': 'floating',      # floating, embedded\n    'AUTO_AUTHORIZE': True,         # Auto-fill authorization headers\n    'SHOW_COPY_BUTTON': True,       # Show token copy button\n    'SHOW_USER_INFO': True,         # Show user email in panel\n    \n    # Theming\n    'THEME': {\n        'PRIMARY_COLOR': '#61affe',\n        'SUCCESS_COLOR': '#28a745',\n        'ERROR_COLOR': '#dc3545',\n        'BACKGROUND_COLOR': '#ffffff',\n        'BORDER_RADIUS': '8px',\n        'SHADOW': '0 2px 10px rgba(0,0,0,0.1)',\n    },\n    \n    # Localization\n    'DEFAULT_LANGUAGE': 'ko',\n    'SUPPORTED_LANGUAGES': ['ko', 'en', 'ja'],\n    \n    # Security\n    'TOKEN_STORAGE': 'localStorage',  # localStorage, sessionStorage\n    'CSRF_PROTECTION': True,\n    \n    # User Management\n    'AUTO_CREATE_USERS': False,  # Auto-create users from successful authentication\n    'CREATE_TEMP_USER': True,   # Create temporary users for documentation access\n    'REQUIRE_AUTHENTICATION': False,  # Require auth to access Swagger UI\n    \n    # Extensibility\n    'CUSTOM_AUTH_PROVIDERS': [],\n    'HOOKS': {\n        'PRE_LOGIN': None,\n        'POST_LOGIN': None,\n        'PRE_LOGOUT': None,\n        'POST_LOGOUT': None,\n    }\n}\n```\n\n## \ud83c\udfa8 Customization\n\n### Custom Authentication Provider\n\n```python\nfrom drf_spectacular_auth.providers.base import AuthProvider\n\nclass CustomAuthProvider(AuthProvider):\n    def authenticate(self, credentials):\n        # Your custom authentication logic\n        return {\n            'access_token': 'your-token',\n            'user': {'email': 'user@example.com'}\n        }\n    \n    def get_user_info(self, token):\n        # Get user information from token\n        return {'email': 'user@example.com'}\n\n# Register your provider\nDRF_SPECTACULAR_AUTH = {\n    'CUSTOM_AUTH_PROVIDERS': [\n        'path.to.your.CustomAuthProvider'\n    ]\n}\n```\n\n### Custom Templates\n\n```python\nDRF_SPECTACULAR_AUTH = {\n    'CUSTOM_TEMPLATES': {\n        'auth_panel': 'your_app/custom_auth_panel.html',\n        'login_form': 'your_app/custom_login_form.html',\n    }\n}\n```\n\n## \ud83d\udc1b Troubleshooting\n\n### Common Issues\n\n**Q: I see unwanted topbar in my Swagger UI**  \nA: Update to v1.2.0+ which fixes the template inheritance issue.\n\n**Q: Authentication panel is not showing**  \nA: Make sure you're using `SpectacularAuthSwaggerView` instead of the default Swagger view.\n\n**Q: Token not being auto-authorized in Swagger**  \nA: Verify that `AUTO_AUTHORIZE: True` is set in your settings and check browser console for errors.\n\n**Q: AWS Cognito authentication fails**  \nA: Check your Cognito configuration:\n- Verify `COGNITO_REGION`, `COGNITO_CLIENT_ID` are correct\n- For private clients, ensure `COGNITO_CLIENT_SECRET` is set\n- Check AWS Cognito logs for detailed error messages\n\n**Q: Template loading errors**  \nA: Ensure `drf_spectacular_auth` is added to `INSTALLED_APPS` before `drf_spectacular`.\n\n### Migration from Previous Versions\n\n**From v1.1.x to v1.2.0:**\n- No breaking changes - just update your package\n- Topbar issues will be automatically resolved\n- Remove any custom workarounds for template conflicts\n\n## \ud83d\udd27 Development\n\n### Local Development\n\n```bash\ngit clone https://github.com/CodeMath/drf-spectacular-auth.git\ncd drf-spectacular-auth\npip install -e \".[dev]\"\n```\n\n### Running Tests\n\n```bash\npytest\npytest --cov=drf_spectacular_auth\n```\n\n### Code Quality\n\n```bash\nblack .\nisort .\nflake8\n```\n\n## \ud83e\udd1d Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- [DRF Spectacular](https://github.com/tfranzel/drf-spectacular) for the excellent API documentation framework\n- [AWS Cognito](https://aws.amazon.com/cognito/) for authentication services\n- [Swagger UI](https://swagger.io/tools/swagger-ui/) for the beautiful API documentation interface\n\n## \ud83d\udcda Links\n\n- [Documentation](https://github.com/CodeMath/drf-spectacular-auth#readme)\n- [PyPI](https://pypi.org/project/drf-spectacular-auth/)\n- [GitHub](https://github.com/CodeMath/drf-spectacular-auth)\n- [Issues](https://github.com/CodeMath/drf-spectacular-auth/issues)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Enhanced Authentication UI for DRF Spectacular with AWS Cognito support and Django integration",
    "version": "1.2.1",
    "project_urls": {
        "Bug Tracker": "https://github.com/CodeMath/drf-spectacular-auth/issues",
        "Documentation": "https://github.com/CodeMath/drf-spectacular-auth#readme",
        "Homepage": "https://github.com/CodeMath/drf-spectacular-auth",
        "Repository": "https://github.com/CodeMath/drf-spectacular-auth"
    },
    "split_keywords": [
        "django",
        " drf",
        " spectacular",
        " swagger",
        " cognito",
        " auth",
        " ui"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "87163dfd205b3176e8245f86bcc121ab1411c6492999505a7b1736e5bc7a72dc",
                "md5": "e94988a54f5a9fb847e4a0d5d736e508",
                "sha256": "fa0137d10b953ac70166d25c1015ff6b757e16d36b91b192113bb097527d805e"
            },
            "downloads": -1,
            "filename": "drf_spectacular_auth-1.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e94988a54f5a9fb847e4a0d5d736e508",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 24583,
            "upload_time": "2025-08-29T14:40:11",
            "upload_time_iso_8601": "2025-08-29T14:40:11.771399Z",
            "url": "https://files.pythonhosted.org/packages/87/16/3dfd205b3176e8245f86bcc121ab1411c6492999505a7b1736e5bc7a72dc/drf_spectacular_auth-1.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d84615d1040c04daa2ba7f82a1c58391f7f7ec30b260a98663274145f0ceae6",
                "md5": "e2d66ae5c87ab5319238cc3a7784065b",
                "sha256": "894c1ed3f94e19b3a8dd7eec1b5818c9d1f86a1444800947df9fd6ed6d0d288e"
            },
            "downloads": -1,
            "filename": "drf_spectacular_auth-1.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "e2d66ae5c87ab5319238cc3a7784065b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 26044,
            "upload_time": "2025-08-29T14:40:13",
            "upload_time_iso_8601": "2025-08-29T14:40:13.067958Z",
            "url": "https://files.pythonhosted.org/packages/1d/84/615d1040c04daa2ba7f82a1c58391f7f7ec30b260a98663274145f0ceae6/drf_spectacular_auth-1.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-29 14:40:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "CodeMath",
    "github_project": "drf-spectacular-auth",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "drf-spectacular-auth"
}
        
Elapsed time: 0.93528s