Matomo · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Matomo Reporting API for plugin Custom Reports API
14 actions
14 updates
phrasing
extends
openapi/matomo-custom-reports-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Matomo's API. It is a proposal applied on top of the contract, not a document Matomo publishes.
What the actions change
x-apievangelist-phrasing
Targets 14
$.info
$.paths['/index.php?module=API&method=CustomReports.duplicateCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.addCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.updateCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.getConfiguredReports'].get
$.paths['/index.php?module=API&method=CustomReports.getConfiguredReport'].get
$.paths['/index.php?module=API&method=CustomReports.deleteCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.pauseCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.resumeCustomReport'].get
$.paths['/index.php?module=API&method=CustomReports.getAvailableCategories'].get
$.paths['/index.php?module=API&method=CustomReports.getAvailableReportTypes'].get
$.paths['/index.php?module=API&method=CustomReports.getAvailableDimensions'].get
$.paths['/index.php?module=API&method=CustomReports.getAvailableMetrics'].get
$.paths['/index.php?module=API&method=CustomReports.getCustomReport'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Matomo Reporting API for plugin Custom Reports API
version: 1.0.0
extends: openapi/matomo-custom-reports-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 13
- target: $.paths['/index.php?module=API&method=CustomReports.duplicateCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Copy a custom report to other sites
effect: write
questions:
- Can I copy a custom report I built to my other websites?
- How do I duplicate a report definition instead of rebuilding it?
instructions:
- text: Duplicate custom report {idCustomReport} from site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
- text: Copy custom report {idCustomReport} on site {idSite} to sites {idDestinationSites}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
idDestinationSites: query.idDestinationSites
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.addCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Create a new custom report
effect: write
questions:
- How do I build my own report combining the dimensions and metrics I choose in Matomo?
- Can a new custom report be limited by a segment filter?
instructions:
- text: Create a {reportType} custom report {name} on site {idSite} with metrics {metricIds}.
slots:
reportType: query.reportType
name: query.name
idSite: query.idSite
metricIds: query.metricIds
- text: 'Build new report {name} for site {idSite}: type {reportType}, metrics {metricIds}, dimensions {dimensionIds}.'
slots:
name: query.name
idSite: query.idSite
reportType: query.reportType
metricIds: query.metricIds
dimensionIds: query.dimensionIds
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.updateCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Edit an existing custom report
effect: write
questions:
- Can I add a metric to a custom report I already created?
- What's needed to change the dimensions of an existing custom report?
instructions:
- text: 'Update custom report {idCustomReport} on site {idSite}: name {name}, type {reportType}, metrics {metricIds}.'
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
name: query.name
reportType: query.reportType
metricIds: query.metricIds
- text: Change existing report {idCustomReport} (site {idSite}) to use segment {segmentFilter}, keeping {name}, {reportType}, {metricIds}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
segmentFilter: query.segmentFilter
name: query.name
reportType: query.reportType
metricIds: query.metricIds
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getConfiguredReports'].get
update:
x-apievangelist-phrasing:
intent: List all custom report definitions on a site
effect: read
questions:
- Which custom reports have been set up for my site?
- Can I list all custom report configurations without their category info?
instructions:
- text: List every custom report configured for site {idSite}.
slots:
idSite: query.idSite
- text: Show all custom report definitions on site {idSite}, skipping category metadata.
slots:
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getConfiguredReport'].get
update:
x-apievangelist-phrasing:
intent: Get one custom report's definition
effect: read
questions:
- What dimensions and metrics make up a given custom report?
- Can I see the setup of one custom report by its ID?
instructions:
- text: Get the definition of custom report {idCustomReport} on site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
- text: Show how custom report {idCustomReport} (site {idSite}) is configured.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.deleteCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Delete a custom report
effect: destructive
questions:
- How do I get rid of a custom report I no longer need?
- Is deleting a custom report different from pausing it?
instructions:
- text: Delete custom report {idCustomReport} on site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
- text: Permanently remove custom report {idCustomReport} from site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.pauseCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Pause a custom report
effect: write
questions:
- Can I temporarily stop a custom report from processing data?
- Is there a way to pause a report without deleting it?
instructions:
- text: Pause custom report {idCustomReport} on site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
- text: Stop archiving custom report {idCustomReport} for site {idSite} for now.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.resumeCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Resume a paused custom report
effect: write
questions:
- How do I turn a paused custom report back on?
- Can a paused report start collecting data again?
instructions:
- text: Resume paused custom report {idCustomReport} on site {idSite}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
- text: Restart processing for custom report {idCustomReport} (site {idSite}).
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getAvailableCategories'].get
update:
x-apievangelist-phrasing:
intent: List categories a custom report can live in
effect: read
questions:
- Under which menu categories can I place a custom report?
- What subcategories are available for custom reports on a site?
instructions:
- text: List the categories and subcategories for custom reports on site {idSite}.
slots:
idSite: query.idSite
- text: Show where in the menu a custom report on site {idSite} can go.
slots:
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getAvailableReportTypes'].get
update:
x-apievangelist-phrasing:
intent: List custom report types
effect: read
questions:
- What kinds of custom reports can I create, like table or evolution?
- Which report types are supported for custom reports?
instructions:
- text: List the available custom report types.
- text: Show which report type values I can pass when creating a custom report.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getAvailableDimensions'].get
update:
x-apievangelist-phrasing:
intent: List dimensions usable in custom reports
effect: read
questions:
- Which dimensions can I break a custom report down by?
- What dimension IDs are available for custom reports on my site?
instructions:
- text: List the dimensions available for custom reports on site {idSite}.
slots:
idSite: query.idSite
- text: Show dimension IDs I can use in a custom report for site {idSite}.
slots:
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getAvailableMetrics'].get
update:
x-apievangelist-phrasing:
intent: List metrics usable in custom reports
effect: read
questions:
- Which metrics can I include in a custom report?
- What metric IDs are allowed for custom reports on a site?
instructions:
- text: List the metrics available for custom reports on site {idSite}.
slots:
idSite: query.idSite
- text: Show metric IDs I can add to a custom report for site {idSite}.
slots:
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=CustomReports.getCustomReport'].get
update:
x-apievangelist-phrasing:
intent: Get a custom report's data for a period
effect: read
questions:
- What does my custom report show for last week?
- Can I get a custom report's data flattened instead of nested?
instructions:
- text: Get the data of custom report {idCustomReport} for site {idSite}, {period} {date}.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
period: query.period
date: query.date
- text: Run custom report {idCustomReport} on site {idSite} for {period} {date} with segment {segment}, flattened.
slots:
idCustomReport: query.idCustomReport
idSite: query.idSite
period: query.period
date: query.date
segment: query.segment
method: generated
generated: '2026-10-01'