com.suibari.nagi.appLinks
Schema Diff
+5 -0
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 2 non-breaking changes.
Breaking Changes (1)
- ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.appLinks#link.repeat", sort: "maxLength", value: "512" }
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "com.suibari.nagi.appLinks#link.repeat" }
- AddedEdge AddedEdge { src: "com.suibari.nagi.appLinks#link", tgt: "com.suibari.nagi.appLinks#link.repeat", kind: "prop", name: Some("repeat") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.suibari.nagi.appLinks#link.repeat" }
Constraint Changes
- ConstraintAdded ConstraintAdded { vertex_id: "com.suibari.nagi.appLinks#link.repeat", sort: "maxLength", value: "512" }
Additional Notes
- Non-breaking: AddedEdge { src: "com.suibari.nagi.appLinks#link", tgt: "com.suibari.nagi.appLinks#link.repeat", kind: "prop", name: Some("repeat") }
1
1
{
2
2
"id": "com.suibari.nagi.appLinks",
3
3
"defs": {
4
4
"link": {
5
5
"type": "object",
6
6
"required": [
7
7
"collection",
8
8
"label",
9
9
"selection",
10
10
"fields"
11
11
],
12
12
"properties": {
13
13
"label": {
14
14
"type": "string",
15
15
"maxLength": 640,
16
16
"description": "カード見出し(アプリ名相当)。",
17
17
"maxGraphemes": 64
18
18
},
19
19
"appUri": {
20
20
"type": "string",
21
21
"format": "uri",
22
22
"description": "アプリの Web サイト URL。favicon の取得元にもなる。"
23
23
},
24
24
"fields": {
25
25
"type": "array",
26
26
"items": {
27
27
"ref": "#field",
28
28
"type": "ref"
29
29
},
30
30
"maxLength": 10
31
31
},
32
+
"repeat": {
33
+
"type": "string",
34
+
"maxLength": 512,
35
+
"description": "1レコード内で、このキーパスが指す配列の各要素を1行として展開する(例 \"cards\")。省略時は単一表示。指定時、fields の path は配列の各要素からの相対パスになる。"
36
+
},
32
37
"enabled": {
33
38
"type": "boolean",
34
39
"default": true,
35
40
"description": "この連携をプロフィールに表示するか。"
36
41
},
37
42
"iconUrl": {
38
43
"type": "string",
39
44
"format": "uri",
40
45
"description": "アプリのアイコン(favicon)URL。連携設定時に appUri から解決して保存する。"
41
46
},
42
47
"selection": {
43
48
"type": "string",
44
49
"default": "latest",
45
50
"description": "表示するレコードの選び方。MVP は最新1件(latest)のみ。",
46
51
"knownValues": [
47
52
"latest"
48
53
]
49
54
},
50
55
"collection": {
51
56
"type": "string",
52
57
"format": "nsid",
53
58
"description": "表示対象のレコード collection の NSID。"
54
59
}
55
60
}
56
61
},
57
62
"main": {
58
63
"key": "literal:self",
59
64
"type": "record",
60
65
"record": {
61
66
"type": "object",
62
67
"required": [
63
68
"links",
64
69
"createdAt"
65
70
],
66
71
"properties": {
67
72
"links": {
68
73
"type": "array",
69
74
"items": {
70
75
"ref": "#link",
71
76
"type": "ref"
72
77
},
73
78
"maxLength": 20
74
79
},
75
80
"createdAt": {
76
81
"type": "string",
77
82
"format": "datetime"
78
83
}
79
84
}
80
85
},
81
86
"description": "プロフィールカードに並べる、任意の Atmosphere アプリへの連携宣言リスト。所有者本人が curate し、どの collection のどのフィールドを表示するかを定義する。公開レコード。"
82
87
},
83
88
"field": {
84
89
"type": "object",
85
90
"required": [
86
91
"path"
87
92
],
88
93
"properties": {
89
94
"path": {
90
95
"type": "string",
91
96
"maxLength": 512,
92
97
"description": "レコード本体を flatten したキーパス(例 \"trackName\" / \"embed.title\" / \"items[0].name\")。"
93
98
},
94
99
"role": {
95
100
"type": "string",
96
101
"description": "任意の描画ヒント。省略時は表示側が値から自動判別する。",
97
102
"knownValues": [
98
103
"value",
99
104
"datetime",
100
105
"url",
101
106
"image"
102
107
]
103
108
}
104
109
},
105
110
"description": "プロフィールに表示するフィールド。表示するキーパスの宣言のみを持ち、描画の役割(値/日時/リンク/画像)は表示側が値から自動判別する。"
106
111
}
107
112
},
108
113
"$type": "com.atproto.lexicon.schema",
109
114
"lexicon": 1
110
115
}