diff --git a/.gitignore b/.gitignore
index 22e9eff5c71a741f4e44121457ae31fe010ea83b..3293b858901af0aaafbe7503917da5132ffbb9d8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@ static/
 .mypy_cache/
 #vscode
 .vscode/
+#intellij
+.idea/
diff --git a/new_rest_api/urls.py b/new_rest_api/urls.py
index ce0969864c20f786757312511eba5a5007beb7c6..54da0baff1b845861f60f4dce71932c242cb4760 100644
--- a/new_rest_api/urls.py
+++ b/new_rest_api/urls.py
@@ -7,10 +7,10 @@ from django.views.generic import TemplateView
 
 
 urlpatterns = [
-    path('user-list/', new_rest_api.views.user_list,name='user-list'),
-    path('user-detail/<str:email>', new_rest_api.views.user_details,name='user-details'),
-    path('user-detail/?email=<str:email>', new_rest_api.views.user_details,name='user-details-get'),
-    path('register/', new_rest_api.views.register_user,name='create-user'),
+    path('user-list/', new_rest_api.views.user_list, name='user-list'),
+    path('user-detail/<str:email>', new_rest_api.views.user_details, name='user-details'),
+    path('user-detail/?email=<str:email>', new_rest_api.views.user_details, name='user-details-get'),
+    path('register/', new_rest_api.views.register_user, name='create-user'),
     path(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
         new_rest_api.views.activate, name='activate'),
 ]
diff --git a/new_rest_api/views.py b/new_rest_api/views.py
index 00faac5913bee3dd9622008038a9aec1b012c34a..ea2077f740cdb46a79a28ab34b0dc4305999a9a0 100644
--- a/new_rest_api/views.py
+++ b/new_rest_api/views.py
@@ -1,7 +1,7 @@
 from http import HTTPStatus as status
 
 from django.contrib.auth.models import User
-from django.http import JsonResponse
+from django.http import JsonResponse, QueryDict
 from django.views.decorators.csrf import csrf_exempt
 
 from allauth.socialaccount.providers.oauth2.client import OAuth2Client
@@ -9,12 +9,15 @@ from allauth.socialaccount.providers.oauth2.client import OAuth2Client
 from rest_auth.registration.serializers import SocialLoginSerializer
 from rest_auth.registration.views import SocialLoginView
 from rest_framework import viewsets
+from rest_framework.renderers import JSONRenderer
 from rest_framework.parsers import JSONParser
 from rest_framework.permissions import IsAuthenticated
 from rest_framework.response import Response
 from rest_framework.decorators import api_view, permission_classes, authentication_classes
+from rest_framework.utils.serializer_helpers import ReturnDict
 
 from registrasi.models import BisaGoUser
+from registrasi.serializers import BisaGoUserSerializers
 
 from django.db.utils import IntegrityError
 from django.contrib.sites.models import Site
@@ -23,6 +26,7 @@ from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
 from django.template.loader import render_to_string
 from .tokens import account_activation_token
 from django.core.mail import EmailMessage
+from django.core.exceptions import ObjectDoesNotExist
 
 def request_error_message(request_kind):
     return "get {} request instead".format(request_kind)
@@ -51,15 +55,21 @@ def user_list(request):
 @authentication_classes([])
 @permission_classes([])
 def user_details(request, email):
-    if request.method == 'GET':
-        user = User.objects.get(username=email)
-        bisa_go_user = BisaGoUser.objects.get(user=user)
-        json_return = {"username":user.email,
-                       "name": user.last_name,
-                       "email": user.email,
-                       "phone_number": bisa_go_user.phone_number}
-        return JsonResponse(json_return, safe=False, status=status.OK)
-
+    try:
+        if request.method == 'GET':
+            user = User.objects.get(username=email)
+            bisa_go_user = BisaGoUser.objects.get(user=user)
+            serializer = BisaGoUserSerializers(bisa_go_user)
+            json_return = {"username":user.email,
+                        "name": user.last_name,
+                        "email": user.email,
+                        "phone_number": bisa_go_user.phone_number}
+            json_return.update(serializer.data)
+            return JsonResponse(json_return, safe=False, status=status.OK)
+        else:
+            return JsonResponse({'response' : request_error_message("get")}, status=status.METHOD_NOT_ALLOWED)
+    except ObjectDoesNotExist:
+        return JsonResponse({'response': 'User not found'}, status=status.NOT_FOUND)
 
 @api_view(['POST'])
 @authentication_classes([])
@@ -68,12 +78,13 @@ def register_user(request):
     try:
         if request.method == 'POST':
             name = request.POST['name']
-            phone_number = request.POST['phone_number']
             email = request.POST['email']
             password = request.POST['password']
+            data = dict(list(request.POST.dict().items())[3:])
             user = User.objects.create_user(username=email, email=email, password=password, last_name=name)
             user.is_active = False
             user.save()
+            data['user'] = user.pk
             mail_subject = "Activate your account"
             message = render_to_string('acc_active_email.html', {
                 'user' : user,
@@ -83,8 +94,15 @@ def register_user(request):
             })
             mail = EmailMessage(mail_subject, message, to=[email])
             mail.send()
-            BisaGoUser.objects.create(user=user, phone_number=phone_number)
-            return JsonResponse({'response' : 'User created', 'email':email, 'name':name}, status = status.CREATED)
+            data_query_dict = QueryDict('', mutable=True)
+            data_query_dict.update(data)
+            print(data_query_dict)
+            serializer = BisaGoUserSerializers(data=data_query_dict)
+            if serializer.is_valid():
+                serializer.save()
+                return JsonResponse({'response' : 'User created', 'email':email, 'name':name}, status = status.CREATED)
+            else:
+                return JsonResponse(serializer.errors, status=status.BAD_REQUEST)
     except KeyError as e:
         return JsonResponse({'response' : missing_key_message(str(e))}, status=status.INTERNAL_SERVER_ERROR)
     except IntegrityError as e:
diff --git a/registrasi/migrations/0004_auto_20201020_1638.py b/registrasi/migrations/0004_auto_20201020_1638.py
new file mode 100644
index 0000000000000000000000000000000000000000..77dae5591966cf3223d7198b08bcf3cf3c8310f1
--- /dev/null
+++ b/registrasi/migrations/0004_auto_20201020_1638.py
@@ -0,0 +1,38 @@
+# Generated by Django 2.1.5 on 2020-10-20 16:38
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('registrasi', '0003_merge_20201018_0607'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='bisagouser',
+            name='alamat',
+            field=models.CharField(default='Undefined', max_length=255, verbose_name='Alamat'),
+        ),
+        migrations.AddField(
+            model_name='bisagouser',
+            name='disabilitas',
+            field=models.CharField(default='Tidak Memiliki Disabilitas', max_length=64, verbose_name='Disabilitas'),
+        ),
+        migrations.AddField(
+            model_name='bisagouser',
+            name='jenis_kelamin',
+            field=models.CharField(default='Undefined', max_length=20, verbose_name='Jenis Kelamin'),
+        ),
+        migrations.AddField(
+            model_name='bisagouser',
+            name='pekerjaan',
+            field=models.CharField(default='Undefined', max_length=64, verbose_name='Pekerjaan'),
+        ),
+        migrations.AddField(
+            model_name='bisagouser',
+            name='tanggal_lahir',
+            field=models.DateField(max_length=15, null=True, verbose_name='Tanggal Lahir'),
+        ),
+    ]
diff --git a/registrasi/models.py b/registrasi/models.py
index 23145ffdd1b3510514e6946403191b62f3472eaa..b6d5f16fdfad6da15e4f56853e90ef05ae1687b8 100644
--- a/registrasi/models.py
+++ b/registrasi/models.py
@@ -8,6 +8,10 @@ class BisaGoUser(models.Model):
         db_table = "BisaGoUser"
     user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="phone_number")
     phone_number = models.CharField('Nomor Telepon', max_length=15, unique=True)
-
+    tanggal_lahir = models.DateField('Tanggal Lahir', max_length=15, null=True)
+    jenis_kelamin = models.CharField('Jenis Kelamin', max_length=20, default='Undefined')
+    disabilitas = models.CharField('Disabilitas', max_length=64, default='Tidak Memiliki Disabilitas')
+    pekerjaan = models.CharField('Pekerjaan', max_length=64, default='Undefined')
+    alamat = models.CharField('Alamat', max_length=255, default='Undefined')
     def __str__(self):
         return self.user.username
diff --git a/registrasi/serializers.py b/registrasi/serializers.py
new file mode 100644
index 0000000000000000000000000000000000000000..bfa70ccf27f047487cae41802c941289b2f6b3e8
--- /dev/null
+++ b/registrasi/serializers.py
@@ -0,0 +1,16 @@
+from rest_framework import serializers
+from django.db import models
+from .models import BisaGoUser
+
+class BisaGoUserSerializers(serializers.ModelSerializer):
+    class Meta:
+        model = BisaGoUser
+        fields = (
+            'user',
+            'phone_number',
+            'tanggal_lahir',
+            'jenis_kelamin',
+            'disabilitas',
+            'pekerjaan',
+            'alamat'
+        )
\ No newline at end of file