at.happyproto.registry.promoteRelease

happyproto.at

Documentation

Publish an existing version's artifact under a new version, such as `1.2.0-rc.1` as `1.2.0`, without uploading it again. The new software.release.version points at the existing manifest. Optionally moves a channel to it and adds a changelog.

main procedure

Publish an existing version's artifact under a new version, such as `1.2.0-rc.1` as `1.2.0`, without uploading it again. The new software.release.version points at the existing manifest. Optionally moves a channel to it and adds a changelog.

Input

Encodingapplication/json
changelog string Optional

Release notes as CommonMark. The registry writes them to the caller's repo as a site.standard.document and links it from the version.

maxLength: 200000 bytesmaxGraphemes: 20000 graphemes
fromVersion string Required

The published version whose manifest the new version reuses.

maxLength: 64 bytesminLength: 1 bytes
name string Required

The project's name, which is the record key of its software.release.project: 1 to 64 lowercase letters, digits and interior hyphens.

maxLength: 64 bytesminLength: 1 bytes
track string Optional

A channel to move to the new version. No channel moves when absent.

version string Required

The new version.

maxLength: 64 bytesminLength: 1 bytes

Output

Encodingapplication/json
resumed boolean Optional

True when the new version already existed on the same manifest, so this call only finished what an earlier one started.

Errors

AuthRequired The caller's identity could not be determined, so there is no repo to write to.
NotConfigured The registry has no identity configured. An operator problem, not a caller's.
InvalidRecord The input breaks a rule the registry applies, so it would refuse the records. The message names the field.
Upstream 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.
ProjectMissing The caller has no project of that name, or the registry has not indexed its at.happyproto.registry.project record. Call putProject first.
VersionNotFound fromVersion is not an indexed version of the caller's project.
VersionExists The new version is already published. A version never changes once published.
NotInstallable track was given, but the project is unavailable or retired, so a channel cannot point at the new version.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "description": "Publish an existing version's artifact under a new version, such as `1.2.0-rc.1` as `1.2.0`, without uploading it again. The new software.release.version points at the existing manifest. Optionally moves a channel to it and adds a changelog.",
  "errors": [
    {
      "description": "The caller's identity could not be determined, so there is no repo to write to.",
      "name": "AuthRequired"
    },
    {
      "description": "The registry has no identity configured. An operator problem, not a caller's.",
      "name": "NotConfigured"
    },
    {
      "description": "The input breaks a rule the registry applies, so it would refuse the records. The message names the field.",
      "name": "InvalidRecord"
    },
    {
      "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.",
      "name": "Upstream"
    },
    {
      "description": "The caller has no project of that name, or the registry has not indexed its at.happyproto.registry.project record. Call putProject first.",
      "name": "ProjectMissing"
    },
    {
      "description": "fromVersion is not an indexed version of the caller's project.",
      "name": "VersionNotFound"
    },
    {
      "description": "The new version is already published. A version never changes once published.",
      "name": "VersionExists"
    },
    {
      "description": "track was given, but the project is unavailable or retired, so a channel cannot point at the new version.",
      "name": "NotInstallable"
    }
  ],
  "input": {
    "encoding": "application/json",
    "schema": {
      "properties": {
        "changelog": {
          "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.",
          "maxGraphemes": 20000,
          "maxLength": 200000,
          "type": "string"
        },
        "fromVersion": {
          "description": "The published version whose manifest the new version reuses.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        },
        "name": {
          "description": "The project's name, which is the record key of its software.release.project: 1 to 64 lowercase letters, digits and interior hyphens.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        },
        "track": {
          "description": "A channel to move to the new version. No channel moves when absent.",
          "knownValues": [
            "latest",
            "beta",
            "alpha"
          ],
          "type": "string"
        },
        "version": {
          "description": "The new version.",
          "maxLength": 64,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "name",
        "fromVersion",
        "version"
      ],
      "type": "object"
    }
  },
  "output": {
    "encoding": "application/json",
    "schema": {
      "properties": {
        "changelog": {
          "description": "The changelog's site.standard.document, when a changelog was given.",
          "ref": "at.happyproto.registry.defs#ref",
          "type": "ref"
        },
        "channel": {
          "description": "The software.release.channel, when track was given.",
          "ref": "at.happyproto.registry.defs#ref",
          "type": "ref"
        },
        "resumed": {
          "description": "True when the new version already existed on the same manifest, so this call only finished what an earlier one started.",
          "type": "boolean"
        },
        "version": {
          "description": "The new software.release.version.",
          "ref": "at.happyproto.registry.defs#ref",
          "type": "ref"
        }
      },
      "required": [
        "version"
      ],
      "type": "object"
    }
  },
  "type": "procedure"
}

Lexicon Garden

@