Notify hold about a manifest push or pull operation. For pushes: creates layer records and optionally posts to Bluesky. For pulls: just increments stats. Always increments pull/push counts.
Input
application/jsonmanifest
ref#manifestInfo
Required
No description available.
manifestDigest
string
Required
Manifest digest for building layer record AT-URIs
maxLength: 128 bytesoperation
string
Optional
Operation type (defaults to 'push' for backward compatibility)
maxLength: 16 bytesrepository
string
Required
Image repository name
maxLength: 256 bytestag
string
Optional
Image tag (optional, required for Bluesky posts)
maxLength: 128 bytesuserDid
stringdid
Required
DID of the image owner
Output
application/jsonlayersCreated
integer
Optional
Number of layer records created (push only)
operation
string
Required
The operation that was performed ('push' or 'pull')
postCreated
boolean
Optional
Whether a Bluesky post was created (push only)
postUri
stringat-uri
Optional
AT-URI of the created Bluesky post (if postCreated is true)
statsUpdated
boolean
Required
Whether stats were successfully updated
success
boolean
Required
Whether the operation completed successfully
Errors
InvalidOperation
UserMismatch
QuotaExceeded
Try It
Requests are sent directly from your browser. Some servers may block requests due to CORS.
View raw schema
{
"type": "procedure",
"input": {
"schema": {
"type": "object",
"required": [
"repository",
"userDid",
"manifestDigest",
"manifest"
],
"properties": {
"tag": {
"type": "string",
"maxLength": 128,
"description": "Image tag (optional, required for Bluesky posts)"
},
"userDid": {
"type": "string",
"format": "did",
"description": "DID of the image owner"
},
"manifest": {
"ref": "#manifestInfo",
"type": "ref"
},
"operation": {
"type": "string",
"default": "push",
"maxLength": 16,
"description": "Operation type (defaults to 'push' for backward compatibility)",
"knownValues": [
"push",
"pull"
]
},
"repository": {
"type": "string",
"maxLength": 256,
"description": "Image repository name"
},
"manifestDigest": {
"type": "string",
"maxLength": 128,
"description": "Manifest digest for building layer record AT-URIs"
}
}
},
"encoding": "application/json"
},
"errors": [
{
"name": "InvalidOperation"
},
{
"name": "UserMismatch"
},
{
"name": "QuotaExceeded"
}
],
"output": {
"schema": {
"type": "object",
"required": [
"success",
"operation",
"statsUpdated"
],
"properties": {
"postUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the created Bluesky post (if postCreated is true)"
},
"success": {
"type": "boolean",
"description": "Whether the operation completed successfully"
},
"operation": {
"type": "string",
"maxLength": 16,
"description": "The operation that was performed ('push' or 'pull')"
},
"postCreated": {
"type": "boolean",
"description": "Whether a Bluesky post was created (push only)"
},
"statsUpdated": {
"type": "boolean",
"description": "Whether stats were successfully updated"
},
"layersCreated": {
"type": "integer",
"description": "Number of layer records created (push only)"
}
}
},
"encoding": "application/json"
},
"description": "Notify hold about a manifest push or pull operation. For pushes: creates layer records and optionally posts to Bluesky. For pulls: just increments stats. Always increments pull/push counts."
}