at.marque.dns
Schema Diff
+8 -2
Compatibility Analysis
Backward Compatible
Backward compatible. 3 non-breaking changes.
Non-Breaking Changes (3)
- AddedVertex AddedVertex { vertex_id: "at.marque.dns:body.subject" }
- AddedEdge AddedEdge { src: "at.marque.dns:body", tgt: "at.marque.dns:body.subject", kind: "prop", name: Some("subject") }
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "at.marque.dns#entry.ttl", sort: "minimum", old_value: "60", new_value: "1" }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "at.marque.dns:body.subject" }
Constraint Changes
- ConstraintRelaxed ConstraintRelaxed { vertex_id: "at.marque.dns#entry.ttl", sort: "minimum", old_value: "60", new_value: "1" }
Additional Notes
- Non-breaking: AddedEdge { src: "at.marque.dns:body", tgt: "at.marque.dns:body.subject", kind: "prop", name: Some("subject") }
1
1
{
2
2
"id": "at.marque.dns",
3
3
"defs": {
4
4
"main": {
5
5
"key": "any",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"domain",
11
+
"subject",
11
12
"records",
12
13
"createdAt"
13
14
],
14
15
"properties": {
15
16
"domain": {
16
17
"type": "string",
17
18
"maxLength": 253,
18
-
"description": "Fully qualified domain name this zone belongs to."
19
+
"description": "Fully qualified domain name this zone belongs to. Denormalized from the subject record so consumers can read the FQDN without resolving the reference."
19
20
},
20
21
"records": {
21
22
"type": "array",
22
23
"items": {
23
24
"ref": "#entry",
24
25
"type": "ref"
25
26
},
26
27
"description": "The DNS resource records in this zone."
27
28
},
29
+
"subject": {
30
+
"ref": "com.atproto.repo.strongRef",
31
+
"type": "ref",
32
+
"description": "Strong reference to the at.marque.domain record this zone belongs to."
33
+
},
28
34
"createdAt": {
29
35
"type": "string",
30
36
"format": "datetime",
31
37
"description": "Client-declared timestamp when this record was last written."
32
38
}
33
39
}
34
40
},
35
41
"description": "Record containing the DNS zone entries for a domain managed by Marque. The record key matches the corresponding at.marque.domain record key (the FQDN)."
36
42
},
37
43
"entry": {
38
44
"type": "object",
39
45
"required": [
40
46
"name",
41
47
"recordType",
42
48
"value",
43
49
"ttl"
44
50
],
45
51
"properties": {
46
52
"ttl": {
47
53
"type": "integer",
48
-
"minimum": 60,
54
+
"minimum": 1,
49
55
"description": "Time-to-live in seconds."
50
56
},
51
57
"name": {
52
58
"type": "string",
53
59
"maxLength": 253,
54
60
"description": "Record name relative to the zone apex. Use '@' for the apex itself."
55
61
},
56
62
"value": {
57
63
"type": "string",
58
64
"maxLength": 4096,
59
65
"description": "Record value / rdata."
60
66
},
61
67
"priority": {
62
68
"type": "integer",
63
69
"description": "Priority value for MX and SRV records."
64
70
},
65
71
"recordType": {
66
72
"type": "string",
67
73
"description": "DNS record type.",
68
74
"knownValues": [
69
75
"A",
70
76
"AAAA",
71
77
"CNAME",
72
78
"MX",
73
79
"TXT",
74
80
"SRV",
75
81
"NS",
76
82
"CAA"
77
83
]
78
84
}
79
85
},
80
86
"description": "A single DNS resource record."
81
87
}
82
88
},
83
89
"$type": "com.atproto.lexicon.schema",
84
90
"lexicon": 1,
85
91
"description": "DNS zone records for a domain where Marque handles the nameservers. Stored in the user's repository."
86
92
}