跳转到内容

ak.schema.file_transfer.v1

← Schemas

Arkret File Transfer Account Data
ak.schema.file_transfer.v1 · file: schemas/file-transfer.schema.json

Plaintext shape that MUST be encrypted before writing ak.profile.file_transfer.v1 account-data values.

* $ · object
Plaintext shape that MUST be encrypted before writing ak.profile.file_transfer.v1 account-data values.
allOf · allOf[0] · ?
allOf · allOf[1] · ?
* kind · const "file_transfer"
enum: "file_transfer"
* transfer_id · string · $ref #/$defs/transfer_id
pattern: ^[A-Za-z0-9._~=-]{22,128}$
* blob_ref · string · $ref #/$defs/blob_ref
Content-addressed reference to exact Blob bytes. The embedded suite and digest are the sole wire commitment to those bytes; sibling content/ciphertext digest mirrors are forbidden.
pattern: ^ak:blob:(?:sha256|blake3):[0-9a-f]{64}$
* blob_size_bytes · integer
Size of the stored blob bytes, usually ciphertext plus AEAD overhead.
* media_type · string · $ref #/$defs/media_type
Original file media type. This field lives inside encrypted account data; encrypted blob metadata SHOULD use application/octet-stream.
pattern: ^[a-z0-9.+-]+/[a-z0-9.+-]+$
filename · string
* plaintext_size_bytes · integer
Original file byte length before client-side encryption.
* access · object · $ref #/$defs/access
* visibility · string (enum)
enum: "actor_private" "device_bound"
recipient_device_ids · array<$ref #/$defs/device_id>
items · string · $ref #/$defs/device_id
pattern: ^ak:device:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* encryption · object · $ref #/$defs/encryption
oneOf · oneOf[0] · object
scheme · const "ak.blob.whole_file_aead.v1"
enum: "ak.blob.whole_file_aead.v1"
oneOf · oneOf[1] · object
scheme · const "ak.blob.stream_aead.v1"
enum: "ak.blob.stream_aead.v1"
* scheme · string (enum)
enum: "ak.blob.whole_file_aead.v1" "ak.blob.stream_aead.v1"
* aead_profile · string (enum)
enum: "ak.aead.xchacha20_poly1305.v1"
nonce · string
pattern: ^[A-Za-z0-9_-]{32}$
nonce_prefix · string
pattern: ^[A-Za-z0-9_-]{25}[AQgw]$
segment_bytes · integer
* aad · object · $ref #/$defs/encryption_aad
* schema · const "ak.schema.file_transfer.v1"
enum: "ak.schema.file_transfer.v1"
* purpose · const "file_transfer"
enum: "file_transfer"
* transfer_id · string · $ref #/$defs/transfer_id
pattern: ^[A-Za-z0-9._~=-]{22,128}$
* origin_device_id · string · $ref #/$defs/device_id
pattern: ^ak:device:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* created_at · string (date-time) · format=date-time · $ref #/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* key_delivery · oneOf[2]
oneOf · oneOf[0] · object · $ref #/$defs/account_data_wrapped_key
* method · const "account_data_wrapped_key"
enum: "account_data_wrapped_key"
* content_key · string · $ref #/$defs/base64url
Fresh per-transfer content key carried only inside encrypted account-data plaintext.
pattern: ^[A-Za-z0-9_-]+$
oneOf · oneOf[1] · object · $ref #/$defs/to_device_wrapped_key
* method · const "to_device_wrapped_key"
enum: "to_device_wrapped_key"
* key_message_kind · const "ak.file_transfer.key.v1"
enum: "ak.file_transfer.key.v1"
* origin_device_id · string · $ref #/$defs/device_id
pattern: ^ak:device:[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
* created_at · string (date-time) · format=date-time · $ref #/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* updated_hlc · string · $ref #/$defs/hlc
* retention_expires_at · string (date-time) · format=date-time · $ref #/$defs/timestamp
Canonical Arkret-owned absolute instant. UTC Z form with exactly three millisecond digits. Whole seconds MUST use .000Z; offsets, missing/finer fractions, lowercase separators, leap seconds, and invalid Gregorian calendar dates are forbidden. Shape validation by this pattern is supplemented by semantic date validation.
pattern: ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]\.[0-9]{3}Z$
* status · string (enum)
enum: "available" "downloaded" "dismissed" "deleted"

Source