{"openapi":"3.1.0","info":{"title":"OGD Events & Gifting","version":"0.2.0","description":"Revision 1 local slice. BMSG live adapters disabled; payments and delivery simulated."},"servers":[{"url":"/"}],"security":[{"bmsgBearer":[]}],"paths":{"/api/v1/operations/events_list":{"post":{"operationId":"events_list","summary":"List my event workspaces","x-required-scope":"give.read","x-mcp-tool":"events_list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"cursor":{"type":"string","maxLength":100}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_access_check":{"post":{"operationId":"event_access_check","summary":"Current Give roster decision for an independently authenticated service; candidate v1","x-required-scope":"give.access.check","x-mcp-tool":"event_access_check","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"subjectId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"action":{"type":"string","enum":["event.read","event.cancellation.read","event.update.receive"]},"destination":{"type":"string","enum":["crew","ripple"]}},"required":["eventId","subjectId","action"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_get":{"post":{"operationId":"event_get","summary":"Read an event and the tasks I may see","x-required-scope":"give.read","x-mcp-tool":"event_get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_create":{"post":{"operationId":"event_create","summary":"Create an event draft with a board and organiser roster","x-required-scope":"give.events.write","x-mcp-tool":"event_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":2000},"date":{"type":"string","maxLength":10},"place":{"type":"string","maxLength":200},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["title","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_update":{"post":{"operationId":"event_update","summary":"Update draft event details and destination preferences","x-required-scope":"give.events.write","x-mcp-tool":"event_update","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","maxLength":2000},"date":{"type":"string","maxLength":10},"place":{"type":"string","maxLength":200},"crewEnabled":{"type":"boolean"},"rippleEnabled":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_cancel":{"post":{"operationId":"event_cancel","summary":"Cancel an event, preserving history; human organiser only","x-required-scope":"give.events.write","x-mcp-tool":"event_cancel","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"reason":{"type":"string","minLength":1,"maxLength":1000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","reason","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_cancellation_notify_preview":{"post":{"operationId":"event_cancellation_notify_preview","summary":"Simulate a cancellation notice to current event members via Crew Comms and/or email; no real delivery","x-required-scope":"give.events.write","x-mcp-tool":"event_cancellation_notify_preview","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"crew":{"type":"boolean"},"email":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","crew","email","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/event_image_preview":{"post":{"operationId":"event_image_preview","summary":"Save a private local event photo; not screened for external publication","x-required-scope":"give.events.write","x-mcp-tool":"event_image_preview","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"imageData":{"type":"string","minLength":1,"maxLength":254000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","imageData","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/team_set":{"post":{"operationId":"team_set","summary":"Add, change or revoke an event team member","x-required-scope":"give.team.write","x-mcp-tool":"team_set","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"userId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"role":{"type":"string","enum":["crew","supplier"]},"active":{"type":"boolean"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","userId","role","active","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/card_create":{"post":{"operationId":"card_create","summary":"Create a Kanban task","x-required-scope":"give.board.write","x-mcp-tool":"card_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","maxLength":2000},"assignee":{"type":"string","maxLength":80},"due":{"type":"string","maxLength":10},"workstream":{"type":"string","minLength":1,"maxLength":80},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","title","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/card_update":{"post":{"operationId":"card_update","summary":"Update a task; suppliers can only move their own assigned tasks","x-required-scope":"give.board.write","x-mcp-tool":"card_update","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"cardId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"title":{"type":"string","minLength":1,"maxLength":160},"description":{"type":"string","maxLength":2000},"assignee":{"type":"string","maxLength":80},"due":{"type":"string","maxLength":10},"status":{"type":"string","enum":["todo","doing","on_hold","done"]},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","cardId","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/rsvp_set":{"post":{"operationId":"rsvp_set","summary":"Set my event attendance response","x-required-scope":"give.rsvp.write","x-mcp-tool":"rsvp_set","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"response":{"type":"string","enum":["going","maybe","not_going"]},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","response","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/giving_set":{"post":{"operationId":"giving_set","summary":"Configure the event-bound giving page (mock payments)","x-required-scope":"give.gifts.write","x-mcp-tool":"giving_set","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"story":{"type":"string","minLength":1,"maxLength":2000},"goalMinor":{"type":"integer","minimum":100,"maximum":100000000},"currency":{"type":"string","enum":["NZD"]},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","story","goalMinor","currency","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/gift_initiate":{"post":{"operationId":"gift_initiate","summary":"Start a mock gift and return a payer approval action; never charges money","x-required-scope":"give.gifts.write","x-mcp-tool":"gift_initiate","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"amountMinor":{"type":"integer","minimum":100,"maximum":1000000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","amountMinor","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/gift_get":{"post":{"operationId":"gift_get","summary":"Read my gift status without exposing another donor","x-required-scope":"give.read","x-mcp-tool":"gift_get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"giftId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","giftId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/gift_mock_resolve":{"post":{"operationId":"gift_mock_resolve","summary":"Human-only local preview checkout; no real payment","x-required-scope":"give.gifts.write","x-mcp-tool":"gift_mock_resolve","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"giftId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"outcome":{"type":"string","enum":["succeeded","cancelled"]},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","giftId","outcome","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/milestone_create":{"post":{"operationId":"milestone_create","summary":"Record a draft milestone for later approval","x-required-scope":"give.events.write","x-mcp-tool":"milestone_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"title":{"type":"string","minLength":1,"maxLength":160},"summary":{"type":"string","minLength":1,"maxLength":1000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","title","summary","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/milestone_update":{"post":{"operationId":"milestone_update","summary":"Edit a milestone draft before review","x-required-scope":"give.events.write","x-mcp-tool":"milestone_update","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"milestoneId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"title":{"type":"string","minLength":1,"maxLength":160},"summary":{"type":"string","minLength":1,"maxLength":1000},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","milestoneId","title","summary","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/milestone_preview_withdraw":{"post":{"operationId":"milestone_preview_withdraw","summary":"Human-only withdrawal of a local simulated milestone and its destination receipts","x-required-scope":"give.events.write","x-mcp-tool":"milestone_preview_withdraw","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"milestoneId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","milestoneId","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/milestone_preview_publish":{"post":{"operationId":"milestone_preview_publish","summary":"Human-only simulated screening and delivery to selected local receivers","x-required-scope":"give.events.write","x-mcp-tool":"milestone_preview_publish","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"version":{"type":"integer","minimum":1,"maximum":2147483647},"milestoneId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId","version","milestoneId","idempotencyKey"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/workflow_get":{"post":{"operationId":"workflow_get","summary":"Inspect my workflow outcome and delivery status","x-required-scope":"give.read","x-mcp-tool":"workflow_get","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"requestId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["requestId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}},"/api/v1/operations/audit_list":{"post":{"operationId":"audit_list","summary":"Read event audit metadata (organiser only)","x-required-scope":"give.read","x-mcp-tool":"audit_list","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","minLength":1,"maxLength":80,"pattern":"^[A-Za-z0-9_-]+$"}},"required":["eventId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Authorised operation result","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid input"},"401":{"description":"Authentication required"},"403":{"description":"Current access denied"},"409":{"description":"Version or idempotency conflict"},"503":{"description":"Required platform adapter unavailable"}}}}},"components":{"securitySchemes":{"bmsgBearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}}}