app.certified.actor.organization

certified.app

Schema Diff

+32 -4

From

CID
bafyreih6sfkywdg...
Indexed At
2026-07-26 20:06 UTC
View this version

To

CID
bafyreifdr23yozf...
Indexed At
2026-10-05 14:11 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 19 non-breaking changes.

Non-Breaking Changes (19)
  • 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.publicEmail" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#smallImage" }
  • AddedVertex AddedVertex { vertex_id: "org.hypercerts.defs#uri" }
  • 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.publicEmail", kind: "prop", name: Some("publicEmail") }
  • 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 }

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.publicEmail" }
  • AddedVertex { vertex_id: "org.hypercerts.defs#smallImage" }
  • AddedVertex { vertex_id: "org.hypercerts.defs#uri" }

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.publicEmail", kind: "prop", name: Some("publicEmail") }
  • 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 }
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 +
          },
24 47
          "longDescription": {
25 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.",
26 49
            "refs": [
27 50
              "org.hypercerts.defs#descriptionString",
28 51
              "pub.leaflet.pages.linearDocument",
29 52
              "com.atproto.repo.strongRef"
30 53
            ],
31 54
            "type": "union"
32 55
          },
33 56
          "organizationType": {
34 57
            "description": "Legal or operational structures of the organization (e.g. 'nonprofit', 'ngo', 'government', 'social-enterprise', 'cooperative').",
35 58
            "items": {
36 59
              "maxGraphemes": 100,
37 60
              "maxLength": 128,
38 61
              "type": "string"
39 62
            },
40 63
            "maxLength": 10,
41 64
            "type": "array"
42 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 +
          },
43 71
          "signatures": {
44 72
            "description": "Optional cryptographic signatures attesting to this record's content.",
45 73
            "ref": "app.certified.signature.defs#list",
46 74
            "type": "ref"
47 75
          },
48 76
          "urls": {
49 -
            "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.",
50 78
            "items": {
51 79
              "ref": "#urlItem",
52 80
              "type": "ref"
53 81
            },
54 82
            "type": "array"
55 83
          },
56 84
          "visibility": {
57 85
            "description": "Controls whether the organization or project is publicly discoverable on platforms that honor this setting.",
58 86
            "knownValues": [
59 87
              "public",
60 88
              "unlisted"
61 89
            ],
62 90
            "type": "string"
63 91
          }
64 92
        },
65 93
        "required": [
66 94
          "createdAt"
67 95
        ],
68 96
        "type": "object"
69 97
      },
70 98
      "type": "record"
71 99
    },
72 100
    "urlItem": {
73 101
      "description": "A labeled URL reference.",
74 102
      "properties": {
75 103
        "label": {
76 -
          "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').",
77 105
          "maxGraphemes": 64,
78 106
          "maxLength": 640,
79 107
          "type": "string"
80 108
        },
81 109
        "url": {
82 110
          "description": "The URL.",
83 111
          "format": "uri",
84 112
          "maxGraphemes": 2048,
85 113
          "maxLength": 10000,
86 114
          "type": "string"
87 115
        }
88 116
      },
89 117
      "required": [
90 118
        "url"
91 119
      ],
92 120
      "type": "object"
93 121
    }
94 122
  },
95 123
  "id": "app.certified.actor.organization",
96 124
  "lexicon": 1
97 125
}

Compare Other Versions

Lexicon Garden

@