Capability discovery
getCapabilities() reads ObjectStore's signed /_objectstore/capabilities manifest when available. It returns the service kind, operation support, service version, storage mode, and configured limits. It does not cache the response.
Capabilities capabilities = storage.getCapabilities();
Capabilities.Support multipart = capabilities.support("CreateMultipartUpload");Capabilities.Support is SUPPORTED, UNSUPPORTED, or UNKNOWN. A listed operation means the service implements it, not that the current key is authorized or that every AWS option works. Older ObjectStore versions fall back to /health and leave unverified operations UNKNOWN. On another S3-compatible service, only operations that this client has observed succeeding become SUPPORTED.
Call probeReadOnlyCapabilities(bucket, existingObjectKey) to opt into read-only probes for listing and ACL reads. existingObjectKey can be null. A denial or missing object remains UNKNOWN, not UNSUPPORTED. Transport and malformed-response errors still reach the caller. The /health identity fallback is self-reported, not cryptographic attestation.
The Capabilities result exposes service(), operations(), limits(), serviceVersion(), storageMode(), and completeOperationInventory(). support(name) interprets the inventory without guessing from a hostname or vendor header.