app.certified.actor.organization

certified.app

Schema Diff

+54 -4

From

CID
bafyreidm3d6pk65...
Indexed At
2026-03-19 20:24 UTC
View this version

To

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

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
}

Compare Other Versions

Lexicon Garden

@