Releases: interop-alliance/storage-core
Releases · interop-alliance/storage-core
Release list
v0.13.0
Added
ProblemTypes.CAPABILITY_REVOKED
(https://wallet.storage/spec#capability-revoked, 404) and
ProblemTypes.CAPABILITY_EXPIRED
(https://wallet.storage/spec#capability-expired, 404): typed denial reasons
for a capability invocation refused because a capability in its chain is
revoked, or because the invoked capability or one in its chain has expired.
The status stays the mergednot-found404; onlytypechanges. A server
emits them only after the request signature and the chain's delegation proofs
verified, so they reach the holder of the affected chain and never a prober.
Every other verification failure keepsnot-found.
v0.12.0
Added
ProblemTypes.CAPABILITY_ALREADY_REVOKED
(https://wallet.storage/spec#capability-already-revoked, 400): a revocation
submission whose capability, or a capability in its chain, is already revoked.
Emitted only after the submission is authorized, so it is not a
revocation-state oracle. A malformed submission or a chain that fails to
verify keepsinvalid-request-body, so a blind resubmission can tell "already
done" from "refused".
v0.11.0
Added
ChangeDocumentcarries the Resource's current contentetagand/meta
metaEtag, the quoted validators exactly as the server emits them, so a
replica can sendIf-Matchfrom feed state without a read per Resource.
version/metaVersionremain for ordering only; anETagis opaque and is
not reconstructed from them.ProblemTypes.ENCRYPTION_HISTORY_LOG_GOVERNED
(https://wallet.storage/spec#encryption-history-log-governed, 409): a direct
encryptionwrite on a Collection whose descriptor is governed by its
.../meta/loghistory log; the served member is derived from the log head, so
the Description path is read-only for it.
v0.10.0
Changed
- BREAKING:
CollectionDescription.indexesmoved to
CollectionDescription.plaintext.indexes(no compatibility alias).
plaintextis the counterpart ofencryption: at most one is present (by
presence; a server rejects both withinvalid-request-body) and it stays
updatable for the Collection's life. TheCollectionIndexDeclarationentry
shape is unchanged. ChangesPagedoc: only anullcheckpoint means the caller has caught up; a
page shorter thanlimitdoes not, since a server may reducelimit.
v0.9.1
Changed
- Update to latest
@interop/data-integrity-core@8.7.1.
v0.9.0
Changed
- BREAKING: Renamed the resource-log format identifier constant
WAS_RESOURCE_LOG_METHOD(was-resource-log:0.1) toRESOURCE_LOG_METHOD
(resource-log:0.1). Both the export name and the identifier value change:
the log format is transport-agnostic and is not tied to the WAS storage API.
v0.8.0
Added
CollectionMetadata: the Collection-level wire type for the reservedmeta
segment of a Collection (createdAt,updatedAt,createdBy,epoch,
custom). MirrorsResourceMetadataminuscontentType/size, which
describe a stored representation a Collection does not have.RESERVED_RESOURCE_IDS: addedmeta. Collection Metadata occupies the
{resource_id}position, so a Resource namedmetawould shadow it.
v0.7.0
Added
CollectionEncryption: the optionalhmacmember -- the Collection's
blinded-index HMAC key (id,type, andrecipients, the key wrapped to
each recipient in the same JWErecipientsentry shape as the epoch
secrets). Installed at provisioning or never, and never rotated.
v0.6.0
Added
- Add the optional
generatorandgeneratorOriginproperties to
CollectionDescription(spec "Collection Data Model"): the DID of the
application the Collection was provisioned for and the Web origin it was
bound to at provisioning time. Both are controller-asserted -- client-
supplied, updatable (so a wallet can backfill existing Collections), and
never server-verified -- in contrast to the server-observed, read-only
createdBy, which under delegated provisioning names the invoker rather
than the application.
v0.5.0
Changed
- BREAKING:
CollectionEncryption: theepochsMacmember and the
CollectionEncryptionEpochsMacinterface are removed -- the epoch-
configuration MAC is retired stack-wide (with@interop/was-client@0.32.0).
On a log-governed descriptor its coverage was a strict subset of chain
verification, and its classic gaps (whole-configuration replay, fresh
fabrication under a newly minted secret) were gaps with or without it.
Greenfield: no tolerance for MAC-bearing descriptors, no strip migration.