# info.description
Account-scoped, read-only API for calovo customer calendar feeds and approved events. Existing legacy /json/{id|key} clients are not part of this contract and remain backwards compatible.

# tags[].description
Published calendar feeds belonging to the authenticated account.

# tags[].description
Approved events belonging to an authenticated account's published calendar feed.

# paths./calendar-feeds.get.description
Returns published calendar feeds that belong to the account encoded in the Bearer token.

# paths./calendar-feeds/{feed}.get.description
Returns one published calendar feed if it belongs to the authenticated account. A missing, unpublished, or foreign feed is always represented by the same 404 response.

# paths./calendar-feeds/{feed}/events.get.description
Returns approved events that overlap the inclusive requested date range. Without dates, the range starts today in Europe/Berlin and ends 18 months later. The maximum window is 731 days.

# components.securitySchemes.bearerAuth.description
Account token issued by calovo administration. It is shown once and must be stored as a secret.

# components.parameters.RequestId.description
Optional client correlation ID. Safe values are echoed in the response; otherwise calovo generates a UUID.

# components.parameters.IfNoneMatch.description
ETag from an earlier response. A matching representation returns 304 without a body.

# components.parameters.DateFrom.description
Inclusive first calendar day in Europe/Berlin.

# components.parameters.DateTo.description
Inclusive last calendar day in Europe/Berlin. Must be on or after date_from and at most 731 days later.

# components.headers.ETag.description
Representation validator accepted by If-None-Match on a later GET.

# components.headers.RequestId.description
Correlation ID for support and operational tracing. A syntactically safe client-supplied X-Request-ID is preserved; otherwise calovo creates one.

# components.headers.RateLimitLimit.description
Maximum requests in the current one-minute window.

# components.headers.RateLimitRemaining.description
Remaining requests in the current window.

# components.headers.RetryAfter.description
Seconds until a request should be retried.

# components.responses.NotModified.description
The representation has not changed. The response has no body.

# components.responses.Unauthorized.description
Missing, invalid, disabled, or rotated token.

# components.responses.Unauthorized.content.application/json.example.errors[].detail
Provide a valid calovo JSON API v2 token as a Bearer token.

# components.responses.CalendarFeedNotFound.description
Calendar feed does not exist, is not published, or belongs to another account.

# components.responses.ValidationError.description
One or more query parameters are invalid, or a recurring calendar produces more than 1200 occurrences in the requested window.

# components.responses.RateLimited.description
Credential or IP request limit exceeded.

# components.responses.InternalError.description
Unexpected server error. Details are not exposed.

# components.schemas.ResponseMeta.properties.request_id.description
Correlation ID also returned in X-Request-ID.

# components.schemas.CalendarFeed.properties.html_description.description
Editorial calendar feed HTML. Treat it as untrusted input and sanitize or allow-list it before rendering in a browser.

# components.schemas.SportsTeam.description
Normalized home or away team. Provider-specific additive properties may be present.

# components.schemas.CalendarEvent.properties.id.description
Stable event identifier, normally the calendar UID.

# components.schemas.CalendarEvent.properties.source_event_id.description
calovo-internal numeric event identifier represented as a string.

# components.schemas.CalendarEvent.properties.status.description
Machine-readable event status. Cancelled occurrences remain visible so clients can update their local record.

# components.schemas.CalendarEvent.properties.html_description.description
Editorial HTML. Treat it as untrusted input and sanitize or allow-list it before rendering in a browser.

# components.schemas.CalendarEvent.properties.starts_at.description
UTC timestamp. For an all-day event this is the start of its literal calendar date in Europe/Berlin, converted to UTC.

# components.schemas.CalendarEvent.properties.ends_at.description
UTC timestamp. For an all-day event this is the inclusive end of its literal final calendar date in Europe/Berlin, converted to UTC.