{"openapi":"3.1.0","info":{"title":"Yarrapost API","version":"0.1.0","description":"Shared publishing operations for human and agent clients. Mutations require Idempotency-Key. Timestamps require an explicit offset."},"servers":[{"url":"/"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"}}},"paths":{"/api/v1/operations/workspace_get":{"post":{"operationId":"workspace_get","summary":"Get your workspace and acting identity.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/connections_list":{"post":{"operationId":"connections_list","summary":"List connected destinations and connection health.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/connection_disconnect":{"post":{"operationId":"connection_disconnect","summary":"Disconnect a destination and remove stored provider tokens. Queued posts will require reconnection.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"connection_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["connection_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/capabilities_list":{"post":{"operationId":"capabilities_list","summary":"Discover supported destinations, formats and integration readiness.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/posts_list":{"post":{"operationId":"posts_list","summary":"List posts with a pagination cursor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"cursor":{"type":"string"},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100}},"required":["limit"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_get":{"post":{"operationId":"post_get","summary":"Get a post, its current revision, approval and per-destination publishing outcomes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["post_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_create":{"post":{"operationId":"post_create","summary":"Create a draft with independent content for each destination.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":160},"variants":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"connection_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"text":{"type":"string","maxLength":10000},"media_ids":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"title":{"type":"string","maxLength":100},"made_for_kids":{"type":"boolean"}},"required":["connection_id","text","media_ids"],"additionalProperties":false}}},"required":["title","variants"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_edit":{"post":{"operationId":"post_edit","summary":"Replace draft content using the current version. Invalidates approval and cancels queued publication.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"title":{"type":"string","minLength":1,"maxLength":160},"variants":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"object","properties":{"connection_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"text":{"type":"string","maxLength":10000},"media_ids":{"default":[],"maxItems":10,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"title":{"type":"string","maxLength":100},"made_for_kids":{"type":"boolean"}},"required":["connection_id","text","media_ids"],"additionalProperties":false}}},"required":["post_id","version","title","variants"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_validate":{"post":{"operationId":"post_validate","summary":"Check content and destination readiness without publishing.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["post_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_request_approval":{"post":{"operationId":"post_request_approval","summary":"Request review of the current content revision.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["post_id","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_approve":{"post":{"operationId":"post_approve","summary":"Approve exactly the requested revision using a reviewer credential.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["post_id","version","revision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_schedule":{"post":{"operationId":"post_schedule","summary":"Schedule or reschedule publication at an explicit UTC-offset timestamp and IANA timezone.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"scheduled_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"timezone":{"type":"string","minLength":1,"maxLength":80}},"required":["post_id","version","scheduled_at","timezone"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/post_cancel":{"post":{"operationId":"post_cancel","summary":"Cancel a post before publishing begins. Cannot retract a published post.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"post_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["post_id","version"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/events_list":{"post":{"operationId":"events_list","summary":"Read an ordered audit/event stream after a cursor.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"after":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100}},"required":["after","limit"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/media_list":{"post":{"operationId":"media_list","summary":"List uploaded workspace media.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/media_upload_instructions":{"post":{"operationId":"media_upload_instructions","summary":"Get the authenticated binary upload endpoint and media constraints. Upload bytes over HTTP, then use the returned media ID in a draft.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/connection_instructions":{"post":{"operationId":"connection_instructions","summary":"Get the browser connection flow for a destination that needs human OAuth consent.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"provider":{"type":"string","enum":["linkedin","youtube","facebook","instagram"]}},"required":["provider"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/actors_list":{"post":{"operationId":"actors_list","summary":"List human and agent identities and scopes.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}},"/api/v1/operations/actor_revoke":{"post":{"operationId":"actor_revoke","summary":"Revoke a workspace credential immediately.","parameters":[{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":128}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"actor_id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["actor_id"],"additionalProperties":false}}}},"responses":{"200":{"description":"Operation result"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or revoked credential"},"403":{"description":"Insufficient permission"},"409":{"description":"Version, approval, state or idempotency conflict"}}}}}}