# Path: kraut_api/views.py
# def package_tree(request, pk):
# def package_quick(request, pk, otype, format=None):
# def package_list(request, format=None):
# def package_detail(request, pk, format=None):
# def package_detail_observables(request, pk, format=None):
# def package_detail_indicators(request, pk, format=None):
# def package_detail_campaigns(request, pk, format=None):
# def package_detail_ttps(request, pk, format=None):
# def package_detail_threatactors(request, pk, format=None):
# def threatactor_list(request, format=None):
# def threatactor_detail(request, pk, format=None):
# def threatactor_detail_campaigns(request, pk, format=None):
# def threatactor_detail_associated_threatactors(request, pk, format=None):
# def threatactor_detail_related_packages(request, pk, format=None):
# def threatactor_detail_observed_ttps(request, pk, format=None):
# def ttp_list(request, format=None):
# def ttp_related_ttps(request, pk, format=None):
# def ttp_related_packages(request, pk, format=None):
# def malware_instances_list(request, format=None):
# def ttp_malware_instances(request, pk, format=None):
# def attack_patterns_list(request, format=None):
# def ttp_attack_patterns(request, pk, format=None):
# def campaign_list(request, format=None):
# def campaign_detail(request, pk, format=None):
# def campaign_detail_related_indicators(request, pk, format=None):
# def campaign_detail_associated_campaigns(request, pk, format=None):
# def campaign_detail_related_packages(request, pk, format=None):
# def campaign_detail_related_ttps(request, pk, format=None):
# def indicator_list(request, format=None):
# def indicator_detail(request, pk, format=None):
# def indicator_detail_related_indicators(request, pk, format=None):
# def indicator_detail_observables(request, pk, format=None):
# def indicator_detail_ttps(request, pk, format=None):
# def indicator_detail_compositions(request, pk, format=None):
# def create_composition_json(composition, created):
# def composition_details(request, pk, format=None):
# def create_composition_json_d3(composition, created):
# def composition_details_d3(request, pk, format=None):
# def observable_list(request, format=None):
# def observable_detail(request, pk, format=None):
# def observable_related_objects(request, pk, format=None):
# def recurse_composition(item, test_list, done):
# def observable_related_indicators(request, pk, format=None):
# def observable_related_packages(request, pk, format=None):
# def object_get_observables(request, object_id, object_type):
# def object_get_packages(request, object_id, object_type):
# def object_ip_list(request, format=None):
# def object_hash_list(request, format=None):
# def object_domain_list(request, format=None):
# def handler_list_incident(request, incident_id, format=None):
# def handler_list(request, format=None):
# def template_tasks(request, format=None):
# def contact_list_incident(request, incident_id, format=None):
# def contact_list(request, format=None):
# def incident_list(request, format=None):
# def taxii_server_list(request, format=None):
# def taxii_collection_list(request, format=None):
# def taxii_feed_information(request, format=None):
# def list_comments(request, object_type, format=None):


from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from kraut_api import views
    url(r'^packages/(?P<pk>[0-9]+)/campaigns/$', views.package_detail_campaigns),
    url(r'^packages/(?P<pk>[0-9]+)/threatactors/$', views.package_detail_threatactors),
    url(r'^packages/(?P<pk>[0-9]+)/ttps/$', views.package_detail_ttps),
    url(r'^packages/(?P<pk>[0-9]+)/quick/(?P<otype>[a-zA-Z]+)/$', views.package_quick, name="package_quick"),
    url(r'^packagesd3/tree/(?P<pk>[0-9]+)/$', views.package_tree),
    # objects
    url(r'^objects/(?P<object_id>[0-9]+)/(?P<object_type>[a-zA-Z0-9]+)/packages/$', views.object_get_packages),
    url(r'^objects/(?P<object_id>[0-9]+)/(?P<object_type>[a-zA-Z0-9]+)/observables/$', views.object_get_observables),
    url(r'^objects/hashes/$', views.object_hash_list),
    url(r'^objects/ips/$', views.object_ip_list),
    url(r'^objects/domains/$', views.object_domain_list),
    url(r'^compositions/(?P<pk>[0-9]+)/$', views.composition_details),
    url(r'^compositions/(?P<pk>[0-9]+)/d3/$', views.composition_details_d3),
    # incident
    url(r'^incident/contacts/$', views.contact_list),
    url(r'^incident/handlers/$', views.handler_list),
    url(r'^incident/tasks/$', views.template_tasks),
    url(r'^incident/(?P<incident_id>[0-9]+)/handlers/$', views.handler_list_incident),
    url(r'^incident/(?P<incident_id>[0-9]+)/contacts/$', views.contact_list_incident),
    url(r'^incidents/$', views.incident_list),
    # ttp
    url(r'^ttps/$', views.ttp_list),
    url(r'^ttp/(?P<pk>[0-9]+)/related_ttps/$', views.ttp_related_ttps),
    url(r'^ttp/(?P<pk>[0-9]+)/related_packages/$', views.ttp_related_packages),
    url(r'^ttp/(?P<pk>[0-9]+)/malware_instances/$', views.ttp_malware_instances),
    url(r'^ttp/(?P<pk>[0-9]+)/attack_patterns/$', views.ttp_attack_patterns),
    # taxii
    url(r'^taxii/feed/information/$', views.taxii_feed_information),
    url(r'^taxii/servers/$', views.taxii_server_list),
    url(r'^taxii/collections/$', views.taxii_collection_list),

# Path: kraut_api/views.py
# def package_tree(request, pk):
# def package_quick(request, pk, otype, format=None):
# def package_list(request, format=None):
# def package_detail(request, pk, format=None):
# def package_detail_observables(request, pk, format=None):
# def package_detail_indicators(request, pk, format=None):
# def package_detail_campaigns(request, pk, format=None):
# def package_detail_ttps(request, pk, format=None):
# def package_detail_threatactors(request, pk, format=None):
# def threatactor_list(request, format=None):
# def threatactor_detail(request, pk, format=None):
# def threatactor_detail_campaigns(request, pk, format=None):
# def threatactor_detail_associated_threatactors(request, pk, format=None):
# def threatactor_detail_related_packages(request, pk, format=None):
# def threatactor_detail_observed_ttps(request, pk, format=None):
# def ttp_list(request, format=None):
# def ttp_related_ttps(request, pk, format=None):
# def ttp_related_packages(request, pk, format=None):
# def malware_instances_list(request, format=None):
# def ttp_malware_instances(request, pk, format=None):
# def attack_patterns_list(request, format=None):
# def ttp_attack_patterns(request, pk, format=None):
# def campaign_list(request, format=None):
# def campaign_detail(request, pk, format=None):
# def campaign_detail_related_indicators(request, pk, format=None):
# def campaign_detail_associated_campaigns(request, pk, format=None):
# def campaign_detail_related_packages(request, pk, format=None):
# def campaign_detail_related_ttps(request, pk, format=None):
# def indicator_list(request, format=None):
# def indicator_detail(request, pk, format=None):
# def indicator_detail_related_indicators(request, pk, format=None):
# def indicator_detail_observables(request, pk, format=None):
# def indicator_detail_ttps(request, pk, format=None):
# def indicator_detail_compositions(request, pk, format=None):
# def create_composition_json(composition, created):
# def composition_details(request, pk, format=None):
# def create_composition_json_d3(composition, created):
# def composition_details_d3(request, pk, format=None):
# def observable_list(request, format=None):
# def observable_detail(request, pk, format=None):
# def observable_related_objects(request, pk, format=None):
# def recurse_composition(item, test_list, done):
# def observable_related_indicators(request, pk, format=None):
# def observable_related_packages(request, pk, format=None):
# def object_get_observables(request, object_id, object_type):
# def object_get_packages(request, object_id, object_type):
# def object_ip_list(request, format=None):
# def object_hash_list(request, format=None):
# def object_domain_list(request, format=None):
# def handler_list_incident(request, incident_id, format=None):
# def handler_list(request, format=None):
# def template_tasks(request, format=None):
# def contact_list_incident(request, incident_id, format=None):
# def contact_list(request, format=None):
# def incident_list(request, format=None):
# def taxii_server_list(request, format=None):
# def taxii_collection_list(request, format=None):
# def taxii_feed_information(request, format=None):
# def list_comments(request, object_type, format=None):


# Path: kraut_api/urls.py
from django.conf.urls import url
from rest_framework.urlpatterns import format_suffix_patterns
from kraut_api import views

    url(r'^packages/(?P<pk>[0-9]+)/campaigns/$', views.package_detail_campaigns),
    url(r'^packages/(?P<pk>[0-9]+)/threatactors/$', views.package_detail_threatactors),
    url(r'^packages/(?P<pk>[0-9]+)/ttps/$', views.package_detail_ttps),
    url(r'^packages/(?P<pk>[0-9]+)/quick/(?P<otype>[a-zA-Z]+)/$', views.package_quick, name="package_quick"),
    url(r'^packagesd3/tree/(?P<pk>[0-9]+)/$', views.package_tree),
    # objects
    url(r'^objects/(?P<object_id>[0-9]+)/(?P<object_type>[a-zA-Z0-9]+)/packages/$', views.object_get_packages),
    url(r'^objects/(?P<object_id>[0-9]+)/(?P<object_type>[a-zA-Z0-9]+)/observables/$', views.object_get_observables),
    url(r'^objects/hashes/$', views.object_hash_list),
    url(r'^objects/ips/$', views.object_ip_list),
    url(r'^objects/domains/$', views.object_domain_list),
    url(r'^compositions/(?P<pk>[0-9]+)/$', views.composition_details),
    url(r'^compositions/(?P<pk>[0-9]+)/d3/$', views.composition_details_d3),
    # incident
    url(r'^incident/contacts/$', views.contact_list),
    url(r'^incident/handlers/$', views.handler_list),
    url(r'^incident/tasks/$', views.template_tasks),
    url(r'^incident/(?P<incident_id>[0-9]+)/handlers/$', views.handler_list_incident),
    url(r'^incident/(?P<incident_id>[0-9]+)/contacts/$', views.contact_list_incident),
    url(r'^incidents/$', views.incident_list),
    # ttp
    url(r'^ttps/$', views.ttp_list),
    url(r'^ttp/(?P<pk>[0-9]+)/related_ttps/$', views.ttp_related_ttps),
    url(r'^ttp/(?P<pk>[0-9]+)/related_packages/$', views.ttp_related_packages),
    url(r'^ttp/(?P<pk>[0-9]+)/malware_instances/$', views.ttp_malware_instances),
    url(r'^ttp/(?P<pk>[0-9]+)/attack_patterns/$', views.ttp_attack_patterns),
    # taxii
    url(r'^taxii/feed/information/$', views.taxii_feed_information),
    url(r'^taxii/servers/$', views.taxii_server_list),
    url(r'^taxii/collections/$', views.taxii_collection_list),

    url(r'^comments/(?P<object_type>[a-zA-Z0-9]+)/$', views.list_comments),