id.sifa.profile.position

sifa.id

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record representing a single work position or role.",
      "key": "tid",
      "record": {
        "properties": {
          "company": {
            "description": "Company or organization name. Optional: omit for self-employed, freelance, contract, or independent work that has no separately named or registered entity.",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "minLength": 1,
            "type": "string"
          },
          "companyDid": {
            "description": "DID of the company's ATproto account, if one exists. Enables verified company linking.",
            "format": "did",
            "type": "string"
          },
          "createdAt": {
            "description": "Client-declared timestamp when this record was originally created.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "Description of responsibilities, achievements, and duties.",
            "maxGraphemes": 5000,
            "maxLength": 50000,
            "type": "string"
          },
          "employmentType": {
            "description": "Type of employment (full-time, part-time, contract, etc.).",
            "knownValues": [
              "id.sifa.defs#fullTime",
              "id.sifa.defs#partTime",
              "id.sifa.defs#temporary",
              "id.sifa.defs#seasonal",
              "id.sifa.defs#contract",
              "id.sifa.defs#freelance",
              "id.sifa.defs#selfEmployed",
              "id.sifa.defs#independentWork",
              "id.sifa.defs#internship",
              "id.sifa.defs#apprenticeship",
              "id.sifa.defs#fellowship",
              "id.sifa.defs#trainee",
              "id.sifa.defs#volunteer"
            ],
            "type": "string"
          },
          "endedAt": {
            "description": "End date of the position in YYYY-MM or YYYY-MM-DD format. Omit if this is a current position.",
            "type": "string"
          },
          "entityRef": {
            "description": "Portable, app-neutral identifier for the organization the user selected from a resolver dropdown: a Wikidata Q-ID URI (http://www.wikidata.org/entity/Q...), a ROR URI, or an LEI URI. Enables deterministic resolution to a canonical entity even before the org claims an ATproto account. Absent for free-text or independent/self-employed positions.",
            "format": "uri",
            "type": "string"
          },
          "isPrimary": {
            "description": "Whether this is the user's primary current position, displayed on the identity card.",
            "type": "boolean"
          },
          "labels": {
            "description": "Self-label values for this position record.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "location": {
            "description": "Work location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
            "ref": "community.lexicon.location.address",
            "type": "ref"
          },
          "skills": {
            "description": "Skills used in this position. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID.",
            "items": {
              "ref": "id.sifa.defs#skillRef",
              "type": "ref"
            },
            "maxLength": 50,
            "type": "array"
          },
          "startedAt": {
            "description": "Start date of the position in YYYY-MM or YYYY-MM-DD format.",
            "type": "string"
          },
          "title": {
            "description": "Job title or role name.",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "minLength": 1,
            "type": "string"
          },
          "workplaceType": {
            "description": "Workplace arrangement (on-site, remote, hybrid).",
            "knownValues": [
              "id.sifa.defs#onSite",
              "id.sifa.defs#remote",
              "id.sifa.defs#hybrid"
            ],
            "type": "string"
          }
        },
        "required": [
          "title",
          "startedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "A work experience entry in the user's professional profile.",
  "id": "id.sifa.profile.position",
  "lexicon": 1
}

Validate Record

Validate a record against id.sifa.profile.position

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:2f2ahswozqy4v5lvu676375y
CID
bafyreiag2sjil76sw3xcm7rghh7lm4bl3nowyozxckrneruhymhhbbpgku
Indexed At
2026-07-26 20:04 UTC
AT-URI
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.profile.position

Version History (9 versions)

Referenced Schemas (3)

Similar Lexicons

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

  • id.sifa.org.employmentAttestation recordnot from the namespace authority

    An organization's attestation that a person is or was employed by it. Lives in the organization's PDS; the organization is whoever owns the repository. The organization attests employment at the entity, not a job title.…

  • A record of a work position held by the repo owner.

  • id.sifa.verification.employment recordnot from the namespace authority

    Sifa's own statement that it verified a person's employment. Written only by Sifa's published issuer account, about someone else, the way a trusted verifier writes app.bsky.graph.verification. Consumers trust the issuer…

  • A volunteer experience entry in the user's professional profile.

  • A job listing published on the AT Protocol.

Lexicon Garden

@