space.highport.manage.reserveDomain
Schema Diff
+11 -11
Compatibility Analysis
Backward Compatible
No changes detected.
1
1
{
2
2
"id": "space.highport.manage.reserveDomain",
3
3
"defs": {
4
4
"main": {
5
5
"type": "procedure",
6
6
"input": {
7
7
"schema": {
8
8
"type": "object",
9
9
"required": [
10
10
"hostname",
11
11
"subject"
12
12
],
13
13
"properties": {
14
14
"subject": {
15
15
"type": "string",
16
16
"format": "did",
17
-
"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."
17
+
"description": "The identity the name is reserved for. Without genesisOp only its syntax is checked: it does not need to resolve, and its DID document does not need to list the hostname yet."
18
18
},
19
19
"hostname": {
20
20
"type": "string",
21
21
"maxLength": 253,
22
-
"description": "A name exactly one label under a delegation-enabled base the caller owns."
22
+
"description": "A name exactly one label below a delegation base the caller owns."
23
23
},
24
24
"genesisOp": {
25
25
"type": "unknown",
26
-
"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."
26
+
"description": "Optional proof for a did:plc subject: its signed genesis operation, as sent to a PLC directory, checked offline. It must have a null prev, hash to the subject, be signed by one of the subject's rotation keys, and list at://<hostname> in alsoKnownAs, or the call fails with InvalidSubject."
27
27
}
28
28
}
29
29
},
30
30
"encoding": "application/json"
31
31
},
32
32
"errors": [
33
33
{
34
34
"name": "InvalidDomain",
35
-
"description": "Not a syntactically valid, non-reserved domain."
35
+
"description": "Not a valid, non-reserved domain."
36
36
},
37
37
{
38
38
"name": "DomainDenied",
39
39
"description": "The hostname or the subject is on the operator denylist."
40
40
},
41
41
{
42
42
"name": "NotBaseOwner",
43
-
"description": "The name is not under a delegation-enabled base whose verified or active registration belongs to the caller."
43
+
"description": "The name is not under a delegation base with a verified or active registration owned by the caller."
44
44
},
45
45
{
46
46
"name": "DomainTaken",
47
-
"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."
47
+
"description": "The name is taken: by a proven registration (including one the base owner made directly), by a live reservation for a different subject or a suspended one, by an unproven claim that is itself a base with a delegation or certificate grant, or by a release that still carries a delegation or grant, such as a wildcard being retired. Release it or wait for the retirement to finish."
48
48
},
49
49
{
50
50
"name": "DelegationNotVerified",
51
-
"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."
51
+
"description": "The base's wildcard has not been shown to route here: its probe has not passed yet, or its routing has lapsed. The error message names the probe hostname and the *.<base> record to publish or restore. The reserved name itself is never resolved."
52
52
},
53
53
{
54
54
"name": "InvalidSubject",
55
-
"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."
55
+
"description": "The subject is not a well-formed did:plc or did:web, is a did:web rooted at the hostname being reserved, or came with a genesisOp that does not prove it. The error message says which."
56
56
},
57
57
{
58
58
"name": "DelegatedNameTooDeep",
59
-
"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."
59
+
"description": "The name is more than one label below the base. A wildcard covers only one label, so a deeper name could never complete a TLS handshake."
60
60
},
61
61
{
62
62
"name": "DelegationQuotaExceeded",
63
-
"description": "The base already holds its maxNames reservations. Never returned for a name the subject already holds."
63
+
"description": "The base already holds maxNames reservations. Never returned when reserving a name again for its current subject."
64
64
}
65
65
],
66
66
"output": {
67
67
"schema": {
68
68
"type": "object",
69
69
"required": [
70
70
"hostname",
71
71
"status",
72
72
"subject"
73
73
],
74
74
"properties": {
75
75
"status": {
76
76
"ref": "space.highport.defs#domainStatus",
77
77
"type": "ref"
78
78
},
79
79
"subject": {
80
80
"type": "string",
81
81
"format": "did"
82
82
},
83
83
"hostname": {
84
84
"type": "string"
85
85
}
86
86
}
87
87
},
88
88
"encoding": "application/json"
89
89
},
90
-
"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."
90
+
"description": "Reserve a name directly under a delegation base for another identity. The name answers /.well-known/atproto-did with the subject right away, and the subject can then publish a site there. The caller must own the base. Any unproven claim on the name is replaced. Repeating the call for the same subject returns the existing reservation and does not count against maxNames. Reservations last as long as the base."
91
91
}
92
92
},
93
93
"$type": "com.atproto.lexicon.schema",
94
94
"lexicon": 1
95
95
}