com.thefibrehose.pattern
Schema Diff
+8 -2
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 1 non-breaking change.
Breaking Changes (1)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "com.thefibrehose.pattern:body", src: "com.thefibrehose.pattern:body", tgt: "com.thefibrehose.pattern:body.name", kind: "prop", name: Some("name") }
Non-Breaking Changes (1)
- AddedVertex AddedVertex { vertex_id: "com.thefibrehose.pattern:body.name" }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "com.thefibrehose.pattern:body.name" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "com.thefibrehose.pattern:body", src: "com.thefibrehose.pattern:body", tgt: "com.thefibrehose.pattern:body.name", kind: "prop", name: Some("name") }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "Structured metadata for a knitting/crochet pattern, paired with a com.thefibrehose.pdf record.",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"attributes": {
10
10
"description": "Freeform descriptive tags, e.g. textured, colorwork, top-down.",
11
11
"items": {
12
12
"maxLength": 64,
13
13
"type": "string"
14
14
},
15
15
"maxLength": 30,
16
16
"type": "array"
17
17
},
18
18
"colorCount": {
19
19
"description": "Number of distinct yarn colors used in the pattern.",
20
20
"minimum": 1,
21
21
"type": "integer"
22
22
},
23
23
"craftType": {
24
24
"description": "Whether this is a knitting, crochet, or other pattern.",
25
25
"enum": [
26
26
"knitting",
27
27
"crochet",
28
28
"other"
29
29
],
30
30
"type": "string"
31
31
},
32
32
"createdAt": {
33
33
"description": "Timestamp when this pattern record was created.",
34
34
"format": "datetime",
35
35
"type": "string"
36
36
},
37
37
"difficulty": {
38
38
"description": "Optional difficulty rating, 1 (easiest) to 10 (hardest).",
39
39
"maximum": 10,
40
40
"minimum": 1,
41
41
"type": "integer"
42
42
},
43
43
"hookSizeMm": {
44
44
"description": "Recommended crochet hook size in millimeters (e.g. \"5.0\"). Relevant only when craftType is crochet. A string because atproto lexicon has no decimal numeric type.",
45
45
"maxLength": 16,
46
46
"type": "string"
47
47
},
48
48
"language": {
49
49
"description": "BCP-47 language tag the pattern is written in (e.g. \"en\", \"en-US\").",
50
50
"format": "language",
51
51
"type": "string"
52
52
},
53
53
"meterage": {
54
-
"description": "Yarn requirement in meters. Mutually exclusive with yardage (enforced client-side).",
54
+
"description": "Yarn requirement in meters. Computed alongside yardage from whichever unit the uploader entered.",
55
55
"minimum": 0,
56
56
"type": "integer"
57
57
},
58
+
"name": {
59
+
"description": "The pattern's name/title, as given by the uploader.",
60
+
"maxLength": 200,
61
+
"type": "string"
62
+
},
58
63
"needleSizeMm": {
59
64
"description": "Recommended knitting needle size in millimeters (e.g. \"4.5\"). Relevant only when craftType is knitting. A string because atproto lexicon has no decimal numeric type.",
60
65
"maxLength": 16,
61
66
"type": "string"
62
67
},
63
68
"pdfFileName": {
64
69
"description": "Denormalized copy of the linked PDF's fileName, so the list view can display it without an extra fetch.",
65
70
"maxLength": 1024,
66
71
"type": "string"
67
72
},
68
73
"photo": {
69
74
"accept": [
70
75
"image/png",
71
76
"image/jpeg",
72
77
"image/webp"
73
78
],
74
79
"description": "Optional photo of the finished piece.",
75
80
"maxSize": 5242880,
76
81
"type": "blob"
77
82
},
78
83
"subject": {
79
84
"description": "Strong ref to the linked com.thefibrehose.pdf record holding the actual file.",
80
85
"ref": "com.atproto.repo.strongRef",
81
86
"type": "ref"
82
87
},
83
88
"uploaderDid": {
84
89
"description": "DID of the account that originally uploaded this pattern. Redundant with the record's own repo ownership today, but keeps provenance explicit and self-describing if this record is ever copied, reposted, or indexed outside its own repo.",
85
90
"format": "did",
86
91
"type": "string"
87
92
},
88
93
"yardage": {
89
-
"description": "Yarn requirement in yards. Mutually exclusive with meterage (enforced client-side).",
94
+
"description": "Yarn requirement in yards. Computed alongside meterage from whichever unit the uploader entered.",
90
95
"minimum": 0,
91
96
"type": "integer"
92
97
},
93
98
"yarnWeight": {
94
99
"description": "Craft Yarn Council standard yarn weight, 0 (Lace) to 7 (Jumbo).",
95
100
"maximum": 7,
96
101
"minimum": 0,
97
102
"type": "integer"
98
103
}
99
104
},
100
105
"required": [
101
106
"subject",
102
107
"uploaderDid",
108
+
"name",
103
109
"pdfFileName",
104
110
"craftType",
105
111
"yarnWeight",
106
112
"colorCount",
107
113
"language",
108
114
"createdAt"
109
115
],
110
116
"type": "object"
111
117
},
112
118
"type": "record"
113
119
}
114
120
},
115
121
"id": "com.thefibrehose.pattern",
116
122
"lexicon": 1
117
123
}