version_1.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. from django.urls import include, path, re_path
  2. from rest_framework.routers import SimpleRouter
  3. from desecapi import views
  4. tokens_router = SimpleRouter()
  5. tokens_router.register(r'', views.TokenViewSet, basename='token')
  6. tokendomainpolicies_router = SimpleRouter()
  7. tokendomainpolicies_router.register(r'', views.TokenDomainPolicyViewSet, basename='token_domain_policies')
  8. auth_urls = [
  9. # User management
  10. path('', views.AccountCreateView.as_view(), name='register'),
  11. path('account/', views.AccountView.as_view(), name='account'),
  12. path('account/delete/', views.AccountDeleteView.as_view(), name='account-delete'),
  13. path('account/change-email/', views.AccountChangeEmailView.as_view(), name='account-change-email'),
  14. path('account/reset-password/', views.AccountResetPasswordView.as_view(), name='account-reset-password'),
  15. path('login/', views.AccountLoginView.as_view(), name='login'),
  16. path('logout/', views.AccountLogoutView.as_view(), name='logout'),
  17. # Token management
  18. path('tokens/', include(tokens_router.urls)),
  19. path('tokens/<uuid:token_id>/policies/', views.TokenPoliciesRoot.as_view(), name='token-policies-root'),
  20. path('tokens/<uuid:token_id>/policies/domain/', include(tokendomainpolicies_router.urls)),
  21. ]
  22. domains_router = SimpleRouter()
  23. domains_router.register(r'', views.DomainViewSet, basename='domain')
  24. api_urls = [
  25. # API home
  26. path('', views.Root.as_view(), name='root'),
  27. # Domain and RRSet management
  28. path('domains/', include(domains_router.urls)),
  29. path('domains/<name>/rrsets/', views.RRsetList.as_view(), name='rrsets'),
  30. path('domains/<name>/rrsets/.../<type>/', views.RRsetDetail.as_view(), kwargs={'subname': ''}),
  31. re_path(r'^domains/(?P<name>[^/]+)/rrsets/(?P<subname>[^/]*)\.\.\./(?P<type>[^/]+)/$',
  32. views.RRsetDetail.as_view(), name='rrset'),
  33. path('domains/<name>/rrsets/@/<type>/', views.RRsetDetail.as_view(), kwargs={'subname': ''}),
  34. re_path(r'^domains/(?P<name>[^/]+)/rrsets/(?P<subname>[^/]*)@/(?P<type>[^/]+)/$',
  35. views.RRsetDetail.as_view(), name='rrset@'),
  36. path('domains/<name>/rrsets/<subname>/<type>/', views.RRsetDetail.as_view()),
  37. # DynDNS update
  38. path('dyndns/update', views.DynDNS12UpdateView.as_view(), name='dyndns12update'),
  39. # Serials
  40. path('serials/', views.SerialListView.as_view(), name='serial'),
  41. # Donation
  42. path('donation/', views.DonationList.as_view(), name='donation'),
  43. # Authenticated Actions
  44. path('v/activate-account/<code>/', views.AuthenticatedActivateUserActionView.as_view(), name='confirm-activate-account'),
  45. path('v/change-email/<code>/', views.AuthenticatedChangeEmailUserActionView.as_view(), name='confirm-change-email'),
  46. path('v/change-outreach-preference/<code>/', views.AuthenticatedChangeOutreachPreferenceUserActionView.as_view(), name='confirm-change-outreach-preference'),
  47. path('v/confirm-account/<code>/', views.AuthenticatedConfirmAccountUserActionView.as_view(), name='confirm-confirm-account'),
  48. path('v/reset-password/<code>/', views.AuthenticatedResetPasswordUserActionView.as_view(), name='confirm-reset-password'),
  49. path('v/delete-account/<code>/', views.AuthenticatedDeleteUserActionView.as_view(), name='confirm-delete-account'),
  50. path('v/renew-domain/<code>/', views.AuthenticatedRenewDomainBasicUserActionView.as_view(), name='confirm-renew-domain'),
  51. # CAPTCHA
  52. path('captcha/', views.CaptchaView.as_view(), name='captcha'),
  53. ]
  54. app_name = 'desecapi'
  55. urlpatterns = [
  56. path('auth/', include(auth_urls)),
  57. path('', include(api_urls)),
  58. ]