diff --git a/packages/api-client/src/generated/operations.ts b/packages/api-client/src/generated/operations.ts index f40d8b687..095b63a2c 100644 --- a/packages/api-client/src/generated/operations.ts +++ b/packages/api-client/src/generated/operations.ts @@ -2715,7 +2715,8 @@ export abstract class GeneratedUmamiClient { ): Promise>; /** - * Create or update batch + * Send a batch of tracking requests + * Processes up to 500 tracking payloads and returns processed and failed counts, individual error details, and a tracking cache token. * `POST /api/batch` */ batch( @@ -2726,7 +2727,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update 2fa setup cancel + * Cancel two-factor authentication setup + * Deletes the current user's pending setup without changing an already enabled authenticator. * `POST /api/2fa/setup/cancel` */ cancelTwoFactorSetup( @@ -2737,7 +2739,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update boards board id clone + * Clone a board + * Creates a copy of a board with optional changes to its name, description, and configuration. Removes invalid report references from the copy. * `POST /api/boards/{boardId}/clone` */ cloneBoard( @@ -2748,7 +2751,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update 2fa setup confirm + * Confirm two-factor authentication setup + * Verifies an authenticator code, enables two-factor authentication, and returns a new set of backup codes. * `POST /api/2fa/setup/confirm` */ confirmTwoFactorSetup( @@ -2759,7 +2763,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update boards + * Create a board + * Creates a board with a name, type, and configuration, optionally assigned to a team. Validates access to its referenced resources and reports. * `POST /api/boards` */ createBoard( @@ -2770,7 +2775,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update boards board id shares + * Create a share for a board + * Creates a named share for the specified board with optional parameters. * `POST /api/boards/{boardId}/shares` */ createBoardShare( @@ -2781,7 +2787,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update links + * Create a tracked link + * Creates a tracked link with a name, destination URL, and slug, optionally assigned to a team. * `POST /api/links` */ createLink( @@ -2792,7 +2799,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update links link id shares + * Create a share for a link + * Creates a named share for the specified link with optional parameters. * `POST /api/links/{linkId}/shares` */ createLinkShare( @@ -2803,7 +2811,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update me api keys + * Create an API key + * Creates a named API key for the current user and returns its secret value. Available on self-hosted installations. * `POST /api/me/api-keys` */ createMyApiKey( @@ -2814,7 +2823,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update pixels + * Create a tracking pixel + * Creates a tracking pixel with a name and slug, optionally assigned to a team. * `POST /api/pixels` */ createPixel( @@ -2825,7 +2835,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update pixels pixel id shares + * Create a share for a tracking pixel + * Creates a named share for the specified tracking pixel with optional parameters. * `POST /api/pixels/{pixelId}/shares` */ createPixelShare( @@ -2836,7 +2847,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports + * Save a report + * Saves a report's name, description, type, and parameters for a website so it can be opened again later. * `POST /api/reports` */ createReport( @@ -2847,7 +2859,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update share + * Create a share + * Creates a named share for a website, board, link, or pixel with parameters and an optional custom slug. * `POST /api/share` */ createShare( @@ -2858,7 +2871,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update teams + * Create a team + * Creates a team with an access code and an owner. Administrators can specify a different user as the owner. * `POST /api/teams` */ createTeam( @@ -2869,7 +2883,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update teams team id users + * Add a team member + * Adds an existing user to the specified team with the supplied team role. * `POST /api/teams/{teamId}/users` */ createTeamUser( @@ -2880,7 +2895,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update users + * Create a user + * Creates a user account with the supplied username, password, and role. * `POST /api/users` */ createUser( @@ -2892,6 +2908,7 @@ export abstract class GeneratedUmamiClient { /** * Create a website + * Creates a website with a name and domain, optionally assigning it to a team and creating a share. * `POST /api/websites` */ createWebsite( @@ -2902,7 +2919,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id annotations + * Create a website annotation + * Adds a dated note to the website, optionally marking it as an all-day annotation. * `POST /api/websites/{websiteId}/annotations` */ createWebsiteAnnotation( @@ -2913,7 +2931,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id segments + * Create a website segment or cohort + * Saves a named segment or cohort with its type and filter parameters for the website. * `POST /api/websites/{websiteId}/segments` */ createWebsiteSegment( @@ -2924,7 +2943,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id shares + * Create a share for a website + * Creates a named share for the specified website with optional parameters. * `POST /api/websites/{websiteId}/shares` */ createWebsiteShare( @@ -2935,7 +2955,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete boards board id + * Delete a board + * Deletes the specified board after checking the caller's permission to remove it. * `DELETE /api/boards/{boardId}` */ deleteBoard( @@ -2946,7 +2967,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete links link id + * Delete a tracked link + * Deletes the specified tracked link after checking the caller's permission to remove it. * `DELETE /api/links/{linkId}` */ deleteLink( @@ -2957,7 +2979,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete me api keys key id + * Delete an API key + * Deletes an API key belonging to the current user, revoking its access. Available on self-hosted installations. * `DELETE /api/me/api-keys/{keyId}` */ deleteMyApiKey( @@ -2968,7 +2991,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete pixels pixel id + * Delete a tracking pixel + * Deletes the specified tracking pixel after checking the caller's permission to remove it. * `DELETE /api/pixels/{pixelId}` */ deletePixel( @@ -2979,7 +3003,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete reports report id + * Delete a saved report + * Deletes the specified saved report definition. * `DELETE /api/reports/{reportId}` */ deleteReport( @@ -2990,7 +3015,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete share id share id + * Delete a share + * Deletes the specified share after checking permission to delete shares for its resource. * `DELETE /api/share/id/{shareId}` */ deleteShare( @@ -3001,7 +3027,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete teams team id + * Delete a team + * Deletes the specified team after checking the caller's permission to remove it. * `DELETE /api/teams/{teamId}` */ deleteTeam( @@ -3012,7 +3039,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete teams team id users user id + * Remove a team member + * Removes a user's membership from the specified team, subject to team role and ownership restrictions. * `DELETE /api/teams/{teamId}/users/{userId}` */ deleteTeamUser( @@ -3023,7 +3051,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete users user id + * Delete a user + * Deletes the specified user account. The current user cannot delete their own account through this operation. * `DELETE /api/users/{userId}` */ deleteUser( @@ -3035,6 +3064,7 @@ export abstract class GeneratedUmamiClient { /** * Delete a website + * Deletes the specified website after checking the caller's permission to remove it. * `DELETE /api/websites/{websiteId}` */ deleteWebsite( @@ -3045,7 +3075,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete websites website id annotations annotation id + * Delete a website annotation + * Deletes the specified dated note from the website. * `DELETE /api/websites/{websiteId}/annotations/{annotationId}` */ deleteWebsiteAnnotation( @@ -3056,7 +3087,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete websites website id segments segment id + * Delete a website segment or cohort + * Deletes the specified saved segment or cohort from the website. * `DELETE /api/websites/{websiteId}/segments/{segmentId}` */ deleteWebsiteSegment( @@ -3067,7 +3099,8 @@ export abstract class GeneratedUmamiClient { } /** - * Delete websites website id sessions session id + * Delete a visitor session + * Deletes the specified session and its associated analytics data. Available on installations using only a relational database. * `DELETE /api/websites/{websiteId}/sessions/{sessionId}` */ deleteWebsiteSession( @@ -3078,7 +3111,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update 2fa disable + * Disable two-factor authentication + * Disables two-factor authentication for the current user after verifying their password and authenticator code. Rejected when an administrator or team requires it. * `POST /api/2fa/disable` */ disableTwoFactor( @@ -3089,7 +3123,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id export + * Export website analytics + * Returns a base64-encoded ZIP archive containing CSV exports of events, pages, referrers, browsers, operating systems, devices, and countries. * `GET /api/websites/{websiteId}/export` */ exportWebsite( @@ -3100,7 +3135,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get boards board id + * Get a board + * Returns the specified board and its configuration. * `GET /api/boards/{boardId}` */ getBoard( @@ -3111,7 +3147,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get boards + * List my boards + * Returns a paginated list of the current user's boards, with search and sorting options. * `GET /api/boards` */ getBoards( @@ -3122,7 +3159,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get boards board id shares + * List shares for a board + * Returns a paginated list of shares for the specified board. * `GET /api/boards/{boardId}/shares` */ getBoardShares( @@ -3133,7 +3171,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data + * List events with custom properties + * Returns a page of events in the selected date range, grouping each event's custom property records together. * `GET /api/websites/{websiteId}/event-data` * OAuth scope: `analytics:read` */ @@ -3145,7 +3184,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot array series + * Get event array values over time + * Counts individual values in an array property for the specified event, grouped by value and time interval. * `GET /api/websites/{websiteId}/event-data-pivot/array-series` */ getEventDataArraySeries( @@ -3156,7 +3196,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data event id + * Get an event's custom properties + * Returns the custom property records, data types, and values attached to a specific event. * `GET /api/websites/{websiteId}/event-data/{eventId}` */ getEventDataById( @@ -3167,7 +3208,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot date series + * Get the distribution of event date values + * Counts occurrences of dates stored in the specified event property, grouping by the property's date value within the selected event date range. * `GET /api/websites/{websiteId}/event-data-pivot/date-series` */ getEventDataDateSeries( @@ -3178,7 +3220,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data events + * Summarize properties by event + * Returns property names, types, and counts grouped by event name. When an event is specified, also groups by property value. * `GET /api/websites/{websiteId}/event-data/events` */ getEventDataEvents( @@ -3189,7 +3232,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data fields + * List event property fields + * Returns property names, data types, and counts for the selected date range, optionally restricted to an event name. * `GET /api/websites/{websiteId}/event-data/fields` */ getEventDataFields( @@ -3200,7 +3244,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot numeric series + * Get numeric event properties over time + * Returns the sum, average, or count of a numeric property for the specified event, grouped by time interval. * `GET /api/websites/{websiteId}/event-data-pivot/numeric-series` */ getEventDataNumericSeries( @@ -3211,7 +3256,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot numeric stats + * Get numeric event property statistics + * Returns the total, average, median, minimum, and maximum of the specified numeric event property for the selected date range and filters. * `GET /api/websites/{websiteId}/event-data-pivot/numeric-stats` */ getEventDataNumericStats( @@ -3222,7 +3268,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot + * List event properties in table form + * Returns a page of occurrences of the specified event, with event details and property keys and values grouped into one row per occurrence. * `GET /api/websites/{websiteId}/event-data-pivot` */ getEventDataPivot( @@ -3233,7 +3280,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data properties + * List event property usage + * Returns event names and their custom property names, data types, and record counts for the selected date range and filters. * `GET /api/websites/{websiteId}/event-data/properties` * OAuth scope: `analytics:read` */ @@ -3245,7 +3293,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data pivot property series + * Get event property values over time + * Counts occurrences of string values in the specified event property, grouped by value and time interval. * `GET /api/websites/{websiteId}/event-data-pivot/property-series` */ getEventDataPropertySeries( @@ -3256,7 +3305,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data stats + * Get event property totals + * Returns counts of events with custom data, distinct property names, and property records for the selected date range and filters. * `GET /api/websites/{websiteId}/event-data/stats` * OAuth scope: `analytics:read` */ @@ -3268,7 +3318,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id event data values + * List event property values + * Returns values and their occurrence counts for a custom event property, optionally restricted by event name and data type. * `GET /api/websites/{websiteId}/event-data/values` * OAuth scope: `analytics:read` */ @@ -3280,7 +3331,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get links link id + * Get a tracked link + * Returns the specified tracked link, including its destination URL and slug. * `GET /api/links/{linkId}` */ getLink( @@ -3291,7 +3343,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get links + * List my links + * Returns a paginated list of the current user's tracked links, with search and sorting options. * `GET /api/links` */ getLinks( @@ -3302,7 +3355,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get links charts + * Get visitor charts for links + * Returns visitor totals and chart data for the requested links the caller can view, within the selected date range. * `GET /api/links/charts` */ getLinksCharts( @@ -3313,7 +3367,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get links link id shares + * List shares for a link + * Returns a paginated list of shares for the specified link. * `GET /api/links/{linkId}/shares` */ getLinkShares( @@ -3324,7 +3379,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get me + * Get my authentication details + * Returns the current authentication context, including the authenticated user or share credentials. * `GET /api/me` * OAuth scope: `websites:read` */ @@ -3336,7 +3392,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get me api keys + * List my API keys + * Returns metadata for the current user's API keys. Available on self-hosted installations. * `GET /api/me/api-keys` */ getMyApiKeys( @@ -3347,7 +3404,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get me teams + * List my team memberships + * Returns a paginated list of teams the current user belongs to, with sorting options. * `GET /api/me/teams` */ getMyTeams( @@ -3358,7 +3416,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get me websites + * List my websites + * Returns a paginated list of the current user's websites, optionally including websites accessible through team membership. * `GET /api/me/websites` */ getMyWebsites( @@ -3369,7 +3428,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get pixels pixel id + * Get a tracking pixel + * Returns the specified tracking pixel and its configuration. * `GET /api/pixels/{pixelId}` */ getPixel( @@ -3380,7 +3440,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get pixels + * List my tracking pixels + * Returns a paginated list of the current user's tracking pixels, with search and sorting options. * `GET /api/pixels` */ getPixels( @@ -3391,7 +3452,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get pixels charts + * Get visitor charts for tracking pixels + * Returns visitor totals and chart data for the requested pixels the caller can view, within the selected date range. * `GET /api/pixels/charts` */ getPixelsCharts( @@ -3402,7 +3464,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get pixels pixel id shares + * List shares for a tracking pixel + * Returns a paginated list of shares for the specified tracking pixel. * `GET /api/pixels/{pixelId}/shares` */ getPixelShares( @@ -3413,7 +3476,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get realtime website id + * Get real-time website activity + * Returns recent website activity and visitor data for the real-time view, applying the supplied filters. * `GET /api/realtime/{websiteId}` * OAuth scope: `analytics:read` */ @@ -3425,7 +3489,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get reports report id + * Get a saved report + * Returns the specified report's saved name, description, type, and parameters. * `GET /api/reports/{reportId}` */ getReport( @@ -3436,7 +3501,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get reports + * List saved reports + * Returns a paginated list of saved reports for the requested website, optionally filtered by report type. * `GET /api/reports` */ getReports( @@ -3447,7 +3513,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data array series + * Get session array values over time + * Counts distinct sessions for individual values in an array property, grouped by value and time interval. * `GET /api/websites/{websiteId}/session-data/array-series` */ getSessionDataArraySeries( @@ -3458,7 +3525,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data date series + * Get the distribution of session date values + * Counts distinct sessions by dates stored in the specified custom property, using the selected date range and filters. * `GET /api/websites/{websiteId}/session-data/date-series` */ getSessionDataDateSeries( @@ -3469,7 +3537,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data numeric series + * Get numeric session properties over time + * Returns the sum, average, or count of a numeric session property, grouped by time interval for the selected date range and filters. * `GET /api/websites/{websiteId}/session-data/numeric-series` */ getSessionDataNumericSeries( @@ -3480,7 +3549,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data numeric stats + * Get numeric session property statistics + * Returns the total, average, median, minimum, and maximum of the specified numeric session property for the selected date range and filters. * `GET /api/websites/{websiteId}/session-data/numeric-stats` */ getSessionDataNumericStats( @@ -3491,7 +3561,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data pivot + * List session properties in table form + * Returns a page of sessions matching the selected property and filters, with the latest property keys and values grouped into one row per session. * `GET /api/websites/{websiteId}/session-data-pivot` */ getSessionDataPivot( @@ -3502,7 +3573,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data properties + * List session property usage + * Returns custom session property names, data types, and distinct session counts, optionally restricted to sessions with a selected property. * `GET /api/websites/{websiteId}/session-data/properties` */ getSessionDataProperties( @@ -3513,7 +3585,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data property series + * Get session property values over time + * Counts distinct sessions for string values in a custom property, grouped by value and time interval. * `GET /api/websites/{websiteId}/session-data/property-series` */ getSessionDataPropertySeries( @@ -3524,7 +3597,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data stats + * Get activity by session property + * Returns session, visit, pageview, event, and total activity counts grouped by values of the specified session property. * `GET /api/websites/{websiteId}/session-data/stats` */ getSessionDataStats( @@ -3535,7 +3609,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id session data values + * List session property values + * Returns custom session property values and their occurrence counts, optionally filtered by property name and data type. * `GET /api/websites/{websiteId}/session-data/values` */ getSessionDataValues( @@ -3546,7 +3621,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get share id share id + * Get a share + * Returns a share's configuration by its ID after checking access to the shared resource. * `GET /api/share/id/{shareId}` */ getShare( @@ -3557,7 +3633,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get share slug + * Open a share by its slug + * Resolves a public share slug and returns its resource references, parameters, and an access token scoped to the shared resources. * `GET /api/share/{slug}` */ getShareBySlug( @@ -3568,7 +3645,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get auth subscription + * Get subscription details + * Returns subscription and feature availability for the current user or a specified team the user can access. * `GET /api/auth/subscription` */ getSubscription( @@ -3579,7 +3657,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id + * Get a team + * Returns the specified team's details, including its members. * `GET /api/teams/{teamId}` */ getTeam( @@ -3590,7 +3669,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id boards + * List a team's boards + * Returns a paginated list of boards belonging to the specified team, with search and sorting options. * `GET /api/teams/{teamId}/boards` */ getTeamBoards( @@ -3601,7 +3681,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id links + * List a team's links + * Returns a paginated list of tracked links belonging to the specified team, with search and sorting options. * `GET /api/teams/{teamId}/links` */ getTeamLinks( @@ -3612,7 +3693,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id pixels + * List a team's tracking pixels + * Returns a paginated list of tracking pixels belonging to the specified team, with search and sorting options. * `GET /api/teams/{teamId}/pixels` */ getTeamPixels( @@ -3623,7 +3705,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams + * List my teams + * Returns a paginated list of teams the current user belongs to, with sorting options. * `GET /api/teams` */ getTeams( @@ -3634,7 +3717,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id users user id + * Get a team member + * Returns the specified user's membership details for a team. * `GET /api/teams/{teamId}/users/{userId}` */ getTeamUser( @@ -3645,7 +3729,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id users + * List team members + * Returns a paginated list of members of the specified team, including usernames and membership details. * `GET /api/teams/{teamId}/users` */ getTeamUsers( @@ -3656,7 +3741,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get teams team id websites + * List a team's websites + * Returns a paginated list of websites belonging to the specified team, with search and sorting options. * `GET /api/teams/{teamId}/websites` */ getTeamWebsites( @@ -3667,7 +3753,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get 2fa status + * Get two-factor authentication status + * Returns whether two-factor authentication is enabled, configured, or required for the current user, including the reason it is required. * `GET /api/2fa/status` */ getTwoFactorStatus( @@ -3678,7 +3765,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get users user id + * Get a user + * Returns details for the specified user account when the caller has permission to view it. * `GET /api/users/{userId}` */ getUser( @@ -3689,7 +3777,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get users user id teams + * List a user's teams + * Returns a paginated list of teams for the specified user. Available to that user and administrators. * `GET /api/users/{userId}/teams` */ getUserTeams( @@ -3700,7 +3789,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get users user id websites + * List a user's websites + * Returns a paginated list of the specified user's websites, optionally including team access. Available to that user and administrators. * `GET /api/users/{userId}/websites` */ getUserWebsites( @@ -3712,6 +3802,7 @@ export abstract class GeneratedUmamiClient { /** * Get a website + * Returns the specified website's details and configuration. * `GET /api/websites/{websiteId}` * OAuth scope: `websites:read` */ @@ -3723,7 +3814,7 @@ export abstract class GeneratedUmamiClient { } /** - * Get current active visitors + * Get active website visitors * Returns the number of visitors active on the website in the last few minutes. * `GET /api/websites/{websiteId}/active` * OAuth scope: `analytics:read` @@ -3736,7 +3827,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id annotations annotation id + * Get a website annotation + * Returns the date, all-day setting, and note for a specific website annotation. * `GET /api/websites/{websiteId}/annotations/{annotationId}` */ getWebsiteAnnotation( @@ -3747,7 +3839,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id annotations + * List website annotations + * Returns a paginated list of dated notes for the website, optionally filtered by date range or search text. * `GET /api/websites/{websiteId}/annotations` */ getWebsiteAnnotations( @@ -3758,7 +3851,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id daterange + * Get the website's available date range + * Returns the earliest and latest recorded event dates for the website. * `GET /api/websites/{websiteId}/daterange` * OAuth scope: `analytics:read` */ @@ -3771,7 +3865,7 @@ export abstract class GeneratedUmamiClient { /** * List tracked events - * Returns a page of pageviews and custom events in the date range, newest first. Filter with `event` for a specific event name or `search` for free text. + * Returns a page of pageviews and custom events in the date range, newest first. Supports filtering by event name and searching event details. * `GET /api/websites/{websiteId}/events` * OAuth scope: `analytics:read` */ @@ -3783,7 +3877,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id events series + * Get custom event counts over time + * Returns counts grouped by event name and time interval, optionally limited to the most frequent event names. * `GET /api/websites/{websiteId}/events/series` * OAuth scope: `analytics:read` */ @@ -3795,7 +3890,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id events stats + * Get website event statistics + * Returns website event totals for the selected date range and filters, including totals for the comparison period. * `GET /api/websites/{websiteId}/events/stats` * OAuth scope: `analytics:read` */ @@ -3807,7 +3903,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id metrics expanded + * Get detailed website metrics + * Returns additional analytics for the selected page, event, visitor, or channel dimension, using the supplied date range and filters. * `GET /api/websites/{websiteId}/metrics/expanded` * OAuth scope: `analytics:read` */ @@ -3819,8 +3916,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get ranked metrics for a dimension - * Returns the top values for one dimension (`type`), such as pages, referrers, countries, browsers, UTM parameters or events, ordered by count. Page-type dimensions count views/events; visitor dimensions count unique visitors. + * Get ranked website metrics + * Returns the most frequent values for a dimension such as pages, referrers, countries, browsers, campaigns, or events. Counts pageviews or events for activity dimensions and unique visitors for visitor dimensions. * `GET /api/websites/{websiteId}/metrics` * OAuth scope: `analytics:read` */ @@ -3832,8 +3929,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get pageview and session time series - * Returns pageviews and sessions bucketed by `unit` (minute, hour, day, month, year) in the given `timezone`. When `compare` is set the comparison period is included. + * Get pageviews and sessions over time + * Returns pageviews and sessions grouped by the requested time interval and timezone, including a comparison period when requested. * `GET /api/websites/{websiteId}/pageviews` * OAuth scope: `analytics:read` */ @@ -3845,7 +3942,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id recorder + * Get website recording settings + * Returns public replay and heatmap settings, including sampling, masking, and duration limits. Returns disabled status when recording is unavailable. * `GET /api/websites/{websiteId}/recorder` */ getWebsiteRecorderConfig( @@ -3856,7 +3954,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id replays replay id + * Get a session replay recording + * Returns the merged recording events, session details, and event and chunk counts for a replay, with optional stopping points by timestamp, chunk, or event index. * `GET /api/websites/{websiteId}/replays/{replayId}` */ getWebsiteReplay( @@ -3867,7 +3966,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id replays + * List website session replays + * Returns a paginated list of recorded sessions for the website, applying date, replay, and search filters. * `GET /api/websites/{websiteId}/replays` */ getWebsiteReplays( @@ -3878,7 +3978,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id replays saved replay id + * Check whether a replay is saved + * Returns whether the specified replay is in the website's saved replays. * `GET /api/websites/{websiteId}/replays/saved/{replayId}` */ getWebsiteReplaySaved( @@ -3889,7 +3990,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id reports + * List a website's saved reports + * Returns a paginated list of saved report definitions for the website, optionally filtered by report type. * `GET /api/websites/{websiteId}/reports` */ getWebsiteReports( @@ -3900,7 +4002,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id revenue chart + * Get website revenue over time + * Returns revenue chart data for the selected currency, date range, and website filters. * `GET /api/websites/{websiteId}/revenue/chart` */ getWebsiteRevenueChart( @@ -3911,7 +4014,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id revenue metrics + * Get website revenue by dimension + * Returns revenue grouped by the requested dimension, such as country or referrer, for the selected currency and date range. * `GET /api/websites/{websiteId}/revenue/metrics` */ getWebsiteRevenueMetrics( @@ -3922,7 +4026,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id revenue sessions + * List sessions with revenue + * Returns a paginated list of sessions with revenue in the selected currency and date range, applying website and search filters. * `GET /api/websites/{websiteId}/revenue/sessions` */ getWebsiteRevenueSessions( @@ -3933,7 +4038,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id revenue stats + * Get website revenue totals + * Returns revenue summary statistics for the selected currency and date range, including totals for the comparison period. * `GET /api/websites/{websiteId}/revenue/stats` */ getWebsiteRevenueStats( @@ -3944,7 +4050,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id replays saved + * List saved session replays + * Returns a paginated, searchable list of replays saved for the website. * `GET /api/websites/{websiteId}/replays/saved` */ getWebsiteSavedReplays( @@ -3955,7 +4062,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites charts + * Get visitor charts for websites + * Returns visitor totals and chart data for the requested websites the caller can view, within the selected date range. * `GET /api/websites/charts` */ getWebsitesCharts( @@ -3966,7 +4074,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id segments segment id + * Get a website segment or cohort + * Returns a saved segment or cohort and its filter parameters for the website. * `GET /api/websites/{websiteId}/segments/{segmentId}` */ getWebsiteSegment( @@ -3977,7 +4086,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id segments + * List website segments and cohorts + * Returns saved segments or cohorts for the website, filtered by the requested type and search text. * `GET /api/websites/{websiteId}/segments` */ getWebsiteSegments( @@ -3988,7 +4098,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions session id + * Get a visitor session + * Returns details for a website session, including linked visitor identities and whether session deletion is available to the caller. * `GET /api/websites/{websiteId}/sessions/{sessionId}` * OAuth scope: `analytics:read` */ @@ -4000,7 +4111,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions session id activity + * Get a visitor's session activity + * Returns activity for the specified session and sessions linked by visitor identity, using the requested date range and optional distinct ID. * `GET /api/websites/{websiteId}/sessions/{sessionId}/activity` * OAuth scope: `analytics:read` */ @@ -4012,7 +4124,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions session id properties + * Get a session's custom properties + * Returns custom property records, data types, and values for the specified website session. * `GET /api/websites/{websiteId}/sessions/{sessionId}/properties` * OAuth scope: `analytics:read` */ @@ -4024,7 +4137,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions session id replays + * List a visitor's session replays + * Returns a paginated, searchable list of recordings for the specified website session. * `GET /api/websites/{websiteId}/sessions/{sessionId}/replays` */ getWebsiteSessionReplays( @@ -4036,7 +4150,7 @@ export abstract class GeneratedUmamiClient { /** * List visitor sessions - * Returns a page of visitor sessions in the date range, newest first. `search` matches distinct ID, city, browser, OS or device. + * Returns a page of visitor sessions in the date range, newest first. Search matches distinct ID, city, browser, operating system, or device. * `GET /api/websites/{websiteId}/sessions` * OAuth scope: `analytics:read` */ @@ -4048,7 +4162,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions stats + * Get visitor session statistics + * Returns aggregate session metrics for the website over the selected date range and filters. * `GET /api/websites/{websiteId}/sessions/stats` * OAuth scope: `analytics:read` */ @@ -4060,7 +4175,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id sessions weekly + * Get traffic by weekday and hour + * Returns distinct visitor counts grouped by day of the week and hour in the selected timezone and date range. * `GET /api/websites/{websiteId}/sessions/weekly` */ getWebsiteSessionsWeekly( @@ -4071,7 +4187,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id shares + * List shares for a website + * Returns a paginated list of shares for the specified website. * `GET /api/websites/{websiteId}/shares` */ getWebsiteShares( @@ -4082,8 +4199,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get website summary stats - * Returns pageviews, unique visitors, visits, bounces and total time on site for the date range, plus the same totals for the comparison period (`compare`: prev or yoy). + * Get website summary statistics + * Returns pageviews, unique visitors, visits, bounces, and total time on site for the selected date range and comparison period. * `GET /api/websites/{websiteId}/stats` * OAuth scope: `analytics:read` */ @@ -4095,7 +4212,8 @@ export abstract class GeneratedUmamiClient { } /** - * Get websites website id values + * List website filter values + * Returns available values for a website filter, including saved segments or cohorts when requested, to populate filter choices. * `GET /api/websites/{websiteId}/values` */ getWebsiteValues( @@ -4106,7 +4224,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update 2fa setup initiate + * Set up two-factor authentication + * Starts or replaces the current user's pending setup and returns a QR code and manual setup key for an authenticator app. * `POST /api/2fa/setup/initiate` */ initiateTwoFactorSetup( @@ -4117,7 +4236,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update teams join + * Join a team + * Adds the current user to a team as a member using the team's access code. * `POST /api/teams/join` */ joinTeam( @@ -4129,7 +4249,7 @@ export abstract class GeneratedUmamiClient { /** * List websites - * Returns websites owned by the authenticated user. + * Returns a paginated list of the current user's websites, optionally including websites accessible through team membership. * `GET /api/websites` * OAuth scope: `websites:read` */ @@ -4142,7 +4262,7 @@ export abstract class GeneratedUmamiClient { /** * Log in - * Authenticates a self-hosted Umami user. Users with two-factor authentication receive a short-lived partial token instead of a full bearer token. + * Authenticates a user with a username and password. Users with two-factor authentication receive a short-lived partial token to complete sign-in. * `POST /api/auth/login` */ login( @@ -4153,7 +4273,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update auth logout + * Log out + * Ends the current authentication session by removing its stored token when Redis-backed sessions are enabled. * `POST /api/auth/logout` */ logout( @@ -4164,7 +4285,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update record + * Send session recordings or heatmap data + * Stores session replay events or heatmap clicks and scrolls for a website, using a valid tracking cache token to identify the session and visit. * `POST /api/record` */ record( @@ -4175,7 +4297,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id reset + * Reset website analytics + * Clears the website's collected analytics data while keeping the website configuration. * `POST /api/websites/{websiteId}/reset` */ resetWebsite( @@ -4186,7 +4309,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports attribution + * Run an attribution report + * Calculates how traffic sources contribute to conversions using the supplied attribution settings, date range, and filters. * `POST /api/reports/attribution` * OAuth scope: `analytics:read` */ @@ -4198,7 +4322,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports breakdown + * Run a breakdown report + * Groups website activity by the selected dimensions for the requested date range and filters. * `POST /api/reports/breakdown` * OAuth scope: `analytics:read` */ @@ -4210,7 +4335,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports funnel + * Run a funnel report + * Calculates visitor progression through a sequence of pages or events using the supplied funnel steps and filters. * `POST /api/reports/funnel` * OAuth scope: `analytics:read` */ @@ -4222,7 +4348,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports goal + * Run a goal report + * Counts visitors who reached a matching page or triggered a matching event and returns the total visitor count for comparison. * `POST /api/reports/goal` */ runGoalReport( @@ -4233,7 +4360,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports heatmap + * Get page heatmap data + * Returns recorded click or scroll data for the selected page and date range to display as a heatmap. * `POST /api/reports/heatmap` */ runHeatmapReport( @@ -4244,7 +4372,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports journey + * Run a visitor journey report + * Returns paths through pages or events using the supplied journey settings and website filters. * `POST /api/reports/journey` * OAuth scope: `analytics:read` */ @@ -4256,7 +4385,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports performance + * Run a performance report + * Returns performance trends, summary metrics, and breakdowns by page, page title, device, and browser for the selected website and date range. * `POST /api/reports/performance` */ runPerformanceReport( @@ -4267,7 +4397,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports retention + * Run a retention report + * Calculates how groups of visitors return over time using the supplied retention settings, date range, and filters. * `POST /api/reports/retention` * OAuth scope: `analytics:read` */ @@ -4279,7 +4410,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports revenue + * Run a revenue report + * Returns revenue trends, totals with a comparison period, and breakdowns by country, region, referrer, and channel. * `POST /api/reports/revenue` * OAuth scope: `analytics:read` */ @@ -4291,7 +4423,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports utm + * Run a campaign report + * Returns traffic breakdowns for UTM source, medium, campaign, term, and content using the supplied date range and filters. * `POST /api/reports/utm` * OAuth scope: `analytics:read` */ @@ -4303,7 +4436,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id replays saved replay id + * Save or unsave a session replay + * Adds a replay to the website's saved replays with an optional name, or removes it when isSaved is false. * `POST /api/websites/{websiteId}/replays/saved/{replayId}` */ saveWebsiteReplay( @@ -4314,7 +4448,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update send + * Send tracking data + * Collects a pageview, custom event, visitor identification, or performance payload and returns session information and a tracking cache token when accepted. * `POST /api/send` */ send(input: OperationInput<'send'>, options?: RequestOptions): Promise> { @@ -4322,7 +4457,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update auth sso + * Create a single sign-on token + * Returns the authenticated user and a new token valid for 24 hours. Requires Redis-backed authentication. * `POST /api/auth/sso` */ sso(input?: OperationInput<'sso'>, options?: RequestOptions): Promise> { @@ -4330,7 +4466,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id transfer + * Transfer website ownership + * Transfers the specified website to another user or team after checking permission for the destination. * `POST /api/websites/{websiteId}/transfer` */ transferWebsite( @@ -4341,7 +4478,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update boards board id + * Update a board + * Updates a board's name, description, or configuration and validates the resources and reports it references. * `POST /api/boards/{boardId}` */ updateBoard( @@ -4352,7 +4490,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update links link id + * Update a tracked link + * Updates a tracked link's name, destination URL, or slug. * `POST /api/links/{linkId}` */ updateLink( @@ -4363,7 +4502,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update me password + * Change my password + * Verifies the current password and replaces it with the supplied new password. * `POST /api/me/password` */ updateMyPassword( @@ -4374,7 +4514,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update pixels pixel id + * Update a tracking pixel + * Updates a tracking pixel's name or slug. * `POST /api/pixels/{pixelId}` */ updatePixel( @@ -4385,7 +4526,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update reports report id + * Update a saved report + * Updates the specified report's website, name, description, type, and parameters. * `POST /api/reports/{reportId}` */ updateReport( @@ -4396,7 +4538,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update share id share id + * Update a share + * Updates the specified share's name, slug, and parameters. * `POST /api/share/id/{shareId}` */ updateShare( @@ -4407,7 +4550,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update teams team id + * Update a team + * Updates the specified team's name or access code. * `POST /api/teams/{teamId}` */ updateTeam( @@ -4418,7 +4562,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update teams team id users user id + * Change a team member's role + * Updates a user's role in the specified team, subject to the caller's role and permissions. * `POST /api/teams/{teamId}/users/{userId}` */ updateTeamUser( @@ -4429,7 +4574,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update users user id + * Update a user + * Updates a user's password. Administrators can also change the username and role. * `POST /api/users/{userId}` */ updateUser( @@ -4441,6 +4587,7 @@ export abstract class GeneratedUmamiClient { /** * Update a website + * Updates a website's name, domain, sharing settings, or recording configuration. * `POST /api/websites/{websiteId}` */ updateWebsite( @@ -4451,7 +4598,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id annotations annotation id + * Update a website annotation + * Changes the date, all-day setting, and note for a website annotation. * `POST /api/websites/{websiteId}/annotations/{annotationId}` */ updateWebsiteAnnotation( @@ -4462,7 +4610,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update websites website id segments segment id + * Update a website segment or cohort + * Updates a saved segment or cohort's type, name, and filter parameters. * `POST /api/websites/{websiteId}/segments/{segmentId}` */ updateWebsiteSegment( @@ -4473,7 +4622,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update auth verify + * Verify the current sign-in + * Validates the current authentication credentials and returns the user and their team memberships. * `POST /api/auth/verify` */ verify( @@ -4484,7 +4634,8 @@ export abstract class GeneratedUmamiClient { } /** - * Create or update 2fa verify + * Complete two-factor sign-in + * Exchanges a partial sign-in token and a valid authenticator or backup code for a full authentication token and user details. * `POST /api/2fa/verify` */ verifyTwoFactor( diff --git a/packages/api-client/src/generated/types.ts b/packages/api-client/src/generated/types.ts index 1c46d6b69..ecadee0df 100644 --- a/packages/api-client/src/generated/types.ts +++ b/packages/api-client/src/generated/types.ts @@ -11,7 +11,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update 2fa disable */ + /** + * Disable two-factor authentication + * @description Disables two-factor authentication for the current user after verifying their password and authenticator code. Rejected when an administrator or team requires it. + */ post: operations['disableTwoFactor']; delete?: never; options?: never; @@ -28,7 +31,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update 2fa setup cancel */ + /** + * Cancel two-factor authentication setup + * @description Deletes the current user's pending setup without changing an already enabled authenticator. + */ post: operations['cancelTwoFactorSetup']; delete?: never; options?: never; @@ -45,7 +51,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update 2fa setup confirm */ + /** + * Confirm two-factor authentication setup + * @description Verifies an authenticator code, enables two-factor authentication, and returns a new set of backup codes. + */ post: operations['confirmTwoFactorSetup']; delete?: never; options?: never; @@ -62,7 +71,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update 2fa setup initiate */ + /** + * Set up two-factor authentication + * @description Starts or replaces the current user's pending setup and returns a QR code and manual setup key for an authenticator app. + */ post: operations['initiateTwoFactorSetup']; delete?: never; options?: never; @@ -77,7 +89,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get 2fa status */ + /** + * Get two-factor authentication status + * @description Returns whether two-factor authentication is enabled, configured, or required for the current user, including the reason it is required. + */ get: operations['getTwoFactorStatus']; put?: never; post?: never; @@ -96,7 +111,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update 2fa verify */ + /** + * Complete two-factor sign-in + * @description Exchanges a partial sign-in token and a valid authenticator or backup code for a full authentication token and user details. + */ post: operations['verifyTwoFactor']; delete?: never; options?: never; @@ -113,7 +131,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update admin 2fa global */ + /** + * Set the two-factor requirement for everyone + * @description Enables or disables the installation-wide requirement for users to set up two-factor authentication. + */ post: operations['postAdmin2faGlobal']; delete?: never; options?: never; @@ -128,7 +149,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get admin teams */ + /** + * List all teams + * @description Returns a paginated list of teams with member details and website and member counts for administration. + */ get: operations['getAdminTeams']; put?: never; post?: never; @@ -147,7 +171,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update admin teams team id 2fa */ + /** + * Set a team's two-factor requirement + * @description Enables or disables the requirement for members of the specified team to use two-factor authentication. + */ post: operations['postAdminTeamsTeamId2fa']; delete?: never; options?: never; @@ -162,7 +189,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get admin users */ + /** + * List all users + * @description Returns a paginated list of users and their website counts for administration, excluding passwords. + */ get: operations['getAdminUsers']; put?: never; post?: never; @@ -179,12 +209,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get admin users user id 2fa */ + /** + * Get a user's two-factor status + * @description Returns whether two-factor authentication is enabled for the specified user. + */ get: operations['getAdminUsersUserId2fa']; put?: never; - /** Create or update admin users user id 2fa */ + /** + * Set a user's two-factor requirement + * @description Enables or disables the requirement for the specified user to set up two-factor authentication. + */ post: operations['postAdminUsersUserId2fa']; - /** Delete admin users user id 2fa */ + /** + * Reset a user's two-factor authentication + * @description Removes the specified user's authenticator setup, backup codes, used-code history, and failed-attempt limits so they can set up authentication again. + */ delete: operations['deleteAdminUsersUserId2fa']; options?: never; head?: never; @@ -198,7 +237,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get admin websites */ + /** + * List all websites + * @description Returns a paginated, searchable list of websites across users and teams for administration. + */ get: operations['getAdminWebsites']; put?: never; post?: never; @@ -219,7 +261,7 @@ export interface paths { put?: never; /** * Log in - * @description Authenticates a self-hosted Umami user. Users with two-factor authentication receive a short-lived partial token instead of a full bearer token. + * @description Authenticates a user with a username and password. Users with two-factor authentication receive a short-lived partial token to complete sign-in. */ post: operations['login']; delete?: never; @@ -237,7 +279,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update auth logout */ + /** + * Log out + * @description Ends the current authentication session by removing its stored token when Redis-backed sessions are enabled. + */ post: operations['logout']; delete?: never; options?: never; @@ -254,7 +299,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update auth sso */ + /** + * Create a single sign-on token + * @description Returns the authenticated user and a new token valid for 24 hours. Requires Redis-backed authentication. + */ post: operations['sso']; delete?: never; options?: never; @@ -269,7 +317,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get auth subscription */ + /** + * Get subscription details + * @description Returns subscription and feature availability for the current user or a specified team the user can access. + */ get: operations['getSubscription']; put?: never; post?: never; @@ -288,7 +339,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update auth verify */ + /** + * Verify the current sign-in + * @description Validates the current authentication credentials and returns the user and their team memberships. + */ post: operations['verify']; delete?: never; options?: never; @@ -305,7 +359,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update batch */ + /** + * Send a batch of tracking requests + * @description Processes up to 500 tracking payloads and returns processed and failed counts, individual error details, and a tracking cache token. + */ post: operations['batch']; delete?: never; options?: never; @@ -320,10 +377,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get boards */ + /** + * List my boards + * @description Returns a paginated list of the current user's boards, with search and sorting options. + */ get: operations['getBoards']; put?: never; - /** Create or update boards */ + /** + * Create a board + * @description Creates a board with a name, type, and configuration, optionally assigned to a team. Validates access to its referenced resources and reports. + */ post: operations['createBoard']; delete?: never; options?: never; @@ -338,12 +401,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get boards board id */ + /** + * Get a board + * @description Returns the specified board and its configuration. + */ get: operations['getBoard']; put?: never; - /** Create or update boards board id */ + /** + * Update a board + * @description Updates a board's name, description, or configuration and validates the resources and reports it references. + */ post: operations['updateBoard']; - /** Delete boards board id */ + /** + * Delete a board + * @description Deletes the specified board after checking the caller's permission to remove it. + */ delete: operations['deleteBoard']; options?: never; head?: never; @@ -359,7 +431,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update boards board id clone */ + /** + * Clone a board + * @description Creates a copy of a board with optional changes to its name, description, and configuration. Removes invalid report references from the copy. + */ post: operations['cloneBoard']; delete?: never; options?: never; @@ -374,10 +449,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get boards board id shares */ + /** + * List shares for a board + * @description Returns a paginated list of shares for the specified board. + */ get: operations['getBoardShares']; put?: never; - /** Create or update boards board id shares */ + /** + * Create a share for a board + * @description Creates a named share for the specified board with optional parameters. + */ post: operations['createBoardShare']; delete?: never; options?: never; @@ -392,7 +473,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get config */ + /** + * Get application configuration + * @description Returns public application settings, including deployment mode, feature availability, and tracker and resource URLs. + */ get: operations['getConfig']; put?: never; post?: never; @@ -409,10 +493,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get dashboard */ + /** + * Get my dashboard + * @description Returns the current user's personal dashboard board and its configuration. + */ get: operations['getDashboard']; put?: never; - /** Create or update dashboard */ + /** + * Save my dashboard + * @description Creates or updates the current user's personal dashboard with the supplied name, description, and configuration. + */ post: operations['postDashboard']; delete?: never; options?: never; @@ -427,7 +517,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get heartbeat */ + /** + * Check application availability + * @description Returns a simple success response to confirm that the application can serve requests. + */ get: operations['getHeartbeat']; put?: never; post?: never; @@ -444,10 +537,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get links */ + /** + * List my links + * @description Returns a paginated list of the current user's tracked links, with search and sorting options. + */ get: operations['getLinks']; put?: never; - /** Create or update links */ + /** + * Create a tracked link + * @description Creates a tracked link with a name, destination URL, and slug, optionally assigned to a team. + */ post: operations['createLink']; delete?: never; options?: never; @@ -462,12 +561,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get links link id */ + /** + * Get a tracked link + * @description Returns the specified tracked link, including its destination URL and slug. + */ get: operations['getLink']; put?: never; - /** Create or update links link id */ + /** + * Update a tracked link + * @description Updates a tracked link's name, destination URL, or slug. + */ post: operations['updateLink']; - /** Delete links link id */ + /** + * Delete a tracked link + * @description Deletes the specified tracked link after checking the caller's permission to remove it. + */ delete: operations['deleteLink']; options?: never; head?: never; @@ -481,10 +589,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get links link id shares */ + /** + * List shares for a link + * @description Returns a paginated list of shares for the specified link. + */ get: operations['getLinkShares']; put?: never; - /** Create or update links link id shares */ + /** + * Create a share for a link + * @description Creates a named share for the specified link with optional parameters. + */ post: operations['createLinkShare']; delete?: never; options?: never; @@ -499,7 +613,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get links charts */ + /** + * Get visitor charts for links + * @description Returns visitor totals and chart data for the requested links the caller can view, within the selected date range. + */ get: operations['getLinksCharts']; put?: never; post?: never; @@ -516,7 +633,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get me */ + /** + * Get my authentication details + * @description Returns the current authentication context, including the authenticated user or share credentials. + */ get: operations['getMe']; put?: never; post?: never; @@ -533,10 +653,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get me api keys */ + /** + * List my API keys + * @description Returns metadata for the current user's API keys. Available on self-hosted installations. + */ get: operations['getMyApiKeys']; put?: never; - /** Create or update me api keys */ + /** + * Create an API key + * @description Creates a named API key for the current user and returns its secret value. Available on self-hosted installations. + */ post: operations['createMyApiKey']; delete?: never; options?: never; @@ -554,7 +680,10 @@ export interface paths { get?: never; put?: never; post?: never; - /** Delete me api keys key id */ + /** + * Delete an API key + * @description Deletes an API key belonging to the current user, revoking its access. Available on self-hosted installations. + */ delete: operations['deleteMyApiKey']; options?: never; head?: never; @@ -570,7 +699,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update me password */ + /** + * Change my password + * @description Verifies the current password and replaces it with the supplied new password. + */ post: operations['updateMyPassword']; delete?: never; options?: never; @@ -585,7 +717,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get me teams */ + /** + * List my team memberships + * @description Returns a paginated list of teams the current user belongs to, with sorting options. + */ get: operations['getMyTeams']; put?: never; post?: never; @@ -602,7 +737,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get me websites */ + /** + * List my websites + * @description Returns a paginated list of the current user's websites, optionally including websites accessible through team membership. + */ get: operations['getMyWebsites']; put?: never; post?: never; @@ -620,14 +758,14 @@ export interface paths { cookie?: never; }; /** - * Describe a pending OAuth authorization request - * @description Validates an OAuth 2.1 authorization request and returns the client and scopes for the consent screen. Requires an interactive user session. + * Get OAuth authorization request details + * @description Validates an OAuth authorization request and returns the client and requested permissions for the consent screen. Requires an interactive user session. */ get: operations['describeOAuthAuthorization']; put?: never; /** - * Approve or deny an OAuth authorization request - * @description Records the user decision. On approval an authorization code is issued and the redirect URL (with code, state and iss) is returned. + * Approve or deny OAuth access + * @description Records the user's consent decision and returns a redirect URL. Approval includes an authorization code, the request state, and the issuer. */ post: operations['decideOAuthAuthorization']; delete?: never; @@ -646,8 +784,8 @@ export interface paths { get?: never; put?: never; /** - * Register an OAuth client (dynamic client registration) - * @description RFC 7591 compatibility endpoint for MCP clients without Client ID Metadata Document support. Registers a public client. Prefer Client ID Metadata Documents (https URL client_id). + * Register an OAuth client + * @description Registers a public OAuth client for clients that do not support Client ID Metadata Documents. Clients that support them should use an HTTPS metadata URL as their client ID. */ post: operations['oauthRegisterClient']; delete?: never; @@ -667,7 +805,7 @@ export interface paths { put?: never; /** * Revoke an OAuth refresh token - * @description RFC 7009 revocation endpoint. Revokes the given refresh token; unknown tokens are accepted silently. + * @description Revokes the supplied refresh token. Unknown tokens are accepted without revealing whether they existed. */ post: operations['oauthRevoke']; delete?: never; @@ -686,8 +824,8 @@ export interface paths { get?: never; put?: never; /** - * OAuth 2.1 token endpoint - * @description Exchanges an authorization code (with PKCE code_verifier) or a refresh token for an access token. Accepts application/x-www-form-urlencoded or JSON. Refresh tokens are rotated on every use. + * Get or refresh an OAuth access token + * @description Exchanges an authorization code and PKCE verifier, or a refresh token, for an access token. Accepts form-encoded or JSON requests and rotates refresh tokens on use. */ post: operations['oauthToken']; delete?: never; @@ -703,10 +841,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get pixels */ + /** + * List my tracking pixels + * @description Returns a paginated list of the current user's tracking pixels, with search and sorting options. + */ get: operations['getPixels']; put?: never; - /** Create or update pixels */ + /** + * Create a tracking pixel + * @description Creates a tracking pixel with a name and slug, optionally assigned to a team. + */ post: operations['createPixel']; delete?: never; options?: never; @@ -721,12 +865,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get pixels pixel id */ + /** + * Get a tracking pixel + * @description Returns the specified tracking pixel and its configuration. + */ get: operations['getPixel']; put?: never; - /** Create or update pixels pixel id */ + /** + * Update a tracking pixel + * @description Updates a tracking pixel's name or slug. + */ post: operations['updatePixel']; - /** Delete pixels pixel id */ + /** + * Delete a tracking pixel + * @description Deletes the specified tracking pixel after checking the caller's permission to remove it. + */ delete: operations['deletePixel']; options?: never; head?: never; @@ -740,10 +893,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get pixels pixel id shares */ + /** + * List shares for a tracking pixel + * @description Returns a paginated list of shares for the specified tracking pixel. + */ get: operations['getPixelShares']; put?: never; - /** Create or update pixels pixel id shares */ + /** + * Create a share for a tracking pixel + * @description Creates a named share for the specified tracking pixel with optional parameters. + */ post: operations['createPixelShare']; delete?: never; options?: never; @@ -758,7 +917,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get pixels charts */ + /** + * Get visitor charts for tracking pixels + * @description Returns visitor totals and chart data for the requested pixels the caller can view, within the selected date range. + */ get: operations['getPixelsCharts']; put?: never; post?: never; @@ -775,7 +937,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get realtime website id */ + /** + * Get real-time website activity + * @description Returns recent website activity and visitor data for the real-time view, applying the supplied filters. + */ get: operations['getRealtime']; put?: never; post?: never; @@ -794,7 +959,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update record */ + /** + * Send session recordings or heatmap data + * @description Stores session replay events or heatmap clicks and scrolls for a website, using a valid tracking cache token to identify the session and visit. + */ post: operations['record']; delete?: never; options?: never; @@ -809,10 +977,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get reports */ + /** + * List saved reports + * @description Returns a paginated list of saved reports for the requested website, optionally filtered by report type. + */ get: operations['getReports']; put?: never; - /** Create or update reports */ + /** + * Save a report + * @description Saves a report's name, description, type, and parameters for a website so it can be opened again later. + */ post: operations['createReport']; delete?: never; options?: never; @@ -827,12 +1001,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get reports report id */ + /** + * Get a saved report + * @description Returns the specified report's saved name, description, type, and parameters. + */ get: operations['getReport']; put?: never; - /** Create or update reports report id */ + /** + * Update a saved report + * @description Updates the specified report's website, name, description, type, and parameters. + */ post: operations['updateReport']; - /** Delete reports report id */ + /** + * Delete a saved report + * @description Deletes the specified saved report definition. + */ delete: operations['deleteReport']; options?: never; head?: never; @@ -848,7 +1031,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports attribution */ + /** + * Run an attribution report + * @description Calculates how traffic sources contribute to conversions using the supplied attribution settings, date range, and filters. + */ post: operations['runAttributionReport']; delete?: never; options?: never; @@ -865,7 +1051,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports breakdown */ + /** + * Run a breakdown report + * @description Groups website activity by the selected dimensions for the requested date range and filters. + */ post: operations['runBreakdownReport']; delete?: never; options?: never; @@ -882,7 +1071,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports funnel */ + /** + * Run a funnel report + * @description Calculates visitor progression through a sequence of pages or events using the supplied funnel steps and filters. + */ post: operations['runFunnelReport']; delete?: never; options?: never; @@ -899,7 +1091,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports goal */ + /** + * Run a goal report + * @description Counts visitors who reached a matching page or triggered a matching event and returns the total visitor count for comparison. + */ post: operations['runGoalReport']; delete?: never; options?: never; @@ -916,7 +1111,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports heatmap */ + /** + * Get page heatmap data + * @description Returns recorded click or scroll data for the selected page and date range to display as a heatmap. + */ post: operations['runHeatmapReport']; delete?: never; options?: never; @@ -933,7 +1131,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports journey */ + /** + * Run a visitor journey report + * @description Returns paths through pages or events using the supplied journey settings and website filters. + */ post: operations['runJourneyReport']; delete?: never; options?: never; @@ -950,7 +1151,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports performance */ + /** + * Run a performance report + * @description Returns performance trends, summary metrics, and breakdowns by page, page title, device, and browser for the selected website and date range. + */ post: operations['runPerformanceReport']; delete?: never; options?: never; @@ -967,7 +1171,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports retention */ + /** + * Run a retention report + * @description Calculates how groups of visitors return over time using the supplied retention settings, date range, and filters. + */ post: operations['runRetentionReport']; delete?: never; options?: never; @@ -984,7 +1191,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports revenue */ + /** + * Run a revenue report + * @description Returns revenue trends, totals with a comparison period, and breakdowns by country, region, referrer, and channel. + */ post: operations['runRevenueReport']; delete?: never; options?: never; @@ -1001,7 +1211,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update reports utm */ + /** + * Run a campaign report + * @description Returns traffic breakdowns for UTM source, medium, campaign, term, and content using the supplied date range and filters. + */ post: operations['runUtmReport']; delete?: never; options?: never; @@ -1016,7 +1229,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get scripts telemetry */ + /** + * Get the installation telemetry script + * @description Returns JavaScript that sends the application version through a telemetry pixel, or an inactive script when telemetry is disabled. + */ get: operations['getScriptsTelemetry']; put?: never; post?: never; @@ -1035,7 +1251,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update send */ + /** + * Send tracking data + * @description Collects a pageview, custom event, visitor identification, or performance payload and returns session information and a tracking cache token when accepted. + */ post: operations['send']; delete?: never; options?: never; @@ -1052,7 +1271,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update share */ + /** + * Create a share + * @description Creates a named share for a website, board, link, or pixel with parameters and an optional custom slug. + */ post: operations['createShare']; delete?: never; options?: never; @@ -1067,7 +1289,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get share slug */ + /** + * Open a share by its slug + * @description Resolves a public share slug and returns its resource references, parameters, and an access token scoped to the shared resources. + */ get: operations['getShareBySlug']; put?: never; post?: never; @@ -1084,12 +1309,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get share id share id */ + /** + * Get a share + * @description Returns a share's configuration by its ID after checking access to the shared resource. + */ get: operations['getShare']; put?: never; - /** Create or update share id share id */ + /** + * Update a share + * @description Updates the specified share's name, slug, and parameters. + */ post: operations['updateShare']; - /** Delete share id share id */ + /** + * Delete a share + * @description Deletes the specified share after checking permission to delete shares for its resource. + */ delete: operations['deleteShare']; options?: never; head?: never; @@ -1103,10 +1337,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams */ + /** + * List my teams + * @description Returns a paginated list of teams the current user belongs to, with sorting options. + */ get: operations['getTeams']; put?: never; - /** Create or update teams */ + /** + * Create a team + * @description Creates a team with an access code and an owner. Administrators can specify a different user as the owner. + */ post: operations['createTeam']; delete?: never; options?: never; @@ -1121,12 +1361,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id */ + /** + * Get a team + * @description Returns the specified team's details, including its members. + */ get: operations['getTeam']; put?: never; - /** Create or update teams team id */ + /** + * Update a team + * @description Updates the specified team's name or access code. + */ post: operations['updateTeam']; - /** Delete teams team id */ + /** + * Delete a team + * @description Deletes the specified team after checking the caller's permission to remove it. + */ delete: operations['deleteTeam']; options?: never; head?: never; @@ -1140,7 +1389,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id boards */ + /** + * List a team's boards + * @description Returns a paginated list of boards belonging to the specified team, with search and sorting options. + */ get: operations['getTeamBoards']; put?: never; post?: never; @@ -1157,7 +1409,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id links */ + /** + * List a team's links + * @description Returns a paginated list of tracked links belonging to the specified team, with search and sorting options. + */ get: operations['getTeamLinks']; put?: never; post?: never; @@ -1174,7 +1429,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id pixels */ + /** + * List a team's tracking pixels + * @description Returns a paginated list of tracking pixels belonging to the specified team, with search and sorting options. + */ get: operations['getTeamPixels']; put?: never; post?: never; @@ -1191,10 +1449,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id users */ + /** + * List team members + * @description Returns a paginated list of members of the specified team, including usernames and membership details. + */ get: operations['getTeamUsers']; put?: never; - /** Create or update teams team id users */ + /** + * Add a team member + * @description Adds an existing user to the specified team with the supplied team role. + */ post: operations['createTeamUser']; delete?: never; options?: never; @@ -1209,12 +1473,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id users user id */ + /** + * Get a team member + * @description Returns the specified user's membership details for a team. + */ get: operations['getTeamUser']; put?: never; - /** Create or update teams team id users user id */ + /** + * Change a team member's role + * @description Updates a user's role in the specified team, subject to the caller's role and permissions. + */ post: operations['updateTeamUser']; - /** Delete teams team id users user id */ + /** + * Remove a team member + * @description Removes a user's membership from the specified team, subject to team role and ownership restrictions. + */ delete: operations['deleteTeamUser']; options?: never; head?: never; @@ -1228,7 +1501,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get teams team id websites */ + /** + * List a team's websites + * @description Returns a paginated list of websites belonging to the specified team, with search and sorting options. + */ get: operations['getTeamWebsites']; put?: never; post?: never; @@ -1247,7 +1523,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update teams join */ + /** + * Join a team + * @description Adds the current user to a team as a member using the team's access code. + */ post: operations['joinTeam']; delete?: never; options?: never; @@ -1264,7 +1543,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update users */ + /** + * Create a user + * @description Creates a user account with the supplied username, password, and role. + */ post: operations['createUser']; delete?: never; options?: never; @@ -1279,12 +1561,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get users user id */ + /** + * Get a user + * @description Returns details for the specified user account when the caller has permission to view it. + */ get: operations['getUser']; put?: never; - /** Create or update users user id */ + /** + * Update a user + * @description Updates a user's password. Administrators can also change the username and role. + */ post: operations['updateUser']; - /** Delete users user id */ + /** + * Delete a user + * @description Deletes the specified user account. The current user cannot delete their own account through this operation. + */ delete: operations['deleteUser']; options?: never; head?: never; @@ -1298,7 +1589,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get users user id teams */ + /** + * List a user's teams + * @description Returns a paginated list of teams for the specified user. Available to that user and administrators. + */ get: operations['getUserTeams']; put?: never; post?: never; @@ -1315,7 +1609,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get users user id websites */ + /** + * List a user's websites + * @description Returns a paginated list of the specified user's websites, optionally including team access. Available to that user and administrators. + */ get: operations['getUserWebsites']; put?: never; post?: never; @@ -1334,11 +1631,14 @@ export interface paths { }; /** * List websites - * @description Returns websites owned by the authenticated user. + * @description Returns a paginated list of the current user's websites, optionally including websites accessible through team membership. */ get: operations['listWebsites']; put?: never; - /** Create a website */ + /** + * Create a website + * @description Creates a website with a name and domain, optionally assigning it to a team and creating a share. + */ post: operations['createWebsite']; delete?: never; options?: never; @@ -1353,12 +1653,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get a website */ + /** + * Get a website + * @description Returns the specified website's details and configuration. + */ get: operations['getWebsite']; put?: never; - /** Update a website */ + /** + * Update a website + * @description Updates a website's name, domain, sharing settings, or recording configuration. + */ post: operations['updateWebsite']; - /** Delete a website */ + /** + * Delete a website + * @description Deletes the specified website after checking the caller's permission to remove it. + */ delete: operations['deleteWebsite']; options?: never; head?: never; @@ -1373,7 +1682,7 @@ export interface paths { cookie?: never; }; /** - * Get current active visitors + * Get active website visitors * @description Returns the number of visitors active on the website in the last few minutes. */ get: operations['getWebsiteActive']; @@ -1392,10 +1701,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id annotations */ + /** + * List website annotations + * @description Returns a paginated list of dated notes for the website, optionally filtered by date range or search text. + */ get: operations['getWebsiteAnnotations']; put?: never; - /** Create or update websites website id annotations */ + /** + * Create a website annotation + * @description Adds a dated note to the website, optionally marking it as an all-day annotation. + */ post: operations['createWebsiteAnnotation']; delete?: never; options?: never; @@ -1410,12 +1725,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id annotations annotation id */ + /** + * Get a website annotation + * @description Returns the date, all-day setting, and note for a specific website annotation. + */ get: operations['getWebsiteAnnotation']; put?: never; - /** Create or update websites website id annotations annotation id */ + /** + * Update a website annotation + * @description Changes the date, all-day setting, and note for a website annotation. + */ post: operations['updateWebsiteAnnotation']; - /** Delete websites website id annotations annotation id */ + /** + * Delete a website annotation + * @description Deletes the specified dated note from the website. + */ delete: operations['deleteWebsiteAnnotation']; options?: never; head?: never; @@ -1429,7 +1753,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id daterange */ + /** + * Get the website's available date range + * @description Returns the earliest and latest recorded event dates for the website. + */ get: operations['getWebsiteDateRange']; put?: never; post?: never; @@ -1446,7 +1773,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data */ + /** + * List events with custom properties + * @description Returns a page of events in the selected date range, grouping each event's custom property records together. + */ get: operations['getEventData']; put?: never; post?: never; @@ -1463,7 +1793,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot */ + /** + * List event properties in table form + * @description Returns a page of occurrences of the specified event, with event details and property keys and values grouped into one row per occurrence. + */ get: operations['getEventDataPivot']; put?: never; post?: never; @@ -1480,7 +1813,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot array series */ + /** + * Get event array values over time + * @description Counts individual values in an array property for the specified event, grouped by value and time interval. + */ get: operations['getEventDataArraySeries']; put?: never; post?: never; @@ -1497,7 +1833,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot date series */ + /** + * Get the distribution of event date values + * @description Counts occurrences of dates stored in the specified event property, grouping by the property's date value within the selected event date range. + */ get: operations['getEventDataDateSeries']; put?: never; post?: never; @@ -1514,7 +1853,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot numeric series */ + /** + * Get numeric event properties over time + * @description Returns the sum, average, or count of a numeric property for the specified event, grouped by time interval. + */ get: operations['getEventDataNumericSeries']; put?: never; post?: never; @@ -1531,7 +1873,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot numeric stats */ + /** + * Get numeric event property statistics + * @description Returns the total, average, median, minimum, and maximum of the specified numeric event property for the selected date range and filters. + */ get: operations['getEventDataNumericStats']; put?: never; post?: never; @@ -1548,7 +1893,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data pivot property series */ + /** + * Get event property values over time + * @description Counts occurrences of string values in the specified event property, grouped by value and time interval. + */ get: operations['getEventDataPropertySeries']; put?: never; post?: never; @@ -1565,7 +1913,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data event id */ + /** + * Get an event's custom properties + * @description Returns the custom property records, data types, and values attached to a specific event. + */ get: operations['getEventDataById']; put?: never; post?: never; @@ -1582,7 +1933,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data events */ + /** + * Summarize properties by event + * @description Returns property names, types, and counts grouped by event name. When an event is specified, also groups by property value. + */ get: operations['getEventDataEvents']; put?: never; post?: never; @@ -1599,7 +1953,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data fields */ + /** + * List event property fields + * @description Returns property names, data types, and counts for the selected date range, optionally restricted to an event name. + */ get: operations['getEventDataFields']; put?: never; post?: never; @@ -1616,7 +1973,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data properties */ + /** + * List event property usage + * @description Returns event names and their custom property names, data types, and record counts for the selected date range and filters. + */ get: operations['getEventDataProperties']; put?: never; post?: never; @@ -1633,7 +1993,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data stats */ + /** + * Get event property totals + * @description Returns counts of events with custom data, distinct property names, and property records for the selected date range and filters. + */ get: operations['getEventDataStats']; put?: never; post?: never; @@ -1650,7 +2013,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id event data values */ + /** + * List event property values + * @description Returns values and their occurrence counts for a custom event property, optionally restricted by event name and data type. + */ get: operations['getEventDataValues']; put?: never; post?: never; @@ -1669,7 +2035,7 @@ export interface paths { }; /** * List tracked events - * @description Returns a page of pageviews and custom events in the date range, newest first. Filter with `event` for a specific event name or `search` for free text. + * @description Returns a page of pageviews and custom events in the date range, newest first. Supports filtering by event name and searching event details. */ get: operations['getWebsiteEvents']; put?: never; @@ -1687,7 +2053,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id events series */ + /** + * Get custom event counts over time + * @description Returns counts grouped by event name and time interval, optionally limited to the most frequent event names. + */ get: operations['getWebsiteEventSeries']; put?: never; post?: never; @@ -1704,7 +2073,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id events stats */ + /** + * Get website event statistics + * @description Returns website event totals for the selected date range and filters, including totals for the comparison period. + */ get: operations['getWebsiteEventStats']; put?: never; post?: never; @@ -1721,7 +2093,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id export */ + /** + * Export website analytics + * @description Returns a base64-encoded ZIP archive containing CSV exports of events, pages, referrers, browsers, operating systems, devices, and countries. + */ get: operations['exportWebsite']; put?: never; post?: never; @@ -1739,8 +2114,8 @@ export interface paths { cookie?: never; }; /** - * Get ranked metrics for a dimension - * @description Returns the top values for one dimension (`type`), such as pages, referrers, countries, browsers, UTM parameters or events, ordered by count. Page-type dimensions count views/events; visitor dimensions count unique visitors. + * Get ranked website metrics + * @description Returns the most frequent values for a dimension such as pages, referrers, countries, browsers, campaigns, or events. Counts pageviews or events for activity dimensions and unique visitors for visitor dimensions. */ get: operations['getWebsiteMetrics']; put?: never; @@ -1758,7 +2133,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id metrics expanded */ + /** + * Get detailed website metrics + * @description Returns additional analytics for the selected page, event, visitor, or channel dimension, using the supplied date range and filters. + */ get: operations['getWebsiteExpandedMetrics']; put?: never; post?: never; @@ -1776,8 +2154,8 @@ export interface paths { cookie?: never; }; /** - * Get pageview and session time series - * @description Returns pageviews and sessions bucketed by `unit` (minute, hour, day, month, year) in the given `timezone`. When `compare` is set the comparison period is included. + * Get pageviews and sessions over time + * @description Returns pageviews and sessions grouped by the requested time interval and timezone, including a comparison period when requested. */ get: operations['getWebsitePageviews']; put?: never; @@ -1795,7 +2173,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id recorder */ + /** + * Get website recording settings + * @description Returns public replay and heatmap settings, including sampling, masking, and duration limits. Returns disabled status when recording is unavailable. + */ get: operations['getWebsiteRecorderConfig']; put?: never; post?: never; @@ -1812,7 +2193,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id replays */ + /** + * List website session replays + * @description Returns a paginated list of recorded sessions for the website, applying date, replay, and search filters. + */ get: operations['getWebsiteReplays']; put?: never; post?: never; @@ -1829,7 +2213,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id replays replay id */ + /** + * Get a session replay recording + * @description Returns the merged recording events, session details, and event and chunk counts for a replay, with optional stopping points by timestamp, chunk, or event index. + */ get: operations['getWebsiteReplay']; put?: never; post?: never; @@ -1846,7 +2233,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id replays saved */ + /** + * List saved session replays + * @description Returns a paginated, searchable list of replays saved for the website. + */ get: operations['getWebsiteSavedReplays']; put?: never; post?: never; @@ -1863,10 +2253,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id replays saved replay id */ + /** + * Check whether a replay is saved + * @description Returns whether the specified replay is in the website's saved replays. + */ get: operations['getWebsiteReplaySaved']; put?: never; - /** Create or update websites website id replays saved replay id */ + /** + * Save or unsave a session replay + * @description Adds a replay to the website's saved replays with an optional name, or removes it when isSaved is false. + */ post: operations['saveWebsiteReplay']; delete?: never; options?: never; @@ -1881,7 +2277,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id reports */ + /** + * List a website's saved reports + * @description Returns a paginated list of saved report definitions for the website, optionally filtered by report type. + */ get: operations['getWebsiteReports']; put?: never; post?: never; @@ -1900,7 +2299,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update websites website id reset */ + /** + * Reset website analytics + * @description Clears the website's collected analytics data while keeping the website configuration. + */ post: operations['resetWebsite']; delete?: never; options?: never; @@ -1915,7 +2317,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id revenue chart */ + /** + * Get website revenue over time + * @description Returns revenue chart data for the selected currency, date range, and website filters. + */ get: operations['getWebsiteRevenueChart']; put?: never; post?: never; @@ -1932,7 +2337,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id revenue metrics */ + /** + * Get website revenue by dimension + * @description Returns revenue grouped by the requested dimension, such as country or referrer, for the selected currency and date range. + */ get: operations['getWebsiteRevenueMetrics']; put?: never; post?: never; @@ -1949,7 +2357,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id revenue sessions */ + /** + * List sessions with revenue + * @description Returns a paginated list of sessions with revenue in the selected currency and date range, applying website and search filters. + */ get: operations['getWebsiteRevenueSessions']; put?: never; post?: never; @@ -1966,7 +2377,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id revenue stats */ + /** + * Get website revenue totals + * @description Returns revenue summary statistics for the selected currency and date range, including totals for the comparison period. + */ get: operations['getWebsiteRevenueStats']; put?: never; post?: never; @@ -1983,10 +2397,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id segments */ + /** + * List website segments and cohorts + * @description Returns saved segments or cohorts for the website, filtered by the requested type and search text. + */ get: operations['getWebsiteSegments']; put?: never; - /** Create or update websites website id segments */ + /** + * Create a website segment or cohort + * @description Saves a named segment or cohort with its type and filter parameters for the website. + */ post: operations['createWebsiteSegment']; delete?: never; options?: never; @@ -2001,12 +2421,21 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id segments segment id */ + /** + * Get a website segment or cohort + * @description Returns a saved segment or cohort and its filter parameters for the website. + */ get: operations['getWebsiteSegment']; put?: never; - /** Create or update websites website id segments segment id */ + /** + * Update a website segment or cohort + * @description Updates a saved segment or cohort's type, name, and filter parameters. + */ post: operations['updateWebsiteSegment']; - /** Delete websites website id segments segment id */ + /** + * Delete a website segment or cohort + * @description Deletes the specified saved segment or cohort from the website. + */ delete: operations['deleteWebsiteSegment']; options?: never; head?: never; @@ -2020,7 +2449,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data pivot */ + /** + * List session properties in table form + * @description Returns a page of sessions matching the selected property and filters, with the latest property keys and values grouped into one row per session. + */ get: operations['getSessionDataPivot']; put?: never; post?: never; @@ -2037,7 +2469,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data array series */ + /** + * Get session array values over time + * @description Counts distinct sessions for individual values in an array property, grouped by value and time interval. + */ get: operations['getSessionDataArraySeries']; put?: never; post?: never; @@ -2054,7 +2489,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data date series */ + /** + * Get the distribution of session date values + * @description Counts distinct sessions by dates stored in the specified custom property, using the selected date range and filters. + */ get: operations['getSessionDataDateSeries']; put?: never; post?: never; @@ -2071,7 +2509,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data numeric series */ + /** + * Get numeric session properties over time + * @description Returns the sum, average, or count of a numeric session property, grouped by time interval for the selected date range and filters. + */ get: operations['getSessionDataNumericSeries']; put?: never; post?: never; @@ -2088,7 +2529,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data numeric stats */ + /** + * Get numeric session property statistics + * @description Returns the total, average, median, minimum, and maximum of the specified numeric session property for the selected date range and filters. + */ get: operations['getSessionDataNumericStats']; put?: never; post?: never; @@ -2105,7 +2549,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data properties */ + /** + * List session property usage + * @description Returns custom session property names, data types, and distinct session counts, optionally restricted to sessions with a selected property. + */ get: operations['getSessionDataProperties']; put?: never; post?: never; @@ -2122,7 +2569,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data property series */ + /** + * Get session property values over time + * @description Counts distinct sessions for string values in a custom property, grouped by value and time interval. + */ get: operations['getSessionDataPropertySeries']; put?: never; post?: never; @@ -2139,7 +2589,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data stats */ + /** + * Get activity by session property + * @description Returns session, visit, pageview, event, and total activity counts grouped by values of the specified session property. + */ get: operations['getSessionDataStats']; put?: never; post?: never; @@ -2156,7 +2609,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id session data values */ + /** + * List session property values + * @description Returns custom session property values and their occurrence counts, optionally filtered by property name and data type. + */ get: operations['getSessionDataValues']; put?: never; post?: never; @@ -2175,7 +2631,7 @@ export interface paths { }; /** * List visitor sessions - * @description Returns a page of visitor sessions in the date range, newest first. `search` matches distinct ID, city, browser, OS or device. + * @description Returns a page of visitor sessions in the date range, newest first. Search matches distinct ID, city, browser, operating system, or device. */ get: operations['getWebsiteSessions']; put?: never; @@ -2193,11 +2649,17 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions session id */ + /** + * Get a visitor session + * @description Returns details for a website session, including linked visitor identities and whether session deletion is available to the caller. + */ get: operations['getWebsiteSession']; put?: never; post?: never; - /** Delete websites website id sessions session id */ + /** + * Delete a visitor session + * @description Deletes the specified session and its associated analytics data. Available on installations using only a relational database. + */ delete: operations['deleteWebsiteSession']; options?: never; head?: never; @@ -2211,7 +2673,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions session id activity */ + /** + * Get a visitor's session activity + * @description Returns activity for the specified session and sessions linked by visitor identity, using the requested date range and optional distinct ID. + */ get: operations['getWebsiteSessionActivity']; put?: never; post?: never; @@ -2228,7 +2693,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions session id properties */ + /** + * Get a session's custom properties + * @description Returns custom property records, data types, and values for the specified website session. + */ get: operations['getWebsiteSessionProperties']; put?: never; post?: never; @@ -2245,7 +2713,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions session id replays */ + /** + * List a visitor's session replays + * @description Returns a paginated, searchable list of recordings for the specified website session. + */ get: operations['getWebsiteSessionReplays']; put?: never; post?: never; @@ -2262,7 +2733,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions stats */ + /** + * Get visitor session statistics + * @description Returns aggregate session metrics for the website over the selected date range and filters. + */ get: operations['getWebsiteSessionStats']; put?: never; post?: never; @@ -2279,7 +2753,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id sessions weekly */ + /** + * Get traffic by weekday and hour + * @description Returns distinct visitor counts grouped by day of the week and hour in the selected timezone and date range. + */ get: operations['getWebsiteSessionsWeekly']; put?: never; post?: never; @@ -2296,10 +2773,16 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id shares */ + /** + * List shares for a website + * @description Returns a paginated list of shares for the specified website. + */ get: operations['getWebsiteShares']; put?: never; - /** Create or update websites website id shares */ + /** + * Create a share for a website + * @description Creates a named share for the specified website with optional parameters. + */ post: operations['createWebsiteShare']; delete?: never; options?: never; @@ -2315,8 +2798,8 @@ export interface paths { cookie?: never; }; /** - * Get website summary stats - * @description Returns pageviews, unique visitors, visits, bounces and total time on site for the date range, plus the same totals for the comparison period (`compare`: prev or yoy). + * Get website summary statistics + * @description Returns pageviews, unique visitors, visits, bounces, and total time on site for the selected date range and comparison period. */ get: operations['getWebsiteStats']; put?: never; @@ -2336,7 +2819,10 @@ export interface paths { }; get?: never; put?: never; - /** Create or update websites website id transfer */ + /** + * Transfer website ownership + * @description Transfers the specified website to another user or team after checking permission for the destination. + */ post: operations['transferWebsite']; delete?: never; options?: never; @@ -2351,7 +2837,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites website id values */ + /** + * List website filter values + * @description Returns available values for a website filter, including saved segments or cohorts when requested, to populate filter choices. + */ get: operations['getWebsiteValues']; put?: never; post?: never; @@ -2368,7 +2857,10 @@ export interface paths { path?: never; cookie?: never; }; - /** Get websites charts */ + /** + * Get visitor charts for websites + * @description Returns visitor totals and chart data for the requested websites the caller can view, within the selected date range. + */ get: operations['getWebsitesCharts']; put?: never; post?: never; diff --git a/public/openapi.json b/public/openapi.json index f57a3f22c..c3e7e943d 100644 --- a/public/openapi.json +++ b/public/openapi.json @@ -1620,6 +1620,7 @@ "paths": { "/api/2fa/disable": { "post": { + "description": "Disables two-factor authentication for the current user after verifying their password and authenticator code. Rejected when an administrator or team requires it.", "operationId": "disableTwoFactor", "requestBody": { "content": { @@ -1822,7 +1823,7 @@ "bearerAuth": [] } ], - "summary": "Create or update 2fa disable", + "summary": "Disable two-factor authentication", "tags": [ "Two-factor authentication" ], @@ -1833,6 +1834,7 @@ }, "/api/2fa/setup/cancel": { "post": { + "description": "Deletes the current user's pending setup without changing an already enabled authenticator.", "operationId": "cancelTwoFactorSetup", "responses": { "200": { @@ -1893,7 +1895,7 @@ "bearerAuth": [] } ], - "summary": "Create or update 2fa setup cancel", + "summary": "Cancel two-factor authentication setup", "tags": [ "Two-factor authentication" ], @@ -1904,6 +1906,7 @@ }, "/api/2fa/setup/confirm": { "post": { + "description": "Verifies an authenticator code, enables two-factor authentication, and returns a new set of backup codes.", "operationId": "confirmTwoFactorSetup", "requestBody": { "content": { @@ -2088,7 +2091,7 @@ "bearerAuth": [] } ], - "summary": "Create or update 2fa setup confirm", + "summary": "Confirm two-factor authentication setup", "tags": [ "Two-factor authentication" ], @@ -2099,6 +2102,7 @@ }, "/api/2fa/setup/initiate": { "post": { + "description": "Starts or replaces the current user's pending setup and returns a QR code and manual setup key for an authenticator app.", "operationId": "initiateTwoFactorSetup", "responses": { "200": { @@ -2197,7 +2201,7 @@ "bearerAuth": [] } ], - "summary": "Create or update 2fa setup initiate", + "summary": "Set up two-factor authentication", "tags": [ "Two-factor authentication" ], @@ -2208,6 +2212,7 @@ }, "/api/2fa/status": { "get": { + "description": "Returns whether two-factor authentication is enabled, configured, or required for the current user, including the reason it is required.", "operationId": "getTwoFactorStatus", "responses": { "200": { @@ -2298,7 +2303,7 @@ "bearerAuth": [] } ], - "summary": "Get 2fa status", + "summary": "Get two-factor authentication status", "tags": [ "Two-factor authentication" ], @@ -2309,6 +2314,7 @@ }, "/api/2fa/verify": { "post": { + "description": "Exchanges a partial sign-in token and a valid authenticator or backup code for a full authentication token and user details.", "operationId": "verifyTwoFactor", "requestBody": { "content": { @@ -2554,7 +2560,7 @@ } }, "security": [], - "summary": "Create or update 2fa verify", + "summary": "Complete two-factor sign-in", "tags": [ "Two-factor authentication" ], @@ -2565,6 +2571,7 @@ }, "/api/admin/2fa/global": { "post": { + "description": "Enables or disables the installation-wide requirement for users to set up two-factor authentication.", "operationId": "postAdmin2faGlobal", "requestBody": { "content": { @@ -2679,7 +2686,7 @@ "bearerAuth": [] } ], - "summary": "Create or update admin 2fa global", + "summary": "Set the two-factor requirement for everyone", "tags": [ "Administration" ], @@ -2690,6 +2697,7 @@ }, "/api/admin/teams": { "get": { + "description": "Returns a paginated list of teams with member details and website and member counts for administration.", "operationId": "getAdminTeams", "parameters": [ { @@ -2877,7 +2885,7 @@ "shareToken": [] } ], - "summary": "Get admin teams", + "summary": "List all teams", "tags": [ "Administration" ], @@ -2888,6 +2896,7 @@ }, "/api/admin/teams/{teamId}/2fa": { "post": { + "description": "Enables or disables the requirement for members of the specified team to use two-factor authentication.", "operationId": "postAdminTeamsTeamId2fa", "parameters": [ { @@ -3016,7 +3025,7 @@ "bearerAuth": [] } ], - "summary": "Create or update admin teams team id 2fa", + "summary": "Set a team's two-factor requirement", "tags": [ "Administration" ], @@ -3027,6 +3036,7 @@ }, "/api/admin/users": { "get": { + "description": "Returns a paginated list of users and their website counts for administration, excluding passwords.", "operationId": "getAdminUsers", "parameters": [ { @@ -3211,7 +3221,7 @@ "shareToken": [] } ], - "summary": "Get admin users", + "summary": "List all users", "tags": [ "Administration" ], @@ -3222,6 +3232,7 @@ }, "/api/admin/users/{userId}/2fa": { "delete": { + "description": "Removes the specified user's authenticator setup, backup codes, used-code history, and failed-attempt limits so they can set up authentication again.", "operationId": "deleteAdminUsersUserId2fa", "parameters": [ { @@ -3312,7 +3323,7 @@ "bearerAuth": [] } ], - "summary": "Delete admin users user id 2fa", + "summary": "Reset a user's two-factor authentication", "tags": [ "Administration" ], @@ -3321,6 +3332,7 @@ "x-umami-source": "src/app/api/admin/users/[userId]/2fa/contract.generated.ts" }, "get": { + "description": "Returns whether two-factor authentication is enabled for the specified user.", "operationId": "getAdminUsersUserId2fa", "parameters": [ { @@ -3391,7 +3403,7 @@ "bearerAuth": [] } ], - "summary": "Get admin users user id 2fa", + "summary": "Get a user's two-factor status", "tags": [ "Administration" ], @@ -3400,6 +3412,7 @@ "x-umami-source": "src/app/api/admin/users/[userId]/2fa/contract.generated.ts" }, "post": { + "description": "Enables or disables the requirement for the specified user to set up two-factor authentication.", "operationId": "postAdminUsersUserId2fa", "parameters": [ { @@ -3528,7 +3541,7 @@ "bearerAuth": [] } ], - "summary": "Create or update admin users user id 2fa", + "summary": "Set a user's two-factor requirement", "tags": [ "Administration" ], @@ -3539,6 +3552,7 @@ }, "/api/admin/websites": { "get": { + "description": "Returns a paginated, searchable list of websites across users and teams for administration.", "operationId": "getAdminWebsites", "parameters": [ { @@ -3870,7 +3884,7 @@ "shareToken": [] } ], - "summary": "Get admin websites", + "summary": "List all websites", "tags": [ "Administration" ], @@ -3881,7 +3895,7 @@ }, "/api/auth/login": { "post": { - "description": "Authenticates a self-hosted Umami user. Users with two-factor authentication receive a short-lived partial token instead of a full bearer token.", + "description": "Authenticates a user with a username and password. Users with two-factor authentication receive a short-lived partial token to complete sign-in.", "operationId": "login", "requestBody": { "content": { @@ -3968,6 +3982,7 @@ }, "/api/auth/logout": { "post": { + "description": "Ends the current authentication session by removing its stored token when Redis-backed sessions are enabled.", "operationId": "logout", "responses": { "200": { @@ -4011,7 +4026,7 @@ "bearerAuth": [] } ], - "summary": "Create or update auth logout", + "summary": "Log out", "tags": [ "Authentication" ], @@ -4022,6 +4037,7 @@ }, "/api/auth/sso": { "post": { + "description": "Returns the authenticated user and a new token valid for 24 hours. Requires Redis-backed authentication.", "operationId": "sso", "responses": { "200": { @@ -4084,7 +4100,7 @@ "bearerAuth": [] } ], - "summary": "Create or update auth sso", + "summary": "Create a single sign-on token", "tags": [ "Authentication" ], @@ -4095,6 +4111,7 @@ }, "/api/auth/subscription": { "get": { + "description": "Returns subscription and feature availability for the current user or a specified team the user can access.", "operationId": "getSubscription", "parameters": [ { @@ -4217,7 +4234,7 @@ "shareToken": [] } ], - "summary": "Get auth subscription", + "summary": "Get subscription details", "tags": [ "Authentication" ], @@ -4228,6 +4245,7 @@ }, "/api/auth/verify": { "post": { + "description": "Validates the current authentication credentials and returns the user and their team memberships.", "operationId": "verify", "responses": { "200": { @@ -4269,7 +4287,7 @@ "bearerAuth": [] } ], - "summary": "Create or update auth verify", + "summary": "Verify the current sign-in", "tags": [ "Authentication" ], @@ -4280,6 +4298,7 @@ }, "/api/batch": { "post": { + "description": "Processes up to 500 tracking payloads and returns processed and failed counts, individual error details, and a tracking cache token.", "operationId": "batch", "requestBody": { "content": { @@ -4364,7 +4383,7 @@ } }, "security": [], - "summary": "Create or update batch", + "summary": "Send a batch of tracking requests", "tags": [ "Collection" ], @@ -4375,6 +4394,7 @@ }, "/api/boards": { "get": { + "description": "Returns a paginated list of the current user's boards, with search and sorting options.", "operationId": "getBoards", "parameters": [ { @@ -4617,7 +4637,7 @@ "bearerAuth": [] } ], - "summary": "Get boards", + "summary": "List my boards", "tags": [ "Boards" ], @@ -4626,6 +4646,7 @@ "x-umami-source": "src/app/api/boards/contract.generated.ts" }, "post": { + "description": "Creates a board with a name, type, and configuration, optionally assigned to a team. Validates access to its referenced resources and reports.", "operationId": "createBoard", "requestBody": { "content": { @@ -4854,7 +4875,7 @@ "shareToken": [] } ], - "summary": "Create or update boards", + "summary": "Create a board", "tags": [ "Boards" ], @@ -4865,6 +4886,7 @@ }, "/api/boards/{boardId}": { "delete": { + "description": "Deletes the specified board after checking the caller's permission to remove it.", "operationId": "deleteBoard", "parameters": [ { @@ -4918,7 +4940,7 @@ "bearerAuth": [] } ], - "summary": "Delete boards board id", + "summary": "Delete a board", "tags": [ "Boards" ], @@ -4927,6 +4949,7 @@ "x-umami-source": "src/app/api/boards/[boardId]/contract.generated.ts" }, "get": { + "description": "Returns the specified board and its configuration.", "operationId": "getBoard", "parameters": [ { @@ -5074,7 +5097,7 @@ "shareToken": [] } ], - "summary": "Get boards board id", + "summary": "Get a board", "tags": [ "Boards" ], @@ -5083,6 +5106,7 @@ "x-umami-source": "src/app/api/boards/[boardId]/contract.generated.ts" }, "post": { + "description": "Updates a board's name, description, or configuration and validates the resources and reports it references.", "operationId": "updateBoard", "parameters": [ { @@ -5299,7 +5323,7 @@ "shareToken": [] } ], - "summary": "Create or update boards board id", + "summary": "Update a board", "tags": [ "Boards" ], @@ -5310,6 +5334,7 @@ }, "/api/boards/{boardId}/clone": { "post": { + "description": "Creates a copy of a board with optional changes to its name, description, and configuration. Removes invalid report references from the copy.", "operationId": "cloneBoard", "parameters": [ { @@ -5498,7 +5523,7 @@ "shareToken": [] } ], - "summary": "Create or update boards board id clone", + "summary": "Clone a board", "tags": [ "Boards" ], @@ -5509,6 +5534,7 @@ }, "/api/boards/{boardId}/shares": { "get": { + "description": "Returns a paginated list of shares for the specified board.", "operationId": "getBoardShares", "parameters": [ { @@ -5938,7 +5964,7 @@ "shareToken": [] } ], - "summary": "Get boards board id shares", + "summary": "List shares for a board", "tags": [ "Boards" ], @@ -5947,6 +5973,7 @@ "x-umami-source": "src/app/api/boards/[boardId]/shares/contract.generated.ts" }, "post": { + "description": "Creates a named share for the specified board with optional parameters.", "operationId": "createBoardShare", "parameters": [ { @@ -6126,7 +6153,7 @@ "bearerAuth": [] } ], - "summary": "Create or update boards board id shares", + "summary": "Create a share for a board", "tags": [ "Boards" ], @@ -6137,6 +6164,7 @@ }, "/api/config": { "get": { + "description": "Returns public application settings, including deployment mode, feature availability, and tracker and resource URLs.", "operationId": "getConfig", "responses": { "200": { @@ -6191,7 +6219,7 @@ } }, "security": [], - "summary": "Get config", + "summary": "Get application configuration", "tags": [ "Configuration" ], @@ -6202,6 +6230,7 @@ }, "/api/dashboard": { "get": { + "description": "Returns the current user's personal dashboard board and its configuration.", "operationId": "getDashboard", "responses": { "200": { @@ -6335,7 +6364,7 @@ "bearerAuth": [] } ], - "summary": "Get dashboard", + "summary": "Get my dashboard", "tags": [ "Dashboard" ], @@ -6344,6 +6373,7 @@ "x-umami-source": "src/app/api/dashboard/contract.generated.ts" }, "post": { + "description": "Creates or updates the current user's personal dashboard with the supplied name, description, and configuration.", "operationId": "postDashboard", "requestBody": { "content": { @@ -6518,7 +6548,7 @@ "bearerAuth": [] } ], - "summary": "Create or update dashboard", + "summary": "Save my dashboard", "tags": [ "Dashboard" ], @@ -6529,6 +6559,7 @@ }, "/api/heartbeat": { "get": { + "description": "Returns a simple success response to confirm that the application can serve requests.", "operationId": "getHeartbeat", "responses": { "200": { @@ -6551,7 +6582,7 @@ } }, "security": [], - "summary": "Get heartbeat", + "summary": "Check application availability", "tags": [ "System" ], @@ -6562,6 +6593,7 @@ }, "/api/links": { "get": { + "description": "Returns a paginated list of the current user's tracked links, with search and sorting options.", "operationId": "getLinks", "parameters": [ { @@ -6749,7 +6781,7 @@ "bearerAuth": [] } ], - "summary": "Get links", + "summary": "List my links", "tags": [ "Links" ], @@ -6758,6 +6790,7 @@ "x-umami-source": "src/app/api/links/contract.generated.ts" }, "post": { + "description": "Creates a tracked link with a name, destination URL, and slug, optionally assigned to a team.", "operationId": "createLink", "requestBody": { "content": { @@ -6904,7 +6937,7 @@ "bearerAuth": [] } ], - "summary": "Create or update links", + "summary": "Create a tracked link", "tags": [ "Links" ], @@ -6915,6 +6948,7 @@ }, "/api/links/{linkId}": { "delete": { + "description": "Deletes the specified tracked link after checking the caller's permission to remove it.", "operationId": "deleteLink", "parameters": [ { @@ -6968,7 +7002,7 @@ "bearerAuth": [] } ], - "summary": "Delete links link id", + "summary": "Delete a tracked link", "tags": [ "Links" ], @@ -6977,6 +7011,7 @@ "x-umami-source": "src/app/api/links/[linkId]/contract.generated.ts" }, "get": { + "description": "Returns the specified tracked link, including its destination URL and slug.", "operationId": "getLink", "parameters": [ { @@ -7069,7 +7104,7 @@ "shareToken": [] } ], - "summary": "Get links link id", + "summary": "Get a tracked link", "tags": [ "Links" ], @@ -7078,6 +7113,7 @@ "x-umami-source": "src/app/api/links/[linkId]/contract.generated.ts" }, "post": { + "description": "Updates a tracked link's name, destination URL, or slug.", "operationId": "updateLink", "parameters": [ { @@ -7225,7 +7261,7 @@ "bearerAuth": [] } ], - "summary": "Create or update links link id", + "summary": "Update a tracked link", "tags": [ "Links" ], @@ -7236,6 +7272,7 @@ }, "/api/links/{linkId}/shares": { "get": { + "description": "Returns a paginated list of shares for the specified link.", "operationId": "getLinkShares", "parameters": [ { @@ -7665,7 +7702,7 @@ "shareToken": [] } ], - "summary": "Get links link id shares", + "summary": "List shares for a link", "tags": [ "Links" ], @@ -7674,6 +7711,7 @@ "x-umami-source": "src/app/api/links/[linkId]/shares/contract.generated.ts" }, "post": { + "description": "Creates a named share for the specified link with optional parameters.", "operationId": "createLinkShare", "parameters": [ { @@ -7853,7 +7891,7 @@ "bearerAuth": [] } ], - "summary": "Create or update links link id shares", + "summary": "Create a share for a link", "tags": [ "Links" ], @@ -7864,6 +7902,7 @@ }, "/api/links/charts": { "get": { + "description": "Returns visitor totals and chart data for the requested links the caller can view, within the selected date range.", "operationId": "getLinksCharts", "parameters": [ { @@ -7981,7 +8020,7 @@ "shareToken": [] } ], - "summary": "Get links charts", + "summary": "Get visitor charts for links", "tags": [ "Links" ], @@ -7992,6 +8031,7 @@ }, "/api/me": { "get": { + "description": "Returns the current authentication context, including the authenticated user or share credentials.", "operationId": "getMe", "responses": { "200": { @@ -8181,7 +8221,7 @@ ] } ], - "summary": "Get me", + "summary": "Get my authentication details", "tags": [ "Account" ], @@ -8193,6 +8233,7 @@ }, "/api/me/api-keys": { "get": { + "description": "Returns metadata for the current user's API keys. Available on self-hosted installations.", "operationId": "getMyApiKeys", "responses": { "200": { @@ -8274,7 +8315,7 @@ "bearerAuth": [] } ], - "summary": "Get me api keys", + "summary": "List my API keys", "tags": [ "Account" ], @@ -8283,6 +8324,7 @@ "x-umami-source": "src/app/api/me/api-keys/contract.generated.ts" }, "post": { + "description": "Creates a named API key for the current user and returns its secret value. Available on self-hosted installations.", "operationId": "createMyApiKey", "requestBody": { "content": { @@ -8396,7 +8438,7 @@ "bearerAuth": [] } ], - "summary": "Create or update me api keys", + "summary": "Create an API key", "tags": [ "Account" ], @@ -8407,6 +8449,7 @@ }, "/api/me/api-keys/{keyId}": { "delete": { + "description": "Deletes an API key belonging to the current user, revoking its access. Available on self-hosted installations.", "operationId": "deleteMyApiKey", "parameters": [ { @@ -8477,7 +8520,7 @@ "bearerAuth": [] } ], - "summary": "Delete me api keys key id", + "summary": "Delete an API key", "tags": [ "Account" ], @@ -8488,6 +8531,7 @@ }, "/api/me/password": { "post": { + "description": "Verifies the current password and replaces it with the supplied new password.", "operationId": "updateMyPassword", "requestBody": { "content": { @@ -8584,7 +8628,7 @@ "bearerAuth": [] } ], - "summary": "Create or update me password", + "summary": "Change my password", "tags": [ "Account" ], @@ -8595,6 +8639,7 @@ }, "/api/me/teams": { "get": { + "description": "Returns a paginated list of teams the current user belongs to, with sorting options.", "operationId": "getMyTeams", "parameters": [ { @@ -8770,7 +8815,7 @@ "bearerAuth": [] } ], - "summary": "Get me teams", + "summary": "List my team memberships", "tags": [ "Account" ], @@ -8781,6 +8826,7 @@ }, "/api/me/websites": { "get": { + "description": "Returns a paginated list of the current user's websites, optionally including websites accessible through team membership.", "operationId": "getMyWebsites", "parameters": [ { @@ -9108,7 +9154,7 @@ "bearerAuth": [] } ], - "summary": "Get me websites", + "summary": "List my websites", "tags": [ "Account" ], @@ -9119,7 +9165,7 @@ }, "/api/oauth/authorize": { "get": { - "description": "Validates an OAuth 2.1 authorization request and returns the client and scopes for the consent screen. Requires an interactive user session.", + "description": "Validates an OAuth authorization request and returns the client and requested permissions for the consent screen. Requires an interactive user session.", "operationId": "describeOAuthAuthorization", "parameters": [ { @@ -9231,7 +9277,7 @@ "bearerAuth": [] } ], - "summary": "Describe a pending OAuth authorization request", + "summary": "Get OAuth authorization request details", "tags": [ "OAuth" ], @@ -9240,7 +9286,7 @@ "x-umami-source": "src/app/api/oauth/authorize/contract.ts" }, "post": { - "description": "Records the user decision. On approval an authorization code is issued and the redirect URL (with code, state and iss) is returned.", + "description": "Records the user's consent decision and returns a redirect URL. Approval includes an authorization code, the request state, and the issuer.", "operationId": "decideOAuthAuthorization", "requestBody": { "content": { @@ -9303,7 +9349,7 @@ "bearerAuth": [] } ], - "summary": "Approve or deny an OAuth authorization request", + "summary": "Approve or deny OAuth access", "tags": [ "OAuth" ], @@ -9314,7 +9360,7 @@ }, "/api/oauth/register": { "post": { - "description": "RFC 7591 compatibility endpoint for MCP clients without Client ID Metadata Document support. Registers a public client. Prefer Client ID Metadata Documents (https URL client_id).", + "description": "Registers a public OAuth client for clients that do not support Client ID Metadata Documents. Clients that support them should use an HTTPS metadata URL as their client ID.", "operationId": "oauthRegisterClient", "requestBody": { "content": { @@ -9349,7 +9395,7 @@ } }, "security": [], - "summary": "Register an OAuth client (dynamic client registration)", + "summary": "Register an OAuth client", "tags": [ "OAuth" ], @@ -9360,7 +9406,7 @@ }, "/api/oauth/revoke": { "post": { - "description": "RFC 7009 revocation endpoint. Revokes the given refresh token; unknown tokens are accepted silently.", + "description": "Revokes the supplied refresh token. Unknown tokens are accepted without revealing whether they existed.", "operationId": "oauthRevoke", "requestBody": { "content": { @@ -9413,7 +9459,7 @@ }, "/api/oauth/token": { "post": { - "description": "Exchanges an authorization code (with PKCE code_verifier) or a refresh token for an access token. Accepts application/x-www-form-urlencoded or JSON. Refresh tokens are rotated on every use.", + "description": "Exchanges an authorization code and PKCE verifier, or a refresh token, for an access token. Accepts form-encoded or JSON requests and rotates refresh tokens on use.", "operationId": "oauthToken", "requestBody": { "content": { @@ -9463,7 +9509,7 @@ } }, "security": [], - "summary": "OAuth 2.1 token endpoint", + "summary": "Get or refresh an OAuth access token", "tags": [ "OAuth" ], @@ -9474,6 +9520,7 @@ }, "/api/pixels": { "get": { + "description": "Returns a paginated list of the current user's tracking pixels, with search and sorting options.", "operationId": "getPixels", "parameters": [ { @@ -9657,7 +9704,7 @@ "bearerAuth": [] } ], - "summary": "Get pixels", + "summary": "List my tracking pixels", "tags": [ "Pixels" ], @@ -9666,6 +9713,7 @@ "x-umami-source": "src/app/api/pixels/contract.generated.ts" }, "post": { + "description": "Creates a tracking pixel with a name and slug, optionally assigned to a team.", "operationId": "createPixel", "requestBody": { "content": { @@ -9803,7 +9851,7 @@ "bearerAuth": [] } ], - "summary": "Create or update pixels", + "summary": "Create a tracking pixel", "tags": [ "Pixels" ], @@ -9814,6 +9862,7 @@ }, "/api/pixels/{pixelId}": { "delete": { + "description": "Deletes the specified tracking pixel after checking the caller's permission to remove it.", "operationId": "deletePixel", "parameters": [ { @@ -9867,7 +9916,7 @@ "bearerAuth": [] } ], - "summary": "Delete pixels pixel id", + "summary": "Delete a tracking pixel", "tags": [ "Pixels" ], @@ -9876,6 +9925,7 @@ "x-umami-source": "src/app/api/pixels/[pixelId]/contract.generated.ts" }, "get": { + "description": "Returns the specified tracking pixel and its configuration.", "operationId": "getPixel", "parameters": [ { @@ -9964,7 +10014,7 @@ "shareToken": [] } ], - "summary": "Get pixels pixel id", + "summary": "Get a tracking pixel", "tags": [ "Pixels" ], @@ -9973,6 +10023,7 @@ "x-umami-source": "src/app/api/pixels/[pixelId]/contract.generated.ts" }, "post": { + "description": "Updates a tracking pixel's name or slug.", "operationId": "updatePixel", "parameters": [ { @@ -10112,7 +10163,7 @@ "bearerAuth": [] } ], - "summary": "Create or update pixels pixel id", + "summary": "Update a tracking pixel", "tags": [ "Pixels" ], @@ -10123,6 +10174,7 @@ }, "/api/pixels/{pixelId}/shares": { "get": { + "description": "Returns a paginated list of shares for the specified tracking pixel.", "operationId": "getPixelShares", "parameters": [ { @@ -10552,7 +10604,7 @@ "shareToken": [] } ], - "summary": "Get pixels pixel id shares", + "summary": "List shares for a tracking pixel", "tags": [ "Pixels" ], @@ -10561,6 +10613,7 @@ "x-umami-source": "src/app/api/pixels/[pixelId]/shares/contract.generated.ts" }, "post": { + "description": "Creates a named share for the specified tracking pixel with optional parameters.", "operationId": "createPixelShare", "parameters": [ { @@ -10740,7 +10793,7 @@ "bearerAuth": [] } ], - "summary": "Create or update pixels pixel id shares", + "summary": "Create a share for a tracking pixel", "tags": [ "Pixels" ], @@ -10751,6 +10804,7 @@ }, "/api/pixels/charts": { "get": { + "description": "Returns visitor totals and chart data for the requested pixels the caller can view, within the selected date range.", "operationId": "getPixelsCharts", "parameters": [ { @@ -10868,7 +10922,7 @@ "shareToken": [] } ], - "summary": "Get pixels charts", + "summary": "Get visitor charts for tracking pixels", "tags": [ "Pixels" ], @@ -10879,6 +10933,7 @@ }, "/api/realtime/{websiteId}": { "get": { + "description": "Returns recent website activity and visitor data for the real-time view, applying the supplied filters.", "operationId": "getRealtime", "parameters": [ { @@ -11356,7 +11411,7 @@ "shareToken": [] } ], - "summary": "Get realtime website id", + "summary": "Get real-time website activity", "tags": [ "Realtime" ], @@ -11368,6 +11423,7 @@ }, "/api/record": { "post": { + "description": "Stores session replay events or heatmap clicks and scrolls for a website, using a valid tracking cache token to identify the session and visit.", "operationId": "record", "requestBody": { "content": { @@ -11643,7 +11699,7 @@ } }, "security": [], - "summary": "Create or update record", + "summary": "Send session recordings or heatmap data", "tags": [ "Collection" ], @@ -11654,6 +11710,7 @@ }, "/api/reports": { "get": { + "description": "Returns a paginated list of saved reports for the requested website, optionally filtered by report type.", "operationId": "getReports", "parameters": [ { @@ -11913,7 +11970,7 @@ "shareToken": [] } ], - "summary": "Get reports", + "summary": "List saved reports", "tags": [ "Reports" ], @@ -11922,6 +11979,7 @@ "x-umami-source": "src/app/api/reports/contract.generated.ts" }, "post": { + "description": "Saves a report's name, description, type, and parameters for a website so it can be opened again later.", "operationId": "createReport", "requestBody": { "content": { @@ -12109,7 +12167,7 @@ "bearerAuth": [] } ], - "summary": "Create or update reports", + "summary": "Save a report", "tags": [ "Reports" ], @@ -12120,6 +12178,7 @@ }, "/api/reports/{reportId}": { "delete": { + "description": "Deletes the specified saved report definition.", "operationId": "deleteReport", "parameters": [ { @@ -12190,7 +12249,7 @@ "bearerAuth": [] } ], - "summary": "Delete reports report id", + "summary": "Delete a saved report", "tags": [ "Reports" ], @@ -12199,6 +12258,7 @@ "x-umami-source": "src/app/api/reports/[reportId]/contract.generated.ts" }, "get": { + "description": "Returns the specified report's saved name, description, type, and parameters.", "operationId": "getReport", "parameters": [ { @@ -12363,7 +12423,7 @@ "shareToken": [] } ], - "summary": "Get reports report id", + "summary": "Get a saved report", "tags": [ "Reports" ], @@ -12372,6 +12432,7 @@ "x-umami-source": "src/app/api/reports/[reportId]/contract.generated.ts" }, "post": { + "description": "Updates the specified report's website, name, description, type, and parameters.", "operationId": "updateReport", "parameters": [ { @@ -12586,7 +12647,7 @@ "bearerAuth": [] } ], - "summary": "Create or update reports report id", + "summary": "Update a saved report", "tags": [ "Reports" ], @@ -12597,6 +12658,7 @@ }, "/api/reports/attribution": { "post": { + "description": "Calculates how traffic sources contribute to conversions using the supplied attribution settings, date range, and filters.", "operationId": "runAttributionReport", "requestBody": { "content": { @@ -12848,7 +12910,7 @@ "shareToken": [] } ], - "summary": "Create or update reports attribution", + "summary": "Run an attribution report", "tags": [ "Reports" ], @@ -12860,6 +12922,7 @@ }, "/api/reports/breakdown": { "post": { + "description": "Groups website activity by the selected dimensions for the requested date range and filters.", "operationId": "runBreakdownReport", "requestBody": { "content": { @@ -12991,7 +13054,7 @@ "shareToken": [] } ], - "summary": "Create or update reports breakdown", + "summary": "Run a breakdown report", "tags": [ "Reports" ], @@ -13003,6 +13066,7 @@ }, "/api/reports/funnel": { "post": { + "description": "Calculates visitor progression through a sequence of pages or events using the supplied funnel steps and filters.", "operationId": "runFunnelReport", "requestBody": { "content": { @@ -13154,7 +13218,7 @@ "shareToken": [] } ], - "summary": "Create or update reports funnel", + "summary": "Run a funnel report", "tags": [ "Reports" ], @@ -13166,6 +13230,7 @@ }, "/api/reports/goal": { "post": { + "description": "Counts visitors who reached a matching page or triggered a matching event and returns the total visitor count for comparison.", "operationId": "runGoalReport", "requestBody": { "content": { @@ -13267,7 +13332,7 @@ "shareToken": [] } ], - "summary": "Create or update reports goal", + "summary": "Run a goal report", "tags": [ "Reports" ], @@ -13278,6 +13343,7 @@ }, "/api/reports/heatmap": { "post": { + "description": "Returns recorded click or scroll data for the selected page and date range to display as a heatmap.", "operationId": "runHeatmapReport", "requestBody": { "content": { @@ -13551,7 +13617,7 @@ "shareToken": [] } ], - "summary": "Create or update reports heatmap", + "summary": "Get page heatmap data", "tags": [ "Reports" ], @@ -13562,6 +13628,7 @@ }, "/api/reports/journey": { "post": { + "description": "Returns paths through pages or events using the supplied journey settings and website filters.", "operationId": "runJourneyReport", "requestBody": { "content": { @@ -13695,7 +13762,7 @@ "shareToken": [] } ], - "summary": "Create or update reports journey", + "summary": "Run a visitor journey report", "tags": [ "Reports" ], @@ -13707,6 +13774,7 @@ }, "/api/reports/performance": { "post": { + "description": "Returns performance trends, summary metrics, and breakdowns by page, page title, device, and browser for the selected website and date range.", "operationId": "runPerformanceReport", "requestBody": { "content": { @@ -13812,7 +13880,7 @@ "shareToken": [] } ], - "summary": "Create or update reports performance", + "summary": "Run a performance report", "tags": [ "Reports" ], @@ -13823,6 +13891,7 @@ }, "/api/reports/retention": { "post": { + "description": "Calculates how groups of visitors return over time using the supplied retention settings, date range, and filters.", "operationId": "runRetentionReport", "requestBody": { "content": { @@ -13944,7 +14013,7 @@ "shareToken": [] } ], - "summary": "Create or update reports retention", + "summary": "Run a retention report", "tags": [ "Reports" ], @@ -13956,6 +14025,7 @@ }, "/api/reports/revenue": { "post": { + "description": "Returns revenue trends, totals with a comparison period, and breakdowns by country, region, referrer, and channel.", "operationId": "runRevenueReport", "requestBody": { "content": { @@ -14163,7 +14233,7 @@ "shareToken": [] } ], - "summary": "Create or update reports revenue", + "summary": "Run a revenue report", "tags": [ "Reports" ], @@ -14175,6 +14245,7 @@ }, "/api/reports/utm": { "post": { + "description": "Returns traffic breakdowns for UTM source, medium, campaign, term, and content using the supplied date range and filters.", "operationId": "runUtmReport", "requestBody": { "content": { @@ -14298,7 +14369,7 @@ "shareToken": [] } ], - "summary": "Create or update reports utm", + "summary": "Run a campaign report", "tags": [ "Reports" ], @@ -14310,6 +14381,7 @@ }, "/api/scripts/telemetry": { "get": { + "description": "Returns JavaScript that sends the application version through a telemetry pixel, or an inactive script when telemetry is disabled.", "operationId": "getScriptsTelemetry", "responses": { "200": { @@ -14324,7 +14396,7 @@ } }, "security": [], - "summary": "Get scripts telemetry", + "summary": "Get the installation telemetry script", "tags": [ "Scripts" ], @@ -14335,6 +14407,7 @@ }, "/api/send": { "post": { + "description": "Collects a pageview, custom event, visitor identification, or performance payload and returns session information and a tracking cache token when accepted.", "operationId": "send", "requestBody": { "content": { @@ -14536,7 +14609,7 @@ } }, "security": [], - "summary": "Create or update send", + "summary": "Send tracking data", "tags": [ "Collection" ], @@ -14547,6 +14620,7 @@ }, "/api/share": { "post": { + "description": "Creates a named share for a website, board, link, or pixel with parameters and an optional custom slug.", "operationId": "createShare", "requestBody": { "content": { @@ -14730,7 +14804,7 @@ "bearerAuth": [] } ], - "summary": "Create or update share", + "summary": "Create a share", "tags": [ "Shares" ], @@ -14741,6 +14815,7 @@ }, "/api/share/{slug}": { "get": { + "description": "Resolves a public share slug and returns its resource references, parameters, and an access token scoped to the shared resources.", "operationId": "getShareBySlug", "parameters": [ { @@ -14784,7 +14859,7 @@ } }, "security": [], - "summary": "Get share slug", + "summary": "Open a share by its slug", "tags": [ "Shares" ], @@ -14795,6 +14870,7 @@ }, "/api/share/id/{shareId}": { "delete": { + "description": "Deletes the specified share after checking permission to delete shares for its resource.", "operationId": "deleteShare", "parameters": [ { @@ -14848,7 +14924,7 @@ "bearerAuth": [] } ], - "summary": "Delete share id share id", + "summary": "Delete a share", "tags": [ "Shares" ], @@ -14857,6 +14933,7 @@ "x-umami-source": "src/app/api/share/id/[shareId]/contract.generated.ts" }, "get": { + "description": "Returns a share's configuration by its ID after checking access to the shared resource.", "operationId": "getShare", "parameters": [ { @@ -15000,7 +15077,7 @@ "shareToken": [] } ], - "summary": "Get share id share id", + "summary": "Get a share", "tags": [ "Shares" ], @@ -15009,6 +15086,7 @@ "x-umami-source": "src/app/api/share/id/[shareId]/contract.generated.ts" }, "post": { + "description": "Updates the specified share's name, slug, and parameters.", "operationId": "updateShare", "parameters": [ { @@ -15211,7 +15289,7 @@ "bearerAuth": [] } ], - "summary": "Create or update share id share id", + "summary": "Update a share", "tags": [ "Shares" ], @@ -15222,6 +15300,7 @@ }, "/api/teams": { "get": { + "description": "Returns a paginated list of teams the current user belongs to, with sorting options.", "operationId": "getTeams", "parameters": [ { @@ -15397,7 +15476,7 @@ "bearerAuth": [] } ], - "summary": "Get teams", + "summary": "List my teams", "tags": [ "Teams" ], @@ -15406,6 +15485,7 @@ "x-umami-source": "src/app/api/teams/contract.generated.ts" }, "post": { + "description": "Creates a team with an access code and an owner. Administrators can specify a different user as the owner.", "operationId": "createTeam", "requestBody": { "content": { @@ -15560,7 +15640,7 @@ "bearerAuth": [] } ], - "summary": "Create or update teams", + "summary": "Create a team", "tags": [ "Teams" ], @@ -15571,6 +15651,7 @@ }, "/api/teams/{teamId}": { "delete": { + "description": "Deletes the specified team after checking the caller's permission to remove it.", "operationId": "deleteTeam", "parameters": [ { @@ -15624,7 +15705,7 @@ "bearerAuth": [] } ], - "summary": "Delete teams team id", + "summary": "Delete a team", "tags": [ "Teams" ], @@ -15633,6 +15714,7 @@ "x-umami-source": "src/app/api/teams/[teamId]/contract.generated.ts" }, "get": { + "description": "Returns the specified team's details, including its members.", "operationId": "getTeam", "parameters": [ { @@ -15738,7 +15820,7 @@ "shareToken": [] } ], - "summary": "Get teams team id", + "summary": "Get a team", "tags": [ "Teams" ], @@ -15747,6 +15829,7 @@ "x-umami-source": "src/app/api/teams/[teamId]/contract.generated.ts" }, "post": { + "description": "Updates the specified team's name or access code.", "operationId": "updateTeam", "parameters": [ { @@ -15868,7 +15951,7 @@ "bearerAuth": [] } ], - "summary": "Create or update teams team id", + "summary": "Update a team", "tags": [ "Teams" ], @@ -15879,6 +15962,7 @@ }, "/api/teams/{teamId}/boards": { "get": { + "description": "Returns a paginated list of boards belonging to the specified team, with search and sorting options.", "operationId": "getTeamBoards", "parameters": [ { @@ -16133,7 +16217,7 @@ "shareToken": [] } ], - "summary": "Get teams team id boards", + "summary": "List a team's boards", "tags": [ "Teams" ], @@ -16144,6 +16228,7 @@ }, "/api/teams/{teamId}/links": { "get": { + "description": "Returns a paginated list of tracked links belonging to the specified team, with search and sorting options.", "operationId": "getTeamLinks", "parameters": [ { @@ -16343,7 +16428,7 @@ "shareToken": [] } ], - "summary": "Get teams team id links", + "summary": "List a team's links", "tags": [ "Teams" ], @@ -16354,6 +16439,7 @@ }, "/api/teams/{teamId}/pixels": { "get": { + "description": "Returns a paginated list of tracking pixels belonging to the specified team, with search and sorting options.", "operationId": "getTeamPixels", "parameters": [ { @@ -16549,7 +16635,7 @@ "shareToken": [] } ], - "summary": "Get teams team id pixels", + "summary": "List a team's tracking pixels", "tags": [ "Teams" ], @@ -16560,6 +16646,7 @@ }, "/api/teams/{teamId}/users": { "get": { + "description": "Returns a paginated list of members of the specified team, including usernames and membership details.", "operationId": "getTeamUsers", "parameters": [ { @@ -16750,7 +16837,7 @@ "shareToken": [] } ], - "summary": "Get teams team id users", + "summary": "List team members", "tags": [ "Teams" ], @@ -16759,6 +16846,7 @@ "x-umami-source": "src/app/api/teams/[teamId]/users/contract.generated.ts" }, "post": { + "description": "Adds an existing user to the specified team with the supplied team role.", "operationId": "createTeamUser", "parameters": [ { @@ -16879,7 +16967,7 @@ "bearerAuth": [] } ], - "summary": "Create or update teams team id users", + "summary": "Add a team member", "tags": [ "Teams" ], @@ -16890,6 +16978,7 @@ }, "/api/teams/{teamId}/users/{userId}": { "delete": { + "description": "Removes a user's membership from the specified team, subject to team role and ownership restrictions.", "operationId": "deleteTeamUser", "parameters": [ { @@ -16968,7 +17057,7 @@ "bearerAuth": [] } ], - "summary": "Delete teams team id users user id", + "summary": "Remove a team member", "tags": [ "Teams" ], @@ -16977,6 +17066,7 @@ "x-umami-source": "src/app/api/teams/[teamId]/users/[userId]/contract.generated.ts" }, "get": { + "description": "Returns the specified user's membership details for a team.", "operationId": "getTeamUser", "parameters": [ { @@ -17060,7 +17150,7 @@ "bearerAuth": [] } ], - "summary": "Get teams team id users user id", + "summary": "Get a team member", "tags": [ "Teams" ], @@ -17069,6 +17159,7 @@ "x-umami-source": "src/app/api/teams/[teamId]/users/[userId]/contract.generated.ts" }, "post": { + "description": "Updates a user's role in the specified team, subject to the caller's role and permissions.", "operationId": "updateTeamUser", "parameters": [ { @@ -17192,7 +17283,7 @@ "bearerAuth": [] } ], - "summary": "Create or update teams team id users user id", + "summary": "Change a team member's role", "tags": [ "Teams" ], @@ -17203,6 +17294,7 @@ }, "/api/teams/{teamId}/websites": { "get": { + "description": "Returns a paginated list of websites belonging to the specified team, with search and sorting options.", "operationId": "getTeamWebsites", "parameters": [ { @@ -17542,7 +17634,7 @@ "shareToken": [] } ], - "summary": "Get teams team id websites", + "summary": "List a team's websites", "tags": [ "Teams" ], @@ -17553,6 +17645,7 @@ }, "/api/teams/join": { "post": { + "description": "Adds the current user to a team as a member using the team's access code.", "operationId": "joinTeam", "requestBody": { "content": { @@ -17671,7 +17764,7 @@ "bearerAuth": [] } ], - "summary": "Create or update teams join", + "summary": "Join a team", "tags": [ "Teams" ], @@ -17682,6 +17775,7 @@ }, "/api/users": { "post": { + "description": "Creates a user account with the supplied username, password, and role.", "operationId": "createUser", "requestBody": { "content": { @@ -17788,7 +17882,7 @@ "bearerAuth": [] } ], - "summary": "Create or update users", + "summary": "Create a user", "tags": [ "Users" ], @@ -17799,6 +17893,7 @@ }, "/api/users/{userId}": { "delete": { + "description": "Deletes the specified user account. The current user cannot delete their own account through this operation.", "operationId": "deleteUser", "parameters": [ { @@ -17869,7 +17964,7 @@ "bearerAuth": [] } ], - "summary": "Delete users user id", + "summary": "Delete a user", "tags": [ "Users" ], @@ -17878,6 +17973,7 @@ "x-umami-source": "src/app/api/users/[userId]/contract.generated.ts" }, "get": { + "description": "Returns details for the specified user account when the caller has permission to view it.", "operationId": "getUser", "parameters": [ { @@ -18883,7 +18979,7 @@ "shareToken": [] } ], - "summary": "Get users user id", + "summary": "Get a user", "tags": [ "Users" ], @@ -18892,6 +18988,7 @@ "x-umami-source": "src/app/api/users/[userId]/contract.generated.ts" }, "post": { + "description": "Updates a user's password. Administrators can also change the username and role.", "operationId": "updateUser", "parameters": [ { @@ -19021,7 +19118,7 @@ "bearerAuth": [] } ], - "summary": "Create or update users user id", + "summary": "Update a user", "tags": [ "Users" ], @@ -19032,6 +19129,7 @@ }, "/api/users/{userId}/teams": { "get": { + "description": "Returns a paginated list of teams for the specified user. Available to that user and administrators.", "operationId": "getUserTeams", "parameters": [ { @@ -19215,7 +19313,7 @@ "bearerAuth": [] } ], - "summary": "Get users user id teams", + "summary": "List a user's teams", "tags": [ "Users" ], @@ -19226,6 +19324,7 @@ }, "/api/users/{userId}/websites": { "get": { + "description": "Returns a paginated list of the specified user's websites, optionally including team access. Available to that user and administrators.", "operationId": "getUserWebsites", "parameters": [ { @@ -19569,7 +19668,7 @@ "bearerAuth": [] } ], - "summary": "Get users user id websites", + "summary": "List a user's websites", "tags": [ "Users" ], @@ -19580,7 +19679,7 @@ }, "/api/websites": { "get": { - "description": "Returns websites owned by the authenticated user.", + "description": "Returns a paginated list of the current user's websites, optionally including websites accessible through team membership.", "operationId": "listWebsites", "parameters": [ { @@ -19711,6 +19810,7 @@ "x-umami-source": "src/app/api/websites/contract.ts" }, "post": { + "description": "Creates a website with a name and domain, optionally assigning it to a team and creating a share.", "operationId": "createWebsite", "requestBody": { "content": { @@ -19784,6 +19884,7 @@ }, "/api/websites/{websiteId}": { "delete": { + "description": "Deletes the specified website after checking the caller's permission to remove it.", "operationId": "deleteWebsite", "parameters": [ { @@ -19842,6 +19943,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/contract.ts" }, "get": { + "description": "Returns the specified website's details and configuration.", "operationId": "getWebsite", "parameters": [ { @@ -19917,6 +20019,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/contract.ts" }, "post": { + "description": "Updates a website's name, domain, sharing settings, or recording configuration.", "operationId": "updateWebsite", "parameters": [ { @@ -20080,7 +20183,7 @@ "shareToken": [] } ], - "summary": "Get current active visitors", + "summary": "Get active website visitors", "tags": [ "Websites" ], @@ -20092,6 +20195,7 @@ }, "/api/websites/{websiteId}/annotations": { "get": { + "description": "Returns a paginated list of dated notes for the website, optionally filtered by date range or search text.", "operationId": "getWebsiteAnnotations", "parameters": [ { @@ -20283,7 +20387,7 @@ "shareToken": [] } ], - "summary": "Get websites website id annotations", + "summary": "List website annotations", "tags": [ "Websites" ], @@ -20292,6 +20396,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/annotations/contract.generated.ts" }, "post": { + "description": "Adds a dated note to the website, optionally marking it as an all-day annotation.", "operationId": "createWebsiteAnnotation", "parameters": [ { @@ -20421,7 +20526,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id annotations", + "summary": "Create a website annotation", "tags": [ "Websites" ], @@ -20432,6 +20537,7 @@ }, "/api/websites/{websiteId}/annotations/{annotationId}": { "delete": { + "description": "Deletes the specified dated note from the website.", "operationId": "deleteWebsiteAnnotation", "parameters": [ { @@ -20510,7 +20616,7 @@ "bearerAuth": [] } ], - "summary": "Delete websites website id annotations annotation id", + "summary": "Delete a website annotation", "tags": [ "Websites" ], @@ -20519,6 +20625,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/annotations/[annotationId]/contract.generated.ts" }, "get": { + "description": "Returns the date, all-day setting, and note for a specific website annotation.", "operationId": "getWebsiteAnnotation", "parameters": [ { @@ -20632,7 +20739,7 @@ "shareToken": [] } ], - "summary": "Get websites website id annotations annotation id", + "summary": "Get a website annotation", "tags": [ "Websites" ], @@ -20641,6 +20748,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/annotations/[annotationId]/contract.generated.ts" }, "post": { + "description": "Changes the date, all-day setting, and note for a website annotation.", "operationId": "updateWebsiteAnnotation", "parameters": [ { @@ -20795,7 +20903,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id annotations annotation id", + "summary": "Update a website annotation", "tags": [ "Websites" ], @@ -20806,6 +20914,7 @@ }, "/api/websites/{websiteId}/daterange": { "get": { + "description": "Returns the earliest and latest recorded event dates for the website.", "operationId": "getWebsiteDateRange", "parameters": [ { @@ -20874,7 +20983,7 @@ "shareToken": [] } ], - "summary": "Get websites website id daterange", + "summary": "Get the website's available date range", "tags": [ "Websites" ], @@ -20886,6 +20995,7 @@ }, "/api/websites/{websiteId}/event-data": { "get": { + "description": "Returns a page of events in the selected date range, grouping each event's custom property records together.", "operationId": "getEventData", "parameters": [ { @@ -21297,7 +21407,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data", + "summary": "List events with custom properties", "tags": [ "Websites" ], @@ -21309,6 +21419,7 @@ }, "/api/websites/{websiteId}/event-data-pivot": { "get": { + "description": "Returns a page of occurrences of the specified event, with event details and property keys and values grouped into one row per occurrence.", "operationId": "getEventDataPivot", "parameters": [ { @@ -21730,7 +21841,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot", + "summary": "List event properties in table form", "tags": [ "Websites" ], @@ -21741,6 +21852,7 @@ }, "/api/websites/{websiteId}/event-data-pivot/array-series": { "get": { + "description": "Counts individual values in an array property for the specified event, grouped by value and time interval.", "operationId": "getEventDataArraySeries", "parameters": [ { @@ -22081,7 +22193,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot array series", + "summary": "Get event array values over time", "tags": [ "Websites" ], @@ -22092,6 +22204,7 @@ }, "/api/websites/{websiteId}/event-data-pivot/date-series": { "get": { + "description": "Counts occurrences of dates stored in the specified event property, grouping by the property's date value within the selected event date range.", "operationId": "getEventDataDateSeries", "parameters": [ { @@ -22420,7 +22533,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot date series", + "summary": "Get the distribution of event date values", "tags": [ "Websites" ], @@ -22431,6 +22544,7 @@ }, "/api/websites/{websiteId}/event-data-pivot/numeric-series": { "get": { + "description": "Returns the sum, average, or count of a numeric property for the specified event, grouped by time interval.", "operationId": "getEventDataNumericSeries", "parameters": [ { @@ -22780,7 +22894,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot numeric series", + "summary": "Get numeric event properties over time", "tags": [ "Websites" ], @@ -22791,6 +22905,7 @@ }, "/api/websites/{websiteId}/event-data-pivot/numeric-stats": { "get": { + "description": "Returns the total, average, median, minimum, and maximum of the specified numeric event property for the selected date range and filters.", "operationId": "getEventDataNumericStats", "parameters": [ { @@ -23120,7 +23235,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot numeric stats", + "summary": "Get numeric event property statistics", "tags": [ "Websites" ], @@ -23131,6 +23246,7 @@ }, "/api/websites/{websiteId}/event-data-pivot/property-series": { "get": { + "description": "Counts occurrences of string values in the specified event property, grouped by value and time interval.", "operationId": "getEventDataPropertySeries", "parameters": [ { @@ -23471,7 +23587,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data pivot property series", + "summary": "Get event property values over time", "tags": [ "Websites" ], @@ -23482,6 +23598,7 @@ }, "/api/websites/{websiteId}/event-data/{eventId}": { "get": { + "description": "Returns the custom property records, data types, and values attached to a specific event.", "operationId": "getEventDataById", "parameters": [ { @@ -23603,7 +23720,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data event id", + "summary": "Get an event's custom properties", "tags": [ "Websites" ], @@ -23614,6 +23731,7 @@ }, "/api/websites/{websiteId}/event-data/events": { "get": { + "description": "Returns property names, types, and counts grouped by event name. When an event is specified, also groups by property value.", "operationId": "getEventDataEvents", "parameters": [ { @@ -23928,7 +24046,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data events", + "summary": "Summarize properties by event", "tags": [ "Websites" ], @@ -23939,6 +24057,7 @@ }, "/api/websites/{websiteId}/event-data/fields": { "get": { + "description": "Returns property names, data types, and counts for the selected date range, optionally restricted to an event name.", "operationId": "getEventDataFields", "parameters": [ { @@ -24255,7 +24374,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data fields", + "summary": "List event property fields", "tags": [ "Websites" ], @@ -24266,6 +24385,7 @@ }, "/api/websites/{websiteId}/event-data/properties": { "get": { + "description": "Returns event names and their custom property names, data types, and record counts for the selected date range and filters.", "operationId": "getEventDataProperties", "parameters": [ { @@ -24583,7 +24703,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data properties", + "summary": "List event property usage", "tags": [ "Websites" ], @@ -24595,6 +24715,7 @@ }, "/api/websites/{websiteId}/event-data/stats": { "get": { + "description": "Returns counts of events with custom data, distinct property names, and property records for the selected date range and filters.", "operationId": "getEventDataStats", "parameters": [ { @@ -24905,7 +25026,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data stats", + "summary": "Get event property totals", "tags": [ "Websites" ], @@ -24917,6 +25038,7 @@ }, "/api/websites/{websiteId}/event-data/values": { "get": { + "description": "Returns values and their occurrence counts for a custom event property, optionally restricted by event name and data type.", "operationId": "getEventDataValues", "parameters": [ { @@ -25250,7 +25372,7 @@ "shareToken": [] } ], - "summary": "Get websites website id event data values", + "summary": "List event property values", "tags": [ "Websites" ], @@ -25262,7 +25384,7 @@ }, "/api/websites/{websiteId}/events": { "get": { - "description": "Returns a page of pageviews and custom events in the date range, newest first. Filter with `event` for a specific event name or `search` for free text.", + "description": "Returns a page of pageviews and custom events in the date range, newest first. Supports filtering by event name and searching event details.", "operationId": "getWebsiteEvents", "parameters": [ { @@ -25622,6 +25744,7 @@ }, "/api/websites/{websiteId}/events/series": { "get": { + "description": "Returns counts grouped by event name and time interval, optionally limited to the most frequent event names.", "operationId": "getWebsiteEventSeries", "parameters": [ { @@ -25959,7 +26082,7 @@ "shareToken": [] } ], - "summary": "Get websites website id events series", + "summary": "Get custom event counts over time", "tags": [ "Websites" ], @@ -25971,6 +26094,7 @@ }, "/api/websites/{websiteId}/events/stats": { "get": { + "description": "Returns website event totals for the selected date range and filters, including totals for the comparison period.", "operationId": "getWebsiteEventStats", "parameters": [ { @@ -26354,7 +26478,7 @@ "shareToken": [] } ], - "summary": "Get websites website id events stats", + "summary": "Get website event statistics", "tags": [ "Websites" ], @@ -26366,6 +26490,7 @@ }, "/api/websites/{websiteId}/export": { "get": { + "description": "Returns a base64-encoded ZIP archive containing CSV exports of events, pages, referrers, browsers, operating systems, devices, and countries.", "operationId": "exportWebsite", "parameters": [ { @@ -26537,7 +26662,7 @@ "shareToken": [] } ], - "summary": "Get websites website id export", + "summary": "Export website analytics", "tags": [ "Websites" ], @@ -26548,7 +26673,7 @@ }, "/api/websites/{websiteId}/metrics": { "get": { - "description": "Returns the top values for one dimension (`type`), such as pages, referrers, countries, browsers, UTM parameters or events, ordered by count. Page-type dimensions count views/events; visitor dimensions count unique visitors.", + "description": "Returns the most frequent values for a dimension such as pages, referrers, countries, browsers, campaigns, or events. Counts pageviews or events for activity dimensions and unique visitors for visitor dimensions.", "operationId": "getWebsiteMetrics", "parameters": [ { @@ -26893,7 +27018,7 @@ "shareToken": [] } ], - "summary": "Get ranked metrics for a dimension", + "summary": "Get ranked website metrics", "tags": [ "Websites" ], @@ -26905,6 +27030,7 @@ }, "/api/websites/{websiteId}/metrics/expanded": { "get": { + "description": "Returns additional analytics for the selected page, event, visitor, or channel dimension, using the supplied date range and filters.", "operationId": "getWebsiteExpandedMetrics", "parameters": [ { @@ -27308,7 +27434,7 @@ "shareToken": [] } ], - "summary": "Get websites website id metrics expanded", + "summary": "Get detailed website metrics", "tags": [ "Websites" ], @@ -27320,7 +27446,7 @@ }, "/api/websites/{websiteId}/pageviews": { "get": { - "description": "Returns pageviews and sessions bucketed by `unit` (minute, hour, day, month, year) in the given `timezone`. When `compare` is set the comparison period is included.", + "description": "Returns pageviews and sessions grouped by the requested time interval and timezone, including a comparison period when requested.", "operationId": "getWebsitePageviews", "parameters": [ { @@ -27634,7 +27760,7 @@ "shareToken": [] } ], - "summary": "Get pageview and session time series", + "summary": "Get pageviews and sessions over time", "tags": [ "Websites" ], @@ -27646,6 +27772,7 @@ }, "/api/websites/{websiteId}/recorder": { "get": { + "description": "Returns public replay and heatmap settings, including sampling, masking, and duration limits. Returns disabled status when recording is unavailable.", "operationId": "getWebsiteRecorderConfig", "parameters": [ { @@ -27728,7 +27855,7 @@ } }, "security": [], - "summary": "Get websites website id recorder", + "summary": "Get website recording settings", "tags": [ "Websites" ], @@ -27739,6 +27866,7 @@ }, "/api/websites/{websiteId}/replays": { "get": { + "description": "Returns a paginated list of recorded sessions for the website, applying date, replay, and search filters.", "operationId": "getWebsiteReplays", "parameters": [ { @@ -28237,7 +28365,7 @@ "shareToken": [] } ], - "summary": "Get websites website id replays", + "summary": "List website session replays", "tags": [ "Websites" ], @@ -28248,6 +28376,7 @@ }, "/api/websites/{websiteId}/replays/{replayId}": { "get": { + "description": "Returns the merged recording events, session details, and event and chunk counts for a replay, with optional stopping points by timestamp, chunk, or event index.", "operationId": "getWebsiteReplay", "parameters": [ { @@ -28336,7 +28465,7 @@ "shareToken": [] } ], - "summary": "Get websites website id replays replay id", + "summary": "Get a session replay recording", "tags": [ "Websites" ], @@ -28347,6 +28476,7 @@ }, "/api/websites/{websiteId}/replays/saved": { "get": { + "description": "Returns a paginated, searchable list of replays saved for the website.", "operationId": "getWebsiteSavedReplays", "parameters": [ { @@ -28513,7 +28643,7 @@ "shareToken": [] } ], - "summary": "Get websites website id replays saved", + "summary": "List saved session replays", "tags": [ "Websites" ], @@ -28524,6 +28654,7 @@ }, "/api/websites/{websiteId}/replays/saved/{replayId}": { "get": { + "description": "Returns whether the specified replay is in the website's saved replays.", "operationId": "getWebsiteReplaySaved", "parameters": [ { @@ -28589,7 +28720,7 @@ "shareToken": [] } ], - "summary": "Get websites website id replays saved replay id", + "summary": "Check whether a replay is saved", "tags": [ "Websites" ], @@ -28598,6 +28729,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/replays/saved/[replayId]/contract.generated.ts" }, "post": { + "description": "Adds a replay to the website's saved replays with an optional name, or removes it when isSaved is false.", "operationId": "saveWebsiteReplay", "parameters": [ { @@ -28698,7 +28830,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id replays saved replay id", + "summary": "Save or unsave a session replay", "tags": [ "Websites" ], @@ -28709,6 +28841,7 @@ }, "/api/websites/{websiteId}/reports": { "get": { + "description": "Returns a paginated list of saved report definitions for the website, optionally filtered by report type.", "operationId": "getWebsiteReports", "parameters": [ { @@ -28967,7 +29100,7 @@ "shareToken": [] } ], - "summary": "Get websites website id reports", + "summary": "List a website's saved reports", "tags": [ "Websites" ], @@ -28978,6 +29111,7 @@ }, "/api/websites/{websiteId}/reset": { "post": { + "description": "Clears the website's collected analytics data while keeping the website configuration.", "operationId": "resetWebsite", "parameters": [ { @@ -29031,7 +29165,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id reset", + "summary": "Reset website analytics", "tags": [ "Websites" ], @@ -29042,6 +29176,7 @@ }, "/api/websites/{websiteId}/revenue/chart": { "get": { + "description": "Returns revenue chart data for the selected currency, date range, and website filters.", "operationId": "getWebsiteRevenueChart", "parameters": [ { @@ -29416,7 +29551,7 @@ "shareToken": [] } ], - "summary": "Get websites website id revenue chart", + "summary": "Get website revenue over time", "tags": [ "Websites" ], @@ -29427,6 +29562,7 @@ }, "/api/websites/{websiteId}/revenue/metrics": { "get": { + "description": "Returns revenue grouped by the requested dimension, such as country or referrer, for the selected currency and date range.", "operationId": "getWebsiteRevenueMetrics", "parameters": [ { @@ -29825,7 +29961,7 @@ "shareToken": [] } ], - "summary": "Get websites website id revenue metrics", + "summary": "Get website revenue by dimension", "tags": [ "Websites" ], @@ -29836,6 +29972,7 @@ }, "/api/websites/{websiteId}/revenue/sessions": { "get": { + "description": "Returns a paginated list of sessions with revenue in the selected currency and date range, applying website and search filters.", "operationId": "getWebsiteRevenueSessions", "parameters": [ { @@ -30345,7 +30482,7 @@ "shareToken": [] } ], - "summary": "Get websites website id revenue sessions", + "summary": "List sessions with revenue", "tags": [ "Websites" ], @@ -30356,6 +30493,7 @@ }, "/api/websites/{websiteId}/revenue/stats": { "get": { + "description": "Returns revenue summary statistics for the selected currency and date range, including totals for the comparison period.", "operationId": "getWebsiteRevenueStats", "parameters": [ { @@ -30705,7 +30843,7 @@ "shareToken": [] } ], - "summary": "Get websites website id revenue stats", + "summary": "Get website revenue totals", "tags": [ "Websites" ], @@ -30716,6 +30854,7 @@ }, "/api/websites/{websiteId}/segments": { "get": { + "description": "Returns saved segments or cohorts for the website, filtered by the requested type and search text.", "operationId": "getWebsiteSegments", "parameters": [ { @@ -30927,7 +31066,7 @@ "shareToken": [] } ], - "summary": "Get websites website id segments", + "summary": "List website segments and cohorts", "tags": [ "Websites" ], @@ -30936,6 +31075,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/segments/contract.generated.ts" }, "post": { + "description": "Saves a named segment or cohort with its type and filter parameters for the website.", "operationId": "createWebsiteSegment", "parameters": [ { @@ -31153,7 +31293,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id segments", + "summary": "Create a website segment or cohort", "tags": [ "Websites" ], @@ -31164,6 +31304,7 @@ }, "/api/websites/{websiteId}/segments/{segmentId}": { "delete": { + "description": "Deletes the specified saved segment or cohort from the website.", "operationId": "deleteWebsiteSegment", "parameters": [ { @@ -31242,7 +31383,7 @@ "bearerAuth": [] } ], - "summary": "Delete websites website id segments segment id", + "summary": "Delete a website segment or cohort", "tags": [ "Websites" ], @@ -31251,6 +31392,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/segments/[segmentId]/contract.generated.ts" }, "get": { + "description": "Returns a saved segment or cohort and its filter parameters for the website.", "operationId": "getWebsiteSegment", "parameters": [ { @@ -31415,7 +31557,7 @@ "shareToken": [] } ], - "summary": "Get websites website id segments segment id", + "summary": "Get a website segment or cohort", "tags": [ "Websites" ], @@ -31424,6 +31566,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/segments/[segmentId]/contract.generated.ts" }, "post": { + "description": "Updates a saved segment or cohort's type, name, and filter parameters.", "operationId": "updateWebsiteSegment", "parameters": [ { @@ -31633,7 +31776,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id segments segment id", + "summary": "Update a website segment or cohort", "tags": [ "Websites" ], @@ -31644,6 +31787,7 @@ }, "/api/websites/{websiteId}/session-data-pivot": { "get": { + "description": "Returns a page of sessions matching the selected property and filters, with the latest property keys and values grouped into one row per session.", "operationId": "getSessionDataPivot", "parameters": [ { @@ -32057,7 +32201,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data pivot", + "summary": "List session properties in table form", "tags": [ "Websites" ], @@ -32068,6 +32212,7 @@ }, "/api/websites/{websiteId}/session-data/array-series": { "get": { + "description": "Counts distinct sessions for individual values in an array property, grouped by value and time interval.", "operationId": "getSessionDataArraySeries", "parameters": [ { @@ -32400,7 +32545,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data array series", + "summary": "Get session array values over time", "tags": [ "Websites" ], @@ -32411,6 +32556,7 @@ }, "/api/websites/{websiteId}/session-data/date-series": { "get": { + "description": "Counts distinct sessions by dates stored in the specified custom property, using the selected date range and filters.", "operationId": "getSessionDataDateSeries", "parameters": [ { @@ -32731,7 +32877,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data date series", + "summary": "Get the distribution of session date values", "tags": [ "Websites" ], @@ -32742,6 +32888,7 @@ }, "/api/websites/{websiteId}/session-data/numeric-series": { "get": { + "description": "Returns the sum, average, or count of a numeric session property, grouped by time interval for the selected date range and filters.", "operationId": "getSessionDataNumericSeries", "parameters": [ { @@ -33083,7 +33230,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data numeric series", + "summary": "Get numeric session properties over time", "tags": [ "Websites" ], @@ -33094,6 +33241,7 @@ }, "/api/websites/{websiteId}/session-data/numeric-stats": { "get": { + "description": "Returns the total, average, median, minimum, and maximum of the specified numeric session property for the selected date range and filters.", "operationId": "getSessionDataNumericStats", "parameters": [ { @@ -33423,7 +33571,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data numeric stats", + "summary": "Get numeric session property statistics", "tags": [ "Websites" ], @@ -33434,6 +33582,7 @@ }, "/api/websites/{websiteId}/session-data/properties": { "get": { + "description": "Returns custom session property names, data types, and distinct session counts, optionally restricted to sessions with a selected property.", "operationId": "getSessionDataProperties", "parameters": [ { @@ -33750,7 +33899,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data properties", + "summary": "List session property usage", "tags": [ "Websites" ], @@ -33761,6 +33910,7 @@ }, "/api/websites/{websiteId}/session-data/property-series": { "get": { + "description": "Counts distinct sessions for string values in a custom property, grouped by value and time interval.", "operationId": "getSessionDataPropertySeries", "parameters": [ { @@ -34093,7 +34243,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data property series", + "summary": "Get session property values over time", "tags": [ "Websites" ], @@ -34104,6 +34254,7 @@ }, "/api/websites/{websiteId}/session-data/stats": { "get": { + "description": "Returns session, visit, pageview, event, and total activity counts grouped by values of the specified session property.", "operationId": "getSessionDataStats", "parameters": [ { @@ -34448,7 +34599,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data stats", + "summary": "Get activity by session property", "tags": [ "Websites" ], @@ -34459,6 +34610,7 @@ }, "/api/websites/{websiteId}/session-data/values": { "get": { + "description": "Returns custom session property values and their occurrence counts, optionally filtered by property name and data type.", "operationId": "getSessionDataValues", "parameters": [ { @@ -34779,7 +34931,7 @@ "shareToken": [] } ], - "summary": "Get websites website id session data values", + "summary": "List session property values", "tags": [ "Websites" ], @@ -34790,7 +34942,7 @@ }, "/api/websites/{websiteId}/sessions": { "get": { - "description": "Returns a page of visitor sessions in the date range, newest first. `search` matches distinct ID, city, browser, OS or device.", + "description": "Returns a page of visitor sessions in the date range, newest first. Search matches distinct ID, city, browser, operating system, or device.", "operationId": "getWebsiteSessions", "parameters": [ { @@ -35150,6 +35302,7 @@ }, "/api/websites/{websiteId}/sessions/{sessionId}": { "delete": { + "description": "Deletes the specified session and its associated analytics data. Available on installations using only a relational database.", "operationId": "deleteWebsiteSession", "parameters": [ { @@ -35245,7 +35398,7 @@ "bearerAuth": [] } ], - "summary": "Delete websites website id sessions session id", + "summary": "Delete a visitor session", "tags": [ "Websites" ], @@ -35254,6 +35407,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/sessions/[sessionId]/contract.generated.ts" }, "get": { + "description": "Returns details for a website session, including linked visitor identities and whether session deletion is available to the caller.", "operationId": "getWebsiteSession", "parameters": [ { @@ -35341,7 +35495,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions session id", + "summary": "Get a visitor session", "tags": [ "Websites" ], @@ -35353,6 +35507,7 @@ }, "/api/websites/{websiteId}/sessions/{sessionId}/activity": { "get": { + "description": "Returns activity for the specified session and sessions linked by visitor identity, using the requested date range and optional distinct ID.", "operationId": "getWebsiteSessionActivity", "parameters": [ { @@ -35511,7 +35666,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions session id activity", + "summary": "Get a visitor's session activity", "tags": [ "Websites" ], @@ -35523,6 +35678,7 @@ }, "/api/websites/{websiteId}/sessions/{sessionId}/properties": { "get": { + "description": "Returns custom property records, data types, and values for the specified website session.", "operationId": "getWebsiteSessionProperties", "parameters": [ { @@ -35640,7 +35796,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions session id properties", + "summary": "Get a session's custom properties", "tags": [ "Websites" ], @@ -35652,6 +35808,7 @@ }, "/api/websites/{websiteId}/sessions/{sessionId}/replays": { "get": { + "description": "Returns a paginated, searchable list of recordings for the specified website session.", "operationId": "getWebsiteSessionReplays", "parameters": [ { @@ -35942,7 +36099,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions session id replays", + "summary": "List a visitor's session replays", "tags": [ "Websites" ], @@ -35953,6 +36110,7 @@ }, "/api/websites/{websiteId}/sessions/stats": { "get": { + "description": "Returns aggregate session metrics for the website over the selected date range and filters.", "operationId": "getWebsiteSessionStats", "parameters": [ { @@ -36248,7 +36406,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions stats", + "summary": "Get visitor session statistics", "tags": [ "Websites" ], @@ -36260,6 +36418,7 @@ }, "/api/websites/{websiteId}/sessions/weekly": { "get": { + "description": "Returns distinct visitor counts grouped by day of the week and hour in the selected timezone and date range.", "operationId": "getWebsiteSessionsWeekly", "parameters": [ { @@ -36563,7 +36722,7 @@ "shareToken": [] } ], - "summary": "Get websites website id sessions weekly", + "summary": "Get traffic by weekday and hour", "tags": [ "Websites" ], @@ -36574,6 +36733,7 @@ }, "/api/websites/{websiteId}/shares": { "get": { + "description": "Returns a paginated list of shares for the specified website.", "operationId": "getWebsiteShares", "parameters": [ { @@ -37003,7 +37163,7 @@ "shareToken": [] } ], - "summary": "Get websites website id shares", + "summary": "List shares for a website", "tags": [ "Websites" ], @@ -37012,6 +37172,7 @@ "x-umami-source": "src/app/api/websites/[websiteId]/shares/contract.generated.ts" }, "post": { + "description": "Creates a named share for the specified website with optional parameters.", "operationId": "createWebsiteShare", "parameters": [ { @@ -37191,7 +37352,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id shares", + "summary": "Create a share for a website", "tags": [ "Websites" ], @@ -37202,7 +37363,7 @@ }, "/api/websites/{websiteId}/stats": { "get": { - "description": "Returns pageviews, unique visitors, visits, bounces and total time on site for the date range, plus the same totals for the comparison period (`compare`: prev or yoy).", + "description": "Returns pageviews, unique visitors, visits, bounces, and total time on site for the selected date range and comparison period.", "operationId": "getWebsiteStats", "parameters": [ { @@ -37516,7 +37677,7 @@ "shareToken": [] } ], - "summary": "Get website summary stats", + "summary": "Get website summary statistics", "tags": [ "Websites" ], @@ -37528,6 +37689,7 @@ }, "/api/websites/{websiteId}/transfer": { "post": { + "description": "Transfers the specified website to another user or team after checking permission for the destination.", "operationId": "transferWebsite", "parameters": [ { @@ -37722,7 +37884,7 @@ "bearerAuth": [] } ], - "summary": "Create or update websites website id transfer", + "summary": "Transfer website ownership", "tags": [ "Websites" ], @@ -37733,6 +37895,7 @@ }, "/api/websites/{websiteId}/values": { "get": { + "description": "Returns available values for a website filter, including saved segments or cohorts when requested, to populate filter choices.", "operationId": "getWebsiteValues", "parameters": [ { @@ -37878,7 +38041,7 @@ "shareToken": [] } ], - "summary": "Get websites website id values", + "summary": "List website filter values", "tags": [ "Websites" ], @@ -37889,6 +38052,7 @@ }, "/api/websites/charts": { "get": { + "description": "Returns visitor totals and chart data for the requested websites the caller can view, within the selected date range.", "operationId": "getWebsitesCharts", "parameters": [ { @@ -38006,7 +38170,7 @@ "shareToken": [] } ], - "summary": "Get websites charts", + "summary": "Get visitor charts for websites", "tags": [ "Websites" ], diff --git a/src/openapi/README.md b/src/openapi/README.md index 0c355641c..86888760a 100644 --- a/src/openapi/README.md +++ b/src/openapi/README.md @@ -23,7 +23,7 @@ Run `pnpm openapi:contracts` to create a `contract.generated.ts` next to every r have a curated contract. Generated contracts use the route's Zod request validation and TypeScript response types. They are checked in so operation IDs and client-facing schemas remain stable. -For curated descriptions, examples, or runtime-shared Zod response models, replace the generated +For examples or runtime-shared Zod response models, replace the generated module with a `contract.ts` that exports an `operations` array. Define request and response shapes with Zod, and import the same request schema into the route handler for `parseRequest` validation. @@ -44,7 +44,29 @@ New operations are initially marked with `x-umami-contract: inferred` and their inference layer extracts path parameters, Zod request fields, authentication, typed response bodies, response status helpers, and response media types without importing route modules. Running `pnpm openapi:contracts` snapshots that behavior into an explicit contract. Curated `contract.ts` -modules remain the way to add examples, custom operation IDs, and hand-written prose. +modules remain the way to add examples and custom operation IDs. + +## Summaries and descriptions + +Edit `src/openapi/operation-descriptions.ts` to maintain plain-language documentation without +maintaining a full contract. This file is hand-written, committed, and never overwritten by +either OpenAPI generator. Keys combine the uppercase HTTP method and the OpenAPI path: + +```ts +'POST /api/links/{linkId}/shares': { + summary: 'Create a share for a link', + description: 'Creates a named share for the specified link with optional parameters.', +}, +``` + +The document builder applies these fields after loading explicit and inferred contracts. A summary +is required for each entry; the longer description is optional. Omitted fields retain their +contract values, and operations without an entry retain their existing documentation. Schemas and +operation IDs continue to come from the contracts. + +Run `pnpm generate:api` after editing to refresh the OpenAPI document and API client. Generation and +`pnpm openapi:check` reject entries that do not match a discovered route and method. Entries are +optional, so documentation can be improved incrementally. ## Operation IDs diff --git a/src/openapi/document.ts b/src/openapi/document.ts index 62ca4a9c7..8058d11ad 100644 --- a/src/openapi/document.ts +++ b/src/openapi/document.ts @@ -11,6 +11,7 @@ import { import { discoverApiOperations } from '@/openapi/discover'; import { inferApiContracts } from '@/openapi/infer'; import { type ApiAudience, type ApiOperationContract, getOperationKey } from '@/openapi/operation'; +import { operationDescriptions } from '@/openapi/operation-descriptions'; import { errorResponseComponents } from '@/openapi/schemas'; import { getSecurityRequirements, securitySchemes } from '@/openapi/security'; @@ -70,7 +71,18 @@ export async function buildOpenApiDocument( const inferredContracts = inferApiContracts(discovered, explicitContracts); const contracts = [...explicitContracts, ...inferredContracts]; const coverage = analyzeContractCoverage(discovered, explicitContracts, contracts); - const errors = [...getCoverageErrors(coverage), ...getOAuthRouteErrors(discovered)]; + const discoveredKeys = new Set(discovered.map(getOperationKey)); + const descriptionErrors = Object.keys(operationDescriptions) + .filter(key => !discoveredKeys.has(key)) + .map( + key => + `Operation description does not match a route: ${key} (src/openapi/operation-descriptions.ts)`, + ); + const errors = [ + ...getCoverageErrors(coverage), + ...getOAuthRouteErrors(discovered), + ...descriptionErrors, + ]; if (errors.length) { throw new Error(`Invalid OpenAPI contracts:\n${errors.map(error => `- ${error}`).join('\n')}`); @@ -94,6 +106,7 @@ export async function buildOpenApiDocument( const scope = getContractOAuthScope(contract.method, contract.path); const operation = { ...contract.operation, + ...operationDescriptions[getOperationKey(contract)], security: getSecurityRequirements(contract.auth, scope), 'x-umami-audience': contract.audience, 'x-umami-contract': contract.origin, diff --git a/src/openapi/operation-descriptions.ts b/src/openapi/operation-descriptions.ts new file mode 100644 index 000000000..6bbde724b --- /dev/null +++ b/src/openapi/operation-descriptions.ts @@ -0,0 +1,854 @@ +import type { ApiHttpMethod } from '@/openapi/operation'; + +interface OperationDescription { + summary: string; + description?: string; +} + +// Hand-maintained documentation. OpenAPI generators must never overwrite this file. +// Keys use the HTTP method and OpenAPI path, including {parameter} placeholders. +export const operationDescriptions: Record = { + 'POST /api/2fa/disable': { + summary: 'Disable two-factor authentication', + description: + 'Disables two-factor authentication for the current user after verifying their password and authenticator code. Rejected when an administrator or team requires it.', + }, + 'POST /api/2fa/setup/cancel': { + summary: 'Cancel two-factor authentication setup', + description: + "Deletes the current user's pending setup without changing an already enabled authenticator.", + }, + 'POST /api/2fa/setup/confirm': { + summary: 'Confirm two-factor authentication setup', + description: + 'Verifies an authenticator code, enables two-factor authentication, and returns a new set of backup codes.', + }, + 'POST /api/2fa/setup/initiate': { + summary: 'Set up two-factor authentication', + description: + "Starts or replaces the current user's pending setup and returns a QR code and manual setup key for an authenticator app.", + }, + 'GET /api/2fa/status': { + summary: 'Get two-factor authentication status', + description: + 'Returns whether two-factor authentication is enabled, configured, or required for the current user, including the reason it is required.', + }, + 'POST /api/2fa/verify': { + summary: 'Complete two-factor sign-in', + description: + 'Exchanges a partial sign-in token and a valid authenticator or backup code for a full authentication token and user details.', + }, + 'POST /api/admin/2fa/global': { + summary: 'Set the two-factor requirement for everyone', + description: + 'Enables or disables the installation-wide requirement for users to set up two-factor authentication.', + }, + 'GET /api/admin/teams': { + summary: 'List all teams', + description: + 'Returns a paginated list of teams with member details and website and member counts for administration.', + }, + 'POST /api/admin/teams/{teamId}/2fa': { + summary: "Set a team's two-factor requirement", + description: + 'Enables or disables the requirement for members of the specified team to use two-factor authentication.', + }, + 'GET /api/admin/users': { + summary: 'List all users', + description: + 'Returns a paginated list of users and their website counts for administration, excluding passwords.', + }, + 'DELETE /api/admin/users/{userId}/2fa': { + summary: "Reset a user's two-factor authentication", + description: + "Removes the specified user's authenticator setup, backup codes, used-code history, and failed-attempt limits so they can set up authentication again.", + }, + 'GET /api/admin/users/{userId}/2fa': { + summary: "Get a user's two-factor status", + description: 'Returns whether two-factor authentication is enabled for the specified user.', + }, + 'POST /api/admin/users/{userId}/2fa': { + summary: "Set a user's two-factor requirement", + description: + 'Enables or disables the requirement for the specified user to set up two-factor authentication.', + }, + 'GET /api/admin/websites': { + summary: 'List all websites', + description: + 'Returns a paginated, searchable list of websites across users and teams for administration.', + }, + 'POST /api/auth/login': { + summary: 'Log in', + description: + 'Authenticates a user with a username and password. Users with two-factor authentication receive a short-lived partial token to complete sign-in.', + }, + 'POST /api/auth/logout': { + summary: 'Log out', + description: + 'Ends the current authentication session by removing its stored token when Redis-backed sessions are enabled.', + }, + 'POST /api/auth/sso': { + summary: 'Create a single sign-on token', + description: + 'Returns the authenticated user and a new token valid for 24 hours. Requires Redis-backed authentication.', + }, + 'GET /api/auth/subscription': { + summary: 'Get subscription details', + description: + 'Returns subscription and feature availability for the current user or a specified team the user can access.', + }, + 'POST /api/auth/verify': { + summary: 'Verify the current sign-in', + description: + 'Validates the current authentication credentials and returns the user and their team memberships.', + }, + 'POST /api/batch': { + summary: 'Send a batch of tracking requests', + description: + 'Processes up to 500 tracking payloads and returns processed and failed counts, individual error details, and a tracking cache token.', + }, + 'GET /api/boards': { + summary: 'List my boards', + description: + "Returns a paginated list of the current user's boards, with search and sorting options.", + }, + 'POST /api/boards': { + summary: 'Create a board', + description: + 'Creates a board with a name, type, and configuration, optionally assigned to a team. Validates access to its referenced resources and reports.', + }, + 'DELETE /api/boards/{boardId}': { + summary: 'Delete a board', + description: "Deletes the specified board after checking the caller's permission to remove it.", + }, + 'GET /api/boards/{boardId}': { + summary: 'Get a board', + description: 'Returns the specified board and its configuration.', + }, + 'POST /api/boards/{boardId}': { + summary: 'Update a board', + description: + "Updates a board's name, description, or configuration and validates the resources and reports it references.", + }, + 'POST /api/boards/{boardId}/clone': { + summary: 'Clone a board', + description: + 'Creates a copy of a board with optional changes to its name, description, and configuration. Removes invalid report references from the copy.', + }, + 'GET /api/boards/{boardId}/shares': { + summary: 'List shares for a board', + description: 'Returns a paginated list of shares for the specified board.', + }, + 'POST /api/boards/{boardId}/shares': { + summary: 'Create a share for a board', + description: 'Creates a named share for the specified board with optional parameters.', + }, + 'GET /api/config': { + summary: 'Get application configuration', + description: + 'Returns public application settings, including deployment mode, feature availability, and tracker and resource URLs.', + }, + 'GET /api/dashboard': { + summary: 'Get my dashboard', + description: "Returns the current user's personal dashboard board and its configuration.", + }, + 'POST /api/dashboard': { + summary: 'Save my dashboard', + description: + "Creates or updates the current user's personal dashboard with the supplied name, description, and configuration.", + }, + 'GET /api/heartbeat': { + summary: 'Check application availability', + description: + 'Returns a simple success response to confirm that the application can serve requests.', + }, + 'GET /api/links': { + summary: 'List my links', + description: + "Returns a paginated list of the current user's tracked links, with search and sorting options.", + }, + 'POST /api/links': { + summary: 'Create a tracked link', + description: + 'Creates a tracked link with a name, destination URL, and slug, optionally assigned to a team.', + }, + 'DELETE /api/links/{linkId}': { + summary: 'Delete a tracked link', + description: + "Deletes the specified tracked link after checking the caller's permission to remove it.", + }, + 'GET /api/links/{linkId}': { + summary: 'Get a tracked link', + description: 'Returns the specified tracked link, including its destination URL and slug.', + }, + 'POST /api/links/{linkId}': { + summary: 'Update a tracked link', + description: "Updates a tracked link's name, destination URL, or slug.", + }, + 'GET /api/links/{linkId}/shares': { + summary: 'List shares for a link', + description: 'Returns a paginated list of shares for the specified link.', + }, + 'POST /api/links/{linkId}/shares': { + summary: 'Create a share for a link', + description: 'Creates a named share for the specified link with optional parameters.', + }, + 'GET /api/links/charts': { + summary: 'Get visitor charts for links', + description: + 'Returns visitor totals and chart data for the requested links the caller can view, within the selected date range.', + }, + 'GET /api/me': { + summary: 'Get my authentication details', + description: + 'Returns the current authentication context, including the authenticated user or share credentials.', + }, + 'GET /api/me/api-keys': { + summary: 'List my API keys', + description: + "Returns metadata for the current user's API keys. Available on self-hosted installations.", + }, + 'POST /api/me/api-keys': { + summary: 'Create an API key', + description: + 'Creates a named API key for the current user and returns its secret value. Available on self-hosted installations.', + }, + 'DELETE /api/me/api-keys/{keyId}': { + summary: 'Delete an API key', + description: + 'Deletes an API key belonging to the current user, revoking its access. Available on self-hosted installations.', + }, + 'POST /api/me/password': { + summary: 'Change my password', + description: 'Verifies the current password and replaces it with the supplied new password.', + }, + 'GET /api/me/teams': { + summary: 'List my team memberships', + description: + 'Returns a paginated list of teams the current user belongs to, with sorting options.', + }, + 'GET /api/me/websites': { + summary: 'List my websites', + description: + "Returns a paginated list of the current user's websites, optionally including websites accessible through team membership.", + }, + 'GET /api/oauth/authorize': { + summary: 'Get OAuth authorization request details', + description: + 'Validates an OAuth authorization request and returns the client and requested permissions for the consent screen. Requires an interactive user session.', + }, + 'POST /api/oauth/authorize': { + summary: 'Approve or deny OAuth access', + description: + "Records the user's consent decision and returns a redirect URL. Approval includes an authorization code, the request state, and the issuer.", + }, + 'POST /api/oauth/register': { + summary: 'Register an OAuth client', + description: + 'Registers a public OAuth client for clients that do not support Client ID Metadata Documents. Clients that support them should use an HTTPS metadata URL as their client ID.', + }, + 'POST /api/oauth/revoke': { + summary: 'Revoke an OAuth refresh token', + description: + 'Revokes the supplied refresh token. Unknown tokens are accepted without revealing whether they existed.', + }, + 'POST /api/oauth/token': { + summary: 'Get or refresh an OAuth access token', + description: + 'Exchanges an authorization code and PKCE verifier, or a refresh token, for an access token. Accepts form-encoded or JSON requests and rotates refresh tokens on use.', + }, + 'GET /api/pixels': { + summary: 'List my tracking pixels', + description: + "Returns a paginated list of the current user's tracking pixels, with search and sorting options.", + }, + 'POST /api/pixels': { + summary: 'Create a tracking pixel', + description: 'Creates a tracking pixel with a name and slug, optionally assigned to a team.', + }, + 'DELETE /api/pixels/{pixelId}': { + summary: 'Delete a tracking pixel', + description: + "Deletes the specified tracking pixel after checking the caller's permission to remove it.", + }, + 'GET /api/pixels/{pixelId}': { + summary: 'Get a tracking pixel', + description: 'Returns the specified tracking pixel and its configuration.', + }, + 'POST /api/pixels/{pixelId}': { + summary: 'Update a tracking pixel', + description: "Updates a tracking pixel's name or slug.", + }, + 'GET /api/pixels/{pixelId}/shares': { + summary: 'List shares for a tracking pixel', + description: 'Returns a paginated list of shares for the specified tracking pixel.', + }, + 'POST /api/pixels/{pixelId}/shares': { + summary: 'Create a share for a tracking pixel', + description: 'Creates a named share for the specified tracking pixel with optional parameters.', + }, + 'GET /api/pixels/charts': { + summary: 'Get visitor charts for tracking pixels', + description: + 'Returns visitor totals and chart data for the requested pixels the caller can view, within the selected date range.', + }, + 'GET /api/realtime/{websiteId}': { + summary: 'Get real-time website activity', + description: + 'Returns recent website activity and visitor data for the real-time view, applying the supplied filters.', + }, + 'POST /api/record': { + summary: 'Send session recordings or heatmap data', + description: + 'Stores session replay events or heatmap clicks and scrolls for a website, using a valid tracking cache token to identify the session and visit.', + }, + 'GET /api/reports': { + summary: 'List saved reports', + description: + 'Returns a paginated list of saved reports for the requested website, optionally filtered by report type.', + }, + 'POST /api/reports': { + summary: 'Save a report', + description: + "Saves a report's name, description, type, and parameters for a website so it can be opened again later.", + }, + 'DELETE /api/reports/{reportId}': { + summary: 'Delete a saved report', + description: 'Deletes the specified saved report definition.', + }, + 'GET /api/reports/{reportId}': { + summary: 'Get a saved report', + description: "Returns the specified report's saved name, description, type, and parameters.", + }, + 'POST /api/reports/{reportId}': { + summary: 'Update a saved report', + description: "Updates the specified report's website, name, description, type, and parameters.", + }, + 'POST /api/reports/attribution': { + summary: 'Run an attribution report', + description: + 'Calculates how traffic sources contribute to conversions using the supplied attribution settings, date range, and filters.', + }, + 'POST /api/reports/breakdown': { + summary: 'Run a breakdown report', + description: + 'Groups website activity by the selected dimensions for the requested date range and filters.', + }, + 'POST /api/reports/funnel': { + summary: 'Run a funnel report', + description: + 'Calculates visitor progression through a sequence of pages or events using the supplied funnel steps and filters.', + }, + 'POST /api/reports/goal': { + summary: 'Run a goal report', + description: + 'Counts visitors who reached a matching page or triggered a matching event and returns the total visitor count for comparison.', + }, + 'POST /api/reports/heatmap': { + summary: 'Get page heatmap data', + description: + 'Returns recorded click or scroll data for the selected page and date range to display as a heatmap.', + }, + 'POST /api/reports/journey': { + summary: 'Run a visitor journey report', + description: + 'Returns paths through pages or events using the supplied journey settings and website filters.', + }, + 'POST /api/reports/performance': { + summary: 'Run a performance report', + description: + 'Returns performance trends, summary metrics, and breakdowns by page, page title, device, and browser for the selected website and date range.', + }, + 'POST /api/reports/retention': { + summary: 'Run a retention report', + description: + 'Calculates how groups of visitors return over time using the supplied retention settings, date range, and filters.', + }, + 'POST /api/reports/revenue': { + summary: 'Run a revenue report', + description: + 'Returns revenue trends, totals with a comparison period, and breakdowns by country, region, referrer, and channel.', + }, + 'POST /api/reports/utm': { + summary: 'Run a campaign report', + description: + 'Returns traffic breakdowns for UTM source, medium, campaign, term, and content using the supplied date range and filters.', + }, + 'GET /api/scripts/telemetry': { + summary: 'Get the installation telemetry script', + description: + 'Returns JavaScript that sends the application version through a telemetry pixel, or an inactive script when telemetry is disabled.', + }, + 'POST /api/send': { + summary: 'Send tracking data', + description: + 'Collects a pageview, custom event, visitor identification, or performance payload and returns session information and a tracking cache token when accepted.', + }, + 'POST /api/share': { + summary: 'Create a share', + description: + 'Creates a named share for a website, board, link, or pixel with parameters and an optional custom slug.', + }, + 'GET /api/share/{slug}': { + summary: 'Open a share by its slug', + description: + 'Resolves a public share slug and returns its resource references, parameters, and an access token scoped to the shared resources.', + }, + 'DELETE /api/share/id/{shareId}': { + summary: 'Delete a share', + description: + 'Deletes the specified share after checking permission to delete shares for its resource.', + }, + 'GET /api/share/id/{shareId}': { + summary: 'Get a share', + description: + "Returns a share's configuration by its ID after checking access to the shared resource.", + }, + 'POST /api/share/id/{shareId}': { + summary: 'Update a share', + description: "Updates the specified share's name, slug, and parameters.", + }, + 'GET /api/teams': { + summary: 'List my teams', + description: + 'Returns a paginated list of teams the current user belongs to, with sorting options.', + }, + 'POST /api/teams': { + summary: 'Create a team', + description: + 'Creates a team with an access code and an owner. Administrators can specify a different user as the owner.', + }, + 'DELETE /api/teams/{teamId}': { + summary: 'Delete a team', + description: "Deletes the specified team after checking the caller's permission to remove it.", + }, + 'GET /api/teams/{teamId}': { + summary: 'Get a team', + description: "Returns the specified team's details, including its members.", + }, + 'POST /api/teams/{teamId}': { + summary: 'Update a team', + description: "Updates the specified team's name or access code.", + }, + 'GET /api/teams/{teamId}/boards': { + summary: "List a team's boards", + description: + 'Returns a paginated list of boards belonging to the specified team, with search and sorting options.', + }, + 'GET /api/teams/{teamId}/links': { + summary: "List a team's links", + description: + 'Returns a paginated list of tracked links belonging to the specified team, with search and sorting options.', + }, + 'GET /api/teams/{teamId}/pixels': { + summary: "List a team's tracking pixels", + description: + 'Returns a paginated list of tracking pixels belonging to the specified team, with search and sorting options.', + }, + 'GET /api/teams/{teamId}/users': { + summary: 'List team members', + description: + 'Returns a paginated list of members of the specified team, including usernames and membership details.', + }, + 'POST /api/teams/{teamId}/users': { + summary: 'Add a team member', + description: 'Adds an existing user to the specified team with the supplied team role.', + }, + 'DELETE /api/teams/{teamId}/users/{userId}': { + summary: 'Remove a team member', + description: + "Removes a user's membership from the specified team, subject to team role and ownership restrictions.", + }, + 'GET /api/teams/{teamId}/users/{userId}': { + summary: 'Get a team member', + description: "Returns the specified user's membership details for a team.", + }, + 'POST /api/teams/{teamId}/users/{userId}': { + summary: "Change a team member's role", + description: + "Updates a user's role in the specified team, subject to the caller's role and permissions.", + }, + 'GET /api/teams/{teamId}/websites': { + summary: "List a team's websites", + description: + 'Returns a paginated list of websites belonging to the specified team, with search and sorting options.', + }, + 'POST /api/teams/join': { + summary: 'Join a team', + description: "Adds the current user to a team as a member using the team's access code.", + }, + 'POST /api/users': { + summary: 'Create a user', + description: 'Creates a user account with the supplied username, password, and role.', + }, + 'DELETE /api/users/{userId}': { + summary: 'Delete a user', + description: + 'Deletes the specified user account. The current user cannot delete their own account through this operation.', + }, + 'GET /api/users/{userId}': { + summary: 'Get a user', + description: + 'Returns details for the specified user account when the caller has permission to view it.', + }, + 'POST /api/users/{userId}': { + summary: 'Update a user', + description: "Updates a user's password. Administrators can also change the username and role.", + }, + 'GET /api/users/{userId}/teams': { + summary: "List a user's teams", + description: + 'Returns a paginated list of teams for the specified user. Available to that user and administrators.', + }, + 'GET /api/users/{userId}/websites': { + summary: "List a user's websites", + description: + "Returns a paginated list of the specified user's websites, optionally including team access. Available to that user and administrators.", + }, + 'GET /api/websites': { + summary: 'List websites', + description: + "Returns a paginated list of the current user's websites, optionally including websites accessible through team membership.", + }, + 'POST /api/websites': { + summary: 'Create a website', + description: + 'Creates a website with a name and domain, optionally assigning it to a team and creating a share.', + }, + 'DELETE /api/websites/{websiteId}': { + summary: 'Delete a website', + description: + "Deletes the specified website after checking the caller's permission to remove it.", + }, + 'GET /api/websites/{websiteId}': { + summary: 'Get a website', + description: "Returns the specified website's details and configuration.", + }, + 'POST /api/websites/{websiteId}': { + summary: 'Update a website', + description: "Updates a website's name, domain, sharing settings, or recording configuration.", + }, + 'GET /api/websites/{websiteId}/active': { + summary: 'Get active website visitors', + description: 'Returns the number of visitors active on the website in the last few minutes.', + }, + 'GET /api/websites/{websiteId}/annotations': { + summary: 'List website annotations', + description: + 'Returns a paginated list of dated notes for the website, optionally filtered by date range or search text.', + }, + 'POST /api/websites/{websiteId}/annotations': { + summary: 'Create a website annotation', + description: + 'Adds a dated note to the website, optionally marking it as an all-day annotation.', + }, + 'DELETE /api/websites/{websiteId}/annotations/{annotationId}': { + summary: 'Delete a website annotation', + description: 'Deletes the specified dated note from the website.', + }, + 'GET /api/websites/{websiteId}/annotations/{annotationId}': { + summary: 'Get a website annotation', + description: 'Returns the date, all-day setting, and note for a specific website annotation.', + }, + 'POST /api/websites/{websiteId}/annotations/{annotationId}': { + summary: 'Update a website annotation', + description: 'Changes the date, all-day setting, and note for a website annotation.', + }, + 'GET /api/websites/{websiteId}/daterange': { + summary: "Get the website's available date range", + description: 'Returns the earliest and latest recorded event dates for the website.', + }, + 'GET /api/websites/{websiteId}/event-data': { + summary: 'List events with custom properties', + description: + "Returns a page of events in the selected date range, grouping each event's custom property records together.", + }, + 'GET /api/websites/{websiteId}/event-data-pivot': { + summary: 'List event properties in table form', + description: + 'Returns a page of occurrences of the specified event, with event details and property keys and values grouped into one row per occurrence.', + }, + 'GET /api/websites/{websiteId}/event-data-pivot/array-series': { + summary: 'Get event array values over time', + description: + 'Counts individual values in an array property for the specified event, grouped by value and time interval.', + }, + 'GET /api/websites/{websiteId}/event-data-pivot/date-series': { + summary: 'Get the distribution of event date values', + description: + "Counts occurrences of dates stored in the specified event property, grouping by the property's date value within the selected event date range.", + }, + 'GET /api/websites/{websiteId}/event-data-pivot/numeric-series': { + summary: 'Get numeric event properties over time', + description: + 'Returns the sum, average, or count of a numeric property for the specified event, grouped by time interval.', + }, + 'GET /api/websites/{websiteId}/event-data-pivot/numeric-stats': { + summary: 'Get numeric event property statistics', + description: + 'Returns the total, average, median, minimum, and maximum of the specified numeric event property for the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/event-data-pivot/property-series': { + summary: 'Get event property values over time', + description: + 'Counts occurrences of string values in the specified event property, grouped by value and time interval.', + }, + 'GET /api/websites/{websiteId}/event-data/{eventId}': { + summary: "Get an event's custom properties", + description: + 'Returns the custom property records, data types, and values attached to a specific event.', + }, + 'GET /api/websites/{websiteId}/event-data/events': { + summary: 'Summarize properties by event', + description: + 'Returns property names, types, and counts grouped by event name. When an event is specified, also groups by property value.', + }, + 'GET /api/websites/{websiteId}/event-data/fields': { + summary: 'List event property fields', + description: + 'Returns property names, data types, and counts for the selected date range, optionally restricted to an event name.', + }, + 'GET /api/websites/{websiteId}/event-data/properties': { + summary: 'List event property usage', + description: + 'Returns event names and their custom property names, data types, and record counts for the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/event-data/stats': { + summary: 'Get event property totals', + description: + 'Returns counts of events with custom data, distinct property names, and property records for the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/event-data/values': { + summary: 'List event property values', + description: + 'Returns values and their occurrence counts for a custom event property, optionally restricted by event name and data type.', + }, + 'GET /api/websites/{websiteId}/events': { + summary: 'List tracked events', + description: + 'Returns a page of pageviews and custom events in the date range, newest first. Supports filtering by event name and searching event details.', + }, + 'GET /api/websites/{websiteId}/events/series': { + summary: 'Get custom event counts over time', + description: + 'Returns counts grouped by event name and time interval, optionally limited to the most frequent event names.', + }, + 'GET /api/websites/{websiteId}/events/stats': { + summary: 'Get website event statistics', + description: + 'Returns website event totals for the selected date range and filters, including totals for the comparison period.', + }, + 'GET /api/websites/{websiteId}/export': { + summary: 'Export website analytics', + description: + 'Returns a base64-encoded ZIP archive containing CSV exports of events, pages, referrers, browsers, operating systems, devices, and countries.', + }, + 'GET /api/websites/{websiteId}/metrics': { + summary: 'Get ranked website metrics', + description: + 'Returns the most frequent values for a dimension such as pages, referrers, countries, browsers, campaigns, or events. Counts pageviews or events for activity dimensions and unique visitors for visitor dimensions.', + }, + 'GET /api/websites/{websiteId}/metrics/expanded': { + summary: 'Get detailed website metrics', + description: + 'Returns additional analytics for the selected page, event, visitor, or channel dimension, using the supplied date range and filters.', + }, + 'GET /api/websites/{websiteId}/pageviews': { + summary: 'Get pageviews and sessions over time', + description: + 'Returns pageviews and sessions grouped by the requested time interval and timezone, including a comparison period when requested.', + }, + 'GET /api/websites/{websiteId}/recorder': { + summary: 'Get website recording settings', + description: + 'Returns public replay and heatmap settings, including sampling, masking, and duration limits. Returns disabled status when recording is unavailable.', + }, + 'GET /api/websites/{websiteId}/replays': { + summary: 'List website session replays', + description: + 'Returns a paginated list of recorded sessions for the website, applying date, replay, and search filters.', + }, + 'GET /api/websites/{websiteId}/replays/{replayId}': { + summary: 'Get a session replay recording', + description: + 'Returns the merged recording events, session details, and event and chunk counts for a replay, with optional stopping points by timestamp, chunk, or event index.', + }, + 'GET /api/websites/{websiteId}/replays/saved': { + summary: 'List saved session replays', + description: 'Returns a paginated, searchable list of replays saved for the website.', + }, + 'GET /api/websites/{websiteId}/replays/saved/{replayId}': { + summary: 'Check whether a replay is saved', + description: "Returns whether the specified replay is in the website's saved replays.", + }, + 'POST /api/websites/{websiteId}/replays/saved/{replayId}': { + summary: 'Save or unsave a session replay', + description: + "Adds a replay to the website's saved replays with an optional name, or removes it when isSaved is false.", + }, + 'GET /api/websites/{websiteId}/reports': { + summary: "List a website's saved reports", + description: + 'Returns a paginated list of saved report definitions for the website, optionally filtered by report type.', + }, + 'POST /api/websites/{websiteId}/reset': { + summary: 'Reset website analytics', + description: + "Clears the website's collected analytics data while keeping the website configuration.", + }, + 'GET /api/websites/{websiteId}/revenue/chart': { + summary: 'Get website revenue over time', + description: + 'Returns revenue chart data for the selected currency, date range, and website filters.', + }, + 'GET /api/websites/{websiteId}/revenue/metrics': { + summary: 'Get website revenue by dimension', + description: + 'Returns revenue grouped by the requested dimension, such as country or referrer, for the selected currency and date range.', + }, + 'GET /api/websites/{websiteId}/revenue/sessions': { + summary: 'List sessions with revenue', + description: + 'Returns a paginated list of sessions with revenue in the selected currency and date range, applying website and search filters.', + }, + 'GET /api/websites/{websiteId}/revenue/stats': { + summary: 'Get website revenue totals', + description: + 'Returns revenue summary statistics for the selected currency and date range, including totals for the comparison period.', + }, + 'GET /api/websites/{websiteId}/segments': { + summary: 'List website segments and cohorts', + description: + 'Returns saved segments or cohorts for the website, filtered by the requested type and search text.', + }, + 'POST /api/websites/{websiteId}/segments': { + summary: 'Create a website segment or cohort', + description: + 'Saves a named segment or cohort with its type and filter parameters for the website.', + }, + 'DELETE /api/websites/{websiteId}/segments/{segmentId}': { + summary: 'Delete a website segment or cohort', + description: 'Deletes the specified saved segment or cohort from the website.', + }, + 'GET /api/websites/{websiteId}/segments/{segmentId}': { + summary: 'Get a website segment or cohort', + description: 'Returns a saved segment or cohort and its filter parameters for the website.', + }, + 'POST /api/websites/{websiteId}/segments/{segmentId}': { + summary: 'Update a website segment or cohort', + description: "Updates a saved segment or cohort's type, name, and filter parameters.", + }, + 'GET /api/websites/{websiteId}/session-data-pivot': { + summary: 'List session properties in table form', + description: + 'Returns a page of sessions matching the selected property and filters, with the latest property keys and values grouped into one row per session.', + }, + 'GET /api/websites/{websiteId}/session-data/array-series': { + summary: 'Get session array values over time', + description: + 'Counts distinct sessions for individual values in an array property, grouped by value and time interval.', + }, + 'GET /api/websites/{websiteId}/session-data/date-series': { + summary: 'Get the distribution of session date values', + description: + 'Counts distinct sessions by dates stored in the specified custom property, using the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/session-data/numeric-series': { + summary: 'Get numeric session properties over time', + description: + 'Returns the sum, average, or count of a numeric session property, grouped by time interval for the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/session-data/numeric-stats': { + summary: 'Get numeric session property statistics', + description: + 'Returns the total, average, median, minimum, and maximum of the specified numeric session property for the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/session-data/properties': { + summary: 'List session property usage', + description: + 'Returns custom session property names, data types, and distinct session counts, optionally restricted to sessions with a selected property.', + }, + 'GET /api/websites/{websiteId}/session-data/property-series': { + summary: 'Get session property values over time', + description: + 'Counts distinct sessions for string values in a custom property, grouped by value and time interval.', + }, + 'GET /api/websites/{websiteId}/session-data/stats': { + summary: 'Get activity by session property', + description: + 'Returns session, visit, pageview, event, and total activity counts grouped by values of the specified session property.', + }, + 'GET /api/websites/{websiteId}/session-data/values': { + summary: 'List session property values', + description: + 'Returns custom session property values and their occurrence counts, optionally filtered by property name and data type.', + }, + 'GET /api/websites/{websiteId}/sessions': { + summary: 'List visitor sessions', + description: + 'Returns a page of visitor sessions in the date range, newest first. Search matches distinct ID, city, browser, operating system, or device.', + }, + 'DELETE /api/websites/{websiteId}/sessions/{sessionId}': { + summary: 'Delete a visitor session', + description: + 'Deletes the specified session and its associated analytics data. Available on installations using only a relational database.', + }, + 'GET /api/websites/{websiteId}/sessions/{sessionId}': { + summary: 'Get a visitor session', + description: + 'Returns details for a website session, including linked visitor identities and whether session deletion is available to the caller.', + }, + 'GET /api/websites/{websiteId}/sessions/{sessionId}/activity': { + summary: "Get a visitor's session activity", + description: + 'Returns activity for the specified session and sessions linked by visitor identity, using the requested date range and optional distinct ID.', + }, + 'GET /api/websites/{websiteId}/sessions/{sessionId}/properties': { + summary: "Get a session's custom properties", + description: + 'Returns custom property records, data types, and values for the specified website session.', + }, + 'GET /api/websites/{websiteId}/sessions/{sessionId}/replays': { + summary: "List a visitor's session replays", + description: + 'Returns a paginated, searchable list of recordings for the specified website session.', + }, + 'GET /api/websites/{websiteId}/sessions/stats': { + summary: 'Get visitor session statistics', + description: + 'Returns aggregate session metrics for the website over the selected date range and filters.', + }, + 'GET /api/websites/{websiteId}/sessions/weekly': { + summary: 'Get traffic by weekday and hour', + description: + 'Returns distinct visitor counts grouped by day of the week and hour in the selected timezone and date range.', + }, + 'GET /api/websites/{websiteId}/shares': { + summary: 'List shares for a website', + description: 'Returns a paginated list of shares for the specified website.', + }, + 'POST /api/websites/{websiteId}/shares': { + summary: 'Create a share for a website', + description: 'Creates a named share for the specified website with optional parameters.', + }, + 'GET /api/websites/{websiteId}/stats': { + summary: 'Get website summary statistics', + description: + 'Returns pageviews, unique visitors, visits, bounces, and total time on site for the selected date range and comparison period.', + }, + 'POST /api/websites/{websiteId}/transfer': { + summary: 'Transfer website ownership', + description: + 'Transfers the specified website to another user or team after checking permission for the destination.', + }, + 'GET /api/websites/{websiteId}/values': { + summary: 'List website filter values', + description: + 'Returns available values for a website filter, including saved segments or cohorts when requested, to populate filter choices.', + }, + 'GET /api/websites/charts': { + summary: 'Get visitor charts for websites', + description: + 'Returns visitor totals and chart data for the requested websites the caller can view, within the selected date range.', + }, +} satisfies Partial} /${string}`, OperationDescription>>;