id.sifa.profile.position

sifa.id

{
  "id": "id.sifa.profile.position",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "title",
          "startedAt",
          "createdAt"
        ],
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 2560,
            "minLength": 1,
            "description": "Job title or role name.",
            "maxGraphemes": 256,
            "x-skos:exactMatch": [
              "org:role",
              "schema:roleName"
            ]
          },
          "labels": {
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union",
            "description": "Self-label values for this position record."
          },
          "skills": {
            "type": "array",
            "items": {
              "ref": "id.sifa.defs#skillRef",
              "type": "ref"
            },
            "maxLength": 50,
            "description": "Skills used in this position. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID."
          },
          "company": {
            "type": "string",
            "maxLength": 2560,
            "minLength": 1,
            "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,
            "x-skos:exactMatch": [
              "org:organization",
              "schema:worksFor"
            ]
          },
          "endedAt": {
            "type": "string",
            "description": "End date of the position in YYYY-MM or YYYY-MM-DD format. Omit if this is a current position.",
            "x-skos:exactMatch": [
              "schema:endDate"
            ]
          },
          "location": {
            "ref": "community.lexicon.location.address",
            "type": "ref",
            "description": "Work location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer.",
            "x-skos:exactMatch": [
              "schema:jobLocation"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "Client-declared timestamp when this record was originally created."
          },
          "entityRef": {
            "type": "string",
            "format": "uri",
            "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.",
            "x-skos:closeMatch": [
              "schema:sameAs"
            ]
          },
          "isPrimary": {
            "type": "boolean",
            "description": "Whether this is the user's primary current position, displayed on the identity card."
          },
          "startedAt": {
            "type": "string",
            "description": "Start date of the position in YYYY-MM or YYYY-MM-DD format.",
            "x-skos:exactMatch": [
              "schema:startDate"
            ]
          },
          "companyDid": {
            "type": "string",
            "format": "did",
            "description": "DID of the company's ATproto account, if one exists. Enables verified company linking."
          },
          "onBehalfOf": {
            "type": "string",
            "maxLength": 2560,
            "description": "Name of the party this role is held on behalf of, when the person represents someone else — most often a fund whose board seat this is. A disclosure, not a role type. Omit for independent seats.",
            "maxGraphemes": 256
          },
          "description": {
            "type": "string",
            "maxLength": 50000,
            "description": "Description of responsibilities, achievements, and duties.",
            "maxGraphemes": 5000,
            "x-skos:exactMatch": [
              "dcterms:description"
            ]
          },
          "onBehalfOfDid": {
            "type": "string",
            "format": "did",
            "description": "DID of the represented party's ATproto account, if one exists. May resolve to an organization or to a person (e.g. a family-office principal)."
          },
          "workplaceType": {
            "type": "string",
            "description": "Workplace arrangement (on-site, remote, hybrid).",
            "knownValues": [
              "id.sifa.defs#onSite",
              "id.sifa.defs#remote",
              "id.sifa.defs#hybrid"
            ],
            "x-skos:note": "schema.org models only a remote flag; Sifa distinguishes onSite, remote, and hybrid.",
            "x-skos:narrowMatch": [
              "schema:jobLocationType"
            ]
          },
          "employmentType": {
            "type": "string",
            "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",
              "id.sifa.defs#boardMember",
              "id.sifa.defs#boardObserver",
              "id.sifa.defs#advisor"
            ],
            "x-skos:note": "schema:employmentType is free text. ESCO is the better value anchor.",
            "x-skos:closeMatch": [
              "schema:employmentType"
            ]
          },
          "onBehalfOfEntityRef": {
            "type": "string",
            "format": "uri",
            "description": "Portable, app-neutral identifier for the represented party selected from a resolver dropdown: a Wikidata Q-ID URI, a ROR URI, or an LEI URI. Absent for free-text entries."
          }
        }
      },
      "description": "Record representing a single work position or role.",
      "x-skos:closeMatch": [
        "org:Membership",
        "schema:OrganizationRole"
      ]
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "A work experience entry in the user's professional profile."
}

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
bafyreibdrpq3ag4mrx2xmih5n5d44oyocas2b36armkryfgca4gx3gbpkm
Indexed At
2026-08-07 11:35 UTC
AT-URI
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.profile.position

Version History (7 versions)

Referenced Schemas (3)

Lexicon Garden

@