app.zeens.c2pa

Content Credentials (C2PA) read from a post's original photos at upload, for the photos the creator chose to show them on. The rkey matches the rkey of the associated post record, as with app.zeens.postMeta. This is a summary of what the C2PA manifest said, not the manifest itself: the manifest can carry an uncropped ingredient thumbnail and the photographer's GPS, so it is deliberately not republished. The summary is the creator's statement, signed by their repo; `status` records what the validator found, and a labeler may attest it independently.

Repository @zeens.app did:plc:pwpuqwge6g7xrjmfbw73uycw namespace authority
Details · record, key any
Kindrecord
Record keyany
Authorityzeens.app
Indexed

Record

record · key any

Properties

createdAt

requiredstring · datetime

images

requiredarray

One entry per photo with a credential the creator chose to show. Sparse: a photo without one, or with the toggle off, has no entry. `index` and `blob` say which photo an entry is for.

  • minLength: 1
  • maxLength: 4
itemsref
Reference

subject

requiredstring · at-uri

AT-URI of the post these credentials belong to.

#action

object

Properties

action

requiredstring

The C2PA action identifier, e.g. c2pa.color_adjustments, c2pa.cropped, or a vendor's own such as com.adobe.*. Stored raw so a reader maps it to words at render time.

  • maxLength: 128

The producer's own description of the action, when it gave one. The only words a reader has for a vendor action it does not know.

  • maxLength: 300

The software that performed this action, when it differs from the manifest's generator.

  • maxLength: 256

#capture

object

Properties

device

string

The capture device that signed, e.g. "Leica M11-P".

  • maxLength: 256

signedAt

string · datetime

signer

string

Organisation on the capture manifest's signing certificate.

  • maxLength: 256

#credential

object

Properties

actions

array

Actions from the active manifest, in the order recorded.

  • maxLength: 32
itemsref
Reference

blob

requiredstring · cid

CID of the blob as stored on the PDS. Binds the entry to one exact image, so a reordered or replaced photo cannot inherit another photo's credential. The stored blob is usually a re-encode of the original, which is what `embedded` reports.

Present when the photo's provenance reaches back to a camera that signed the capture, either because the active manifest is the camera's own or because an ingredient's is.

Reference

IPTC digital source type of the asset, as a URI, e.g. http://cv.iptc.org/newscodes/digitalsourcetype/digitalCapture or .../trainedAlgorithmicMedia. The strongest signal of generative AI involvement.

  • maxLength: 256

embedded

boolean

True when the stored blob is the original file, byte for byte, so anyone can re-verify its credential from the PDS: from the manifest inside it, or for a cloud manifest by following the file's pointer. False when the upload was re-encoded, which strips both.

generator

string

The app or device that produced the active manifest, with its version, e.g. "Adobe Lightroom Classic 14.3".

  • maxLength: 256

index

requiredinteger

Position of the photo in the post's embed.

  • minimum: 0
  • maximum: 3

Source files the active manifest names, e.g. the raw file a Lightroom export was made from. Titles and whether each carries a credential of its own, never thumbnails: an ingredient's thumbnail is often the uncropped original.

  • maxLength: 16
itemsref
Reference

signedAt

string · datetime

Time of the manifest's signature, from its trusted timestamp when it has one.

signer

requiredstring

Organisation on the signing certificate, e.g. "Adobe Inc." or "Leica Camera AG".

  • maxLength: 256

status

requiredstring

What validation found. trusted: the signer chains to the official C2PA Trust List. legacy: the signer chains only to the frozen Interim Trust List. unrecognised: the manifest is intact but its signer is on neither list. A manifest that failed validation is never written.

  • knownValues: trusted | legacy | unrecognised

#ingredient

object

Properties

credential

requiredboolean

True when the ingredient carries a Content Credential of its own.

title

string

The ingredient's title as its manifest records it, usually a file name.

  • maxLength: 256

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • ATPix photo record. Metadata mapped to Dublin Core and Schema.org ImageObject terms (see docs/lexicon/net.atpix.gallery.md).

  • Extended metadata for a Zeens photo post — EXIF, categories, license, and optional external link. The rkey matches the rkey of the associated app.bsky.feed.post record.