# id.sifa.verification.employment

> Published by [sifa.id](https://lexicon.garden/identity/did:plc:2f2ahswozqy4v5lvu676375y)

## Description

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 DID, not the repository the record appears in: a copy of this record in any other repository carries no meaning.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.verification.employment)
- [Documentation](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.verification.employment/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:2f2ahswozqy4v5lvu676375y/id.sifa.verification.employment/examples)

## Definitions

### `id.sifa.verification.employment`

**Type**: `record`

Record issued by Sifa stating that it verified the subject's employment in a position. Only records authored by the issuer DID count. Deleting the record is a revocation; status and method changes update the same record. expiresAt is set only while a current position rests on email verification alone. The record carries method tokens only, never an email address or domain. Absence of a record is not a negative signal.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes | Client-declared timestamp when this record was created. |
| `endedAt` | `string` | No | End date in YYYY-MM or YYYY-MM-DD format when status is past. |
| `entityRef` | `string` (uri) | No | Portable identifier (Wikidata Q-ID URI, ROR URI, or LEI URI) of the employing legal entity, when known. |
| `evidence` | `array` | No | Public records that back the verification, such as the organization's id.sifa.org.employmentAttestation. Never private evidence. |
| `expiresAt` | `string` (datetime) | No | When this verification lapses unless renewed. Present only while a current position rests on email verification alone. Consumers treat a record past this time as lapsed. |
| `methods` | `array` | Yes | Every method that currently backs this verification. |
| `organization` | `string` (did) | No | DID of the organization's account, when the organization is on the network. |
| `position` | `ref` → `id.sifa.defs#externalRecordRef` | Yes | The subject's id.sifa.profile.position record. Resolve the AT-URI live; the CID is an integrity hint. |
| `startedAt` | `string` | Yes | Start date snapshot in YYYY-MM or YYYY-MM-DD format. |
| `status` | `ref` → `id.sifa.defs#employmentStatus` | Yes | Whether the verified employment is current or past. |
| `subject` | `string` (did) | Yes | DID of the person whose employment was verified. |
| `title` | `string` | Yes | Job title snapshot from the position at issue time. Consumers compare it with the live position to notice edits. |
| `verifiedAt` | `string` (datetime) | Yes | When the most recent backing verification was made. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Record issued by Sifa stating that it verified the subject's employment in a position. Only records authored by the issuer DID count. Deleting the record is a revocation; status and method changes update the same record. expiresAt is set only while a current position rests on email verification alone. The record carries method tokens only, never an email address or domain. Absence of a record is not a negative signal.",
      "key": "tid",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this record was created.",
            "format": "datetime",
            "type": "string"
          },
          "endedAt": {
            "description": "End date in YYYY-MM or YYYY-MM-DD format when status is past.",
            "maxLength": 10,
            "type": "string"
          },
          "entityRef": {
            "description": "Portable identifier (Wikidata Q-ID URI, ROR URI, or LEI URI) of the employing legal entity, when known.",
            "format": "uri",
            "type": "string"
          },
          "evidence": {
            "description": "Public records that back the verification, such as the organization's id.sifa.org.employmentAttestation. Never private evidence.",
            "items": {
              "ref": "id.sifa.defs#externalRecordRef",
              "type": "ref"
            },
            "maxLength": 20,
            "type": "array"
          },
          "expiresAt": {
            "description": "When this verification lapses unless renewed. Present only while a current position rests on email verification alone. Consumers treat a record past this time as lapsed.",
            "format": "datetime",
            "type": "string"
          },
          "methods": {
            "description": "Every method that currently backs this verification.",
            "items": {
              "ref": "id.sifa.defs#verificationMethod",
              "type": "ref"
            },
            "maxLength": 4,
            "minLength": 1,
            "type": "array"
          },
          "organization": {
            "description": "DID of the organization's account, when the organization is on the network.",
            "format": "did",
            "type": "string"
          },
          "position": {
            "description": "The subject's id.sifa.profile.position record. Resolve the AT-URI live; the CID is an integrity hint.",
            "ref": "id.sifa.defs#externalRecordRef",
            "type": "ref"
          },
          "startedAt": {
            "description": "Start date snapshot in YYYY-MM or YYYY-MM-DD format.",
            "maxLength": 10,
            "type": "string"
          },
          "status": {
            "description": "Whether the verified employment is current or past.",
            "ref": "id.sifa.defs#employmentStatus",
            "type": "ref"
          },
          "subject": {
            "description": "DID of the person whose employment was verified.",
            "format": "did",
            "type": "string"
          },
          "title": {
            "description": "Job title snapshot from the position at issue time. Consumers compare it with the live position to notice edits.",
            "maxGraphemes": 256,
            "maxLength": 2560,
            "minLength": 1,
            "type": "string"
          },
          "verifiedAt": {
            "description": "When the most recent backing verification was made.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "subject",
          "position",
          "status",
          "methods",
          "title",
          "startedAt",
          "verifiedAt",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "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 DID, not the repository the record appears in: a copy of this record in any other repository carries no meaning.",
  "id": "id.sifa.verification.employment",
  "lexicon": 1
}
```
