A container registry that uses the AT Protocol for manifest storage and S3 for blob storage. atcr.io
docker container atproto go

Hold Service XRPC Endpoints#

This document lists all XRPC endpoints implemented in the Hold service (pkg/hold/).

PDS Endpoints (pkg/hold/pds/xrpc.go)#

Public (No Auth Required)#

Endpoint Method Description
/xrpc/_health GET Health check
/xrpc/com.atproto.server.describeServer GET Server metadata
/xrpc/com.atproto.repo.describeRepo GET Repository information
/xrpc/com.atproto.repo.getRecord GET Retrieve a single record
/xrpc/com.atproto.repo.listRecords GET List records in a collection (paginated)
/xrpc/com.atproto.sync.listRepos GET List all repositories
/xrpc/com.atproto.sync.getRecord GET Get record as CAR file
/xrpc/com.atproto.sync.getRepo GET Full repository as CAR file
/xrpc/com.atproto.sync.getRepoStatus GET Repository hosting status
/xrpc/com.atproto.sync.subscribeRepos GET WebSocket firehose
/xrpc/com.atproto.identity.resolveHandle GET Resolve handle to DID
/xrpc/app.bsky.actor.getProfile GET Get actor profile
/xrpc/app.bsky.actor.getProfiles GET Get multiple profiles
/.well-known/did.json GET DID document
/.well-known/atproto-did GET DID for handle resolution

Conditional Auth (based on captain.public)#

Endpoint Method Description
/xrpc/com.atproto.sync.getBlob GET/HEAD Get blob (routes OCI vs ATProto)

Owner/Crew Admin Required#

Endpoint Method Description
/xrpc/com.atproto.repo.deleteRecord POST Delete a record
/xrpc/com.atproto.repo.uploadBlob POST Upload ATProto blob

DPoP Auth Required#

Endpoint Method Description
/xrpc/io.atcr.hold.requestCrew POST Request crew membership

OCI Multipart Upload Endpoints (pkg/hold/oci/xrpc.go)#

All require blob:write permission via service token:

Endpoint Method Description
/xrpc/io.atcr.hold.initiateUpload POST Start multipart upload
/xrpc/io.atcr.hold.getPartUploadUrl POST Get presigned URL for part
/xrpc/io.atcr.hold.uploadPart PUT Direct buffered part upload
/xrpc/io.atcr.hold.completeUpload POST Finalize multipart upload
/xrpc/io.atcr.hold.abortUpload POST Cancel multipart upload
/xrpc/io.atcr.hold.notifyManifest POST Notify manifest push (creates layer records + optional Bluesky post)

Standard ATProto Endpoints (excluding io.atcr.hold.*)#

Endpoint
/xrpc/_health
/xrpc/com.atproto.server.describeServer
/xrpc/com.atproto.repo.describeRepo
/xrpc/com.atproto.repo.getRecord
/xrpc/com.atproto.repo.listRecords
/xrpc/com.atproto.repo.deleteRecord
/xrpc/com.atproto.repo.uploadBlob
/xrpc/com.atproto.sync.listRepos
/xrpc/com.atproto.sync.getRecord
/xrpc/com.atproto.sync.getRepo
/xrpc/com.atproto.sync.getRepoStatus
/xrpc/com.atproto.sync.getBlob
/xrpc/com.atproto.sync.subscribeRepos
/xrpc/com.atproto.identity.resolveHandle
/xrpc/app.bsky.actor.getProfile
/xrpc/app.bsky.actor.getProfiles
/.well-known/did.json
/.well-known/atproto-did