diff --git a/hiccup/settings.py b/hiccup/settings.py
index d459dde..349a47b 100644
--- a/hiccup/settings.py
+++ b/hiccup/settings.py
@@ -37,7 +37,9 @@
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
+    'rest_framework',
     'crashreports',
+    'psensor',
 ]
 
 MIDDLEWARE_CLASSES = [
@@ -112,6 +114,12 @@
 USE_TZ = True
 
 
+REST_FRAMEWORK = {
+    'DEFAULT_PERMISSION_CLASSES': (
+        'rest_framework.permissions.IsAuthenticated',
+    )
+}
+
 # Static files (CSS, JavaScript, Images)
 # https://docs.djangoproject.com/en/1.9/howto/static-files/
 
diff --git a/hiccup/urls.py b/hiccup/urls.py
index 8a94215..c79f16a 100644
--- a/hiccup/urls.py
+++ b/hiccup/urls.py
@@ -4,5 +4,6 @@
 
 urlpatterns = [
     url(r'^admin/', admin.site.urls),
-    url(r'^', include('crashreports.urls')),
+    url(r'^psensor/', include('psensor.urls')),
+    url(r'^hiccup/', include('crashreports.urls')),
 ]
diff --git a/psensor/__init__.py b/psensor/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/psensor/__init__.py
diff --git a/psensor/admin.py b/psensor/admin.py
new file mode 100644
index 0000000..4228cfb
--- /dev/null
+++ b/psensor/admin.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from  models import PSensorSetting
+# Register your models here.
+
+@admin.register(PSensorSetting)
+class PSensorSettingAdmin(admin.ModelAdmin):
+    list_display = ['uuid', 'old_offset', 'old_near_threshold', 'old_far_threshold', 'new_offset', 'new_near_threshold', 'new_far_threshold',  'timestamp']
+    pass
diff --git a/psensor/apps.py b/psensor/apps.py
new file mode 100644
index 0000000..20f8fd6
--- /dev/null
+++ b/psensor/apps.py
@@ -0,0 +1,6 @@
+from __future__ import unicode_literals
+
+from django.apps import AppConfig
+
+class PSensorStatus(AppConfig):
+    name = 'psensor'
diff --git a/psensor/migrations/0001_initial.py b/psensor/migrations/0001_initial.py
new file mode 100644
index 0000000..6dd0608
--- /dev/null
+++ b/psensor/migrations/0001_initial.py
@@ -0,0 +1,30 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.9.7 on 2016-08-25 08:26
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='PSensorSetting',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('uuid', models.CharField(max_length=255)),
+                ('old_offset', models.IntegerField()),
+                ('old_near_threshold', models.IntegerField()),
+                ('old_far_threshold', models.IntegerField()),
+                ('new_offset', models.IntegerField()),
+                ('new_near_threshold', models.IntegerField()),
+                ('new_far_threshold', models.IntegerField()),
+                ('timestamp', models.DateTimeField()),
+            ],
+        ),
+    ]
diff --git a/psensor/migrations/__init__.py b/psensor/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/psensor/migrations/__init__.py
diff --git a/psensor/models.py b/psensor/models.py
new file mode 100644
index 0000000..fdd4eb3
--- /dev/null
+++ b/psensor/models.py
@@ -0,0 +1,12 @@
+    # -*- coding: utf-8 -*-
+from django.db import models
+
+class PSensorSetting(models.Model):
+    uuid = models.CharField(max_length=255)
+    old_offset = models.IntegerField()
+    old_near_threshold = models.IntegerField()
+    old_far_threshold = models.IntegerField()
+    new_offset = models.IntegerField()
+    new_near_threshold = models.IntegerField()
+    new_far_threshold = models.IntegerField()
+    timestamp = models.DateTimeField()
diff --git a/psensor/serializers.py b/psensor/serializers.py
new file mode 100644
index 0000000..2333458
--- /dev/null
+++ b/psensor/serializers.py
@@ -0,0 +1,9 @@
+from rest_framework import serializers
+from models import PSensorSetting
+from rest_framework import permissions
+
+class PSensorSettingSerializer(serializers.ModelSerializer):
+    permission_classes = (permissions.IsAuthenticated)
+    class Meta:
+        model = PSensorSetting
+        fields = ('pk','uuid', 'old_offset', 'old_near_threshold', 'old_far_threshold', 'new_offset', 'new_near_threshold', 'new_far_threshold',  'timestamp')
diff --git a/psensor/urls.py b/psensor/urls.py
new file mode 100644
index 0000000..1389736
--- /dev/null
+++ b/psensor/urls.py
@@ -0,0 +1,13 @@
+from django.conf.urls import url, include
+from . import views
+from rest_framework import routers
+
+router = routers.DefaultRouter()
+router.register(r'psensorsettings', views.PSensorSettingViewSet)
+
+# Wire up our API using automatic URL routing.
+# Additionally, we include login URLs for the browsable API.
+urlpatterns = [
+    url(r'^', include(router.urls)),
+    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
+]
diff --git a/psensor/views.py b/psensor/views.py
new file mode 100644
index 0000000..80c8f8f
--- /dev/null
+++ b/psensor/views.py
@@ -0,0 +1,23 @@
+from models import PSensorSetting
+from rest_framework import viewsets
+from serializers import PSensorSettingSerializer
+from rest_framework.decorators import detail_route, list_route
+from rest_framework.permissions import BasePermission
+
+class IsCreationOrIsAuthenticated(BasePermission):
+
+    def has_permission(self, request, view):
+        if not request.user.is_authenticated():
+            if view.action == 'create':
+                return True
+            else:
+                return False
+        else:
+            return True
+
+
+
+class PSensorSettingViewSet(viewsets.ModelViewSet):
+    queryset = PSensorSetting.objects.all()
+    serializer_class =  PSensorSettingSerializer
+    permission_classes = [IsCreationOrIsAuthenticated]
