space.highport.manage.reserveDomain
Schema Diff
+3 -3
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"description": "Reserve a name directly under a delegation-enabled base for another identity. The name answers /.well-known/atproto-did with the subject before the subject has published anything, and the subject may then publish a site there. The caller must be the base's registered identity. An unproven claim on the name, held by any identity, is replaced. A reservation has no expiry: it is held for as long as the base is.",
5
+
"description": "Reserve a name directly under a delegation-enabled base for another identity. The name answers /.well-known/atproto-did with the subject before the subject has published anything, and the subject may then publish a site there. The caller must be the base's registered identity. An unproven claim on the name, held by any identity, is replaced. Reserving a name again for the subject that already holds it is answered with the reservation as it stands, writes nothing, and does not count against maxNames, so a retry is safe. A reservation has no expiry: it is held for as long as the base is.",
6
6
"errors": [
7
7
{
8
8
"description": "Not a syntactically valid, non-reserved domain.",
9
9
"name": "InvalidDomain"
10
10
},
11
11
{
12
12
"description": "The hostname or the subject is on the operator denylist.",
13
13
"name": "DomainDenied"
14
14
},
15
15
{
16
16
"description": "The name is not under a delegation-enabled base whose verified or active registration belongs to the caller.",
17
17
"name": "NotBaseOwner"
18
18
},
19
19
{
20
-
"description": "A proven registration of this name exists, including one the base owner made the ordinary way; release it first.",
20
+
"description": "A proven registration of this name exists, including one the base owner made the ordinary way, a live reservation for a different subject, or a suspended one; release it first.",
21
21
"name": "DomainTaken"
22
22
},
23
23
{
24
24
"description": "The base's wildcard has not been shown to route to this service: its delegation probe has not passed yet, or the base's routing has lapsed. The message names the probe hostname and the *.<base> record to publish or restore. The name being reserved is never resolved.",
25
25
"name": "DelegationNotVerified"
26
26
},
27
27
{
28
28
"description": "The subject is not a well-formed did:plc or did:web, or is a did:web rooted at the hostname being reserved, or a genesisOp was given that does not prove the subject. The message says which rule failed.",
29
29
"name": "InvalidSubject"
30
30
},
31
31
{
32
32
"description": "The name is more than one label under the base. A wildcard covers exactly one label, so a deeper name could never complete a handshake.",
33
33
"name": "DelegatedNameTooDeep"
34
34
},
35
35
{
36
-
"description": "The base already holds its maxNames reservations.",
36
+
"description": "The base already holds its maxNames reservations. Never returned for a name the subject already holds.",
37
37
"name": "DelegationQuotaExceeded"
38
38
}
39
39
],
40
40
"input": {
41
41
"encoding": "application/json",
42
42
"schema": {
43
43
"properties": {
44
44
"genesisOp": {
45
45
"description": "Optional proof for a did:plc subject: its signed genesis operation, as submitted to a PLC directory. Verified offline, without resolving anything. The call is refused with InvalidSubject unless the operation is a genesis operation (prev is null) that hashes to the subject, is signed by one of its own rotation keys, and lists at://<hostname> in alsoKnownAs. A subject that is not a did:plc cannot carry one.",
46
46
"type": "unknown"
47
47
},
48
48
"hostname": {
49
49
"description": "A name exactly one label under a delegation-enabled base the caller owns.",
50
50
"maxLength": 253,
51
51
"type": "string"
52
52
},
53
53
"subject": {
54
54
"description": "The identity the name is reserved for. Without genesisOp it is checked for syntax only: it need not resolve, and its DID document need not name the hostname yet.",
55
55
"format": "did",
56
56
"type": "string"
57
57
}
58
58
},
59
59
"required": [
60
60
"hostname",
61
61
"subject"
62
62
],
63
63
"type": "object"
64
64
}
65
65
},
66
66
"output": {
67
67
"encoding": "application/json",
68
68
"schema": {
69
69
"properties": {
70
70
"hostname": {
71
71
"type": "string"
72
72
},
73
73
"status": {
74
74
"ref": "space.highport.defs#domainStatus",
75
75
"type": "ref"
76
76
},
77
77
"subject": {
78
78
"format": "did",
79
79
"type": "string"
80
80
}
81
81
},
82
82
"required": [
83
83
"hostname",
84
84
"status",
85
85
"subject"
86
86
],
87
87
"type": "object"
88
88
}
89
89
},
90
90
"type": "procedure"
91
91
}
92
92
},
93
93
"id": "space.highport.manage.reserveDomain",
94
94
"lexicon": 1
95
95
}