id.sifa.profile.position

sifa.id

Schema Diff

+16 -13

From

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

To

CID
bafyreiblguoexne...
Indexed At
2026-05-27 12:05 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.title", 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.company", sort: "maxLength", old_value: "1000", new_value: "2560" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "id.sifa.profile.position:body.company", sort: "maxGraphemes", old_value: "100", new_value: "256" }

Migration Guidance

Constraint Changes

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

Compare Other Versions

Lexicon Garden

@