routePrefix
PHPPath prefix matched by CalendarApiHandler. A trailing slash is normalized.
- Type
string- Default
/api/calendar/events
Search the installed @wts-calendar/core declarations, public calendar methods, and every PHP and ASP.NET Core endpoint setting. Types and method signatures are generated from the package pinned by this portal.
Both server packages expose the same route-level adapter contract and concurrency semantics. Their field validation and recurrence-key casing have documented differences. PHP supplies a PSR-15 handler; ASP.NET Core supplies Minimal API route extensions. Authentication, authorization, tenant isolation, and durable storage stay in your application.
| Method | Route | Success | Purpose |
|---|---|---|---|
GET | /api/calendar/events?start={ISO}&end={ISO} | 200 | Load a bounded range; supports timeZone, cursor and limit. |
GET | /api/calendar/events/{id} | 200 + ETag | Load one event and its current version. |
POST | /api/calendar/events | 201 + Location + ETag | Validate and create one event. |
PATCH / PUT | /api/calendar/events/{id} | 200 + ETag | Replace the stored event; send If-Match to detect stale edits. |
DELETE | /api/calendar/events/{id} | 204 | Delete an event; If-Match can protect the mutation. |
startendtimeZonecursorlimit| Field | Type | Contract |
|---|---|---|
id | string | Stable event identifier; 1–200 printable characters in .NET and bytes in PHP. A create store may assign it. |
title | string | Required display title, limited by the configured title length. |
start | string | Required yyyy-MM-dd or ISO date-time containing Z or an explicit offset. |
end | string | null | Optional exclusive end in the same date kind as start; must be later than start. |
isAllDay | boolean | null | Optional. When true, start and end must be date-only. PHP additionally rejects date-only start when false. |
description | string | null | Optional long-form description, limited by server configuration. |
url | string | null | Optional HTTP(S) URL. PHP also rejects embedded credentials. |
editable / removeable | boolean | null | Optional client interaction flags preserved by both packages. |
display / color / textColor | string | null | Optional presentation values passed through to the calendar client. |
classNames | string[] | null | Optional classes; at most 64 entries of up to 200 characters/bytes each. |
resourceId / resourceUnits | string / number | Optional resource assignment; units must be greater than zero. |
rrule / rdate / exdate | string / string[] | Recurrence data. PHP uses lowercase keys; current .NET JSON emits rRule, rDate, and exDate. |
recurrenceTimeZone | string | null | Optional time-zone identifier associated with recurrence expansion. |
extendedProps / meta | object | null | Application-owned JSON counted toward the custom-data byte limit. |
additional fields | object | Unknown top-level fields are retained. PHP also recognizes a broader set of client event properties. |
20 matching server settings
routePrefixPath prefix matched by CalendarApiHandler. A trailing slash is normalized.
string/api/calendar/eventsdefaultPageSizeDefault number of events returned when the request does not provide a page size.
int250maxPageSizeLargest accepted page size. Larger requests are rejected instead of silently loading an unbounded result.
int1000maxQueryDaysLargest permitted start-to-end query range. Protects storage from accidental unbounded scans.
int366maxPayloadBytesMaximum JSON request-body size accepted for create and update operations.
int131072maxTitleLengthMaximum event title length.
int300maxDescriptionLengthMaximum event description length.
int16000maxCustomDataBytesMaximum serialized custom-data size for one event.
int32768requireIfMatchForUpdateWhen enabled, updates without an If-Match precondition return HTTP 428.
boolfalserequireIfMatchForDeleteWhen enabled, deletes without an If-Match precondition return HTTP 428.
boolfalsepatternRoute-group pattern passed to MapWtsCalendarEvents. It must not be null, empty, or whitespace.
string/api/calendar/eventsDefaultPageSizeDefault number of events returned when the request does not provide a page size.
int250MaxPageSizeLargest accepted page size. Larger requests are rejected instead of silently loading an unbounded result.
int1000MaxQueryWindowLargest permitted start-to-end query range. Protects storage from accidental unbounded scans.
TimeSpan366 daysMaxPayloadBytesMaximum JSON request-body size accepted for create and update operations.
long131072MaxTitleLengthMaximum event title length.
int300MaxDescriptionLengthMaximum event description length.
int16000MaxCustomDataBytesMaximum serialized custom-data size for one event.
int32768RequireIfMatchForUpdateWhen enabled, updates without an If-Match precondition return HTTP 428.
boolfalseRequireIfMatchForDeleteWhen enabled, deletes without an If-Match precondition return HTTP 428.
boolfalseProduction applications implement the same five logical operations. Mutation status is one of Created, Updated, Deleted, NotFound, Conflict, or Rejected.
| Operation | PHP | ASP.NET Core | Required behavior |
|---|---|---|---|
| Query | query(CalendarEventQuery): CalendarEventPage | QueryAsync(query, cancellationToken): ValueTask<WtsCalendarEventPage> | Return half-open range matches, stable ordering, an opaque cursor, and optional collection version/meta. |
| Find | find(string $id): ?StoredCalendarEvent | FindAsync(id, cancellationToken): ValueTask<WtsCalendarStoredEvent?> | Return the event plus a nonempty opaque version, or null when absent. |
| Create | create(CalendarEvent): MutationResult | CreateAsync(event, cancellationToken): ValueTask<WtsCalendarMutationResult> | Return Created plus a stored event containing its final ID and version. |
| Update | update(id, event, expectedVersion): MutationResult | UpdateAsync(id, event, expectedVersion, cancellationToken): ValueTask<WtsCalendarMutationResult> | Return Updated, NotFound, Conflict, or Rejected; compare expectedVersion atomically. |
| Delete | delete(id, expectedVersion): MutationResult | DeleteAsync(id, expectedVersion, cancellationToken): ValueTask<WtsCalendarMutationResult> | Return Deleted, NotFound, Conflict, or Rejected; compare expectedVersion atomically. |
PHP 8.2+
PSR-7 2.x, PSR-15 1.x, PSR-17 1.x; the host supplies concrete HTTP factories.
.NET 8 or .NET 10
ASP.NET Core shared framework; no third-party runtime package.
Malformed identifiers, query values, range, cursor, time zone, JSON, or If-Match header.
The requested event does not exist.
Unsupported collection/item method. PHP returns Allow; ASP.NET routing supplies the response.
The supplied event version is stale or the mutation conflicts with stored state.
The JSON body exceeds MaxPayloadBytes / maxPayloadBytes.
Create or update did not use application/json.
The JSON shape is valid but event fields fail validation or storage rejects the mutation.
If-Match is required by configuration but was not supplied.
Host-owned authentication and authorization failures; apply policy before the package endpoint.
Host-owned exception handling for store, option, serialization, or infrastructure failures.
application/json and structured +json; the .NET endpoint requires application/json. * in If-Match; stale writes return 409 and required missing preconditions return 428. CalendarEventStoreInterface or IWtsCalendarEventStore; bundled in-memory stores are for demos and tests.