id.sifa.org.employmentAttestation

sifa.id

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record representing an organization's attestation that a person is or was employed at its entity. Deleting the record is a revocation. Updating status from current to past with an end date is offboarding, which keeps the history.",
      "key": "tid",
      "record": {
        "properties": {
          "comment": {
            "description": "Optional brief comment from the organization.",
            "maxGraphemes": 300,
            "maxLength": 3000,
            "type": "string"
          },
          "companyDid": {
            "description": "Deprecated. The attesting organization is the repository owner, so this field carries no information; readers ignore it. Kept so existing schema readers do not break.",
            "format": "did",
            "type": "string"
          },
          "createdAt": {
            "description": "Client-declared timestamp when this attestation was created.",
            "format": "datetime",
            "type": "string"
          },
          "endedAt": {
            "description": "End date in YYYY-MM or YYYY-MM-DD format. Required context when status is past.",
            "type": "string"
          },
          "entityRef": {
            "description": "Portable entity identifier (Wikidata Q-ID URI, ROR URI, or LEI URI) of the employing legal entity. Omit it when the organization account itself is the anchor. Never the free-text company name.",
            "format": "uri",
            "type": "string"
          },
          "labels": {
            "description": "Self-label values for this attestation record.",
            "refs": [
              "com.atproto.label.defs#selfLabels"
            ],
            "type": "union"
          },
          "position": {
            "description": "StrongRef to the id.sifa.profile.position record being attested. It must belong to subject. Resolve by AT-URI: the CID is the version the organization saw and must not be used as a join key, because the subject editing the position changes its CID. Omit it to attest employment at the entity as a whole, which then matches every position of the subject at that entity with an overlapping period.",
            "ref": "com.atproto.repo.strongRef",
            "type": "ref"
          },
          "source": {
            "description": "How the attestation was written. Absent means an account holder confirmed it by hand.",
            "ref": "id.sifa.defs#attestationSource",
            "type": "ref"
          },
          "startedAt": {
            "description": "Optional start date snapshot in YYYY-MM or YYYY-MM-DD format, mirroring the position lexicon's freeform date shape. Compared at month precision; a later difference makes the attestation stale.",
            "type": "string"
          },
          "status": {
            "description": "Whether the employment is current or past.",
            "ref": "id.sifa.defs#employmentStatus",
            "type": "ref"
          },
          "subject": {
            "description": "DID of the employee whose employment is being attested.",
            "format": "did",
            "type": "string"
          },
          "title": {
            "description": "Optional job title snapshot from the position at attestation time. If the position's title later differs, the attestation is stale until the organization re-attests.",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "subject",
          "status",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "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. The optional title and start-date snapshots let a consumer notice when the referenced position was edited afterwards: a mismatch makes the attestation stale, never void. Never pins the free-text company name, which can change in a rebrand without affecting the attestation.",
  "id": "id.sifa.org.employmentAttestation",
  "lexicon": 1
}

Validate Record

Validate a record against id.sifa.org.employmentAttestation

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

Metadata

DID
did:plc:2f2ahswozqy4v5lvu676375y
CID
bafyreig6hzxn6bsm4aw3syqecxwomceo77k4qxc5jsaerukwz3ehfcc4xi
Indexed At
2026-09-30 20:06 UTC
AT-URI
at://did:plc:2f2ahswozqy4v5lvu676375y/com.atproto.lexicon.schema/id.sifa.org.employmentAttestation

Version History (3 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.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 work experience entry in the user's professional profile.

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

  • A job listing published on the AT Protocol.

Lexicon Garden

@