πŸ“¦ 1990 Web Archive // Technical Specification

v3.1.0 ISO 14721 OAIS W3C Memento RFC 7089

Official system architecture, data schemas, API contracts, and preservation protocols for the 1990 Web Archive platform. Intended for developers, researchers, and integration partners.

1. System Overview & Scope

The 1990 Web Archive is a distributed digital preservation system engineered to capture, normalize, store, and provide authenticated access to early World Wide Web content (1990–1999). The platform operates strictly on the Open Archival Information System (OAIS) reference model, ensuring long-term integrity, authenticity, and accessibility of historically significant web resources.

Core Objectives:

2. Architecture & Data Flow

The system follows a microservices architecture with event-driven ingestion. Key components include:


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Crawlers   │────▢│  Event Bus   │────▢│  Processing │────▢│  Object Storeβ”‚
β”‚  (Dist. Pool)β”‚   β”‚  (Kafka/ NATS)β”‚    β”‚  (Parse/    β”‚    β”‚  (S3/GCS Comp)β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β”‚  Validate) β”‚    β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜            β”‚
                                                β”‚                    β”‚
                                          β”Œβ”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
                                          β”‚  Metadata  │────▢│  Auth & API   β”‚
                                          β”‚  Indexer   β”‚     β”‚  Gateway      β”‚
                                          β”‚  (Postgres)β”‚     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Infrastructure Stack: Kubernetes orchestration, Apache Kafka for event streaming, PostgreSQL for relational metadata, S3-compatible object storage for binary payloads, and Elasticsearch for full-text/search indexing. All services communicate via gRPC or REST with strict schema validation.

3. Ingestion & Crawling Pipeline

Archival capture follows a multi-stage validation and normalization process to ensure bit-accurate preservation:

  1. Discovery: URL seeds sourced from historical dumps, Memento TimeGate mirrors, and authenticated researcher submissions.
  2. Capture: Raw HTTP/1.0 socket capture paired with legacy user-agent emulation (Netscape Navigator 4.x, Mosaic 3.0) to trigger era-appropriate server responses.
  3. Normalization: HTML Tidy processing, character encoding detection (ISO-8859-1/Shift_JIS β†’ UTF-8), and relative-to-absolute URL resolution.
  4. Fingerprinting: SHA-256 hash generation for content deduplication and fixity verification.
  5. Queueing: Published to ingestion topic with `ArchiveEvent` schema. Failed captures enter exponential backoff retry logic.
{
  "event_id": "evt_9a8b7c6d",
  "timestamp": "2024-10-15T08:30:00Z",
  "source_url": "http://www.geocities.com/SunsetStrip/7842/",
  "capture_method": "http1.0_socket_legacy",
  "status": "pending_validation",
  "payload": {
    "html_size_bytes": 14200,
    "detected_charset": "iso-8859-1",
    "http_status": 200
  }
}

4. Storage & Metadata Schema

All archived entities conform to a normalized relational structure optimized for archival retrieval and research querying:

TableKey ColumnsDescription
archive_entitiesentity_id (UUID), original_url, capture_datePrimary record for each archived page/resource
storage_refsentity_id, bucket, key, sha256Object storage pointers and integrity hashes
metadata_manifestentity_id, content_type, charset, tech_stackPreservation metadata (MIME, charset, detected technologies)
access_logslog_id, entity_id, user_agent, timestampAudit trail for research access and API usage

Storage Layout: s3://1990-archive/{year}/{month}/{entity_id}/index.html + linked assets preserved in /assets/ with path rewriting for offline rendering.

5. Core API Reference

RESTful endpoints for programmatic access. Authentication required via API key in X-Archive-Key header. All responses return JSON unless Accept: application/json is overridden.

GET /api/v2/archive/{entity_id}

Returns full entity record, metadata, Memento links, and signed download URLs. Rate limit: 100 req/min.

POST /api/v2/ingest/submit

Submit URL batch for archival processing. Accepts JSON array or raw newline-separated text. Returns job tracking ID.

GET /api/v2/search?q=*&filter_era=1990-1999&format=json

Full-text and metadata search. Supports Lucene syntax. Pagination via cursor token. Max results: 500 per page.

GET /api/v2/verify/{sha256_hash}

Verify cryptographic integrity of an archived payload. Returns boolean status and fixity check timestamp.

6. Preservation Standards

7. Security & Access Control

Access is tiered based on researcher credentials, institutional affiliation, and data sensitivity classification:

RolePermissionsRate Limits
publicRead-only access to public index & TimeGate30 req/min
researcherFull metadata, raw payload download, batch search500 req/min
curatorIngest submission, metadata editing, fixity override2000 req/min
adminSystem configuration, access management, audit logsUnlimited

All API traffic enforced over TLS 1.3. Payloads encrypted at rest (AES-256-GCM). Immutable audit logging enabled for all write/ingest operations. OAuth 2.0 client credentials flow supported for institutional access.

8. Version History

VersionDateChanges
v3.1.02024-12-01Memento TimeGate RFC 7089 full compliance, cursor pagination
v2.4.12024-10-15Fixed charset detection edge cases (Shift_JIS/EUC-KR), Kafka upgrade
v2.3.02024-08-22OAIS PREMIS migration, Elasticsearch v8 vector search indexing
v2.1.02024-04-15Researcher API tier rollout, batch ingest endpoint, OAuth 2.0 support
v1.0.02023-11-01Initial public specification release, core architecture documentation