"""
Rutas de la versión 1 de la API.

Se arman en un solo archivo y no repartidas por aplicación a propósito: la
superficie pública es lo que hay que revisar entero antes de publicar un cambio,
y con cada aplicación registrando lo suyo nadie la ve completa nunca.
"""

from django.urls import path

from apps.accounts import api as accounts_api
from apps.coverage import api as coverage_api
from apps.credentials import api as credentials_api
from apps.domains import api as domains_api
from apps.indexing import api as indexing_api
from apps.jobs import api as jobs_api
from apps.onboarding import api as onboarding_api
from apps.sitemaps import api as sitemaps_api

urlpatterns = [
    path('account', accounts_api.AccountStatusView.as_view(), name='account'),
    path('api-keys', accounts_api.ApiKeyListView.as_view(), name='api-keys'),
    path('api-keys/<uuid:key_id>', accounts_api.ApiKeyDetailView.as_view(), name='api-key'),
    path('sessions', accounts_api.SessionListView.as_view(), name='sessions'),
    path(
        'sessions/<uuid:session_id>',
        accounts_api.SessionDetailView.as_view(),
        name='session',
    ),
    path('modules', credentials_api.ModuleListView.as_view(), name='modules'),
    path('credentials', credentials_api.CredentialListView.as_view(), name='credentials'),
    path(
        'credentials/<uuid:credential_id>',
        credentials_api.CredentialDetailView.as_view(),
        name='credential',
    ),
    path(
        'credentials/<uuid:credential_id>/verify',
        credentials_api.CredentialVerifyView.as_view(),
        name='credential-verify',
    ),
    path('domains', domains_api.DomainListView.as_view(), name='domains'),
    path('domains/<uuid:domain_id>', domains_api.DomainDetailView.as_view(), name='domain'),
    path(
        'domains/<uuid:domain_id>/check-access',
        domains_api.DomainCheckAccessView.as_view(),
        name='domain-check-access',
    ),
    path(
        'domains/<uuid:domain_id>/quota',
        domains_api.DomainQuotaView.as_view(),
        name='domain-quota',
    ),
    path(
        'domains/<uuid:domain_id>/sitemaps',
        sitemaps_api.SitemapListView.as_view(),
        name='domain-sitemaps',
    ),
    path(
        'domains/<uuid:domain_id>/sitemaps/<uuid:sitemap_id>',
        sitemaps_api.SitemapDetailView.as_view(),
        name='domain-sitemap',
    ),
    path(
        'domains/<uuid:domain_id>/sync',
        sitemaps_api.DomainSyncView.as_view(),
        name='domain-sync',
    ),
    path(
        'domains/<uuid:domain_id>/coverage',
        coverage_api.CoverageListView.as_view(),
        name='domain-coverage',
    ),
    path(
        'domains/<uuid:domain_id>/coverage/summary',
        coverage_api.CoverageSummaryView.as_view(),
        name='domain-coverage-summary',
    ),
    path(
        'domains/<uuid:domain_id>/coverage/export',
        coverage_api.CoverageExportView.as_view(),
        name='domain-coverage-export',
    ),
    path(
        'domains/<uuid:domain_id>/coverage/history',
        coverage_api.CoverageHistoryView.as_view(),
        name='domain-coverage-history',
    ),
    path(
        'domains/<uuid:domain_id>/inspections',
        coverage_api.DomainInspectionsView.as_view(),
        name='domain-inspections',
    ),
    path(
        'domains/<uuid:domain_id>/batches',
        jobs_api.DomainBatchListView.as_view(),
        name='domain-batches',
    ),
    path('batches/<uuid:batch_id>', jobs_api.BatchDetailView.as_view(), name='batch'),
    path(
        'domains/<uuid:domain_id>/indexing-batches',
        indexing_api.DomainIndexingBatchView.as_view(),
        name='domain-indexing-batches',
    ),
    path(
        'indexing-batches/<uuid:batch_id>',
        indexing_api.IndexingBatchDetailView.as_view(),
        name='indexing-batch',
    ),
    path('onboarding', onboarding_api.OnboardingView.as_view(), name='onboarding'),
    path(
        'onboarding/steps/<str:step>/verify',
        onboarding_api.OnboardingStepVerifyView.as_view(),
        name='onboarding-step-verify',
    ),
    path(
        'onboarding/dismiss',
        onboarding_api.OnboardingDismissView.as_view(),
        name='onboarding-dismiss',
    ),
]
