app.certified.actor.organization
Schema Diff
+54 -4
Compatibility Analysis
Backward Compatible
Backward compatible. 38 non-breaking changes.
Non-Breaking Changes (38)
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.additionalLocations" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.additionalLocations:items" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.legalName" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.logo" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.logo:variant0" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.logo:variant1" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant0" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant1" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant2" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.publicEmail" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.signatures" }
- AddedVertex AddedVertex { vertex_id: "app.certified.actor.organization:body.visibility" }
- AddedVertex AddedVertex { vertex_id: "app.certified.signature.defs#list" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#descriptionString" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#smallImage" }
- AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#uri" }
- AddedVertex AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.additionalLocations", kind: "prop", name: Some("additionalLocations") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.legalName", kind: "prop", name: Some("legalName") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.logo", kind: "prop", name: Some("logo") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.longDescription", kind: "prop", name: Some("longDescription") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.publicEmail", kind: "prop", name: Some("publicEmail") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.signatures", kind: "prop", name: Some("signatures") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.visibility", kind: "prop", name: Some("visibility") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.additionalLocations", tgt: "app.certified.actor.organization:body.additionalLocations:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.additionalLocations:items", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.logo", tgt: "app.certified.actor.organization:body.logo:variant0", kind: "variant", name: Some("org.hypercerts.defs#uri") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.logo", tgt: "app.certified.actor.organization:body.logo:variant1", kind: "variant", name: Some("org.hypercerts.defs#smallImage") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.logo:variant0", tgt: "org.hypercerts.defs#uri", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.logo:variant1", tgt: "org.hypercerts.defs#smallImage", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant0", kind: "variant", name: Some("org.hypercerts.defs#descriptionString") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant1", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant0", tgt: "org.hypercerts.defs#descriptionString", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant1", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- AddedEdge AddedEdge { src: "app.certified.actor.organization:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "app.certified.actor.organization:body.additionalLocations" }AddedVertex { vertex_id: "app.certified.actor.organization:body.additionalLocations:items" }AddedVertex { vertex_id: "app.certified.actor.organization:body.legalName" }AddedVertex { vertex_id: "app.certified.actor.organization:body.logo" }AddedVertex { vertex_id: "app.certified.actor.organization:body.logo:variant0" }AddedVertex { vertex_id: "app.certified.actor.organization:body.logo:variant1" }AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription" }AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant0" }AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant1" }AddedVertex { vertex_id: "app.certified.actor.organization:body.longDescription:variant2" }AddedVertex { vertex_id: "app.certified.actor.organization:body.publicEmail" }AddedVertex { vertex_id: "app.certified.actor.organization:body.signatures" }AddedVertex { vertex_id: "app.certified.actor.organization:body.visibility" }AddedVertex { vertex_id: "app.certified.signature.defs#list" }AddedVertex { vertex_id: "org.hypercerts.defs#descriptionString" }AddedVertex { vertex_id: "org.hypercerts.defs#smallImage" }AddedVertex { vertex_id: "org.hypercerts.defs#uri" }AddedVertex { vertex_id: "pub.leaflet.pages.linearDocument" }
Additional Notes
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.additionalLocations", kind: "prop", name: Some("additionalLocations") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.legalName", kind: "prop", name: Some("legalName") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.logo", kind: "prop", name: Some("logo") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.longDescription", kind: "prop", name: Some("longDescription") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.publicEmail", kind: "prop", name: Some("publicEmail") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.signatures", kind: "prop", name: Some("signatures") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body", tgt: "app.certified.actor.organization:body.visibility", kind: "prop", name: Some("visibility") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.additionalLocations", tgt: "app.certified.actor.organization:body.additionalLocations:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.additionalLocations:items", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.logo", tgt: "app.certified.actor.organization:body.logo:variant0", kind: "variant", name: Some("org.hypercerts.defs#uri") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.logo", tgt: "app.certified.actor.organization:body.logo:variant1", kind: "variant", name: Some("org.hypercerts.defs#smallImage") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.logo:variant0", tgt: "org.hypercerts.defs#uri", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.logo:variant1", tgt: "org.hypercerts.defs#smallImage", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant0", kind: "variant", name: Some("org.hypercerts.defs#descriptionString") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant1", kind: "variant", name: Some("pub.leaflet.pages.linearDocument") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription", tgt: "app.certified.actor.organization:body.longDescription:variant2", kind: "variant", name: Some("com.atproto.repo.strongRef") }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant0", tgt: "org.hypercerts.defs#descriptionString", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant1", tgt: "pub.leaflet.pages.linearDocument", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.longDescription:variant2", tgt: "com.atproto.repo.strongRef", kind: "ref", name: None }
- Non-breaking: AddedEdge { src: "app.certified.actor.organization:body.signatures", tgt: "app.certified.signature.defs#list", kind: "ref", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "Extended metadata for an organization actor. Complements the base actor profile with organization-specific fields like legal structure and reference links.",
5
+
"description": "Extended metadata for an organization actor. Complements the base actor profile (app.certified.actor.profile), which holds the display name, description, website, avatar, and banner, with organization-specific fields such as legal name, full logo, public contact email, legal structure, reference links, and locations.",
6
6
"key": "literal:self",
7
7
"record": {
8
8
"properties": {
9
+
"additionalLocations": {
10
+
"description": "Strong references to further locations where the organization operates, such as branches, outlets, or field offices. Excludes the primary location, which is in location; do not repeat it here. Each referenced record must conform with the lexicon app.certified.location. As with location, update a reference whenever its record is edited.",
11
+
"items": {
12
+
"ref": "com.atproto.repo.strongRef",
13
+
"type": "ref"
14
+
},
15
+
"maxLength": 1000,
16
+
"type": "array"
17
+
},
9
18
"createdAt": {
10
19
"description": "Client-declared timestamp when this record was originally created.",
11
20
"format": "datetime",
12
21
"type": "string"
13
22
},
14
23
"foundedDate": {
15
24
"description": "When the organization was established. Stored as datetime per ATProto conventions (no date-only format exists). Clients should use midnight UTC (e.g., '2005-01-01T00:00:00.000Z'); consumers should treat only the date portion as canonical.",
16
25
"format": "datetime",
17
26
"type": "string"
18
27
},
28
+
"legalName": {
29
+
"description": "The organization's registered legal name. The public-facing name belongs in app.certified.actor.profile displayName.",
30
+
"maxGraphemes": 256,
31
+
"maxLength": 2560,
32
+
"type": "string"
33
+
},
19
34
"location": {
20
-
"description": "A strong reference to the location where the organization is based. The record referenced must conform with the lexicon app.certified.location.",
35
+
"description": "A strong reference to the organization's primary location: where it is based, and where it is shown when a map displays one point per organization. The referenced record must conform with the lexicon app.certified.location. Because a strong reference pins a specific version (CID) of that record, update this reference whenever the location record is edited. Further locations go in additionalLocations.",
21
36
"ref": "com.atproto.repo.strongRef",
22
37
"type": "ref"
23
38
},
39
+
"logo": {
40
+
"description": "The organization's full logo: a wordmark, or a combination mark pairing the symbol with the name. Used where the logo appears without the name beside it, such as partner listings or badge displays. Prefer a horizontal image with a transparent background (PNG or WebP). The square symbol alone (brandmark) belongs in app.certified.actor.profile avatar, which is cropped to a square or circle.",
41
+
"refs": [
42
+
"org.hypercerts.defs#uri",
43
+
"org.hypercerts.defs#smallImage"
44
+
],
45
+
"type": "union"
46
+
},
47
+
"longDescription": {
48
+
"description": "Long-form description of the organization, such as its mission, history, or detailed project narrative. An inline string for plain text or markdown, a Leaflet linear document record embedded directly, or a strong reference to an existing document record.",
49
+
"refs": [
50
+
"org.hypercerts.defs#descriptionString",
51
+
"pub.leaflet.pages.linearDocument",
52
+
"com.atproto.repo.strongRef"
53
+
],
54
+
"type": "union"
55
+
},
24
56
"organizationType": {
25
57
"description": "Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative').",
26
58
"items": {
27
59
"maxGraphemes": 100,
28
60
"maxLength": 128,
29
61
"type": "string"
30
62
},
31
63
"maxLength": 10,
32
64
"type": "array"
33
65
},
66
+
"publicEmail": {
67
+
"description": "A contact email address the organization wants shown publicly (e.g. 'hello@example.org'). Records are public, so never put a personal or internal address here.",
68
+
"maxLength": 254,
69
+
"type": "string"
70
+
},
71
+
"signatures": {
72
+
"description": "Optional cryptographic signatures attesting to this record's content.",
73
+
"ref": "app.certified.signature.defs#list",
74
+
"type": "ref"
75
+
},
34
76
"urls": {
35
-
"description": "Additional reference URLs (social media profiles, contact pages, donation links, etc.) with a display label for each URL.",
77
+
"description": "Additional reference URLs, each with a display label: social media profiles, contact pages, donation links, and similar. The organization's main website belongs in app.certified.actor.profile website, not here.",
36
78
"items": {
37
79
"ref": "#urlItem",
38
80
"type": "ref"
39
81
},
40
82
"type": "array"
83
+
},
84
+
"visibility": {
85
+
"description": "Controls whether the organization or project is publicly discoverable on platforms that honor this setting.",
86
+
"knownValues": [
87
+
"public",
88
+
"unlisted"
89
+
],
90
+
"type": "string"
41
91
}
42
92
},
43
93
"required": [
44
94
"createdAt"
45
95
],
46
96
"type": "object"
47
97
},
48
98
"type": "record"
49
99
},
50
100
"urlItem": {
51
101
"description": "A labeled URL reference.",
52
102
"properties": {
53
103
"label": {
54
-
"description": "Optional human-readable label for this URL (e.g. 'Support page', 'Donation page').",
104
+
"description": "Optional human-readable label for this URL (e.g. 'Donation page').",
55
105
"maxGraphemes": 64,
56
106
"maxLength": 640,
57
107
"type": "string"
58
108
},
59
109
"url": {
60
110
"description": "The URL.",
61
111
"format": "uri",
62
112
"maxGraphemes": 2048,
63
113
"maxLength": 10000,
64
114
"type": "string"
65
115
}
66
116
},
67
117
"required": [
68
118
"url"
69
119
],
70
120
"type": "object"
71
121
}
72
122
},
73
123
"id": "app.certified.actor.organization",
74
124
"lexicon": 1
75
125
}