from django.urls import include, path, re_path from rest_framework.routers import SimpleRouter from desecapi import views tokens_router = SimpleRouter() tokens_router.register(r"", views.TokenViewSet, basename="token") tokendomainpolicies_router = SimpleRouter() tokendomainpolicies_router.register( r"", views.TokenDomainPolicyViewSet, basename="token_domain_policies" ) auth_urls = [ # User management path("", views.AccountCreateView.as_view(), name="register"), path("account/", views.AccountView.as_view(), name="account"), path("account/delete/", views.AccountDeleteView.as_view(), name="account-delete"), path( "account/change-email/", views.AccountChangeEmailView.as_view(), name="account-change-email", ), path( "account/reset-password/", views.AccountResetPasswordView.as_view(), name="account-reset-password", ), path("login/", views.AccountLoginView.as_view(), name="login"), path("logout/", views.AccountLogoutView.as_view(), name="logout"), # Token management path("tokens/", include(tokens_router.urls)), path( "tokens//policies/", views.TokenPoliciesRoot.as_view(), name="token-policies-root", ), path( "tokens//policies/domain/", include(tokendomainpolicies_router.urls), ), ] domains_router = SimpleRouter() domains_router.register(r"", views.DomainViewSet, basename="domain") api_urls = [ # API home path("", views.Root.as_view(), name="root"), # Domain and RRSet management path("domains/", include(domains_router.urls)), path("domains//rrsets/", views.RRsetList.as_view(), name="rrsets"), path( "domains//rrsets/...//", views.RRsetDetail.as_view(), kwargs={"subname": ""}, ), re_path( r"^domains/(?P[^/]+)/rrsets/(?P[^/]*)\.\.\./(?P[^/]+)/$", views.RRsetDetail.as_view(), name="rrset", ), path( "domains//rrsets/@//", views.RRsetDetail.as_view(), kwargs={"subname": ""}, ), re_path( r"^domains/(?P[^/]+)/rrsets/(?P[^/]*)@/(?P[^/]+)/$", views.RRsetDetail.as_view(), name="rrset@", ), path("domains//rrsets///", views.RRsetDetail.as_view()), # DynDNS update path("dyndns/update", views.DynDNS12UpdateView.as_view(), name="dyndns12update"), # Serials path("serials/", views.SerialListView.as_view(), name="serial"), # Donation path("donation/", views.DonationList.as_view(), name="donation"), # Authenticated Actions path( "v/activate-account//", views.AuthenticatedActivateUserActionView.as_view(), name="confirm-activate-account", ), path( "v/change-email//", views.AuthenticatedChangeEmailUserActionView.as_view(), name="confirm-change-email", ), path( "v/change-outreach-preference//", views.AuthenticatedChangeOutreachPreferenceUserActionView.as_view(), name="confirm-change-outreach-preference", ), path( "v/confirm-account//", views.AuthenticatedConfirmAccountUserActionView.as_view(), name="confirm-confirm-account", ), path( "v/reset-password//", views.AuthenticatedResetPasswordUserActionView.as_view(), name="confirm-reset-password", ), path( "v/delete-account//", views.AuthenticatedDeleteUserActionView.as_view(), name="confirm-delete-account", ), path( "v/renew-domain//", views.AuthenticatedRenewDomainBasicUserActionView.as_view(), name="confirm-renew-domain", ), # CAPTCHA path("captcha/", views.CaptchaView.as_view(), name="captcha"), ] app_name = "desecapi" urlpatterns = [ path("auth/", include(auth_urls)), path("", include(api_urls)), ]