Official system architecture, data schemas, API contracts, and preservation protocols for the 1990 Web Archive platform. Intended for developers, researchers, and integration partners.
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:
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.
Archival capture follows a multi-stage validation and normalization process to ensure bit-accurate preservation:
{
"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
}
}
All archived entities conform to a normalized relational structure optimized for archival retrieval and research querying:
| Table | Key Columns | Description |
|---|---|---|
archive_entities | entity_id (UUID), original_url, capture_date | Primary record for each archived page/resource |
storage_refs | entity_id, bucket, key, sha256 | Object storage pointers and integrity hashes |
metadata_manifest | entity_id, content_type, charset, tech_stack | Preservation metadata (MIME, charset, detected technologies) |
access_logs | log_id, entity_id, user_agent, timestamp | Audit 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.
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.
Returns full entity record, metadata, Memento links, and signed download URLs. Rate limit: 100 req/min.
Submit URL batch for archival processing. Accepts JSON array or raw newline-separated text. Returns job tracking ID.
Full-text and metadata search. Supports Lucene syntax. Pagination via cursor token. Max results: 500 per page.
Verify cryptographic integrity of an archived payload. Returns boolean status and fixity check timestamp.
Access is tiered based on researcher credentials, institutional affiliation, and data sensitivity classification:
| Role | Permissions | Rate Limits |
|---|---|---|
public | Read-only access to public index & TimeGate | 30 req/min |
researcher | Full metadata, raw payload download, batch search | 500 req/min |
curator | Ingest submission, metadata editing, fixity override | 2000 req/min |
admin | System configuration, access management, audit logs | Unlimited |
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.
| Version | Date | Changes |
|---|---|---|
| v3.1.0 | 2024-12-01 | Memento TimeGate RFC 7089 full compliance, cursor pagination |
| v2.4.1 | 2024-10-15 | Fixed charset detection edge cases (Shift_JIS/EUC-KR), Kafka upgrade |
| v2.3.0 | 2024-08-22 | OAIS PREMIS migration, Elasticsearch v8 vector search indexing |
| v2.1.0 | 2024-04-15 | Researcher API tier rollout, batch ingest endpoint, OAuth 2.0 support |
| v1.0.0 | 2023-11-01 | Initial public specification release, core architecture documentation |