org.consentvid.consent
A consent receipt declaring permissions for AI training use of a referenced video record. Cryptographically signed by the user's repo key (inherent to ATproto records).
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | consentvid.org |
| Indexed |
Showing version bafyreiabslfxbigs7yl7zst2ecsq22q2fa4suztaxu3so652h4s7cx7nya. Show the latest
Checks
Validunlimited-stringdefs.main.record.properties.captureProvenanceNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.compensationNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.modalities.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.modelClasses.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.peoplePresentNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.purposes.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.record.properties.rightsBasisNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A consent receipt declaring permissions for AI training use of a referenced video record. Cryptographically signed by the user's repo key (inherent to ATproto records).",
"key": "tid",
"record": {
"properties": {
"adultAttested": {
"description": "The contributor affirms, under their signing key, that they are an adult (18 or older, or the age of majority where they live, if higher) and legally capable of giving this consent. Self-declared, not verified. Optional in the schema for evolution compatibility, but ConsentVid treats a consent without adultAttested=true as invalid.",
"type": "boolean"
},
"authorshipAttested": {
"description": "The contributor affirms, under their signing key, that they recorded this video themselves (or are otherwise its rightful author) and are authorized to grant this consent. A consent receipt is invalid unless this is true; uploading someone else's video and consenting to its use would be unlawful.",
"type": "boolean"
},
"captureProvenance": {
"description": "Strength of the capture-provenance guarantee. 'attested' = capture-time cryptographic provenance (e.g. C2PA/CAWG) binds the recording to the contributor's DID; 'selfAttested' = signed authorship attestation only; 'unverified' = neither.",
"knownValues": [
"attested",
"selfAttested",
"unverified"
],
"type": "string"
},
"compensation": {
"description": "What compensation the contributor declares they expect. Informational only: ConsentVid does not broker or enforce payment. Researchers may filter on it.",
"knownValues": [
"none",
"creditOnly",
"monetary"
],
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"expiresAt": {
"description": "Optional expiry; after this time the consent is no longer valid.",
"format": "datetime",
"type": "string"
},
"modalities": {
"items": {
"knownValues": [
"video",
"audio",
"transcript",
"face",
"voice"
],
"type": "string"
},
"minLength": 1,
"type": "array"
},
"modelClasses": {
"description": "WHO may use the data, and under what release model. 'foundationModel' is DEPRECATED: it describes a kind of model, not a user; new clients don't offer it, but it remains valid in existing records.",
"items": {
"knownValues": [
"academic",
"openWeights",
"commercial",
"foundationModel"
],
"type": "string"
},
"minLength": 1,
"type": "array"
},
"peoplePresent": {
"description": "Who identifiably appears or is heard in the video: 'onlyMe' = only the contributor; 'allConsented' = every identifiable person gave the contributor permission for this use; 'noIdentifiablePeople' = no identifiable face or voice (e.g. hands-only footage), which is incompatible with the 'face' and 'voice' modalities. Optional in the schema for evolution compatibility, but ConsentVid treats a consent without one of these values as invalid.",
"knownValues": [
"onlyMe",
"allConsented",
"noIdentifiablePeople"
],
"type": "string"
},
"purposes": {
"description": "What the data may be used FOR. 'researchOnly' is DEPRECATED: it overlaps the 'academic' model class (who may use it); new clients don't offer it, but it remains valid in existing records.",
"items": {
"knownValues": [
"training",
"evaluation",
"benchmarking",
"researchOnly"
],
"type": "string"
},
"minLength": 1,
"type": "array"
},
"revocable": {
"description": "Whether the contributor may withdraw consent. Consent to processing personal data (faces, voices) must be withdrawable (GDPR Art. 7(3)); ConsentVid clients always write true. Withdrawal is performed by deleting this record.",
"type": "boolean"
},
"rightsBasis": {
"description": "Basis on which the contributor holds the right to grant consent: 'ownRecording' = they captured it, 'licensed' = licensed from the creator, 'otherRightsHolder' = other documented basis.",
"knownValues": [
"ownRecording",
"licensed",
"otherRightsHolder"
],
"type": "string"
},
"videoCid": {
"description": "CID of the exact org.consentvid.video record version this consent applies to (together with videoUri, a strong reference). If the video record is later rewritten, this consent no longer applies to it.",
"format": "cid",
"type": "string"
},
"videoUri": {
"description": "AT-URI of the org.consentvid.video record this consent applies to. Must be in the same repo as this consent.",
"format": "at-uri",
"type": "string"
}
},
"required": [
"videoUri",
"modalities",
"purposes",
"modelClasses",
"compensation",
"revocable",
"authorshipAttested",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"id": "org.consentvid.consent",
"lexicon": 1
}