Source code for swh.deposit.api.urls
# Copyright (C) 2017-2023  The Software Heritage developers
# See the AUTHORS file at the top-level directory of this distribution
# License: GNU General Public License version 3, or any later version
# See top-level LICENSE file for more information
"""SWH's deposit api URL Configuration"""
from django.shortcuts import render
from django.urls import re_path as url
from swh.deposit.api.collection import CollectionAPI
from swh.deposit.api.content import ContentAPI
from swh.deposit.api.edit import EditAPI
from swh.deposit.api.edit_media import EditMediaAPI
from swh.deposit.api.service_document import ServiceDocumentAPI
from swh.deposit.api.state import StateAPI
from swh.deposit.api.sword_edit import SwordEditAPI
from swh.deposit.config import (
    COL_IRI,
    CONT_FILE_IRI,
    EDIT_IRI,
    EM_IRI,
    SD_IRI,
    SE_IRI,
    STATE_IRI,
)
[docs]
def api_view(req):
    return render(req, "api.html") 
# PUBLIC API
urlpatterns = [
    # simple view on the api
    url(r"^$", api_view, name="api"),
    # SD IRI - Service Document IRI
    # -> GET
    url(r"^servicedocument/", ServiceDocumentAPI.as_view(), name=SD_IRI),
    # Col-IRI - Collection IRI
    # -> POST
    url(r"^(?P<collection_name>[^/]+)/$", CollectionAPI.as_view(), name=COL_IRI),
    # EM IRI - Atom Edit Media IRI (update archive IRI)
    # -> PUT (update-in-place existing archive)
    # -> POST (add new archive)
    url(
        r"^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/media/$",
        EditMediaAPI.as_view(),
        name=EM_IRI,
    ),
    # Edit IRI - Atom Entry Edit IRI (update metadata IRI)
    # -> PUT (update in place)
    # -> DELETE (delete container)
    url(
        r"^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/atom/$",
        EditAPI.as_view(),
        name=EDIT_IRI,
    ),
    # SE IRI - Sword Edit IRI ;; possibly same as Edit IRI
    # -> POST (add new metadata)
    url(
        r"^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/metadata/$",
        SwordEditAPI.as_view(),
        name=SE_IRI,
    ),
    # State IRI
    # -> GET
    url(
        r"^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/status/$",
        StateAPI.as_view(),
        name=STATE_IRI,
    ),
    # Cont-IRI
    # -> GET
    url(
        r"^(?P<collection_name>[^/]+)/(?P<deposit_id>[^/]+)/content/$",
        ContentAPI.as_view(),
        name=CONT_FILE_IRI,
    ),  # specification is not clear about
    # File-IRI, we assume it's the same as
    # the Cont-IRI one
]