From
bafyreihqgdj4hw2t4g2d4c35elj3ziwr76nofvpomhushauxazx2i2l66e
indexed 2026-10-30 06:09 UTC
View this version
To
bafyreicilgnrkvcujsfuvrnlpxy4fdrvcut3fydzoojhtdarmzwru7f5gy
indexed 2026-11-04 18:12 UTC
View this version
Compatibility
breaking 1 breaking change, 2 non-breaking changes.
Breaking changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "at.happyproto.admin.listInstances#operation.kind", sort: "knownValues", old_value: "[\"create\",\"update\",\"upgrade\",\"stop\",\"start\",\"destroy\"]", new_value: "[\"create\",\"update\",\"upgrade\",\"stop\",\"start\",\"destroy\",\"rotate_key\",\"retire_key\"]" }
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "at.happyproto.admin.listInstances#adminInstance.encryptionStage" }
- AddedEdge AddedEdge { src: "at.happyproto.admin.listInstances#adminInstance", tgt: "at.happyproto.admin.listInstances#adminInstance.encryptionStage", kind: "prop", name: Some("encryptionStage") }
Migration guidance
Added
AddedVertex { vertex_id: "at.happyproto.admin.listInstances#adminInstance.encryptionStage" }
Constraint changes
- ConstraintTightened ConstraintTightened { vertex_id: "at.happyproto.admin.listInstances#operation.kind", sort: "knownValues", old_value: "[\"create\",\"update\",\"upgrade\",\"stop\",\"start\",\"destroy\"]", new_value: "[\"create\",\"update\",\"upgrade\",\"stop\",\"start\",\"destroy\",\"rotate_key\",\"retire_key\"]" }
Notes
- Non-breaking: AddedEdge { src: "at.happyproto.admin.listInstances#adminInstance", tgt: "at.happyproto.admin.listInstances#adminInstance.encryptionStage", kind: "prop", name: Some("encryptionStage") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"adminInstance": {55
"description": "An instance as staff see it: the customer's view, plus its owner, placement and raw states.",66
"properties": {77
"availableVersion": {88
"description": "A newer release, when one is on offer.",99
"ref": "#availableVersion",1010
"type": "ref"1111
},1212
"createdAt": {1313
"format": "datetime",1414
"type": "string"1515
},1616
"desiredState": {1717
"description": "The provisioner's desired_state.",1818
"type": "string"1919
},20
"encryptionStage": {21
"description": "Where its encryption key is in a rotation: none, rotating (the new key is not live yet), sealing (HappyView is re-sealing with it), retiring (the old key is being removed) or failed (a rotate_key or retire_key failed and the instance with it). From the provisioner's database alone.",22
"knownValues": [23
"none",24
"rotating",25
"sealing",26
"retiring",27
"failed"28
],29
"type": "string"30
},2031
"hostId": {2132
"description": "The host it is placed on. Absent until it is placed.",2233
"type": "string"2334
},2435
"hostName": {2536
"description": "That host's name. Absent when the hosts list does not have it.",2637
"type": "string"2738
},2839
"id": {2940
"description": "A UUID.",3041
"type": "string"3142
},3243
"observedState": {3344
"description": "The provisioner's observed_state.",3445
"type": "string"3546
},3647
"operation": {3748
"description": "The change in progress, if any.",3849
"ref": "#operation",3950
"type": "ref"4051
},4152
"ownerDid": {4253
"format": "did",4354
"type": "string"4455
},4556
"plan": {4657
"description": "The plan's id.",4758
"type": "string"4859
},4960
"routed": {5061
"description": "Whether its public URL routes to it.",5162
"type": "boolean"5263
},5364
"slug": {5465
"type": "string"5566
},5667
"state": {5768
"knownValues": [5869
"provisioning",5970
"running",6071
"stopped",6172
"failed",6273
"deleting"6374
],6475
"type": "string"6576
},6677
"url": {6778
"format": "uri",6879
"type": "string"6980
},7081
"version": {7182
"description": "The HappyView release it runs.",7283
"type": "string"7384
},7485
"versionLabel": {7586
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",7687
"type": "string"7788
}7889
},7990
"required": [8091
"id",8192
"slug",8293
"url",8394
"plan",8495
"version",8596
"state",8697
"createdAt",8798
"ownerDid",8899
"desiredState",89100
"observedState",90101
"routed"91102
],92103
"type": "object"93104
},94105
"availableVersion": {95106
"description": "A newer HappyView release the instance can upgrade to.",96107
"properties": {97108
"label": {98109
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",99110
"type": "string"100111
},101112
"releasedAt": {102113
"description": "When HappyProto first offered it.",103114
"format": "datetime",104115
"type": "string"105116
},106117
"version": {107118
"description": "The release to pass to at.happyproto.server.upgradeInstance.",108119
"type": "string"109120
}110121
},111122
"required": [112123
"version",113124
"releasedAt"114125
],115126
"type": "object"116127
},117128
"main": {118129
"description": "Every instance, whoever owns it, with its placement. Staff only.",119130
"errors": [120131
{121132
"description": "This endpoint requires an authenticated caller.",122133
"name": "AuthRequired"123134
},124135
{125136
"description": "The caller is not HappyProto staff, or the provisioner does not treat them as staff.",126137
"name": "Forbidden"127138
},128139
{129140
"description": "owner is not a DID, or the provisioner refused the request as malformed.",130141
"name": "InvalidRequest"131142
},132143
{133144
"description": "Passed through from the provisioner.",134145
"name": "NotFound"135146
},136147
{137148
"description": "Passed through from the provisioner.",138149
"name": "InvalidSlug"139150
},140151
{141152
"description": "Passed through from the provisioner.",142153
"name": "SlugTaken"143154
},144155
{145156
"description": "Passed through from the provisioner.",146157
"name": "NotEntitled"147158
},148159
{149160
"description": "Passed through from the provisioner.",150161
"name": "InstanceLimit"151162
},152163
{153164
"description": "Passed through from the provisioner.",154165
"name": "NoCapacity"155166
},156167
{157168
"description": "Passed through from the provisioner.",158169
"name": "OperationInProgress"159170
},160171
{161172
"description": "The provisioner is unreachable, not configured, or answered with an error it does not explain to callers.",162173
"name": "Upstream"163174
}164175
],165176
"output": {166177
"encoding": "application/json",167178
"schema": {168179
"properties": {169180
"instances": {170181
"items": {171182
"ref": "#adminInstance",172183
"type": "ref"173184
},174185
"type": "array"175186
}176187
},177188
"required": [178189
"instances"179190
],180191
"type": "object"181192
}182193
},183194
"parameters": {184195
"properties": {185196
"owner": {186197
"description": "Only this owner's instances.",187198
"format": "did",188199
"type": "string"189200
}190201
},191202
"type": "params"192203
},193204
"type": "query"194205
},195206
"operation": {196207
"properties": {197208
"error": {198209
"description": "The provisioner's error code, when it failed.",199210
"type": "string"200211
},201212
"id": {202213
"type": "string"203214
},204215
"kind": {205216
"knownValues": [206217
"create",207218
"update",208219
"upgrade",209220
"stop",210221
"start",211
"destroy"222
"destroy",223
"rotate_key",224
"retire_key"212225
],213226
"type": "string"214227
},215228
"status": {216229
"knownValues": [217230
"pending",218231
"running",219232
"succeeded",220233
"failed"221234
],222235
"type": "string"223236
},224237
"step": {225238
"description": "The step it last reached.",226239
"type": "string"227240
}228241
},229242
"required": [230243
"id",231244
"kind",232245
"status"233246
],234247
"type": "object"235248
}236249
},237250
"id": "at.happyproto.admin.listInstances",238251
"lexicon": 1239252
}