id.sifa.profile.project
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Record representing a single project.",
"key": "tid",
"record": {
"properties": {
"createdAt": {
"description": "Client-declared timestamp when this record was originally created.",
"format": "datetime",
"type": "string"
},
"description": {
"description": "Description of the project, the user's role, and outcomes.",
"maxGraphemes": 5000,
"maxLength": 50000,
"type": "string"
},
"endedAt": {
"description": "Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing.",
"type": "string"
},
"labels": {
"description": "Self-label values for this project record.",
"refs": [
"com.atproto.label.defs#selfLabels"
],
"type": "union"
},
"members": {
"description": "Other people who worked on this project. Each entry is a claim by the record author and is not self-verifying: the named person supplies the other half by publishing an id.sifa.confirmation record whose subject is this record and whose relation is id.sifa.defs#projectMember. Until they do, consumers must render the entry without their display name, avatar, or profile link. Confirming never puts this record on the named person's profile: it lives in the author's repository and the author can rename it at any time. A named person who wants the project on their profile keeps their own id.sifa.profile.project record and points its projectRef here.",
"items": {
"ref": "id.sifa.defs#projectMemberRef",
"type": "ref"
},
"maxLength": 50,
"type": "array"
},
"name": {
"description": "Project name.",
"maxGraphemes": 256,
"maxLength": 2560,
"minLength": 1,
"type": "string"
},
"position": {
"description": "Reference to the associated id.sifa.profile.position record, if applicable.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"projectRef": {
"description": "Reference to the same project as recorded elsewhere: another person's id.sifa.profile.project entry for the work you shared, or a first-class id.sifa.project.self record. Set when you were named as a member of someone else's entry and keep your own version of it, so consumers can tell the two describe one project instead of showing it twice.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"startedAt": {
"description": "Project start date in YYYY-MM or YYYY-MM-DD format.",
"type": "string"
},
"url": {
"description": "URL of the project (website, repository, demo, etc.).",
"format": "uri",
"type": "string"
}
},
"required": [
"name",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"description": "A project the user has worked on.",
"id": "id.sifa.profile.project",
"lexicon": 1
}
Metadata
- DID
-
did:plc:2f2ahswozqy4v5lvu676375y - CID
-
bafyreielduwsmctwqhhseom3rfo2fngytozakzrbaxftrepgm3ssnayluy - Indexed At
- 2026-07-31 21:36 UTC
- AT-URI
-
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.profile.project
Version History (8 versions)
Referenced Schemas (2)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
A collaborative project record. Lives in the project creator's PDS. TID-keyed so one user can create multiple projects. Supports multiple owners — the creator is the first owner, and any owner can promote core members.
-
id.sifa.profile.involvement record
Uncompensated involvement with an external project, community, event, or cause the user does not own or run — open-source, community, charity, or civic work. Distinct from paid roles (position), things you own (projec…
-
support.supper.actor.project record
Supper project showcase entry stored on the user's PDS. Creators list the projects they are working on with a title, description, and link.
-
DEPRECATED, never implemented. An invitation to join a project team, written by a project owner in their PDS. Superseded by naming members inline on id.sifa.profile.project and having them affirm it with a generic id.si…
-
social.wips.project record
A wips.social project owned by the repository DID. The project's AT URI is its durable identifier. Protocol ceilings stay generous while keeping worst-case DAG-CBOR size comfortably below the informal 1 MiB network reco…