old_contents: from rest_framework.views import APIView
  from rest_framework.response import Response
  from rest_framework.permissions import AllowAny
  from rest_framework import status
  
  from allauth.account.views import SignupView, ConfirmEmailView
  from allauth.account.utils import complete_signup
  from allauth.account import app_settings
  
  from rest_auth.serializers import UserDetailsSerializer
  from rest_auth.registration.serializers import SocialLoginSerializer
  from rest_auth.views import Login
  
  
  class Register(APIView, SignupView):
  
      permission_classes = (AllowAny,)
      user_serializer_class = UserDetailsSerializer
  
      def form_valid(self, form):
          self.user = form.save(self.request)
          return complete_signup(self.request, self.user,
                                 app_settings.EMAIL_VERIFICATION,
                                 self.get_success_url())
  
      def post(self, request, *args, **kwargs):
          self.initial = {}
          self.request.POST = self.request.DATA.copy()
          form_class = self.get_form_class()
          self.form = self.get_form(form_class)
          if self.form.is_valid():
              self.form_valid(self.form)
              return self.get_response()
          else:
              return self.get_response_with_errors()
  
      def get_response(self):
          serializer = self.user_serializer_class(instance=self.user)
          return Response(serializer.data, status=status.HTTP_201_CREATED)
  
      def get_response_with_errors(self):
          return Response(self.form.errors, status=status.HTTP_400_BAD_REQUEST)
  
  
  class VerifyEmail(APIView, ConfirmEmailView):
  
      permission_classes = (AllowAny,)
  
      def post(self, request, *args, **kwargs):
          self.kwargs['key'] = self.request.DATA.get('key', '')
          confirmation = self.get_object()
          confirmation.confirm(self.request)
          return Response({'message': 'ok'}, status=status.HTTP_200_OK)
  
  
  class SocialLogin(Login):
      """
      class used for social authentications
      example usage for facebook
  
      from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
      class FacebookLogin(SocialLogin):
          adapter_class = FacebookOAuth2Adapter
      """
  
      serializer_class = SocialLoginSerializer
  
new_contents: from rest_framework.views import APIView
  from rest_framework.response import Response
  from rest_framework.permissions import AllowAny
  from rest_framework import status
  
  from allauth.account.views import SignupView, ConfirmEmailView
  from allauth.account.utils import complete_signup
  from allauth.account import app_settings
  
  from rest_auth.serializers import UserDetailsSerializer
  from rest_auth.registration.serializers import SocialLoginSerializer
  from rest_auth.views import Login
  
  
  class Register(APIView, SignupView):
  
      permission_classes = (AllowAny,)
      user_serializer_class = UserDetailsSerializer
      allowed_methods = ('POST', 'OPTIONS', 'HEAD')
  
      def get(self, *args, **kwargs):
          return Response({}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
  
      def put(self, *args, **kwargs):
          return Response({}, status=status.HTTP_405_METHOD_NOT_ALLOWED)
  
      def form_valid(self, form):
          self.user = form.save(self.request)
          return complete_signup(self.request, self.user,
                                 app_settings.EMAIL_VERIFICATION,
                                 self.get_success_url())
  
      def post(self, request, *args, **kwargs):
          self.initial = {}
          self.request.POST = self.request.DATA.copy()
          form_class = self.get_form_class()
          self.form = self.get_form(form_class)
          if self.form.is_valid():
              self.form_valid(self.form)
              return self.get_response()
          else:
              return self.get_response_with_errors()
  
      def get_response(self):
          serializer = self.user_serializer_class(instance=self.user)
          return Response(serializer.data, status=status.HTTP_201_CREATED)
  
      def get_response_with_errors(self):
          return Response(self.form.errors, status=status.HTTP_400_BAD_REQUEST)
  
  
  class VerifyEmail(APIView, ConfirmEmailView):
  
      permission_classes = (AllowAny,)
  
      def post(self, request, *args, **kwargs):
          self.kwargs['key'] = self.request.DATA.get('key', '')
          confirmation = self.get_object()
          confirmation.confirm(self.request)
          return Response({'message': 'ok'}, status=status.HTTP_200_OK)
  
  
  class SocialLogin(Login):
      """
      class used for social authentications
      example usage for facebook
  
      from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter
      class FacebookLogin(SocialLogin):
          adapter_class = FacebookOAuth2Adapter
      """
  
      serializer_class = SocialLoginSerializer
  
subject: make registration API browsable