-
Notifications
You must be signed in to change notification settings - Fork 1
apis_contentfs
Stand: 5. Dezember 2025
Version: 1.0.0
Kategorie: Apis
Schnittstelle zum Speichern, Abrufen und Löschen binärer Inhalte (Blobs) mit integren Metadaten. Unterstützt ETags (SHA‑256) und Byte-Range Downloads.
- Basis-URL:
http://<host>:<port> - Ressourcenpfad:
/contentfs/:pk - Auth: Scopes + Policies erforderlich (siehe Sicherheit & Access Control)
-
PUT
/contentfs/:pk- Zweck: Blob hochladen oder überschreiben
- Header:
-
Content-Type: MIME-Typ (z. B.application/octet-stream) - Optional
X-Checksum-SHA256: erwarteter SHA‑256 des Request-Bodys (Hex)
-
- Body: binär (roh)
- Antworten:
- 201 Created
- Header:
ETag(SHA‑256),Location: /contentfs/:pk - Body: JSON
{ pk, mime, size, sha256_hex }
- Header:
- 400 Bad Request (Checksum mismatch)
- 500 Internal Server Error (Speicherfehler)
- 201 Created
-
HEAD
/contentfs/:pk- Zweck: Metadaten abrufen
- Antworten:
- 200 OK
- Header:
Content-Length,Content-Type,ETag,Accept-Ranges: bytes
- Header:
- 404 Not Found
- 200 OK
-
GET
/contentfs/:pk- Zweck: Blob abrufen (vollständig oder als Byte-Range)
- Header (optional):
-
Range: bytes=<start>-<end>(einzelne Range)
-
- Antworten:
- 200 OK (vollständiger Inhalt)
- 206 Partial Content (bei Range)
- Header:
Content-Range: bytes <start>-<end>/<total>,Accept-Ranges: bytes
- Header:
- 404 Not Found
- 416 Range Not Satisfiable (ungültiger Bereich)
-
DELETE
/contentfs/:pk- Zweck: Blob + Metadaten löschen
- Antworten:
- 204 No Content
- 404 Not Found (wenn weder Meta noch Blob existiert)
PUT /contentfs/report_2025.bin HTTP/1.1
Content-Type: application/octet-stream
X-Checksum-SHA256: 1e0023...abcd
<binary>Antwort:
HTTP/1.1 201 Created
ETag: 1e0023...abcd
Location: /contentfs/report_2025.bin
Content-Type: application/json
{"pk":"report_2025.bin","mime":"application/octet-stream","size":12345,"sha256_hex":"1e0023...abcd"}GET /contentfs/report_2025.bin HTTP/1.1
Range: bytes=0-99Antwort:
HTTP/1.1 206 Partial Content
Content-Range: bytes 0-99/12345
Accept-Ranges: bytes
Content-Type: application/octet-stream
<100 bytes>Upload (mit Content-Type und Checksumme):
curl -X PUT \
-H "Content-Type: application/octet-stream" \
-H "X-Checksum-SHA256: $(sha256sum file.bin | awk '{print $1}')" \
--data-binary @file.bin \
http://localhost:8765/contentfs/file.binMetadaten (HEAD):
curl -I http://localhost:8765/contentfs/file.binVollständiger Download:
curl -o out.bin http://localhost:8765/contentfs/file.binRange-Download (Bytes 0-99):
curl -H "Range: bytes=0-99" -o first100.bin http://localhost:8765/contentfs/file.binLöschen:
curl -X DELETE -i http://localhost:8765/contentfs/file.binEin vollständiger End-to-End-Test befindet sich in test_content_fs_api_integration.ps1. Er prüft Upload, HEAD, Voll-Download, Range-Download und Delete.
Ausführen (bei laufendem Server):
./test_content_fs_api_integration.ps1- 400: Checksumme abweichend oder ungültige Parameter
- 404: Ressource nicht vorhanden
- 416: Range ungültig / außerhalb der Größe
- 500: Interner Fehler (Persistenz)
- Scopes (AuthMiddleware Pflicht):
-
data:readfürGETundHEAD -
data:writefürPUTundDELETE
-
- Policy Engine (Ranger/Policies):
- Actions:
content.read,content.write,content.delete - Resource Path:
/contentfs/:pk(voller Request-Pfad)
- Actions:
- Evaluationsreihenfolge:
- AuthN → Scopes → Policies. Erst bei Erfolg erfolgt die Handlerausführung.
- Fehlerbilder:
- Fehlende/ungültige Auth →
401 Unauthorized - Fehlende Scopes oder verweigerte Policy →
403 Forbidden
- Fehlende/ungültige Auth →
- Governance:
- Governance-Header (
X-Themis-*) werden bei Antworten gesetzt.
- Governance-Header (
Die ContentFS-Konfiguration ist über folgende Endpunkte abrufbar/änderbar:
- GET
/content/config- Liefert das aktuell effektive Konfigurationsobjekt.
- PUT
/content/config- Aktualisiert Konfigurationsteile. Änderungen wirken nur für neue Uploads.
Aktuelle Felder (Auszug):
-
chunk_size_bytes(uint, optional):- Gültiger Bereich: 65.536 (64 KiB) bis 16.777.216 (16 MiB)
- Wirkt sich auf die Chunk-Größe für neue Blobs aus (Range-Reads werden dadurch effizienter, bestehende Inhalte bleiben unverändert).
Beispiele:
GET:
GET /content/config HTTP/1.1Antwort (Beispiel):
{
"compress_blobs": false,
"compression_level": 19,
"skip_compressed_mimes": ["image/", "video/", "application/zip", "application/gzip"],
"chunk_size_bytes": 1048576
}PUT (Chunk-Größe auf 2 MiB setzen):
PUT /content/config HTTP/1.1
Content-Type: application/json
{"chunk_size_bytes": 2097152}Antwort:
{"status":"ok","chunk_size_bytes":2097152,"note":"Configuration updated. Changes apply to new content imports only."}- Storage-Keys:
content:<pk>:meta(CBOR-JSON),content:<pk>:blob - ETag: SHA‑256 des Blobs (Hex)
- MIME: aus
Content-Typedes Uploads; Defaultapplication/octet-stream
- Architecture-ACCESS-MODEL-IMPLEMENTATION-SUMMARY
- Architecture-ADR-003-pg-dump-sql-parser
- Architecture-BASEENTITY-PRINCIPLE
- Architecture-CACHE-STORAGE-INTEGRATION
- Architecture-CMAKE-ARCHITECTURE
- Architecture-CMAKE-FLAGS-REFERENCE
- Architecture-CMAKE-MODULAR-ARCHITECTURE
- Architecture-CONCERNS-ARCHITECTURE-DIAGRAM
- Architecture-CONCERNS-IMPLEMENTATION-SUMMARY
- Architecture-CONTENT-MODEL
- Architecture-COPILOT-THEMISDB-GRAPH-RAG-BACKEND-ARCHITECTURE
- Architecture-CRYPTO-AND-KEYS
- Architecture-FEATURE-FLAGS-REFERENCE
- Architecture-GPU-ARCHITECTURE-REVIEW-TEMPLATE
- Architecture-HTTP-SHUTDOWN-HARDENING
- Architecture-MIGRATION-GUIDE-CONCERNS
- Architecture-MIGRATION-GUIDE-v13-v14
- Architecture-MODULARIZATION-GUIDE
- Architecture-MODULAR-ARCHITECTURE-ROADMAP
- Architecture-MODULE-ARCHITECTURE-INDEX
- Architecture-P1D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D01-ISSMPLUGIN-DESIGN-REVIEW
- Architecture-P1-D08-MAMBA-GOVERNANCE-CONTRACT
- Architecture-P1-P2-IMPLEMENTATION-COMPLETION-INDEX
- Architecture-PHASE0-COMPLETION-ASSESSMENT
- Architecture-PHASE3-QUERYENGINE-DI-ARCHITECTURE
- Architecture-PHASE4-INDEX-MANAGER-DI
- Architecture-POSTGRESQL-WIRE-PROTOCOL
- Architecture-QUERYENGINE-IMPLEMENTATION-GUIDE
- Architecture-QUERY-SCHEDULING
- Architecture-RAFT-CONSENSUS-DESIGN
- Architecture-README
- Architecture-README-SSM-HYBRID-IMPLEMENTATION
- Architecture-REFACTORING-SUMMARY
- Architecture-RESOURCE-POOLING
- Architecture-SOURCE-DIRECTORY-GUIDE
- Architecture-THEMIS-CORE-GUIDE
- Architecture-UNIFIED-ACCESS-MODEL
- Architecture-WAL-GRPC-MTLS-CONFIGURATION
- Architecture-WIRE-PROTOCOL-RETRY
- Architecture-boltzmann-observability-draft
- Architecture-experimental-logarithmic-vector-storage
- Architecture-llm-wiki-mvp-adr
- Architecture-rewrite-engine-architecture
- Architecture-rope-api-architecture
- Architecture-ssm-gguf-mamba-status
- Architecture-ssm-hybrid-analysis
- Architecture-ssm-hybrid-rollout-plan
- Architecture-ssm-plugin-interface-design-review
- Architecture-transaction-coordinators
- Architecture-wiki-secondary-index
- Architecture-wire-protocol
- Governance-DISABLED-STUB-POLICY
- Governance-DOCS-PR-POLICY
- Governance-GA-PROMOTION-SIGN-OFF
- Governance-GITHUB-MILESTONES-SETUP
- Governance-MATURITY-CLAIM-VERIFICATION-CHECKLIST
- Governance-MATURITY-EVIDENCE-REGISTRY
- Governance-MERGE-GATE-BOT-CONFIG
- Governance-MERGE-GATE-STATUS-LIVE
- Governance-PHASE3-ENFORCEMENT-RUNBOOK
- Governance-PHASE-1-CLOSURE-REPORT
- Governance-PHASE-CLOSURE-POLICY
- Governance-PHASE-DEPENDENCY-GRAPH
- Governance-PLUGIN-SUBMODULE-ROLLBACK
- Governance-PRODUCTION-READY-2026-DELIVERY-PLAN
- Governance-PR-VERSION-TARGETING
- Governance-PR-VERSION-TARGETING-BACKFILL
- Governance-QUERY-MODULE-STATUS
- Governance-README
- Governance-RELEASE-PROMOTION-GATE-POLICY
- Governance-RELEASE-VALIDATION-CHECKLIST
- Governance-SECURITY-MODULE-5671-EVIDENCE-SUMMARY
- Governance-SHARDING-P6-RESIDUAL-RISK-ACCEPTANCE
- Governance-SOURCECODE-COMPLIANCE-GOVERNANCE
- Governance-UPDATES-DEVELOPMENT-STATUS-SIGN-OFF
- Governance-WAVE-C-IMPLEMENTATION-COMPLETE
- Module-acceleration-Roadmap
- Module-access-model-Roadmap
- Module-ai-Roadmap
- Module-analytics-Roadmap
- Module-api-Roadmap
- Module-aql-Roadmap
- Module-auth-Roadmap
- Module-base-Roadmap
- Module-cache-Roadmap
- Module-cdc-Roadmap
- Module-chaos-Roadmap
- Module-chimera-Roadmap
- Module-config-Roadmap
- Module-content-Roadmap
- Module-core-Roadmap
- Module-distributed-knowledge-Roadmap
- Module-distributed-tensor-Roadmap
- Module-document-Roadmap
- Module-ethics-ai-Roadmap
- Module-evaluation-Roadmap
- Module-execution-Roadmap
- Module-exporters-Roadmap
- Module-failover-Roadmap
- Module-geo-Roadmap
- Module-governance-Roadmap
- Module-gpu-Roadmap
- Module-graph-Roadmap
- Module-image-analysis-Roadmap
- Module-importers-Roadmap
- Module-index-Roadmap
- Module-ingestion-Roadmap
- Module-llama-cpp-Roadmap
- Module-llm-Roadmap
- Module-llm-streaming-Roadmap
- Module-llm-wiki-Roadmap
- Module-maintenance-Roadmap
- Module-metadata-Roadmap
- Module-network-Roadmap
- Module-observability-Roadmap
- Module-onnx-clip-Roadmap
- Module-performance-Roadmap
- Module-plugins-Roadmap
- Module-process-Roadmap
- Module-projects-Roadmap
- Module-prompt-engineering-Roadmap
- Module-query-Roadmap
- Module-rag-Roadmap
- Module-replication-Roadmap
- Module-retrieval-Roadmap
- Module-rpc-grpc-Roadmap
- Module-scheduler-Roadmap
- Module-scraper-Roadmap
- Module-search-Roadmap
- Module-security-Roadmap
- Module-server-Roadmap
- Module-sharding-Roadmap
- Module-stable-diffusion-Roadmap
- Module-storage-Roadmap
- Module-temporal-Roadmap
- Module-tensor-Roadmap
- Module-themis-Roadmap
- Module-timeseries-Roadmap
- Module-toolbox-Roadmap
- Module-training-Roadmap
- Module-transaction-Roadmap
- Module-updates-Roadmap
- Module-user-storage-encrypted-Roadmap
- Module-utils-Roadmap
- Module-vector-search-Roadmap
- Module-voice-Roadmap
- Module-whisper-Roadmap