archivebox.api.v1_core

Module Contents

Classes

CustomPagination

MinimalArchiveResultSchema

ArchiveResultSchema

ArchiveResultFilterSchema

SnapshotSchema

SnapshotUpdateSchema

SnapshotCreateSchema

SnapshotDeleteResponseSchema

SnapshotFilterSchema

TagSchema

TagAutocompleteSchema

TagCreateSchema

TagCreateResponseSchema

TagSearchSnapshotSchema

TagSearchCardSchema

TagSearchResponseSchema

TagUpdateSchema

TagUpdateResponseSchema

TagDeleteResponseSchema

TagSnapshotRequestSchema

TagSnapshotResponseSchema

Functions

get_archiveresults

List all ArchiveResult entries matching these filters.

get_archiveresult

Get a specific ArchiveResult by id.

normalize_tag_list

get_snapshots

List all Snapshot entries matching these filters.

get_snapshot

Get a specific Snapshot by id.

create_snapshot

patch_snapshot

Update a snapshot (e.g., set status=sealed to cancel queued work).

delete_snapshot

get_tags

get_tag

get_any

Get any object by its ID (e.g. snapshot, archiveresult, tag, crawl, etc.).

search_tags

Return detailed tag cards for admin/live-search UIs.

_public_tag_listing_enabled

_request_has_tag_autocomplete_access

tags_autocomplete

Return tags matching the query for autocomplete.

tags_create

Create a new tag or return existing one.

rename_tag

delete_tag

tag_urls_export

tag_snapshots_export

tags_add_to_snapshot

Add a tag to a snapshot. Creates the tag if it doesn’t exist.

tags_remove_from_snapshot

Remove a tag from a snapshot.

Data

router

API

archivebox.api.v1_core.router[source]

β€˜Router(…)’

class archivebox.api.v1_core.CustomPagination[source]

Bases: ninja.pagination.PaginationBase

class Input[source]

Bases: ninja.pagination.PaginationBase.Input

limit: int[source]

200

offset: int[source]

0

page: int[source]

0

class Output[source]

Bases: ninja.pagination.PaginationBase.Output

count: int[source]

None

total_items: int[source]

None

total_pages: int[source]

None

page: int[source]

None

limit: int[source]

None

offset: int[source]

None

num_items: int[source]

None

items: list[Any][source]

None

paginate_queryset(queryset, pagination: Input, request: django.http.HttpRequest, **params)[source]
class archivebox.api.v1_core.MinimalArchiveResultSchema[source]

Bases: ninja.Schema

TYPE: str[source]

β€˜core.models.ArchiveResult’

id: uuid.UUID[source]

None

created_at: datetime.datetime | None[source]

None

modified_at: datetime.datetime | None[source]

None

created_by_id: str[source]

None

created_by_username: str[source]

None

status: str[source]

None

retry_at: datetime.datetime | None[source]

None

plugin: str[source]

None

hook_name: str[source]

None

process_id: uuid.UUID | None[source]

None

cmd_version: str | None[source]

None

cmd: list[str] | None[source]

None

pwd: str | None[source]

None

output_str: str[source]

None

output_json: dict[str, Any] | None[source]

None

output_files: dict[str, dict[str, Any]] | None[source]

None

output_size: int[source]

None

output_mimetypes: str[source]

None

start_ts: datetime.datetime | None[source]

None

end_ts: datetime.datetime | None[source]

None

static resolve_created_by_id(obj)[source]
static resolve_created_by_username(obj) str[source]
static resolve_output_files(obj)[source]
static resolve_output_mimetypes(obj) str[source]
class archivebox.api.v1_core.ArchiveResultSchema[source]

Bases: archivebox.api.v1_core.MinimalArchiveResultSchema

TYPE: str[source]

β€˜core.models.ArchiveResult’

snapshot_id: uuid.UUID[source]

None

snapshot_timestamp: str[source]

None

snapshot_url: str[source]

None

snapshot_tags: list[str][source]

None

static resolve_snapshot_timestamp(obj)[source]
static resolve_snapshot_url(obj)[source]
static resolve_snapshot_id(obj)[source]
static resolve_snapshot_tags(obj)[source]
class archivebox.api.v1_core.ArchiveResultFilterSchema[source]

Bases: ninja.FilterSchema

id: Annotated[str | None, FilterLookup(['id__startswith', 'snapshot__id__startswith', 'snapshot__timestamp__startswith'])][source]

None

search: Annotated[str | None, FilterLookup(['snapshot__url__icontains', 'snapshot__title__icontains', 'snapshot__tags__name__icontains', 'plugin', 'output_str__icontains', 'id__startswith', 'snapshot__id__startswith', 'snapshot__timestamp__startswith'])][source]

None

snapshot_id: Annotated[str | None, FilterLookup(['snapshot__id__startswith', 'snapshot__timestamp__startswith'])][source]

None

snapshot_url: Annotated[str | None, FilterLookup('snapshot__url__icontains')][source]

None

snapshot_tag: Annotated[str | None, FilterLookup('snapshot__tags__name__icontains')][source]

None

status: Annotated[str | None, FilterLookup('status')][source]

None

output_str: Annotated[str | None, FilterLookup('output_str__icontains')][source]

None

plugin: Annotated[str | None, FilterLookup('plugin__icontains')][source]

None

hook_name: Annotated[str | None, FilterLookup('hook_name__icontains')][source]

None

process_id: Annotated[str | None, FilterLookup('process__id__startswith')][source]

None

cmd: Annotated[str | None, FilterLookup('cmd__0__icontains')][source]

None

pwd: Annotated[str | None, FilterLookup('pwd__icontains')][source]

None

cmd_version: Annotated[str | None, FilterLookup('cmd_version')][source]

None

created_at: Annotated[datetime.datetime | None, FilterLookup('created_at')][source]

None

created_at__gte: Annotated[datetime.datetime | None, FilterLookup('created_at__gte')][source]

None

created_at__lt: Annotated[datetime.datetime | None, FilterLookup('created_at__lt')][source]

None

archivebox.api.v1_core.get_archiveresults(request: django.http.HttpRequest, filters: ninja.Query[archivebox.api.v1_core.ArchiveResultFilterSchema])[source]

List all ArchiveResult entries matching these filters.

archivebox.api.v1_core.get_archiveresult(request: django.http.HttpRequest, archiveresult_id: str)[source]

Get a specific ArchiveResult by id.

class archivebox.api.v1_core.SnapshotSchema[source]

Bases: ninja.Schema

TYPE: str[source]

β€˜core.models.Snapshot’

id: uuid.UUID[source]

None

created_by_id: str[source]

None

created_by_username: str[source]

None

created_at: datetime.datetime[source]

None

modified_at: datetime.datetime[source]

None

status: str[source]

None

retry_at: datetime.datetime | None[source]

None

bookmarked_at: datetime.datetime[source]

None

downloaded_at: datetime.datetime | None[source]

None

url: str[source]

None

tags: list[str][source]

None

title: str | None[source]

None

timestamp: str[source]

None

archive_path: str[source]

None

archive_size: int[source]

None

output_size: int[source]

None

num_archiveresults: int[source]

None

archiveresults: list[archivebox.api.v1_core.MinimalArchiveResultSchema][source]

None

static resolve_created_by_id(obj)[source]
static resolve_created_by_username(obj)[source]
static resolve_tags(obj)[source]
static resolve_archive_size(obj)[source]
static resolve_output_size(obj)[source]
static resolve_num_archiveresults(obj, context)[source]
static resolve_archiveresults(obj, context)[source]
class archivebox.api.v1_core.SnapshotUpdateSchema[source]

Bases: ninja.Schema

status: str | None[source]

None

retry_at: datetime.datetime | None[source]

None

tags: list[str] | None[source]

None

class archivebox.api.v1_core.SnapshotCreateSchema[source]

Bases: ninja.Schema

url: str[source]

None

crawl_id: str | None[source]

None

depth: int[source]

0

title: str | None[source]

None

tags: list[str] | None[source]

None

status: str | None[source]

None

class archivebox.api.v1_core.SnapshotDeleteResponseSchema[source]

Bases: ninja.Schema

success: bool[source]

None

snapshot_id: str[source]

None

crawl_id: str[source]

None

deleted_count: int[source]

None

archivebox.api.v1_core.normalize_tag_list(tags: list[str] | None = None) list[str][source]
class archivebox.api.v1_core.SnapshotFilterSchema[source]

Bases: ninja.FilterSchema

id: Annotated[str | None, FilterLookup(['id__icontains', 'timestamp__startswith'])][source]

None

created_by_id: Annotated[str | None, FilterLookup('crawl__created_by_id')][source]

None

created_by_username: Annotated[str | None, FilterLookup('crawl__created_by__username__icontains')][source]

None

created_at__gte: Annotated[datetime.datetime | None, FilterLookup('created_at__gte')][source]

None

created_at__lt: Annotated[datetime.datetime | None, FilterLookup('created_at__lt')][source]

None

created_at: Annotated[datetime.datetime | None, FilterLookup('created_at')][source]

None

modified_at: Annotated[datetime.datetime | None, FilterLookup('modified_at')][source]

None

modified_at__gte: Annotated[datetime.datetime | None, FilterLookup('modified_at__gte')][source]

None

modified_at__lt: Annotated[datetime.datetime | None, FilterLookup('modified_at__lt')][source]

None

search: Annotated[str | None, FilterLookup(['url__icontains', 'title__icontains', 'tags__name__icontains', 'id__icontains', 'timestamp__startswith'])][source]

None

url: Annotated[str | None, FilterLookup('url')][source]

None

tag: Annotated[str | None, FilterLookup('tags__name')][source]

None

title: Annotated[str | None, FilterLookup('title__icontains')][source]

None

timestamp: Annotated[str | None, FilterLookup('timestamp__startswith')][source]

None

bookmarked_at__gte: Annotated[datetime.datetime | None, FilterLookup('bookmarked_at__gte')][source]

None

bookmarked_at__lt: Annotated[datetime.datetime | None, FilterLookup('bookmarked_at__lt')][source]

None

archivebox.api.v1_core.get_snapshots(request: django.http.HttpRequest, filters: ninja.Query[archivebox.api.v1_core.SnapshotFilterSchema], with_archiveresults: bool = False)[source]

List all Snapshot entries matching these filters.

archivebox.api.v1_core.get_snapshot(request: django.http.HttpRequest, snapshot_id: str, with_archiveresults: bool = True)[source]

Get a specific Snapshot by id.

archivebox.api.v1_core.create_snapshot(request: django.http.HttpRequest, data: archivebox.api.v1_core.SnapshotCreateSchema)[source]
archivebox.api.v1_core.patch_snapshot(request: django.http.HttpRequest, snapshot_id: str, data: archivebox.api.v1_core.SnapshotUpdateSchema)[source]

Update a snapshot (e.g., set status=sealed to cancel queued work).

archivebox.api.v1_core.delete_snapshot(request: django.http.HttpRequest, snapshot_id: str)[source]
class archivebox.api.v1_core.TagSchema[source]

Bases: ninja.Schema

TYPE: str[source]

β€˜core.models.Tag’

id: int[source]

None

modified_at: datetime.datetime[source]

None

created_at: datetime.datetime[source]

None

created_by_id: str[source]

None

created_by_username: str[source]

None

name: str[source]

None

num_snapshots: int[source]

None

snapshots: list[archivebox.api.v1_core.SnapshotSchema][source]

None

static resolve_created_by_id(obj)[source]
static resolve_created_by_username(obj)[source]
static resolve_num_snapshots(obj, context)[source]
static resolve_snapshots(obj, context)[source]
archivebox.api.v1_core.get_tags(request: django.http.HttpRequest)[source]
archivebox.api.v1_core.get_tag(request: django.http.HttpRequest, tag_id: str, with_snapshots: bool = True)[source]
archivebox.api.v1_core.get_any(request: django.http.HttpRequest, id: str)[source]

Get any object by its ID (e.g. snapshot, archiveresult, tag, crawl, etc.).

class archivebox.api.v1_core.TagAutocompleteSchema[source]

Bases: ninja.Schema

tags: list[dict][source]

None

class archivebox.api.v1_core.TagCreateSchema[source]

Bases: ninja.Schema

name: str[source]

None

class archivebox.api.v1_core.TagCreateResponseSchema[source]

Bases: ninja.Schema

success: bool[source]

None

tag_id: int[source]

None

tag_name: str[source]

None

created: bool[source]

None

class archivebox.api.v1_core.TagSearchSnapshotSchema[source]

Bases: ninja.Schema

id: str[source]

None

title: str[source]

None

url: str[source]

None

favicon_url: str[source]

None

admin_url: str[source]

None

archive_url: str[source]

None

downloaded_at: str | None[source]

None

class archivebox.api.v1_core.TagSearchCardSchema[source]

Bases: ninja.Schema

id: int[source]

None

name: str[source]

None

slug: str[source]

None

num_snapshots: int[source]

None

filter_url: str[source]

None

edit_url: str[source]

None

export_urls_url: str[source]

None

export_jsonl_url: str[source]

None

rename_url: str[source]

None

delete_url: str[source]

None

snapshots: list[archivebox.api.v1_core.TagSearchSnapshotSchema][source]

None

class archivebox.api.v1_core.TagSearchResponseSchema[source]

Bases: ninja.Schema

tags: list[archivebox.api.v1_core.TagSearchCardSchema][source]

None

sort: str[source]

None

created_by: str[source]

None

year: str[source]

None

has_snapshots: str[source]

None

class archivebox.api.v1_core.TagUpdateSchema[source]

Bases: ninja.Schema

name: str[source]

None

class archivebox.api.v1_core.TagUpdateResponseSchema[source]

Bases: ninja.Schema

success: bool[source]

None

tag_id: int[source]

None

tag_name: str[source]

None

class archivebox.api.v1_core.TagDeleteResponseSchema[source]

Bases: ninja.Schema

success: bool[source]

None

tag_id: int[source]

None

deleted_count: int[source]

None

class archivebox.api.v1_core.TagSnapshotRequestSchema[source]

Bases: ninja.Schema

snapshot_id: str[source]

None

tag_name: str | None[source]

None

tag_id: int | None[source]

None

class archivebox.api.v1_core.TagSnapshotResponseSchema[source]

Bases: ninja.Schema

success: bool[source]

None

tag_id: int[source]

None

tag_name: str[source]

None

archivebox.api.v1_core.search_tags(request: django.http.HttpRequest, q: str = '', sort: str = 'created_desc', created_by: str = '', year: str = '', has_snapshots: str = 'all')[source]

Return detailed tag cards for admin/live-search UIs.

archivebox.api.v1_core._public_tag_listing_enabled() bool[source]
archivebox.api.v1_core._request_has_tag_autocomplete_access(request: django.http.HttpRequest) bool[source]
archivebox.api.v1_core.tags_autocomplete(request: django.http.HttpRequest, q: str = '')[source]

Return tags matching the query for autocomplete.

archivebox.api.v1_core.tags_create(request: django.http.HttpRequest, data: archivebox.api.v1_core.TagCreateSchema)[source]

Create a new tag or return existing one.

archivebox.api.v1_core.rename_tag(request: django.http.HttpRequest, tag_id: int, data: archivebox.api.v1_core.TagUpdateSchema)[source]
archivebox.api.v1_core.delete_tag(request: django.http.HttpRequest, tag_id: int)[source]
archivebox.api.v1_core.tag_urls_export(request: django.http.HttpRequest, tag_id: int)[source]
archivebox.api.v1_core.tag_snapshots_export(request: django.http.HttpRequest, tag_id: int)[source]
archivebox.api.v1_core.tags_add_to_snapshot(request: django.http.HttpRequest, data: archivebox.api.v1_core.TagSnapshotRequestSchema)[source]

Add a tag to a snapshot. Creates the tag if it doesn’t exist.

archivebox.api.v1_core.tags_remove_from_snapshot(request: django.http.HttpRequest, data: archivebox.api.v1_core.TagSnapshotRequestSchema)[source]

Remove a tag from a snapshot.