Umami API

The Umami API provides programmatic access to website analytics data including pageviews, sessions, events, and metrics, allowing developers to collect tracking data and retrieve analytics reports. Self-hosted instances use JWT bearer tokens; Umami Cloud uses API key authentication.

Documentation

Specifications

Examples

Schemas & Data

📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-website-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-website-list-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-website-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-website-stats-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-pageview-data-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-metric-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-active-visitors-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-session-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-session-list-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-session-stats-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-user-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-user-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-team-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-team-list-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-team-member-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-team-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-login-request-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-login-response-schema.json
📊
JSONSchema
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-schema/umami-ok-response-schema.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-website-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-website-list-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-website-stats-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-session-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-session-list-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-metric-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-user-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-team-structure.json
📊
JSONStructure
https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/json-structure/umami-team-member-structure.json

Other Resources

OpenAPI Specification

umami-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Umami Analytics API
  description: The Umami Analytics API provides programmatic access to website analytics
    data including pageviews, sessions, events, and metrics. Umami is an open source,
    privacy-first web analytics platform that collects data without cookies or personal
    data storage. The API supports website management, session tracking, real-time
    visitor data, and analytics reporting for self-hosted and cloud instances. Self-hosted
    instances use JWT bearer tokens from the auth endpoint; Umami Cloud uses API key
    authentication.
  version: '1.0'
  contact:
    name: Umami Support
    url: https://umami.is/docs/support
  termsOfService: https://umami.is/terms
  x-generated-from: documentation
servers:
- url: https://api.umami.is
  description: Umami Cloud API
- url: http://localhost:3000
  description: Self-hosted Umami instance
security:
- bearerAuth: []
tags:
- name: Authentication
  description: Login and token verification
- name: Websites
  description: Website management and configuration
- name: Website Statistics
  description: Analytics metrics, pageviews, and statistics
- name: Sessions
  description: Visitor session data
- name: Events
  description: Custom event tracking
- name: Users
  description: User account management
- name: Teams
  description: Team and access management
paths:
  /api/auth/login:
    post:
      operationId: login
      summary: Umami Login
      description: Obtain a JWT bearer token for API authentication on self-hosted
        instances.
      tags:
      - Authentication
      requestBody:
        required: true
        description: Login credentials
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
            examples:
              loginRequestExample:
                summary: Default login request
                x-microcks-default: true
                value:
                  username: admin
                  password: umami
      responses:
        '200':
          description: Login successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
              examples:
                login200Example:
                  summary: Default login 200 response
                  x-microcks-default: true
                  value:
                    token: eyTMjU2IiwiY...4Q0JDLUhWxnIjoiUE_A
                    user:
                      id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      username: admin
                      role: admin
                      createdAt: '2026-01-15T10:00:00.000Z'
                      isAdmin: true
        '401':
          description: Invalid credentials
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/auth/verify:
    post:
      operationId: verifyToken
      summary: Umami Verify Token
      description: Validate that a JWT bearer token is still active and retrieve current
        user info.
      tags:
      - Authentication
      responses:
        '200':
          description: Token is valid
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
              examples:
                verifyToken200Example:
                  summary: Default verifyToken 200 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    username: admin
                    role: admin
                    createdAt: '2026-01-15T10:00:00.000Z'
                    isAdmin: true
                    teams: []
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites:
    get:
      operationId: listWebsites
      summary: Umami List Websites
      description: Retrieve all websites accessible to the authenticated user.
      tags:
      - Websites
      parameters:
      - name: includeTeams
        in: query
        schema:
          type: boolean
        description: Include team-owned websites
        example: false
      - name: search
        in: query
        schema:
          type: string
        description: Filter websites by name or domain
        example: mysite
      - name: page
        in: query
        schema:
          type: integer
          default: 1
        description: Page number for pagination
        example: 1
      - name: pageSize
        in: query
        schema:
          type: integer
        description: Number of results per page
        example: 20
      responses:
        '200':
          description: List of websites
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteList'
              examples:
                listWebsites200Example:
                  summary: Default listWebsites 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      name: My Website
                      domain: example.com
                      shareId: null
                      resetAt: null
                      userId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      createdAt: '2026-01-15T10:00:00.000Z'
                      updatedAt: '2026-01-15T10:00:00.000Z'
                      deletedAt: null
                    count: 1
                    page: 1
                    pageSize: 20
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createWebsite
      summary: Umami Create Website
      description: Add a new website to Umami for tracking.
      tags:
      - Websites
      requestBody:
        required: true
        description: Website configuration
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteRequest'
            examples:
              createWebsiteRequestExample:
                summary: Default createWebsite request
                x-microcks-default: true
                value:
                  name: My Website
                  domain: example.com
      responses:
        '201':
          description: Website created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Website'
              examples:
                createWebsite201Example:
                  summary: Default createWebsite 201 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    name: My Website
                    domain: example.com
                    shareId: null
                    resetAt: null
                    userId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    createdAt: '2026-01-15T10:00:00.000Z'
                    updatedAt: '2026-01-15T10:00:00.000Z'
                    deletedAt: null
        '400':
          description: Invalid request body
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}:
    get:
      operationId: getWebsite
      summary: Umami Get Website
      description: Retrieve a specific website by its ID.
      tags:
      - Websites
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      responses:
        '200':
          description: Website details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Website'
              examples:
                getWebsite200Example:
                  summary: Default getWebsite 200 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    name: My Website
                    domain: example.com
                    shareId: null
                    resetAt: null
                    userId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    createdAt: '2026-01-15T10:00:00.000Z'
                    updatedAt: '2026-01-15T10:00:00.000Z'
                    deletedAt: null
        '404':
          description: Website not found
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: updateWebsite
      summary: Umami Update Website
      description: Modify settings for an existing website.
      tags:
      - Websites
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      requestBody:
        required: true
        description: Updated website configuration
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebsiteRequest'
            examples:
              updateWebsiteRequestExample:
                summary: Default updateWebsite request
                x-microcks-default: true
                value:
                  name: Updated Website Name
                  domain: example.com
      responses:
        '200':
          description: Website updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Website'
              examples:
                updateWebsite200Example:
                  summary: Default updateWebsite 200 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    name: Updated Website Name
                    domain: example.com
                    shareId: null
                    resetAt: null
                    userId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    createdAt: '2026-01-15T10:00:00.000Z'
                    updatedAt: '2026-01-16T10:00:00.000Z'
                    deletedAt: null
        '401':
          description: Unauthorized
        '404':
          description: Website not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteWebsite
      summary: Umami Delete Website
      description: Remove a website and all associated data from Umami.
      tags:
      - Websites
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      responses:
        '200':
          description: Website deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse'
              examples:
                deleteWebsite200Example:
                  summary: Default deleteWebsite 200 response
                  x-microcks-default: true
                  value:
                    ok: true
        '401':
          description: Unauthorized
        '404':
          description: Website not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/stats:
    get:
      operationId: getWebsiteStats
      summary: Umami Website Stats
      description: Retrieve summarized statistics for a website within a given time
        range.
      tags:
      - Website Statistics
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      responses:
        '200':
          description: Website statistics summary
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebsiteStats'
              examples:
                getWebsiteStats200Example:
                  summary: Default getWebsiteStats 200 response
                  x-microcks-default: true
                  value:
                    pageviews:
                      value: 1500
                      change: 150
                    visitors:
                      value: 800
                      change: 80
                    visits:
                      value: 1000
                      change: 100
                    bounces:
                      value: 400
                      change: -20
                    totaltime:
                      value: 72000
                      change: 7200
        '401':
          description: Unauthorized
        '404':
          description: Website not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/pageviews:
    get:
      operationId: getWebsitePageviews
      summary: Umami Website Pageviews
      description: Retrieve pageview data bucketed by time unit within a given date
        range.
      tags:
      - Website Statistics
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      - name: unit
        in: query
        required: true
        schema:
          type: string
          enum:
          - minute
          - hour
          - day
          - month
          - year
        description: Time bucket unit
        example: day
      - name: timezone
        in: query
        required: true
        schema:
          type: string
        description: IANA timezone name
        example: America/New_York
      responses:
        '200':
          description: Pageview time series data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageviewData'
              examples:
                getWebsitePageviews200Example:
                  summary: Default getWebsitePageviews 200 response
                  x-microcks-default: true
                  value:
                    pageviews:
                    - x: '2026-01-15 00:00:00'
                      y: 245
                    sessions:
                    - x: '2026-01-15 00:00:00'
                      y: 180
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/metrics:
    get:
      operationId: getWebsiteMetrics
      summary: Umami Website Metrics
      description: Retrieve metrics for a website broken down by a specific dimension.
      tags:
      - Website Statistics
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      - name: type
        in: query
        required: true
        schema:
          type: string
          enum:
          - url
          - title
          - referrer
          - browser
          - os
          - device
          - screen
          - country
          - language
          - event
        description: Metric dimension to retrieve
        example: url
      - name: limit
        in: query
        schema:
          type: integer
          default: 500
        description: Maximum number of results
        example: 20
      responses:
        '200':
          description: Metrics data by dimension
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Metric'
              examples:
                getWebsiteMetrics200Example:
                  summary: Default getWebsiteMetrics 200 response
                  x-microcks-default: true
                  value:
                  - x: /home
                    y: 450
                  - x: /blog
                    y: 220
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/active:
    get:
      operationId: getActiveVisitors
      summary: Umami Active Visitors
      description: Retrieve the number of currently active visitors on a website.
      tags:
      - Website Statistics
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      responses:
        '200':
          description: Active visitor count
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveVisitors'
              examples:
                getActiveVisitors200Example:
                  summary: Default getActiveVisitors 200 response
                  x-microcks-default: true
                  value:
                    visitors: 42
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/sessions:
    get:
      operationId: listSessions
      summary: Umami List Sessions
      description: Retrieve session details for a website within a given time range.
      tags:
      - Sessions
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      - name: page
        in: query
        schema:
          type: integer
          default: 1
        description: Page number
        example: 1
      - name: pageSize
        in: query
        schema:
          type: integer
          default: 20
        description: Results per page
        example: 20
      responses:
        '200':
          description: Session list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionList'
              examples:
                listSessions200Example:
                  summary: Default listSessions 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      websiteId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      browser: Chrome
                      os: Windows
                      device: desktop
                      screen: 1920x1080
                      language: en-US
                      country: US
                      createdAt: '2026-01-15T10:00:00.000Z'
                    count: 1
                    page: 1
                    pageSize: 20
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/sessions/stats:
    get:
      operationId: getSessionStats
      summary: Umami Session Stats
      description: Retrieve summarized session statistics for a website.
      tags:
      - Sessions
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      responses:
        '200':
          description: Session statistics
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionStats'
              examples:
                getSessionStats200Example:
                  summary: Default getSessionStats 200 response
                  x-microcks-default: true
                  value:
                    pageviews: 1500
                    visitors: 800
                    visits: 1000
                    countries: 25
                    events: 200
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/websites/{websiteId}/events/series:
    get:
      operationId: getEventSeries
      summary: Umami Event Series
      description: Retrieve custom events within a given time range for a website.
      tags:
      - Events
      parameters:
      - name: websiteId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Website identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      - name: startAt
        in: query
        required: true
        schema:
          type: integer
        description: Start timestamp in milliseconds
        example: 1704067200000
      - name: endAt
        in: query
        required: true
        schema:
          type: integer
        description: End timestamp in milliseconds
        example: 1704153600000
      - name: unit
        in: query
        required: true
        schema:
          type: string
          enum:
          - minute
          - hour
          - day
          - month
          - year
        description: Time bucket unit
        example: day
      - name: timezone
        in: query
        required: true
        schema:
          type: string
        description: IANA timezone name
        example: America/New_York
      responses:
        '200':
          description: Event time series data
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Metric'
              examples:
                getEventSeries200Example:
                  summary: Default getEventSeries 200 response
                  x-microcks-default: true
                  value:
                  - x: '2026-01-15 00:00:00'
                    y: 45
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/users:
    post:
      operationId: createUser
      summary: Umami Create User
      description: Create a new user account. Only available for admin users on self-hosted
        instances.
      tags:
      - Users
      requestBody:
        required: true
        description: New user details
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserRequest'
            examples:
              createUserRequestExample:
                summary: Default createUser request
                x-microcks-default: true
                value:
                  username: newuser
                  password: securepassword
                  role: user
      responses:
        '201':
          description: User created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
              examples:
                createUser201Example:
                  summary: Default createUser 201 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    username: newuser
                    role: user
                    createdAt: '2026-01-15T10:00:00.000Z'
        '400':
          description: Invalid request body
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/users/{userId}:
    get:
      operationId: getUser
      summary: Umami Get User
      description: Retrieve a user account by ID. Only available for admin users on
        self-hosted instances.
      tags:
      - Users
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: User identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      responses:
        '200':
          description: User details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
              examples:
                getUser200Example:
                  summary: Default getUser 200 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    username: admin
                    role: admin
                    createdAt: '2026-01-15T10:00:00.000Z'
        '401':
          description: Unauthorized
        '404':
          description: User not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteUser
      summary: Umami Delete User
      description: Remove a user account. Only available for admin users on self-hosted
        instances.
      tags:
      - Users
      parameters:
      - name: userId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: User identifier
        example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      responses:
        '200':
          description: User deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OkResponse'
              examples:
                deleteUser200Example:
                  summary: Default deleteUser 200 response
                  x-microcks-default: true
                  value:
                    ok: true
        '401':
          description: Unauthorized
        '404':
          description: User not found
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/teams:
    get:
      operationId: listTeams
      summary: Umami List Teams
      description: Retrieve all teams accessible to the authenticated user.
      tags:
      - Teams
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          default: 1
        description: Page number
        example: 1
      - name: pageSize
        in: query
        schema:
          type: integer
        description: Results per page
        example: 20
      responses:
        '200':
          description: List of teams
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeamList'
              examples:
                listTeams200Example:
                  summary: Default listTeams 200 response
                  x-microcks-default: true
                  value:
                    data:
                    - id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                      name: My Team
                      accessCode: ABC123
                      createdAt: '2026-01-15T10:00:00.000Z'
                      updatedAt: '2026-01-15T10:00:00.000Z'
                      deletedAt: null
                    count: 1
                    page: 1
                    pageSize: 20
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createTeam
      summary: Umami Create Team
      description: Create a new team for collaborative website management.
      tags:
      - Teams
      requestBody:
        required: true
        description: Team configuration
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TeamRequest'
            examples:
              createTeamRequestExample:
                summary: Default createTeam request
                x-microcks-default: true
                value:
                  name: Analytics Team
      responses:
        '201':
          description: Team created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Team'
              examples:
                createTeam201Example:
                  summary: Default createTeam 201 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    name: Analytics Team
                    accessCode: XYZ789
                    createdAt: '2026-01-15T10:00:00.000Z'
                    updatedAt: '2026-01-15T10:00:00.000Z'
                    deletedAt: null
        '400':
          description: Invalid request body
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/teams/join:
    post:
      operationId: joinTeam
      summary: Umami Join Team
      description: Join an existing team using an access code.
      tags:
      - Teams
      requestBody:
        required: true
        description: Team access code
        content:
          application/json:
            schema:
              type: object
              required:
              - accessCode
              properties:
                accessCode:
                  type: string
                  description: Team access code
                  example: ABC123
            examples:
              joinTeamRequestExample:
                summary: Default joinTeam request
                x-microcks-default: true
                value:
                  accessCode: ABC123
      responses:
        '200':
          description: Successfully joined team
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeamMember'
              examples:
                joinTeam200Example:
                  summary: Default joinTeam 200 response
                  x-microcks-default: true
                  value:
                    id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    teamId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    userId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
                    role: team-member
                    createdAt: '2026-01-15T10:00:00.000Z'
        '400':
          description: Invalid access code
        '401':
          description: Unauthorized
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /api/teams/{teamId}:
    get:
      operationId: 

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/umami/refs/heads/main/openapi/umami-openapi.yml