at.happyproto.registry.retryRelease

happyproto.at

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Copy a pending release's artifact again. A release is listed only once the registry has copied its artifact, which it tries once when it first indexes the release; this is how the release's publisher tries again after that copy failed. An active release is answered as it is, with nothing enqueued.",
      "errors": [
        {
          "description": "The caller's identity could not be determined.",
          "name": "AuthRequired"
        },
        {
          "description": "The slug or version could not name a release.",
          "name": "InvalidRequest"
        },
        {
          "description": "That version is not published from the caller's account, or was withdrawn.",
          "name": "ReleaseNotFound"
        },
        {
          "description": "The registry has not indexed the release, so there is no copy to retry. It may have refused the record.",
          "name": "ReleaseNotIndexed"
        },
        {
          "description": "The copy could not be enqueued.",
          "name": "Upstream"
        },
        {
          "description": "The registry has no identity configured.",
          "name": "NotConfigured"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "slug": {
              "description": "The package slug.",
              "maxLength": 128,
              "type": "string"
            },
            "version": {
              "description": "The version to retry, as published.",
              "maxLength": 256,
              "type": "string"
            }
          },
          "required": [
            "slug",
            "version"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "status": {
              "description": "pending: the copy was enqueued again. active: the artifact is already held, and nothing was enqueued.",
              "knownValues": [
                "pending",
                "active"
              ],
              "type": "string"
            },
            "uri": {
              "description": "The release record.",
              "format": "at-uri",
              "type": "string"
            }
          },
          "required": [
            "uri",
            "status"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "id": "at.happyproto.registry.retryRelease",
  "lexicon": 1
}

Validate Record

Validate a record against at.happyproto.registry.retryRelease

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:mo7vq4jbioxwafy5zkcc3eux
CID
bafyreibybaiu3oyrvxx2tdvfgozt7qly4kiuppn2kacxruoojdujgh2mce
Indexed At
2026-10-19 18:20 UTC
AT-URI
at://did:plc:mo7vq4jbioxwafy5zkcc3eux/com.atproto.lexicon.schema/at.happyproto.registry.retryRelease

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Copy a version's blobs into the registry again, after an earlier copy failed. Only the registry's own account may call this. The copy is enqueued for any indexed version and fetches only what is not held yet, so an avai…

  • One release by exact version. Served whatever its status, including `deleted`: that is the left-pad protection the registry exists for.

  • 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…

  • 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 na…

  • Delete a release record the caller published. This is how a publisher withdraws a release: it deletes from the caller's own repo as them, where com.atproto.repo.deleteRecord sent through a HappyView instance goes wherev…

Lexicon Garden

@