id.sifa.profile.position

sifa.id

Schema Diff

+17 -15

From

CID
bafyreiei6d5sb2w...
Indexed At
2026-03-27 23:46 UTC
View this version

To

CID
bafyreieqdk3mqa5...
Indexed At
2026-06-09 15:54 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 4 non-breaking changes.

Non-Breaking Changes (4)
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.company", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.company", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.title", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.title", sort: "maxLength", old_value: "1000", new_value: "2560" }

Migration Guidance

Constraint Changes

  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.company", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.company", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.title", sort: "maxGraphemes", old_value: "100", new_value: "256" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.title", sort: "maxLength", old_value: "1000", new_value: "2560" }
1 1
{
2 2
  "id": "id.sifa.profile.position",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 -
          "company",
11 10
          "title",
12 11
          "startedAt",
13 12
          "createdAt"
14 13
        ],
15 14
        "properties": {
16 15
          "title": {
17 16
            "type": "string",
18 -
            "maxLength": 1000,
17 +
            "maxLength": 2560,
19 18
            "minLength": 1,
20 19
            "description": "Job title or role name.",
21 -
            "maxGraphemes": 100
20 +
            "maxGraphemes": 256
22 21
          },
23 22
          "labels": {
24 23
            "refs": [
25 24
              "com.atproto.label.defs#selfLabels"
26 25
            ],
27 26
            "type": "union",
28 27
            "description": "Self-label values for this position record."
29 28
          },
30 29
          "skills": {
31 30
            "type": "array",
32 31
            "items": {
33 -
              "ref": "com.atproto.repo.strongRef",
32 +
              "ref": "id.sifa.defs#skillRef",
34 33
              "type": "ref"
35 34
            },
36 35
            "maxLength": 50,
37 -
            "description": "Skills used in this position. Each entry is a strongRef to an id.sifa.profile.skill record owned by the same DID."
36 +
            "description": "Skills used in this position. Each entry is a URI reference to an id.sifa.profile.skill record owned by the same DID."
38 37
          },
39 38
          "company": {
40 39
            "type": "string",
41 -
            "maxLength": 1000,
40 +
            "maxLength": 2560,
42 41
            "minLength": 1,
43 -
            "description": "Company or organization name.",
44 -
            "maxGraphemes": 100
42 +
            "description": "Company or organization name. Optional: omit for self-employed, freelance, contract, or independent work that has no separately named or registered entity.",
43 +
            "maxGraphemes": 256
45 44
          },
46 45
          "endedAt": {
47 46
            "type": "string",
48 -
            "format": "datetime",
49 -
            "description": "End date of the position. Omit if this is a current position."
47 +
            "description": "End date of the position in YYYY-MM or YYYY-MM-DD format. Omit if this is a current position."
50 48
          },
51 49
          "location": {
52 50
            "ref": "community.lexicon.location.address",
53 51
            "type": "ref",
54 -
            "description": "Work location. Uses community location lexicon."
52 +
            "description": "Work location. Sifa enforces ISO 3166-1 alpha-2 country codes at the app layer."
55 53
          },
56 54
          "createdAt": {
57 55
            "type": "string",
58 56
            "format": "datetime",
59 57
            "description": "Client-declared timestamp when this record was originally created."
60 58
          },
61 59
          "isPrimary": {
62 60
            "type": "boolean",
63 61
            "description": "Whether this is the user's primary current position, displayed on the identity card."
64 62
          },
65 63
          "startedAt": {
66 64
            "type": "string",
67 -
            "format": "datetime",
68 -
            "description": "Start date of the position. For month-precision imports, use first day of month at midnight UTC."
65 +
            "description": "Start date of the position in YYYY-MM or YYYY-MM-DD format."
69 66
          },
70 67
          "companyDid": {
71 68
            "type": "string",
72 69
            "format": "did",
73 70
            "description": "DID of the company's ATproto account, if one exists. Enables verified company linking."
74 71
          },
75 72
          "description": {
76 73
            "type": "string",
77 74
            "maxLength": 50000,
78 75
            "description": "Description of responsibilities, achievements, and duties.",
79 76
            "maxGraphemes": 5000
80 77
          },
81 78
          "workplaceType": {
82 79
            "type": "string",
83 80
            "description": "Workplace arrangement (on-site, remote, hybrid).",
84 81
            "knownValues": [
85 82
              "id.sifa.defs#onSite",
86 83
              "id.sifa.defs#remote",
87 84
              "id.sifa.defs#hybrid"
88 85
            ]
89 86
          },
90 87
          "employmentType": {
91 88
            "type": "string",
92 89
            "description": "Type of employment (full-time, part-time, contract, etc.).",
93 90
            "knownValues": [
94 91
              "id.sifa.defs#fullTime",
95 92
              "id.sifa.defs#partTime",
93 +
              "id.sifa.defs#temporary",
94 +
              "id.sifa.defs#seasonal",
96 95
              "id.sifa.defs#contract",
97 96
              "id.sifa.defs#freelance",
97 +
              "id.sifa.defs#selfEmployed",
98 +
              "id.sifa.defs#independentWork",
98 99
              "id.sifa.defs#internship",
99 100
              "id.sifa.defs#apprenticeship",
100 -
              "id.sifa.defs#volunteer",
101 -
              "id.sifa.defs#selfEmployed"
101 +
              "id.sifa.defs#fellowship",
102 +
              "id.sifa.defs#trainee",
103 +
              "id.sifa.defs#volunteer"
102 104
            ]
103 105
          }
104 106
        }
105 107
      },
106 108
      "description": "Record representing a single work position or role."
107 109
    }
108 110
  },
109 111
  "$type": "com.atproto.lexicon.schema",
110 112
  "lexicon": 1,
111 113
  "description": "A work experience entry in the user's professional profile."
112 114
}

Compare Other Versions

Lexicon Garden

@