From
bafyreigokij3ivzwakee4hobjzdzblwxfvcllfdt5j27r6tlwp5nhpyyaq
indexed 2026-10-19 18:20 UTC
View this version
To
bafyreiejy46gwgwlkxedhjokyvphzumf3hovsww3j3ptzhzh5djyamogxe
indexed 2026-10-30 06:09 UTC
View this version
Compatibility
breaking 2 breaking changes, 10 non-breaking changes.
Breaking changes (2)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.happyproto.server.listInstances#availableVersion", src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.releasedAt", kind: "prop", name: Some("releasedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "at.happyproto.server.listInstances#availableVersion", src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.version", kind: "prop", name: Some("version") }
Non-breaking changes (10)
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion" }
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.label" }
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.releasedAt" }
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.version" }
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#instance.availableVersion" }
- AddedVertex AddedVertex { vertex_id: "at.happyproto.server.listInstances#instance.versionLabel" }
- AddedEdge AddedEdge { src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.label", kind: "prop", name: Some("label") }
- AddedEdge AddedEdge { src: "at.happyproto.server.listInstances#instance", tgt: "at.happyproto.server.listInstances#instance.availableVersion", kind: "prop", name: Some("availableVersion") }
- AddedEdge AddedEdge { src: "at.happyproto.server.listInstances#instance", tgt: "at.happyproto.server.listInstances#instance.versionLabel", kind: "prop", name: Some("versionLabel") }
- AddedEdge AddedEdge { src: "at.happyproto.server.listInstances#instance.availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion", kind: "ref", name: None }
Migration guidance
Added
AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion" }AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.label" }AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.releasedAt" }AddedVertex { vertex_id: "at.happyproto.server.listInstances#availableVersion.version" }AddedVertex { vertex_id: "at.happyproto.server.listInstances#instance.availableVersion" }AddedVertex { vertex_id: "at.happyproto.server.listInstances#instance.versionLabel" }
Notes
- Breaking: RequiredEdgeAdded { vertex_id: "at.happyproto.server.listInstances#availableVersion", src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.releasedAt", kind: "prop", name: Some("releasedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "at.happyproto.server.listInstances#availableVersion", src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.version", kind: "prop", name: Some("version") }
- Non-breaking: AddedEdge { src: "at.happyproto.server.listInstances#availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion.label", kind: "prop", name: Some("label") }
- Non-breaking: AddedEdge { src: "at.happyproto.server.listInstances#instance", tgt: "at.happyproto.server.listInstances#instance.availableVersion", kind: "prop", name: Some("availableVersion") }
- Non-breaking: AddedEdge { src: "at.happyproto.server.listInstances#instance", tgt: "at.happyproto.server.listInstances#instance.versionLabel", kind: "prop", name: Some("versionLabel") }
- Non-breaking: AddedEdge { src: "at.happyproto.server.listInstances#instance.availableVersion", tgt: "at.happyproto.server.listInstances#availableVersion", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {4
"availableVersion": {5
"description": "A newer HappyView release the instance can upgrade to.",6
"properties": {7
"label": {8
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",9
"type": "string"10
},11
"releasedAt": {12
"description": "When HappyProto first offered it.",13
"format": "datetime",14
"type": "string"15
},16
"version": {17
"description": "The release to pass to at.happyproto.server.upgradeInstance.",18
"type": "string"19
}20
},21
"required": [22
"version",23
"releasedAt"24
],25
"type": "object"26
},427
"instance": {528
"description": "A customer's HappyView instance. Never carries the provisioner's placement or internal fields.",629
"properties": {30
"availableVersion": {31
"description": "A newer release, when one is on offer.",32
"ref": "#availableVersion",33
"type": "ref"34
},735
"createdAt": {836
"format": "datetime",937
"type": "string"1038
},1139
"id": {1240
"description": "A UUID.",1341
"type": "string"1442
},1543
"operation": {1644
"description": "The change in progress, if any.",1745
"ref": "#operation",1846
"type": "ref"1947
},2048
"plan": {2149
"description": "The plan's id.",2250
"type": "string"2351
},2452
"slug": {2553
"type": "string"2654
},2755
"state": {2856
"knownValues": [2957
"provisioning",3058
"running",3159
"stopped",3260
"failed",3361
"deleting"3462
],3563
"type": "string"3664
},3765
"url": {3866
"format": "uri",3967
"type": "string"4068
},4169
"version": {4270
"description": "The HappyView release it runs.",4371
"type": "string"72
},73
"versionLabel": {74
"description": "The HappyView version the release carries, e.g. 3.0.0-alpha.41, when known.",75
"type": "string"4476
}4577
},4678
"required": [4779
"id",4880
"slug",4981
"url",5082
"plan",5183
"version",5284
"state",5385
"createdAt"5486
],5587
"type": "object"5688
},5789
"main": {5890
"description": "The caller's own instances. Customers only.",5991
"errors": [6092
{6193
"description": "This endpoint requires an authenticated caller.",6294
"name": "AuthRequired"6395
},6496
{6597
"description": "The caller is not a HappyProto customer, or the provisioner refused them.",6698
"name": "Forbidden"6799
},68100
{69101
"description": "The provisioner refused the request as malformed. Not expected from this read; declared because every provisioner refusal is mapped the same way.",70102
"name": "InvalidRequest"71103
},72104
{73105
"description": "Passed through from the provisioner.",74106
"name": "NotFound"75107
},76108
{77109
"description": "Passed through from the provisioner.",78110
"name": "InvalidSlug"79111
},80112
{81113
"description": "Passed through from the provisioner.",82114
"name": "SlugTaken"83115
},84116
{85117
"description": "Passed through from the provisioner.",86118
"name": "NotEntitled"87119
},88120
{89121
"description": "Passed through from the provisioner.",90122
"name": "InstanceLimit"91123
},92124
{93125
"description": "Passed through from the provisioner.",94126
"name": "NoCapacity"95127
},96128
{97129
"description": "Passed through from the provisioner.",98130
"name": "OperationInProgress"99131
},100132
{101133
"description": "The provisioner is unreachable, not configured, or answered with an error it does not explain to callers.",102134
"name": "Upstream"103135
}104136
],105137
"output": {106138
"encoding": "application/json",107139
"schema": {108140
"properties": {109141
"instances": {110142
"items": {111143
"ref": "#instance",112144
"type": "ref"113145
},114146
"type": "array"115147
}116148
},117149
"required": [118150
"instances"119151
],120152
"type": "object"121153
}122154
},123155
"type": "query"124156
},125157
"operation": {126158
"properties": {127159
"error": {128160
"description": "The provisioner's error code, when it failed.",129161
"type": "string"130162
},131163
"id": {132164
"type": "string"133165
},134166
"kind": {135167
"knownValues": [136168
"create",137169
"update",138170
"upgrade",139171
"stop",140172
"start",141173
"destroy"142174
],143175
"type": "string"144176
},145177
"status": {146178
"knownValues": [147179
"pending",148180
"running",149181
"succeeded",150182
"failed"151183
],152184
"type": "string"153185
},154186
"step": {155187
"description": "The step it last reached.",156188
"type": "string"157189
}158190
},159191
"required": [160192
"id",161193
"kind",162194
"status"163195
],164196
"type": "object"165197
}166198
},167199
"id": "at.happyproto.server.listInstances",168200
"lexicon": 1169201
}