net.atview.project

atview.net

Schema Diff

+62 -42

From

CID
bafyreifqqfs4hph...
Indexed At
2026-04-30 08:41 UTC
View this version

To

CID
bafyreibxrrzi4x6...
Indexed At
2026-05-02 19:52 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

16 breaking changes, 17 non-breaking changes.

Breaking Changes (16)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.createdAt", kind: "prop", name: Some("createdAt") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.displayName", kind: "prop", name: Some("displayName") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.handle", kind: "prop", name: Some("handle") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "net.atview.project", src: "net.atview.project", tgt: "net.atview.project.handle", kind: "prop", name: Some("handle") }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.avatar" }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.banner" }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.description" }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.displayName" }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.handle" }
  • RemovedVertex RemovedVertex { vertex_id: "net.atview.project.href" }
  • RemovedEdge RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.avatar", kind: "prop", name: Some("avatar") }
  • RemovedEdge RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.banner", kind: "prop", name: Some("banner") }
  • RemovedEdge RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.description", kind: "prop", name: Some("description") }
  • RemovedEdge RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.displayName", kind: "prop", name: Some("displayName") }
  • RemovedEdge RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.href", kind: "prop", name: Some("href") }
  • KindChanged KindChanged { vertex_id: "net.atview.project", old_kind: "object", new_kind: "record" }
Non-Breaking Changes (17)
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.avatar" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.banner" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.createdAt" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.description" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.displayName" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.docs" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.github" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.handle" }
  • AddedVertex AddedVertex { vertex_id: "net.atview.project:body.href" }
  • AddedEdge AddedEdge { src: "net.atview.project", tgt: "net.atview.project:body", kind: "record-schema", name: None }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.avatar", kind: "prop", name: Some("avatar") }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.banner", kind: "prop", name: Some("banner") }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.docs", kind: "prop", name: Some("docs") }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.github", kind: "prop", name: Some("github") }
  • AddedEdge AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.href", kind: "prop", name: Some("href") }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "net.atview.project.avatar" }
  • RemovedVertex { vertex_id: "net.atview.project.banner" }
  • RemovedVertex { vertex_id: "net.atview.project.description" }
  • RemovedVertex { vertex_id: "net.atview.project.displayName" }
  • RemovedVertex { vertex_id: "net.atview.project.handle" }
  • RemovedVertex { vertex_id: "net.atview.project.href" }

Added Elements

  • AddedVertex { vertex_id: "net.atview.project:body" }
  • AddedVertex { vertex_id: "net.atview.project:body.avatar" }
  • AddedVertex { vertex_id: "net.atview.project:body.banner" }
  • AddedVertex { vertex_id: "net.atview.project:body.createdAt" }
  • AddedVertex { vertex_id: "net.atview.project:body.description" }
  • AddedVertex { vertex_id: "net.atview.project:body.displayName" }
  • AddedVertex { vertex_id: "net.atview.project:body.docs" }
  • AddedVertex { vertex_id: "net.atview.project:body.github" }
  • AddedVertex { vertex_id: "net.atview.project:body.handle" }
  • AddedVertex { vertex_id: "net.atview.project:body.href" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Breaking: RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.displayName", kind: "prop", name: Some("displayName") }
  • Breaking: RequiredEdgeAdded { vertex_id: "net.atview.project:body", src: "net.atview.project:body", tgt: "net.atview.project:body.handle", kind: "prop", name: Some("handle") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "net.atview.project", src: "net.atview.project", tgt: "net.atview.project.handle", kind: "prop", name: Some("handle") }
  • Breaking: RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.avatar", kind: "prop", name: Some("avatar") }
  • Breaking: RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.banner", kind: "prop", name: Some("banner") }
  • Breaking: RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.description", kind: "prop", name: Some("description") }
  • Breaking: RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.displayName", kind: "prop", name: Some("displayName") }
  • Breaking: RemovedEdge { src: "net.atview.project", tgt: "net.atview.project.href", kind: "prop", name: Some("href") }
  • Breaking: KindChanged { vertex_id: "net.atview.project", old_kind: "object", new_kind: "record" }
  • Non-breaking: AddedEdge { src: "net.atview.project", tgt: "net.atview.project:body", kind: "record-schema", name: None }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.avatar", kind: "prop", name: Some("avatar") }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.banner", kind: "prop", name: Some("banner") }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.docs", kind: "prop", name: Some("docs") }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.github", kind: "prop", name: Some("github") }
  • Non-breaking: AddedEdge { src: "net.atview.project:body", tgt: "net.atview.project:body.href", kind: "prop", name: Some("href") }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "Reference to a project. Identified by a handle and enriched with optional human-friendly metadata, links and visuals.",
6 -
      "properties": {
7 -
        "avatar": {
8 -
          "accept": [
9 -
            "image/*"
10 -
          ],
11 -
          "description": "Avatar image representing the project. Less than 1MB in size.",
12 -
          "maxSize": 1000000,
13 -
          "type": "blob"
6 +
      "key": "tid",
7 +
      "record": {
8 +
        "properties": {
9 +
          "avatar": {
10 +
            "accept": [
11 +
              "image/*"
12 +
            ],
13 +
            "description": "Avatar image representing the project. Less than 1MB in size.",
14 +
            "maxSize": 1000000,
15 +
            "type": "blob"
16 +
          },
17 +
          "banner": {
18 +
            "accept": [
19 +
              "image/*"
20 +
            ],
21 +
            "description": "Banner image used as the project's cover. Less than 1MB in size.",
22 +
            "maxSize": 1000000,
23 +
            "type": "blob"
24 +
          },
25 +
          "createdAt": {
26 +
            "format": "datetime",
27 +
            "type": "string"
28 +
          },
29 +
          "description": {
30 +
            "description": "Short description of the project.",
31 +
            "maxGraphemes": 1000,
32 +
            "maxLength": 10000,
33 +
            "type": "string"
34 +
          },
35 +
          "displayName": {
36 +
            "description": "Display name of the project as shown in user interfaces.",
37 +
            "maxGraphemes": 100,
38 +
            "maxLength": 1000,
39 +
            "type": "string"
40 +
          },
41 +
          "docs": {
42 +
            "description": "URL of the project's documentation.",
43 +
            "format": "uri",
44 +
            "type": "string"
45 +
          },
46 +
          "github": {
47 +
            "description": "URL of the project's GitHub repository.",
48 +
            "format": "uri",
49 +
            "type": "string"
50 +
          },
51 +
          "handle": {
52 +
            "description": "Canonical handle identifying the project (e.g. `myproject.example.com`).",
53 +
            "format": "handle",
54 +
            "type": "string"
55 +
          },
56 +
          "href": {
57 +
            "description": "Primary external URL for the project (e.g. project homepage).",
58 +
            "format": "uri",
59 +
            "type": "string"
60 +
          }
14 61
        },
15 -
        "banner": {
16 -
          "accept": [
17 -
            "image/*"
18 -
          ],
19 -
          "description": "Banner image used as the project's cover. Less than 1MB in size.",
20 -
          "maxSize": 1000000,
21 -
          "type": "blob"
22 -
        },
23 -
        "description": {
24 -
          "description": "Short description of the project.",
25 -
          "maxGraphemes": 1000,
26 -
          "maxLength": 10000,
27 -
          "type": "string"
28 -
        },
29 -
        "displayName": {
30 -
          "description": "Display name of the project as shown in user interfaces.",
31 -
          "maxGraphemes": 100,
32 -
          "maxLength": 1000,
33 -
          "type": "string"
34 -
        },
35 -
        "handle": {
36 -
          "description": "Canonical handle identifying the project (e.g. `myproject.example.com`).",
37 -
          "format": "handle",
38 -
          "type": "string"
39 -
        },
40 -
        "href": {
41 -
          "description": "Primary external URL for the project (e.g. project homepage).",
42 -
          "format": "uri",
43 -
          "type": "string"
44 -
        }
62 +
        "required": [
63 +
          "createdAt",
64 +
          "handle",
65 +
          "displayName"
66 +
        ],
67 +
        "type": "object"
45 68
      },
46 -
      "required": [
47 -
        "handle"
48 -
      ],
49 -
      "type": "object"
69 +
      "type": "record"
50 70
    }
51 71
  },
52 72
  "id": "net.atview.project",
53 73
  "lexicon": 1
54 74
}

Compare Other Versions

Lexicon Garden

@