CityTest / Portal API Tester
📡

Portal API Tester

Enter a Base URL above, then pick an endpoint from the sidebar to get started.

GetEvents

POST /api/events/GetEvents/{slug}
🌐 Anonymous endpoint — no auth required. Returns a paginated list of events. Default page size is 25; use end to get up to 100.
URL slug for the portal (route param)
When set, page size increases to 100
Pagination offset (max 2000)
Comma-separated integers
Comma-separated label strings

GetEvent

POST /api/events/GetEvent/{slug}
🌐 Anonymous endpoint. Returns a single event with full occurrences list. Three-pass lookup: ±48h → ±14d → any.
HH:mm format — narrows occurrence match
If > 0, logs a ViewEvent tracking action
Comma-separated integers

SiteMap

POST /api/events/SiteMap
🌐 Anonymous endpoint. Returns an XML sitemap of up to 1799 events. Response will be displayed as raw XML text.

LoginInfo

POST /api/auth/LoginInfo/{slug?}/{ppid}
🌐 Anonymous endpoint. Returns the current user's login state and portal-specific rights.

UserAction

POST /api/auth/UserAction
🌐 Anonymous endpoint. Records a user interaction (bookmark, view, etc.).

GetLabels

POST /api/auth/GetLabels
🔑 Requires authentication. Returns available labels for the authenticated user's context.

InlineEdit

POST /api/auth/InlineEdit
🔑 Requires auth + ViewEvents right. Inline-edits or creates an event. Returns the event format enum value.
Comma-separated
Comma-separated integers

Block

POST /api/auth/Block
🔑 Requires auth + BlockEvents right. Blocks an event from appearing on the portal.
Comma-separated reason strings

Pick

POST /api/auth/Pick
🔑 Requires auth + BlockEvents right. Marks an event as an Editor's Pick for this portal.
Comma-separated reason strings

UnPick

POST /api/auth/UnPick
🔑 Requires auth + BlockEvents right. Removes an event's Editor's Pick status.
Comma-separated reason strings