{"openapi":"3.1.0","info":{"title":"Resova (BYOK) API","version":"0.1.0","description":"Resova (BYOK) lets an AI assistant read your own Resova data through the Resova API with a key you supply (Resova API key). Read-only: 8 tools (list_items, get_item, list_item_categories, list_item_extras, list_item_booking_questions, list_gift_vouchers, get_gift_voucher, get_daily_availability). The BYOK key travels with each request, is used for that one call only and is never stored, logged or...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-resova.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-resova/docs"},"termsOfService":"https://connectorbay.com/byok-resova/terms"},"servers":[{"url":"https://byok-resova.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-resova/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_items":{"post":{"operationId":"list_items","summary":"List the activities (items) the business sells with type, short description, booking cut-offs, deposit and approval sett","description":"List the activities (items) the business sells with type, short description, booking cut-offs, deposit and approval settings, price categories and location. Returns paging totals. Use for \"What activities can customers book with my Resova account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_itemsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_item":{"post":{"operationId":"get_item","summary":"Get one activity by id with description, type, booking cut-offs, deposit and approval settings, price categories and loc","description":"Get one activity by id with description, type, booking cut-offs, deposit and approval settings, price categories and location. Use for \"Show Resova item 1 with its price categories\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"item":{"description":"Resova item (activity) id, for example 1; get ids from list_items.","title":"Item","type":"integer"}},"required":["item"],"title":"get_itemArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_categories":{"post":{"operationId":"list_item_categories","summary":"List the activity categories configured in the account. Use for \"What item categories are set up in Resova\".","description":"List the activity categories configured in the account. Use for \"What item categories are set up in Resova\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_item_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_extras":{"post":{"operationId":"list_item_extras","summary":"List the optional extras (add-ons) that can be added to one activity booking. Use for \"What extras can be added to Resov","description":"List the optional extras (add-ons) that can be added to one activity booking. Use for \"What extras can be added to Resova item 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"item":{"description":"Resova item (activity) id, for example 1; get ids from list_items.","title":"Item","type":"integer"}},"required":["item"],"title":"list_item_extrasArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_item_booking_questions":{"post":{"operationId":"list_item_booking_questions","summary":"List the questions customers are asked when booking one activity. Use for \"What questions does Resova ask when booking i","description":"List the questions customers are asked when booking one activity. Use for \"What questions does Resova ask when booking item 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"item":{"description":"Resova item (activity) id, for example 1; get ids from list_items.","title":"Item","type":"integer"}},"required":["item"],"title":"list_item_booking_questionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_gift_vouchers":{"post":{"operationId":"list_gift_vouchers","summary":"List the gift voucher products the business sells with name, value, type, discount, active flag and description. Use for","description":"List the gift voucher products the business sells with name, value, type, discount, active flag and description. Use for \"What gift vouchers does my Resova account sell\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_gift_vouchersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_gift_voucher":{"post":{"operationId":"get_gift_voucher","summary":"Get one gift voucher product by id. Use for \"Show Resova gift voucher 1\".","description":"Get one gift voucher product by id. Use for \"Show Resova gift voucher 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"voucher_id":{"description":"Gift voucher id from list_gift_vouchers.","title":"Voucher Id","type":"integer"}},"required":["voucher_id"],"title":"get_gift_voucherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_daily_availability":{"post":{"operationId":"get_daily_availability","summary":"Get the bookable time slots (instances) for all activities across a date range, grouped by day. Use for \"What Resova slo","description":"Get the bookable time slots (instances) for all activities across a date range, grouped by day. Use for \"What Resova slots are available next weekend\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"start_date":{"description":"First day of the range (YYYY-MM-DD).","maxLength":10,"title":"Start Date","type":"string"},"end_date":{"description":"Last day of the range (YYYY-MM-DD).","maxLength":10,"title":"End Date","type":"string"}},"required":["start_date","end_date"],"title":"get_daily_availabilityArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}