From
bafyreidl4d7esaksxsycrzq54g5rtyf5ofjczmjyt6h72bwjjihyf4mare
indexed 2026-10-26 21:34 UTC
View this version
To
bafyreiccjd6dykih6i6yj2heb6jyzceinjqv7ibyxpkqxzso5ejg3v34pq
indexed 2026-11-01 21:46 UTC
View this version
Compatibility
backward compatible No changes detected.
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "Publish a version of a plugin to the caller's repo. Writes a software.release.manifest carrying the artifact, the changelog as a site.standard.document when one is given, the software.release.version, and the channel named by track, moved to the new version, in that order. A record is written only once everything it points at exists, so a failure part-way leaves no dangling reference. Calling again with the same input after such a failure finishes the release rather than refusing it.",66
"errors": [77
{88
"description": "The caller's identity could not be determined, so there is no repo to write to.",99
"name": "AuthRequired"1010
},1111
{1212
"description": "The registry has no identity configured. An operator problem, not a caller's.",1313
"name": "NotConfigured"1414
},1515
{1616
"description": "The input breaks a rule the registry applies, so it would refuse the records. The message names the field.",1717
"name": "InvalidRecord"1818
},1919
{20
"description": "The input breaks the method's lexicon, such as a field of the wrong format or past its length, and HappyView refused it before the registry saw it. The message names the field.",21
"name": "InvalidRequest"22
},23
{2024
"description": "A record could not be written to the caller's repo. Records written before the failure stay, and the same call can be made again.",2125
"name": "Upstream"2226
},2327
{2428
"description": "The caller has no project of that name, or the registry has not indexed its at.happyproto.registry.project record. Call putProject first.",2529
"name": "ProjectMissing"2630
},2731
{2832
"description": "That version is already published with a different artifact. A version never changes once published; publish a new one.",2933
"name": "VersionExists"3034
},3135
{3236
"description": "The project is unavailable or retired, so the channel cannot be moved to a new version.",3337
"name": "NotInstallable"3438
}3539
],3640
"input": {3741
"encoding": "application/json",3842
"schema": {3943
"properties": {4044
"artifact": {4145
"description": "The plugin. Every blob it references must already be uploaded to the caller's repo.",4246
"ref": "at.happyproto.plugin.v1",4347
"type": "ref"4448
},4549
"changelog": {4650
"description": "Release notes as CommonMark. The registry writes them to the caller's repo as a site.standard.document and links it from the version.",4751
"maxGraphemes": 20000,4852
"maxLength": 200000,4953
"type": "string"5054
},5155
"name": {5256
"description": "The project's name, which is the record key of its software.release.project: 1 to 64 lowercase letters, digits and interior hyphens.",5357
"maxLength": 64,5458
"minLength": 1,5559
"type": "string"5660
},5761
"track": {5862
"description": "The channel to move to the new version.",5963
"knownValues": [6064
"latest",6165
"beta",6266
"alpha"6367
],6468
"type": "string"6569
},6670
"validateOnly": {6771
"default": false,6872
"description": "Check the input against every rule the registry applies, and write nothing. Works without authentication, but only a signed-in call is also checked against the caller's existing records.",6973
"type": "boolean"7074
},7175
"version": {7276
"description": "A semver version without build metadata, with an optional lowercase prerelease, such as `1.2.0` or `1.2.0-beta.1`.",7377
"maxLength": 64,7478
"minLength": 1,7579
"type": "string"7680
}7781
},7882
"required": [7983
"name",8084
"version",8185
"track",8286
"artifact"8387
],8488
"type": "object"8589
}8690
},8791
"output": {8892
"encoding": "application/json",8993
"schema": {9094
"properties": {9195
"changelog": {9296
"description": "The changelog's site.standard.document, when a changelog was given.",9397
"ref": "at.happyproto.registry.defs#ref",9498
"type": "ref"9599
},96100
"channel": {97101
"description": "The software.release.channel. Absent when validateOnly was set.",98102
"ref": "at.happyproto.registry.defs#ref",99103
"type": "ref"100104
},101105
"manifest": {102106
"description": "The software.release.manifest. Absent when validateOnly was set.",103107
"ref": "at.happyproto.registry.defs#ref",104108
"type": "ref"105109
},106110
"resumed": {107111
"description": "True when the version already existed with this artifact, so this call only finished what an earlier one started.",108112
"type": "boolean"109113
},110114
"valid": {111115
"description": "Always true; invalid input is an error, not a result.",112116
"type": "boolean"113117
},114118
"version": {115119
"description": "The software.release.version. Absent when validateOnly was set.",116120
"ref": "at.happyproto.registry.defs#ref",117121
"type": "ref"118122
}119123
},120124
"required": [121125
"valid"122126
],123127
"type": "object"124128
}125129
},126130
"type": "procedure"127131
}128132
},129133
"id": "at.happyproto.registry.publishRelease",130134
"lexicon": 1131135
}