net.atview.project
Schema Diff
+62 -42
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
}