Live Route Evidence
Health, platform capabilities, and the s3-core-v1 gateway are backed by ObjectDB source, handler tests, protocol profile docs, and gateway validation scripts.
Reference
Source-backed lookup details for ObjectDB health, platform capabilities, legacy endpoint helpers, active s3-core-v1 route shapes, limits, errors, and local adapter constraints.
Current availability
Private Beta. Public beta is scheduled for .
Health, platform capabilities, and the s3-core-v1 gateway are backed by ObjectDB source, handler tests, protocol profile docs, and gateway validation scripts.
Broader S3 breadth, customer credential policy, durability, availability, performance, security, support, and scale wording still needs explicit product and sensitive-review evidence.
| ID | Type | Name | Method | Path, flag, key, or symbol | Maturity | Evidence |
|---|---|---|---|---|---|---|
| odb-http-health | api | Health check | GET | /health | Live | ODB-EVID-007, HealthEndpointTests.cs |
| odb-http-platform-capabilities | api | Platform capabilities | GET | /v1/platform/capabilities | Live | ODB-EVID-007, platform_handler.rs |
| odb-http-endpoint-routes | api | Legacy endpoint data routes | POST, GET | /v1/endpoint/{activation_id} | Verification Required | ODB-EVID-007, endpoint_handler.rs |
| odb-s3-core-gateway | api | S3 Core gateway | GET, PUT, HEAD, POST, DELETE, OPTIONS | /, /{bucket}, /{bucket}/{key} | Live | ODB-EVID-002, ODB-EVID-007, S3_HTTP_GATEWAY.md |
| odb-s3-local-limits | limit | Gateway and local adapter limits | n/a | MAX_S3_HTTP_* and local adapter caps | Live | ODB-EVID-002, ODB-EVID-007, s3.rs |
| Route | Request | Response | Errors | Evidence |
|---|---|---|---|---|
| GET /health | No request body. | 200 OK with JSON string "Healthy". | Connection failure when the local service is not listening. | health_handler.rs and HealthEndpointTests.cs |
| GET /v1/platform/capabilities | No request body. | 200 OK with runtime, dataDirectory, freeSpace, device, atomicRename, flushBehavior, and directIo fields. | Startup probe failures are emitted before the service starts. | platform_handler.rs |
| POST /v1/endpoint/{activation_id} | JSON with url, latency, and activation_id. The path activation ID must be one segment. | 200 OK with JSON string "Data stored". | 400 invalid activation id; 500 local file create, write, or serialize failure. | routes/endpoint.rs and endpoint_handler.rs |
| GET /v1/endpoint/{activation_id}/recent | Single-segment activation ID in the route path. | Most recent stored Data JSON. | 400 invalid activation id; 404 No data found; 500 local read or parse failure. | endpoint_handler.rs |
| GET /v1/endpoint/{activation_id}/recent_100 | Single-segment activation ID in the route path. | Array of recent stored records, including in-memory recent data when present. | 400 invalid activation id; 404 No data found; 500 local read or parse failure. | endpoint_handler.rs |
The service registers /health, /v1/endpoint/..., and /v1/platform/capabilities before the root S3 catch-all, so these routes retain path priority.
Path-style routing uses the first path segment as the bucket. Configured virtual-host-style routing uses the left side of a trusted S3 base domain as the bucket. When both host and path appear to name buckets, the host bucket wins.
| HTTP shape | Routed operation | Handler family | Status |
|---|---|---|---|
| GET / | ListBuckets | service | Required by s3-core-v1 |
| PUT /{bucket} | CreateBucket | bucket | Required by s3-core-v1 |
| HEAD /{bucket} | HeadBucket | bucket | Required by s3-core-v1 |
| GET /{bucket}?location | GetBucketLocation | bucket | Required by s3-core-v1 |
| DELETE /{bucket} | DeleteBucket | bucket | Required by s3-core-v1 |
| PUT, GET, DELETE /{bucket}?cors | Bucket CORS operations | bucket | Temporary local adapter |
| PUT, GET, DELETE /{bucket}?policy | Bucket policy operations | bucket | Temporary local adapter |
| OPTIONS /{bucket} or /{bucket}/{key} | CorsPreflight | bucket | Temporary local adapter |
| GET /{bucket}?list-type=2 | ListObjectsV2 | bucket | Temporary ordered-index adapter |
| POST /{bucket}?delete | DeleteObjects | bucket | Temporary local delete-marker adapter |
| POST /{bucket} | PostObject | bucket | Delegated browser POST local adapter |
| PUT /{bucket}/{key} | PutObject | object | Temporary 16 MiB local adapter |
| GET /{bucket}/{key} | GetObject | object | Temporary local read adapter |
| HEAD /{bucket}/{key} | HeadObject | object | Temporary local read adapter |
| DELETE /{bucket}/{key} | DeleteObject | object | Temporary local delete-marker adapter |
| PUT /{bucket}/{key} with x-amz-copy-source | CopyObject | object | Temporary immutable-receipt adapter |
| GET, PUT, DELETE /{bucket}/{key}?tagging | Object tagging operations | object | Temporary local metadata adapter |
| POST /{bucket}/{key}?uploads | CreateMultipartUpload | multipart | Temporary local multipart state |
| PUT /{bucket}/{key}?partNumber=N&uploadId=ID | UploadPart or UploadPartCopy | multipart | Temporary local multipart state |
| POST /{bucket}/{key}?uploadId=ID | CompleteMultipartUpload | multipart | Temporary local multipart state |
| DELETE /{bucket}/{key}?uploadId=ID | AbortMultipartUpload | multipart | Temporary local multipart state |
| GET /{bucket}/{key}?uploadId=ID | ListParts | multipart | Temporary local multipart state |
| GET /{bucket}?uploads | ListMultipartUploads | multipart | Temporary local multipart state |
S3 gateway
ObjectDB preserves a non-empty x-amz-request-id up to 128 bytes. Otherwise it generates an odb- request ID.
Every classified response
Responses include profile, gateway contract, operation, handler, endpoint-addressing contract, endpoint style, and body-disposition headers.
Success and error responses
Operation-specific responses add bucket IDs, object IDs, version IDs, commit sequence, checksums, ETags, object size, CORS, policy, multipart, delegated-access, copy-source, or delete-marker headers.
| Error | Applies To | Meaning | Recovery |
|---|---|---|---|
| NotImplemented | Unsupported S3 operations | The route is outside the active s3-core-v1 profile. | Use an active route or wait for the later compatibility profile. |
| AccessDenied | Bucket, object, CORS, policy, SSE-C, delegated access | Local owner, permission, retained-object, CORS, credential, or key checks refused the request. | Check local permission headers, bucket ownership, SSE-C headers, or policy configuration. |
| NoSuchBucket | Bucket, object, list, multipart routes | The bucket does not exist for the current local principal. | Create the bucket or check the endpoint style and bucket name. |
| NoSuchKey | Object reads, copy source, delete-marker reads | The current object key is missing or hidden by a delete marker. | Check the key, write the object, or inspect delete behavior. |
| BucketAlreadyOwnedByYou | CreateBucket | The local principal already owns that bucket name. | Reuse the bucket or choose a new tutorial-scoped bucket name. |
| BucketNotEmpty | DeleteBucket | The bucket still has visible current objects. | Delete visible objects first, then delete the bucket. |
| BadDigest | PutObject, UploadPart, CopyObject, checksums | Supplied checksum headers do not match the payload or source. | Recalculate checksums or use the local quickstart header shape. |
| EntityTooLarge | Body reads and local adapters | A body chunk or temporary local adapter body exceeded its current cap. | Use a smaller payload or an active multipart workflow. |
| SlowDown | S3 ingress | Concurrent S3 gateway ingress is saturated. | Retry after the response Retry-After value. |
| RequestTimeout | Streaming request bodies | The body stream failed or stalled beyond the slow-client timeout. | Retry with a healthy client connection. |
| InvalidURI | Endpoint addressing and request target parsing | The request target, authority, or dotted-bucket TLS shape is invalid. | Use path-style addressing for dotted buckets over ordinary wildcard TLS or fix host/path shape. |
| PreconditionFailed | Conditional reads, writes, and copies | ETag or date preconditions did not match the current committed object. | Re-read current metadata and retry with updated conditions. |
Single-error S3 responses include response-fidelity headers for error code, category, retryable flag, and redaction flag. Throttling responses also include Retry-After.
| Limit | Value | Scope |
|---|---|---|
| Request target | 8192 bytes | S3 route classification |
| Aggregate headers | 32768 bytes | S3 route classification |
| Query parameters | 64 parameters | S3 route classification |
| Body chunk buffer | 65536 bytes | Streaming body reads |
| Concurrent S3 requests | 1024 requests | Executable service ingress |
| Slow client timeout | 30 seconds | Executable service request startup and body progress |
| PutObject local payload | 16 MiB | Temporary local PutObject adapter |
| DeleteObjects body | 1 MiB | Temporary local batch delete adapter |
| DeleteObjects keys | 1000 keys | Temporary local batch delete adapter |
| Object tags | 10 tags, 128-byte keys, 256-byte values, 2 KiB total | Temporary local tag adapter |
| User metadata | 128-byte keys, 2 KiB values, 2 KiB total | Temporary local metadata adapter |
| Bucket CORS | 64 KiB body, 100 rules | Temporary local CORS adapter |
| Bucket policy | 20 KiB document | Temporary local bucket-policy adapter |
ObjectDB uses named S3 profiles. This page covers s3-core-v1 and explicitly keeps versioning, Object Lock, lifecycle, replication, inventory, notifications, SelectObjectContent, ACLs, and website hosting outside the active surface.
PutObject, multipart state, browser POST uploads, bucket CORS, bucket policy, tags, and metadata are implemented through local adapters while distributed storage and configuration work continues.
The executable gateway currently derives local development principals and operation permissions from ObjectDB-specific headers while customer access-key policy composition matures.
SSE request headers are validated and mapped into ObjectDB encryption identity, but encryption-at-rest backend composition remains a separate evidence path.
curl -i http://127.0.0.1:18080/healthcurl -i -X PUT http://127.0.0.1:18080/photosprintf 'object-body' > /tmp/objectdb-body.txt
curl -i -X PUT \
-H "x-amz-content-sha256: UNSIGNED-PAYLOAD" \
--data-binary @/tmp/objectdb-body.txt \
http://127.0.0.1:18080/photos/raw/cat.txtcurl -i "http://127.0.0.1:18080/photos?versioning"| Surface | Evidence | Status | Last checked |
|---|---|---|---|
| Health | health_handler.rs and HealthEndpointTests.cs | pending | 2026-08-13 |
| Platform capabilities | platform_handler.rs and platform handler tests | pending | 2026-08-13 |
| Endpoint helpers | routes/endpoint.rs and endpoint_handler.rs | pending | 2026-08-13 |
| S3 Core gateway | S3_HTTP_GATEWAY.md, objectdb-protocol s3.rs, and s3_gateway_handler.rs | pending | 2026-08-13 |
| S3 error fidelity | S3_RESPONSE_ERROR_FIDELITY.md and s3-response-fidelity fixtures | pending | 2026-08-13 |
| S3 validation | Validate-S3HttpGateway.sh, Validate-S3EndpointAddressing.sh, and Validate-S3ResponseErrorFidelity.sh | pending | 2026-08-13 |
Internal review records track this S3 and HTTP reference and the evidence required to change route, error, or limit status.
Available: DOCS-022
Run the ObjectDB quickstartExercise bucket create, object put/get, list, cleanup, and unsupported-surface responses locally.
Available
Review ObjectDB evidenceCheck the evidence records behind ObjectDB S3 Core, route, limit, and review-boundary wording.
Available: DOCS-030
Read configuration referenceSeparate bind address, data directory, S3 base domains, and fixed request-limit boundaries.
Available: DOCS-038
Compare compatibilityUse the matrix to distinguish supported, partial, unsupported, preview, future, and review-bound S3 behavior.