id.sifa.profile.project

sifa.id

Documentation

Record representing a single project.

main record

Record representing a single project.

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

Client-declared timestamp when this record was originally created.

description string Optional

Description of the project, the user's role, and outcomes.

maxLength: 50000 bytesmaxGraphemes: 5000 graphemes
endedAt string Optional

Project end date in YYYY-MM or YYYY-MM-DD format. Omit if ongoing.

events array of ref #projectEvent Optional

Event occurrences this project organized or hosted, for example every edition of a conference or every meetup of a series. Each entry should reference a distinct event; consumers ignore entries that don't resolve to a community.lexicon.calendar.event. A talk the user also gave at one of these events is a separate id.sifa.profile.presentationDelivery whose eventRef points at the same event.

maxLength: 200 items
isPrimary boolean Optional

Whether this is the user's primary ongoing project, surfaced in profile Highlights. Only ongoing entries may be primary.

members array of ref id.sifa.defs#projectMemberRef Optional

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.

maxLength: 50 items
name string Required

Project name.

maxLength: 2560 bytesminLength: 1 bytesmaxGraphemes: 256 graphemes
projectRef ref com.atproto.repo.strongRef Optional

Reference to the first-class id.sifa.project.self record this personal entry corresponds to, when there is one. A composition link, not a peer one: for the same project recorded on someone else's profile, see sameAs.

role string Optional

The user's own role on the project (e.g. 'Maintainer', 'Core contributor', 'Project lead'). Roles of other people named on the project live on members.

maxLength: 2560 bytesmaxGraphemes: 256 graphemes
sameAs ref id.sifa.defs#externalRecordRef Optional

The same project as recorded on another person's profile. Set when you keep your own entry for work someone else has also recorded, so consumers can tell the two describe one thing rather than showing it twice. Each side stays its own record: the other person cannot edit yours, and yours does not change theirs. Resolve by AT-URI, since they will keep editing their copy.

startedAt string Optional

Project start date in YYYY-MM or YYYY-MM-DD format.

url string uri Optional

URL of the project (website, repository, demo, etc.).

View raw schema
{
  "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"
      },
      "events": {
        "description": "Event occurrences this project organized or hosted, for example every edition of a conference or every meetup of a series. Each entry should reference a distinct event; consumers ignore entries that don't resolve to a community.lexicon.calendar.event. A talk the user also gave at one of these events is a separate id.sifa.profile.presentationDelivery whose eventRef points at the same event.",
        "items": {
          "ref": "#projectEvent",
          "type": "ref"
        },
        "maxLength": 200,
        "type": "array",
        "x-skos:relatedMatch": [
          "schema:organizer"
        ]
      },
      "isPrimary": {
        "description": "Whether this is the user's primary ongoing project, surfaced in profile Highlights. Only ongoing entries may be primary.",
        "type": "boolean"
      },
      "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 first-class id.sifa.project.self record this personal entry corresponds to, when there is one. A composition link, not a peer one: for the same project recorded on someone else's profile, see sameAs.",
        "ref": "com.atproto.repo.strongRef",
        "type": "ref"
      },
      "role": {
        "description": "The user's own role on the project (e.g. 'Maintainer', 'Core contributor', 'Project lead'). Roles of other people named on the project live on members.",
        "maxGraphemes": 256,
        "maxLength": 2560,
        "type": "string"
      },
      "sameAs": {
        "description": "The same project as recorded on another person's profile. Set when you keep your own entry for work someone else has also recorded, so consumers can tell the two describe one thing rather than showing it twice. Each side stays its own record: the other person cannot edit yours, and yours does not change theirs. Resolve by AT-URI, since they will keep editing their copy.",
        "ref": "id.sifa.defs#externalRecordRef",
        "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",
  "x-skos:exactMatch": [
    "schema:Project",
    "foaf:Project"
  ]
}
projectEvent object

One event occurrence linked to a project.

Properties

event ref id.sifa.defs#externalRecordRef Required

Reference to the community.lexicon.calendar.event. Resolve by AT-URI; the CID is an optional integrity hint.

role string Optional

The user's role at this occurrence when it differs from the project's role (e.g. 'Organizer' for one edition, 'Host' for another). Omit to inherit project.role.

maxLength: 640 bytesmaxGraphemes: 64 graphemes
View raw schema
{
  "description": "One event occurrence linked to a project.",
  "properties": {
    "event": {
      "description": "Reference to the community.lexicon.calendar.event. Resolve by AT-URI; the CID is an optional integrity hint.",
      "ref": "id.sifa.defs#externalRecordRef",
      "type": "ref"
    },
    "role": {
      "description": "The user's role at this occurrence when it differs from the project's role (e.g. 'Organizer' for one edition, 'Host' for another). Omit to inherit project.role.",
      "maxGraphemes": 64,
      "maxLength": 640,
      "type": "string"
    }
  },
  "required": [
    "event"
  ],
  "type": "object"
}

Lexicon Garden

@