Added generated API for testing
diff --git a/planetstack/genapi.py b/planetstack/genapi.py
new file mode 100644
index 0000000..27f6685
--- /dev/null
+++ b/planetstack/genapi.py
@@ -0,0 +1,1090 @@
+from rest_framework.decorators import api_view
+from rest_framework.response import Response
+from rest_framework.reverse import reverse
+from rest_framework import serializers
+from core.models import *
+from django.forms import widgets
+
+"""
+	Schema of the generator object:
+		all: Set of all Model objects
+		all_if(regex): Set of Model objects that match regex
+	
+	Model object:
+		plural: English plural of object name
+		camel: CamelCase version of object name
+		refs: list of references to other Model objects
+		props: list of properties minus refs
+
+	TODO: Deal with subnets
+"""
+
+# Based on api_root.py
+
+@api_view(['GET'])
+def api_root(request, format=None):
+    return Response({
+		'serviceattributes': reverse('serviceattribute-list', request=request, format=format),
+		'images': reverse('image-list', request=request, format=format),
+		'networkparameters': reverse('networkparameter-list', request=request, format=format),
+		'sites': reverse('site-list', request=request, format=format),
+		'sliceroles': reverse('slicerole-list', request=request, format=format),
+		'tags': reverse('tag-list', request=request, format=format),
+		'invoices': reverse('invoice-list', request=request, format=format),
+		'sliceprivileges': reverse('sliceprivilege-list', request=request, format=format),
+		'planetstackroles': reverse('planetstackrole-list', request=request, format=format),
+		'networkslivers': reverse('networksliver-list', request=request, format=format),
+		'projects': reverse('project-list', request=request, format=format),
+		'slices': reverse('slice-list', request=request, format=format),
+		'networks': reverse('network-list', request=request, format=format),
+		'services': reverse('service-list', request=request, format=format),
+		'serviceclasses': reverse('serviceclass-list', request=request, format=format),
+		'siteroles': reverse('siterole-list', request=request, format=format),
+		'charges': reverse('charge-list', request=request, format=format),
+		'roles': reverse('role-list', request=request, format=format),
+		'usableobjects': reverse('usableobject-list', request=request, format=format),
+		'slivers': reverse('sliver-list', request=request, format=format),
+		'nodes': reverse('node-list', request=request, format=format),
+		'reservedresources': reverse('reservedresource-list', request=request, format=format),
+		'payments': reverse('payment-list', request=request, format=format),
+		'networkslices': reverse('networkslice-list', request=request, format=format),
+		'planetstackprivileges': reverse('planetstackprivilege-list', request=request, format=format),
+		'users': reverse('user-list', request=request, format=format),
+		'deployments': reverse('deployment-list', request=request, format=format),
+		'reservations': reverse('reservation-list', request=request, format=format),
+		'siteprivileges': reverse('siteprivilege-list', request=request, format=format),
+		'singletonmodels': reverse('singletonmodel-list', request=request, format=format),
+		'planetstacks': reverse('planetstack-list', request=request, format=format),
+		'accounts': reverse('account-list', request=request, format=format),
+		'networkparametertypes': reverse('networkparametertype-list', request=request, format=format),
+		'sitedeploymentses': reverse('sitedeployments-list', request=request, format=format),
+		'deploymentprivileges': reverse('deploymentprivilege-list', request=request, format=format),
+		'deploymentroles': reverse('deploymentrole-list', request=request, format=format),
+		'plcorebases': reverse('plcorebase-list', request=request, format=format),
+		'slicetags': reverse('slicetag-list', request=request, format=format),
+		'networktemplates': reverse('networktemplate-list', request=request, format=format),
+		'routers': reverse('router-list', request=request, format=format),
+		'serviceresources': reverse('serviceresource-list', request=request, format=format),
+		
+    })
+
+# Based on serializers.py
+
+
+
+class ServiceattributeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='service-detail')
+	
+	
+	class Meta:
+		model = serviceattribute
+		fields = ('id','created','updated','enacted','name','value',)
+
+
+class ImageSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = image
+		fields = ('id','created','updated','enacted','image_id','name','disk_format','container_format',)
+
+
+class NetworkparameterSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = networkparameter
+		fields = ('id','created','updated','enacted','parameter','value','content_type','object_id',)
+
+
+class SiteSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = site
+		fields = ('id','created','updated','enacted','tenant_id','name','site_url','enabled','location','longitude','latitude','login_base','is_public','abbreviated_name',)
+
+
+class SliceroleSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = slicerole
+		fields = ('id','created','updated','enacted','role',)
+
+
+class TagSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	
+	service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='service-detail')
+	
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	
+	slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
+	
+	
+	
+	nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
+	
+	
+	class Meta:
+		model = tag
+		fields = ('id','created','updated','enacted','name','value','content_type','object_id',)
+
+
+class InvoiceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	account = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='account-detail')
+	
+	
+	class Meta:
+		model = invoice
+		fields = ('id','created','updated','enacted','date',)
+
+
+class SliceprivilegeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	user = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail')
+	
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	
+	role = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='role-detail')
+	
+	
+	class Meta:
+		model = sliceprivilege
+		fields = ('id','created','updated','enacted',)
+
+
+class PlanetstackroleSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = planetstackrole
+		fields = ('id','created','updated','enacted','role',)
+
+
+class NetworksliverSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+	
+	
+	
+	slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
+	
+	
+	class Meta:
+		model = networksliver
+		fields = ('id','created','updated','enacted','ip','port_id',)
+
+
+class ProjectSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = project
+		fields = ('id','created','updated','enacted','name',)
+
+
+class SliceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	
+	service = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='service-detail')
+	
+	
+	
+	networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+	
+	
+	
+	networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+	
+	
+	class Meta:
+		model = slice
+		fields = ('id','created','updated','enacted','tenant_id','name','enabled','omf_friendly','description','slice_url','network_id','router_id','subnet_id','serviceClass','creator',)
+
+
+class NetworkSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+	
+	
+	
+	routers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='router-detail')
+	
+	
+	class Meta:
+		model = network
+		fields = ('id','created','updated','enacted','name','template','subnet','ports','labels','owner','guaranteedBandwidth','permitAllSlices','network_id','router_id','subnet_id',)
+
+
+class ServiceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = service
+		fields = ('id','created','updated','enacted','description','enabled','name','versionNumber','published',)
+
+
+class ServiceclassSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = serviceclass
+		fields = ('id','created','updated','enacted','name','description','commitment','membershipFee','membershipFeeMonths','upgradeRequiresApproval',)
+
+
+class SiteroleSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = siterole
+		fields = ('id','created','updated','enacted','role',)
+
+
+class ChargeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	account = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='account-detail')
+	
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	
+	invoice = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='invoice-detail')
+	
+	
+	class Meta:
+		model = charge
+		fields = ('id','created','updated','enacted','kind','state','date','object','amount','coreHours',)
+
+
+class RoleSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = role
+		fields = ('id','created','updated','enacted','role_type','role','description','content_type',)
+
+
+class UsableobjectSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = usableobject
+		fields = ('id','created','updated','enacted','name',)
+
+
+class SliverSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+	
+	
+	
+	image = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='image-detail')
+	
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	
+	nodes = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='node-detail')
+	
+	
+	class Meta:
+		model = sliver
+		fields = ('id','created','updated','enacted','instance_id','name','instance_name','ip','creator','deploymentNetwork','numberCores',)
+
+
+class NodeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	
+	deployment = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deployment-detail')
+	
+	
+	class Meta:
+		model = node
+		fields = ('id','created','updated','enacted','name',)
+
+
+class ReservedresourceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	slivers = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='sliver-detail')
+	
+	
+	class Meta:
+		model = reservedresource
+		fields = ('id','created','updated','enacted','resource','quantity','reservationSet',)
+
+
+class PaymentSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	account = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='account-detail')
+	
+	
+	class Meta:
+		model = payment
+		fields = ('id','created','updated','enacted','amount','date',)
+
+
+class NetworksliceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	networks = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='network-detail')
+	
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	class Meta:
+		model = networkslice
+		fields = ('id','created','updated','enacted',)
+
+
+class PlanetstackprivilegeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	user = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail')
+	
+	
+	
+	planetstack = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='planetstack-detail')
+	
+	
+	
+	role = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='role-detail')
+	
+	
+	class Meta:
+		model = planetstackprivilege
+		fields = ('id','created','updated','enacted',)
+
+
+class UserSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	class Meta:
+		model = user
+		fields = ('id','password','last_login','email','username','kuser_id','firstname','lastname','phone','user_url','public_key','is_active','is_admin','is_staff','is_readonly','created','updated','enacted','timezone',)
+
+
+class DeploymentSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	class Meta:
+		model = deployment
+		fields = ('id','created','updated','enacted','name',)
+
+
+class ReservationSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	class Meta:
+		model = reservation
+		fields = ('id','created','updated','enacted','startTime','duration',)
+
+
+class SiteprivilegeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	user = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail')
+	
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	
+	role = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='role-detail')
+	
+	
+	class Meta:
+		model = siteprivilege
+		fields = ('id','created','updated','enacted',)
+
+
+class SingletonmodelSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = singletonmodel
+		fields = ()
+
+
+class PlanetstackSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = planetstack
+		fields = ('id','created','updated','enacted','description',)
+
+
+class AccountSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	class Meta:
+		model = account
+		fields = ('id','created','updated','enacted',)
+
+
+class NetworkparametertypeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = networkparametertype
+		fields = ('id','created','updated','enacted','name','description',)
+
+
+class SitedeploymentsSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	sites = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='site-detail')
+	
+	
+	
+	deployment = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deployment-detail')
+	
+	
+	class Meta:
+		model = sitedeployments
+		fields = ('id','created','updated','enacted',)
+
+
+class DeploymentprivilegeSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	user = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='user-detail')
+	
+	
+	
+	deployment = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='deployment-detail')
+	
+	
+	
+	role = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='role-detail')
+	
+	
+	class Meta:
+		model = deploymentprivilege
+		fields = ('id','created','updated','enacted',)
+
+
+class DeploymentroleSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = deploymentrole
+		fields = ('id','created','updated','enacted','role',)
+
+
+class PlcorebaseSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = plcorebase
+		fields = ('created','updated','enacted',)
+
+
+class SlicetagSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	
+	slices = serializers.HyperlinkedRelatedField(many=True, read_only=True, view_name='slice-detail')
+	
+	
+	class Meta:
+		model = slicetag
+		fields = ('id','created','updated','enacted','name','value',)
+
+
+class NetworktemplateSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = networktemplate
+		fields = ('id','created','updated','enacted','name','description','guaranteedBandwidth','visibility','translation','sharedNetworkName','sharedNetworkId',)
+
+
+class RouterSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = router
+		fields = ('id','created','updated','enacted','name','owner',)
+
+
+class ServiceresourceSerializer(serializers.HyperlinkedModelSerializer):
+	id = serializers.Field()
+	
+	class Meta:
+		model = serviceresource
+		fields = ('id','created','updated','enacted','serviceClass','name','maxUnitsDeployment','maxUnitsNode','maxDuration','bucketInRate','bucketMaxSize','cost','calendarReservable',)
+
+
+serializerLookUp = { 
+
+                 Serviceattribute: ServiceattributeSerializer,
+
+                 Image: ImageSerializer,
+
+                 Networkparameter: NetworkparameterSerializer,
+
+                 Site: SiteSerializer,
+
+                 Slicerole: SliceroleSerializer,
+
+                 Tag: TagSerializer,
+
+                 Invoice: InvoiceSerializer,
+
+                 Sliceprivilege: SliceprivilegeSerializer,
+
+                 Planetstackrole: PlanetstackroleSerializer,
+
+                 Networksliver: NetworksliverSerializer,
+
+                 Project: ProjectSerializer,
+
+                 Slice: SliceSerializer,
+
+                 Network: NetworkSerializer,
+
+                 Service: ServiceSerializer,
+
+                 Serviceclass: ServiceclassSerializer,
+
+                 Siterole: SiteroleSerializer,
+
+                 Charge: ChargeSerializer,
+
+                 Role: RoleSerializer,
+
+                 Usableobject: UsableobjectSerializer,
+
+                 Sliver: SliverSerializer,
+
+                 Node: NodeSerializer,
+
+                 Reservedresource: ReservedresourceSerializer,
+
+                 Payment: PaymentSerializer,
+
+                 Networkslice: NetworksliceSerializer,
+
+                 Planetstackprivilege: PlanetstackprivilegeSerializer,
+
+                 User: UserSerializer,
+
+                 Deployment: DeploymentSerializer,
+
+                 Reservation: ReservationSerializer,
+
+                 Siteprivilege: SiteprivilegeSerializer,
+
+                 Singletonmodel: SingletonmodelSerializer,
+
+                 Planetstack: PlanetstackSerializer,
+
+                 Account: AccountSerializer,
+
+                 Networkparametertype: NetworkparametertypeSerializer,
+
+                 Sitedeployments: SitedeploymentsSerializer,
+
+                 Deploymentprivilege: DeploymentprivilegeSerializer,
+
+                 Deploymentrole: DeploymentroleSerializer,
+
+                 Plcorebase: PlcorebaseSerializer,
+
+                 Slicetag: SlicetagSerializer,
+
+                 Networktemplate: NetworktemplateSerializer,
+
+                 Router: RouterSerializer,
+
+                 Serviceresource: ServiceresourceSerializer,
+
+                 None: None,
+                }
+
+# Based on core/views/*.py
+
+
+class ServiceattributeList(generics.ListCreateAPIView):
+    queryset = Serviceattribute.objects.select_related.all()
+    serializer_class = ServiceattributeSerializer
+
+class ServiceattributeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Serviceattribute.objects.select_related.all()
+    serializer_class = ServiceattributeSerializer
+
+
+
+class ImageList(generics.ListCreateAPIView):
+    queryset = Image.objects.select_related.all()
+    serializer_class = ImageSerializer
+
+class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Image.objects.select_related.all()
+    serializer_class = ImageSerializer
+
+
+
+class NetworkparameterList(generics.ListCreateAPIView):
+    queryset = Networkparameter.objects.select_related.all()
+    serializer_class = NetworkparameterSerializer
+
+class NetworkparameterDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Networkparameter.objects.select_related.all()
+    serializer_class = NetworkparameterSerializer
+
+
+
+class SiteList(generics.ListCreateAPIView):
+    queryset = Site.objects.select_related.all()
+    serializer_class = SiteSerializer
+
+class SiteDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Site.objects.select_related.all()
+    serializer_class = SiteSerializer
+
+
+
+class SliceroleList(generics.ListCreateAPIView):
+    queryset = Slicerole.objects.select_related.all()
+    serializer_class = SliceroleSerializer
+
+class SliceroleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Slicerole.objects.select_related.all()
+    serializer_class = SliceroleSerializer
+
+
+
+class TagList(generics.ListCreateAPIView):
+    queryset = Tag.objects.select_related.all()
+    serializer_class = TagSerializer
+
+class TagDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Tag.objects.select_related.all()
+    serializer_class = TagSerializer
+
+
+
+class InvoiceList(generics.ListCreateAPIView):
+    queryset = Invoice.objects.select_related.all()
+    serializer_class = InvoiceSerializer
+
+class InvoiceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Invoice.objects.select_related.all()
+    serializer_class = InvoiceSerializer
+
+
+
+class SliceprivilegeList(generics.ListCreateAPIView):
+    queryset = Sliceprivilege.objects.select_related.all()
+    serializer_class = SliceprivilegeSerializer
+
+class SliceprivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Sliceprivilege.objects.select_related.all()
+    serializer_class = SliceprivilegeSerializer
+
+
+
+class PlanetstackroleList(generics.ListCreateAPIView):
+    queryset = Planetstackrole.objects.select_related.all()
+    serializer_class = PlanetstackroleSerializer
+
+class PlanetstackroleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Planetstackrole.objects.select_related.all()
+    serializer_class = PlanetstackroleSerializer
+
+
+
+class NetworksliverList(generics.ListCreateAPIView):
+    queryset = Networksliver.objects.select_related.all()
+    serializer_class = NetworksliverSerializer
+
+class NetworksliverDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Networksliver.objects.select_related.all()
+    serializer_class = NetworksliverSerializer
+
+
+
+class ProjectList(generics.ListCreateAPIView):
+    queryset = Project.objects.select_related.all()
+    serializer_class = ProjectSerializer
+
+class ProjectDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Project.objects.select_related.all()
+    serializer_class = ProjectSerializer
+
+
+
+class SliceList(generics.ListCreateAPIView):
+    queryset = Slice.objects.select_related.all()
+    serializer_class = SliceSerializer
+
+class SliceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Slice.objects.select_related.all()
+    serializer_class = SliceSerializer
+
+
+
+class NetworkList(generics.ListCreateAPIView):
+    queryset = Network.objects.select_related.all()
+    serializer_class = NetworkSerializer
+
+class NetworkDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Network.objects.select_related.all()
+    serializer_class = NetworkSerializer
+
+
+
+class ServiceList(generics.ListCreateAPIView):
+    queryset = Service.objects.select_related.all()
+    serializer_class = ServiceSerializer
+
+class ServiceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Service.objects.select_related.all()
+    serializer_class = ServiceSerializer
+
+
+
+class ServiceclassList(generics.ListCreateAPIView):
+    queryset = Serviceclass.objects.select_related.all()
+    serializer_class = ServiceclassSerializer
+
+class ServiceclassDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Serviceclass.objects.select_related.all()
+    serializer_class = ServiceclassSerializer
+
+
+
+class SiteroleList(generics.ListCreateAPIView):
+    queryset = Siterole.objects.select_related.all()
+    serializer_class = SiteroleSerializer
+
+class SiteroleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Siterole.objects.select_related.all()
+    serializer_class = SiteroleSerializer
+
+
+
+class ChargeList(generics.ListCreateAPIView):
+    queryset = Charge.objects.select_related.all()
+    serializer_class = ChargeSerializer
+
+class ChargeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Charge.objects.select_related.all()
+    serializer_class = ChargeSerializer
+
+
+
+class RoleList(generics.ListCreateAPIView):
+    queryset = Role.objects.select_related.all()
+    serializer_class = RoleSerializer
+
+class RoleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Role.objects.select_related.all()
+    serializer_class = RoleSerializer
+
+
+
+class UsableobjectList(generics.ListCreateAPIView):
+    queryset = Usableobject.objects.select_related.all()
+    serializer_class = UsableobjectSerializer
+
+class UsableobjectDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Usableobject.objects.select_related.all()
+    serializer_class = UsableobjectSerializer
+
+
+
+class SliverList(generics.ListCreateAPIView):
+    queryset = Sliver.objects.select_related.all()
+    serializer_class = SliverSerializer
+
+class SliverDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Sliver.objects.select_related.all()
+    serializer_class = SliverSerializer
+
+
+
+class NodeList(generics.ListCreateAPIView):
+    queryset = Node.objects.select_related.all()
+    serializer_class = NodeSerializer
+
+class NodeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Node.objects.select_related.all()
+    serializer_class = NodeSerializer
+
+
+
+class ReservedresourceList(generics.ListCreateAPIView):
+    queryset = Reservedresource.objects.select_related.all()
+    serializer_class = ReservedresourceSerializer
+
+class ReservedresourceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Reservedresource.objects.select_related.all()
+    serializer_class = ReservedresourceSerializer
+
+
+
+class PaymentList(generics.ListCreateAPIView):
+    queryset = Payment.objects.select_related.all()
+    serializer_class = PaymentSerializer
+
+class PaymentDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Payment.objects.select_related.all()
+    serializer_class = PaymentSerializer
+
+
+
+class NetworksliceList(generics.ListCreateAPIView):
+    queryset = Networkslice.objects.select_related.all()
+    serializer_class = NetworksliceSerializer
+
+class NetworksliceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Networkslice.objects.select_related.all()
+    serializer_class = NetworksliceSerializer
+
+
+
+class PlanetstackprivilegeList(generics.ListCreateAPIView):
+    queryset = Planetstackprivilege.objects.select_related.all()
+    serializer_class = PlanetstackprivilegeSerializer
+
+class PlanetstackprivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Planetstackprivilege.objects.select_related.all()
+    serializer_class = PlanetstackprivilegeSerializer
+
+
+
+class UserList(generics.ListCreateAPIView):
+    queryset = User.objects.select_related.all()
+    serializer_class = UserSerializer
+
+class UserDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = User.objects.select_related.all()
+    serializer_class = UserSerializer
+
+
+
+class DeploymentList(generics.ListCreateAPIView):
+    queryset = Deployment.objects.select_related.all()
+    serializer_class = DeploymentSerializer
+
+class DeploymentDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Deployment.objects.select_related.all()
+    serializer_class = DeploymentSerializer
+
+
+
+class ReservationList(generics.ListCreateAPIView):
+    queryset = Reservation.objects.select_related.all()
+    serializer_class = ReservationSerializer
+
+class ReservationDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Reservation.objects.select_related.all()
+    serializer_class = ReservationSerializer
+
+
+
+class SiteprivilegeList(generics.ListCreateAPIView):
+    queryset = Siteprivilege.objects.select_related.all()
+    serializer_class = SiteprivilegeSerializer
+
+class SiteprivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Siteprivilege.objects.select_related.all()
+    serializer_class = SiteprivilegeSerializer
+
+
+
+class SingletonmodelList(generics.ListCreateAPIView):
+    queryset = Singletonmodel.objects.select_related.all()
+    serializer_class = SingletonmodelSerializer
+
+class SingletonmodelDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Singletonmodel.objects.select_related.all()
+    serializer_class = SingletonmodelSerializer
+
+
+
+class PlanetstackList(generics.ListCreateAPIView):
+    queryset = Planetstack.objects.select_related.all()
+    serializer_class = PlanetstackSerializer
+
+class PlanetstackDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Planetstack.objects.select_related.all()
+    serializer_class = PlanetstackSerializer
+
+
+
+class AccountList(generics.ListCreateAPIView):
+    queryset = Account.objects.select_related.all()
+    serializer_class = AccountSerializer
+
+class AccountDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Account.objects.select_related.all()
+    serializer_class = AccountSerializer
+
+
+
+class NetworkparametertypeList(generics.ListCreateAPIView):
+    queryset = Networkparametertype.objects.select_related.all()
+    serializer_class = NetworkparametertypeSerializer
+
+class NetworkparametertypeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Networkparametertype.objects.select_related.all()
+    serializer_class = NetworkparametertypeSerializer
+
+
+
+class SitedeploymentsList(generics.ListCreateAPIView):
+    queryset = Sitedeployments.objects.select_related.all()
+    serializer_class = SitedeploymentsSerializer
+
+class SitedeploymentsDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Sitedeployments.objects.select_related.all()
+    serializer_class = SitedeploymentsSerializer
+
+
+
+class DeploymentprivilegeList(generics.ListCreateAPIView):
+    queryset = Deploymentprivilege.objects.select_related.all()
+    serializer_class = DeploymentprivilegeSerializer
+
+class DeploymentprivilegeDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Deploymentprivilege.objects.select_related.all()
+    serializer_class = DeploymentprivilegeSerializer
+
+
+
+class DeploymentroleList(generics.ListCreateAPIView):
+    queryset = Deploymentrole.objects.select_related.all()
+    serializer_class = DeploymentroleSerializer
+
+class DeploymentroleDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Deploymentrole.objects.select_related.all()
+    serializer_class = DeploymentroleSerializer
+
+
+
+class PlcorebaseList(generics.ListCreateAPIView):
+    queryset = Plcorebase.objects.select_related.all()
+    serializer_class = PlcorebaseSerializer
+
+class PlcorebaseDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Plcorebase.objects.select_related.all()
+    serializer_class = PlcorebaseSerializer
+
+
+
+class SlicetagList(generics.ListCreateAPIView):
+    queryset = Slicetag.objects.select_related.all()
+    serializer_class = SlicetagSerializer
+
+class SlicetagDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Slicetag.objects.select_related.all()
+    serializer_class = SlicetagSerializer
+
+
+
+class NetworktemplateList(generics.ListCreateAPIView):
+    queryset = Networktemplate.objects.select_related.all()
+    serializer_class = NetworktemplateSerializer
+
+class NetworktemplateDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Networktemplate.objects.select_related.all()
+    serializer_class = NetworktemplateSerializer
+
+
+
+class RouterList(generics.ListCreateAPIView):
+    queryset = Router.objects.select_related.all()
+    serializer_class = RouterSerializer
+
+class RouterDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Router.objects.select_related.all()
+    serializer_class = RouterSerializer
+
+
+
+class ServiceresourceList(generics.ListCreateAPIView):
+    queryset = Serviceresource.objects.select_related.all()
+    serializer_class = ServiceresourceSerializer
+
+class ServiceresourceDetail(generics.RetrieveUpdateDestroyAPIView):
+    queryset = Serviceresource.objects.select_related.all()
+    serializer_class = ServiceresourceSerializer
+
+
+