{"openapi":"3.1.0","info":{"title":"iCalendar Toolkit","version":"0.1.0","description":"Parse .ics, expand RRULE recurrences and build .ics documents.","x-guidance":"Parse .ics, expand RRULE recurrences and build .ics documents. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://ical.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/parse":{"post":{"summary":"Parse iCalendar","description":"Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees). Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["parse icalendar","parse ics file","ics event parser","calendar event extraction","read ical events","icalendar parser api"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ics":{"type":"string","minLength":1,"maxLength":200000,"description":"Raw iCalendar (.ics) text."}},"required":["ics"],"additionalProperties":false}}}},"responses":{"200":{"description":"The `calendar` metadata and an `events[]` array of parsed events.","content":{"application/json":{"schema":{"type":"object","description":"The `calendar` metadata and an `events[]` array of parsed events."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees).","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees).","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Parse an .ics document into structured calendar events (summary, times, location, RRULE, attendees).","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/expand":{"post":{"summary":"Expand recurrence","description":"Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description. Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["expand recurrence","rrule expansion","recurrence occurrences","calendar recurrence api","expand rrule dates","recurring event schedule"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rrule":{"type":"string","minLength":1,"maxLength":2000,"description":"RRULE, e.g. \"FREQ=WEEKLY;BYDAY=WE;COUNT=3\" (DTSTART lines allowed)."},"dtstart":{"type":"string","description":"ISO start datetime, when not embedded in `rrule`."},"from":{"type":"string","description":"ISO window start (inclusive). Provide with `to`."},"to":{"type":"string","description":"ISO window end (inclusive). Provide with `from`."},"limit":{"type":"integer","minimum":1,"maximum":1000,"description":"Max occurrences to return. Defaults to 50."}},"required":["rrule"],"additionalProperties":false},"example":{"rrule":"FREQ=WEEKLY;BYDAY=MO;COUNT=3","dtstart":"2024-01-01T09:00:00Z"}}}},"responses":{"200":{"description":"A human-readable `text`, the `count`, and the `occurrences[]` as ISO datetimes.","content":{"application/json":{"schema":{"type":"object","description":"A human-readable `text`, the `count`, and the `occurrences[]` as ISO datetimes."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Expand an RRULE recurrence rule into its occurrence datetimes, with a human-readable description.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/create":{"post":{"summary":"Create iCalendar","description":"Build a valid .ics document from event fields (summary, start/end, location, …). Paid endpoint (x402 + MPP). Price: $0.002000 USDC per successful payment.","tags":["create icalendar","generate ics file","build calendar invite","ical event generator","ics document builder","create calendar event"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"string","minLength":1,"maxLength":1000,"description":"Event title."},"start":{"type":"string","description":"ISO start datetime (or date for all-day)."},"end":{"type":"string","description":"ISO end datetime."},"description":{"type":"string","maxLength":10000,"description":"Event description."},"location":{"type":"string","maxLength":1000,"description":"Event location."},"url":{"type":"string","maxLength":2000,"description":"Event URL."},"uid":{"type":"string","maxLength":256,"description":"Event UID. Auto-generated when omitted."},"allDay":{"type":"boolean","description":"Whether this is an all-day event. Defaults to false."},"prodId":{"type":"string","maxLength":256,"description":"Calendar PRODID. Defaults to a generic openverbs id."},"calendarName":{"type":"string","maxLength":256,"description":"Calendar display name."}},"required":["summary","start"],"additionalProperties":false},"example":{"summary":"Team sync","start":"2024-01-15T09:00:00Z","end":"2024-01-15T09:30:00Z","description":"Weekly planning call"}}}},"responses":{"200":{"description":"The generated `ics` document as a string.","content":{"application/json":{"schema":{"type":"object","description":"The generated `ics` document as a string."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Build a valid .ics document from event fields (summary, start/end, location, …).","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.002000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"2000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Build a valid .ics document from event fields (summary, start/end, location, …).","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"2000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Build a valid .ics document from event fields (summary, start/end, location, …).","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["compute"],"docs":{"homepage":"https://ical.openverbs.com","apiReference":"https://ical.openverbs.com/openapi.json"}}}