openapi: 3.2.0 info: title: Matomo Reporting API for plugin Activity Log API version: 1.0.0 description: Exposes Activity Log API endpoints for listing activity entries, counting matches, and resolving the permitted date range for the current caller. servers: - url: https://demo-proxy.innocraft.cloud/ description: Current Matomo instance security: - MatomoToken: [] tags: - name: ActivityLog description: Exposes Activity Log API endpoints for listing activity entries, counting matches, and resolving the permitted date range for the current caller. paths: /index.php?module=API&method=ActivityLog.getEntries: get: tags: - ActivityLog description: Returns Activity Log entries visible to the current caller. operationId: ActivityLog.getEntries parameters: - $ref: '#/components/parameters/formatOptional' - name: offset in: query description: The zero-based offset to start returning entries from. required: false schema: oneOf: - type: integer default: 0 - type: string default: '0' - name: limit in: query description: The maximum number of entries to return. Use `-1` to return all matching entries. required: false schema: oneOf: - type: integer default: 25 - type: string default: '25' - name: filterByUserLogin in: query description: The user login to filter by, or `null` to use the current user unless the caller is a super user. required: false schema: type: string - name: filterByActivityType in: query description: The activity type identifier to filter by. required: false schema: type: string - name: period in: query description: The reporting period to filter by. required: false schema: type: string - name: date in: query description: The date or date range to process. `YYYY-MM-DD`, magic keywords (`today`, `yesterday`, `lastWeek`, `lastMonth`, `lastYear`), or date range (`YYYY-MM-DD,YYYY-MM-DD`, `lastX`, `previousX`). required: false schema: type: string responses: '200': description: 'The matching activity entries with formatted metadata, descriptions, timestamps, and avatar details. Example responses require Super User access. Use Try it out to see a live response.' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' default: $ref: '#/components/responses/DefaultError' /index.php?module=API&method=ActivityLog.getEntryCount: get: tags: - ActivityLog description: Returns the number of Activity Log entries visible to the current caller. operationId: ActivityLog.getEntryCount parameters: - $ref: '#/components/parameters/formatOptional' - name: filterByUserLogin in: query description: The user login to filter by, or `null` to use the current user unless the caller is a super user. required: false schema: type: string - name: filterByActivityType in: query description: The activity type identifier to filter by. required: false schema: type: string - name: period in: query description: The reporting period to filter by. required: false schema: type: string - name: date in: query description: The date or date range to process. `YYYY-MM-DD`, magic keywords (`today`, `yesterday`, `lastWeek`, `lastMonth`, `lastYear`), or date range (`YYYY-MM-DD,YYYY-MM-DD`, `lastX`, `previousX`). required: false schema: type: string responses: '200': description: 'The number of matching activity entries. Example responses require Super User access. Use Try it out to see a live response.' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' default: $ref: '#/components/responses/DefaultError' /index.php?module=API&method=ActivityLog.getAllActivityTypes: get: tags: - ActivityLog description: Returns the available activity type metadata grouped by plugin. operationId: ActivityLog.getAllActivityTypes parameters: - $ref: '#/components/parameters/formatOptional' - name: filterLimit in: query description: The maximum number of activity types to return, or `-1` for no limit. required: false schema: oneOf: - type: integer - type: string default: '-1' responses: '200': description: 'The available activity types grouped by plugin label. Example responses require Super User access. Use Try it out to see a live response.' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/ServerError' default: $ref: '#/components/responses/DefaultError' components: responses: NotFound: description: Resource not found. content: text/plain: schema: type: string example: 'Error: The method is not available.' text/html: schema: type: string example: The method is not available. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' ServerError: description: Unexpected server error. content: text/plain: schema: type: string example: 'Error: There was an error.' text/html: schema: type: string example: There was an error. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' Unauthorized: description: Authentication failed or missing token. content: text/plain: schema: type: string example: 'Error: You must be logged in to access this functionality.' text/html: schema: type: string example: You must be logged in to access this functionality. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' Forbidden: description: Authenticated but not allowed to access the resource. content: text/plain: schema: type: string example: 'Error: Not authorised.' text/html: schema: type: string example: Not authorised. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' DefaultError: description: Default error response (any non-2xx). content: text/plain: schema: type: string example: 'Error: There was an error.' text/html: schema: type: string example: There was an error. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' BadRequest: description: Bad request (validation or missing parameters). content: text/plain: schema: type: string example: 'Error: There was an error.' text/html: schema: type: string example: There was an error. application/json: schema: $ref: '#/components/schemas/Error' application/xml: schema: $ref: '#/components/schemas/ErrorXml' parameters: formatOptional: name: format in: query description: Response format. Defaults to `xml`. Use `original` to get the original PHP data structure. required: false schema: type: string default: xml enum: - xml - json - csv - tsv - html - rss - original schemas: ErrorXml: description: Generic Matomo error payload in XML. properties: error: properties: message: type: string xml: attribute: true example: There was an error type: object xml: name: error type: object xml: name: result Error: description: Generic Matomo error payload. required: - result - message properties: result: type: string example: error message: type: string example: There was an error code: type: integer type: object additionalProperties: true securitySchemes: MatomoToken: type: http description: Paste your token generated from Personal > Security. Swagger will send it as a Bearer token. scheme: bearer externalDocs: description: Matomo Reporting API developer page url: https://developer.matomo.org/api-reference/reporting-api/