from drf_spectacular.utils import extend_schema, inline_serializer from rest_framework import serializers, status from rest_framework.permissions import AllowAny from rest_framework.response import Response from rest_framework.views import APIView from apps.demos.api.throttles import DemoStartThrottle from apps.demos.services import create_demo_environment class DemoStartView(APIView): permission_classes = (AllowAny,) throttle_classes = (DemoStartThrottle,) @extend_schema( request=None, responses=inline_serializer( name="DemoStartResponse", fields={ "access": serializers.CharField(), "refresh": serializers.CharField(), "workspace_id": serializers.CharField(), "expires_at": serializers.DateTimeField(), "demo_environment_id": serializers.CharField(), }, ), ) def post(self, request): return Response(create_demo_environment(), status=status.HTTP_201_CREATED)