Docs

Start here

Merge changes into a canvas's shared document

POST/v1/studio/projects/{project}/canvases/{canvas}/stateon https://api.auray.ai/v1

Merge a window's changes — a Yjs update, base64 — into a canvas's shared document.

Merge a window's changes — a Yjs update, base64 — into a canvas's shared document. The merged document is read strictly before it is kept (canvas_invalid), and its state is kept up to 2 MB (crdt_too_large). seed is the first state of a canvas never shared, taken only while it has none; the second of two windows seeding at once is refused revision_conflict and loads the first's. Answers the revision it is now at and its state vector, never the whole state. Needs the edit_canvas capability. Takes a key holding studio:write — Account offers it unticked — or the desktop's own session key. Spends nothing.

#Authentication

Authorization: Bearer auray_sk_… — studio:write — Account offers it unticked; the desktop's session key holds it.

#Request

#Path parameters

NameTypeRequiredDescription
projectstringyes
canvasstringyes

#Body

application/json, required.

FieldTypeRequiredDefaultDescription
updatestringyes—A Yjs update of the canvas's document, base64. The bytes, base64.
seedbooleannofalseThe canvas's first state, sent once by the window that first shares it.

#Example request

curl -X POST https://api.auray.ai/v1/studio/projects/3f0c8a52-6a1d-4e8b-9c2d-7e5f4a3b2c1d/canvases/…/state \
  -H "Authorization: Bearer $AURAY_API_KEY" \
  -H "content-type: application/json" \
  -d '{
  "update": "AQjXlI3iAQAoAQZjYW52YXMBdgF9AScBBmNhbnZhcwVwYWdlcwEnANeUjeIBAQZwYWdlLTEBKADXlI3iAQIEbmFtZQF3BlBhZ2UgMSgA15SN4gECBW9yZGVyAX0AKADXlI3iAQIIdmlld3BvcnQBdgMBeH0AAXl9AAR6b29tfQEnANeUjeIBAgVub2RlcwEnANeUjeIBAgVlZGdlcwEA",
  "seed": true
}'

#Responses

#200 OK

OK.

FieldTypeRequiredDefaultDescription
objectstringyes—One of "crdt_ack".
docstringyes—brief, or canvas: and the canvas's id.
revintegeryes—0 to ….
state_vectorstringyes—The bytes, base64.
bytesintegeryes—0 to 2097152.
request_idstringno—Mirrored in the X-Request-Id header.

Headers:

HeaderDescription
RateLimit-LimitBurst capacity.
RateLimit-Remaining
RateLimit-ResetSeconds until refill.
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-ResetUnix seconds. The X- spelling is what client libraries read.
X-Request-Id

#400 Bad Request

#401 Unauthorized

#403 Forbidden

#404 Not Found

#409 Conflict

#413 Payload Too Large

#429 Too Many Requests

#500 Internal Server Error

#503 Service Unavailable

#Status codes

StatusMeaning
200OK.
400Bad Request
401Unauthorized
403Forbidden
404Not Found
409Conflict
413Payload Too Large
429Too Many Requests
500Internal Server Error
503Service Unavailable

Every refusal names its code, and every code is explained at Errors.

Start typing to search every page of the documentation.

Up arrow Down arrow to moveEnter to openEscape to close