Page durable Publications
const url = 'https://example.com/v1/sessions/9f2b7c14-59d3-4f7a-b8e1-2a6c05d4e731/publications?limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://example.com/v1/sessions/9f2b7c14-59d3-4f7a-b8e1-2a6c05d4e731/publications?limit=50' \ --header 'Authorization: Bearer <token>'Requires wamp.cloud.sessions:read. Newest-created first, paged by opaque cursor — echo the previous page’s nextCursor and stop on hasMore: false. Every publish attempt is durable and listed, including the failed ones, so this is the audit trail of what the Session tried to ship: status walks admitted → prepared → attempted → succeeded | failed, result appears only once a pull request exists, and lastError.code explains a failed row. result.pullRequest.reused distinguishes a pull request WAMP opened from one that already existed for the same branch.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A UUID identifying one Cloud resource; Session, Turn, Publication and Merge ids are minted by the caller so an ambiguous retry addresses the same durable command instead of creating a second one.
Example
9f2b7c14-59d3-4f7a-b8e1-2a6c05d4e731A UUID you mint and own; it is the idempotency key for creation and the address of every Turn, artifact and publication underneath
Query Parameters
Section titled “Query Parameters”Opaque exclusive cursor returned by the previous page
Sessions per page, 1-100, default 50
Responses
Section titled “Responses”Publication page
One page of a Session’s Publications, newest first, so a caller can see every publish attempt the Session has made.
object
Publications on this page, most recently created first
A durable command that pushes one exact reviewed tree to a WAMP-owned branch and creates or recovers its pull request. It is retried by workers, never by re-deriving the commit.
object
The caller-owned Publication id, which is also the retry and recovery unit
Session whose reviewed changes are being published
admitted on acceptance, prepared once the local commit exists, attempted while the provider write is in flight, then terminal succeeded or failed
The review revision this Publication is permanently pinned to
Pull-request title as submitted
Present once status is succeeded — the WAMP-owned branch, the exact commit pushed, and the pull request, where reused means an existing open pull request was recovered instead of a new one being opened
object
Lowercase hex 40-character Git object id naming an exact commit or tree in the source repository.
object
Coarse machine code for the failure; present when status is failed
object
When the Publication was admitted
Last durable state change of the command
When the Publication reached succeeded or failed
Opaque exclusive keyset cursor derived from the last item’s createdAt and id; send it back unchanged as cursor and never parse or construct it yourself
Whether more Publications follow this page — stop paging on this flag, not on a null cursor
Example
{ "publications": [ { "id": "1e8d4b62-7f05-4c3a-9d21-6a48f0b7c952", "sessionId": "9f2b7c14-59d3-4f7a-b8e1-2a6c05d4e731", "status": "succeeded", "revision": "88b7d76865ac445123d1adb83bf4e8e039e16bc02c5c675725a62a849f514441", "title": "Rate limit the payments endpoint", "result": { "branch": "wamp/publications-v1/cloud-9f2b7c14-59d3-4f7a-b8e1-2a6c05-d8af1a5a", "commitSha": "281c35bbe1f0ed047127957c11858d1394722abf", "pullRequest": { "number": 482, "url": "https://github.com/acme/checkout-service/pull/482", "draft": true, "reused": false } }, "createdAt": "2026-08-12T09:52:31Z", "updatedAt": "2026-08-12T09:52:39Z", "completedAt": "2026-08-12T09:52:39Z" }, { "id": "3b7f21e9-4c86-4d05-a19e-62f8b0c4d7a3", "sessionId": "9f2b7c14-59d3-4f7a-b8e1-2a6c05d4e731", "status": "failed", "revision": "fb7057ace5315a94704aaf3221e608bb8e3989c041512cdbf13fced8040efadf", "title": "Rate limit the payments endpoint", "lastError": { "code": "review_changed" }, "createdAt": "2026-08-12T09:49:04Z", "updatedAt": "2026-08-12T09:49:06Z", "completedAt": "2026-08-12T09:49:06Z" } ], "nextCursor": "eyJ2IjoxLCJraW5kIjoicHVibGljYXRpb25zIiwiYXQiOiIyMDI2LTA4LTEyVDA5OjQ5OjA0LjAwMFoiLCJpZCI6IjNiN2YyMWU5LTRjODYtNGQwNS1hMTllLTYyZjhiMGM0ZDdhMyJ9", "hasMore": false}The resource is missing or inaccessible
Failure body returned with every non-2xx JSON response; branch on the machine code, never on prose or on the HTTP status alone.
object
Stable machine code
The installation capability the presented credential lacks, returned with insufficient_scope so an integrator knows exactly which capability to request
Advisory seconds to wait before retrying; returned on rate-limit denials, where the Retry-After header carries the same value
Example
{ "error": "cloud_session_not_found"}