{"openapi":"3.1.0","info":{"title":"Matomo Reporting API for Goals plugin","version":"1.0.0"},"servers":[{"url":"https:\/\/demo-proxy.innocraft.cloud\/","description":"Current Matomo instance"}],"paths":{"\/index.php?module=API&method=Goals.getGoal":{"get":{"tags":["Goals"],"description":"Return a single goal.","operationId":"Goals.getGoal","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"The numeric ID of the goal to query.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"description":"Goal attributes, or `null` if the goal does not exist.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.getGoals":{"get":{"tags":["Goals"],"description":"Returns all goals for one or more websites.","operationId":"Goals.getGoals","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"orderByName","in":"query","description":"Whether to sort the returned goals alphabetically by name.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Goal attributes, indexed by goal ID for single-site requests and returned as a numeric list for multi-site requests.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.addGoal":{"get":{"tags":["Goals"],"description":"Creates a goal for a website.","operationId":"Goals.addGoal","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to configure the goal for.","required":true,"schema":{"type":"integer","example":1}},{"name":"name","in":"query","description":"Goal name.","required":true,"schema":{"type":"string","example":"Pricing"}},{"name":"matchAttribute","in":"query","description":"Attribute used to match conversions.","required":true,"schema":{"type":"string","example":"url"}},{"name":"pattern","in":"query","description":"Match pattern. Use a URL, title, filename, external website, or event value for string match attributes; use a numeric threshold for visit duration, actions, or pageview match attributes; this value is ignored for `manually`.","required":true,"schema":{"type":"string","example":"https:\/\/example.org\/pricing"}},{"name":"patternType","in":"query","description":"Matching operator. Numeric match attributes only accept `greater_than`; string match attributes accept `exact`, `contains`, or `regex`; use an empty string for `manually`.","required":true,"schema":{"type":"string","example":"equals"}},{"name":"caseSensitive","in":"query","description":"Whether string matching should be case-sensitive.","required":false,"schema":{"type":"boolean","default":false}},{"name":"revenue","in":"query","description":"Default revenue to assign to conversions. Pass `false` or `0` to disable a fixed revenue value.","required":false,"schema":{"type":"number"}},{"name":"allowMultipleConversionsPerVisit","in":"query","description":"Whether multiple conversions may be recorded within one visit.","required":false,"schema":{"type":"boolean","default":false}},{"name":"description","in":"query","description":"Optional goal description shown in the Goals management UI.","required":false,"schema":{"type":"string","default":""}},{"name":"useEventValueAsRevenue","in":"query","description":"Whether to use the tracked event value as goal revenue. This is only valid for event-based goals.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"ID of the new goal.\n\nExample 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=Goals.updateGoal":{"get":{"tags":["Goals"],"description":"Updates an existing goal without reprocessing already recorded conversions.","operationId":"Goals.updateGoal","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website the goal belongs to.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"Goal ID to update.","required":true,"schema":{"type":"integer","example":1}},{"name":"name","in":"query","description":"Goal name.","required":true,"schema":{"type":"string","example":"Pricing"}},{"name":"matchAttribute","in":"query","description":"Attribute used to match conversions.","required":true,"schema":{"type":"string","example":"url"}},{"name":"pattern","in":"query","description":"Match pattern. Use a URL, title, filename, external website, or event value for string match attributes; use a numeric threshold for visit duration, actions, or pageview match attributes; this value is ignored for `manually`.","required":true,"schema":{"type":"string","example":"https:\/\/example.org\/pricing"}},{"name":"patternType","in":"query","description":"Matching operator. Numeric match attributes only accept `greater_than`; string match attributes accept `exact`, `contains`, or `regex`; use an empty string for `manually`.","required":true,"schema":{"type":"string","example":"equals"}},{"name":"caseSensitive","in":"query","description":"Whether string matching should be case-sensitive.","required":false,"schema":{"type":"boolean","default":false}},{"name":"revenue","in":"query","description":"Default revenue to assign to conversions. Pass `false` or `0` to disable a fixed revenue value.","required":false,"schema":{"type":"number"}},{"name":"allowMultipleConversionsPerVisit","in":"query","description":"Whether multiple conversions may be recorded within one visit.","required":false,"schema":{"type":"boolean","default":false}},{"name":"description","in":"query","description":"Optional goal description shown in the Goals management UI.","required":false,"schema":{"type":"string","default":""}},{"name":"useEventValueAsRevenue","in":"query","description":"Whether to use the tracked event value as goal revenue. This is only valid for event-based goals.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"$ref":"#\/components\/responses\/GenericSuccess"},"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=Goals.deleteGoal":{"get":{"tags":["Goals"],"description":"Soft deletes a given Goal.","operationId":"Goals.deleteGoal","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"The numeric ID of the website to query.","required":true,"schema":{"type":"integer","example":1}},{"name":"idGoal","in":"query","description":"The numeric ID of the goal to delete.","required":true,"schema":{"type":"integer","example":1}}],"responses":{"200":{"$ref":"#\/components\/responses\/GenericSuccess"},"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=Goals.getItemsSku":{"get":{"tags":["Goals"],"description":"Returns ecommerce product metrics grouped by product SKU.","operationId":"Goals.getItemsSku","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"abandonedCarts","in":"query","description":"Whether to return abandoned-cart product metrics instead of purchased products.","required":false,"schema":{"type":"boolean","default":false}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ecommerce product metrics grouped by SKU.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.getItemsName":{"get":{"tags":["Goals"],"description":"Returns ecommerce product metrics grouped by product name.","operationId":"Goals.getItemsName","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"abandonedCarts","in":"query","description":"Whether to return abandoned-cart product metrics instead of purchased products.","required":false,"schema":{"type":"boolean","default":false}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ecommerce product metrics grouped by name.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.getItemsCategory":{"get":{"tags":["Goals"],"description":"Returns ecommerce product metrics grouped by product category.","operationId":"Goals.getItemsCategory","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"abandonedCarts","in":"query","description":"Whether to return abandoned-cart product metrics instead of purchased products.","required":false,"schema":{"type":"boolean","default":false}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ecommerce product metrics grouped by category.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.get":{"get":{"tags":["Goals"],"description":"Returns goal and ecommerce metrics, including new and returning visitor variants.","operationId":"Goals.get","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}},{"name":"idGoal","in":"query","description":"Goal ID, `ecommerceOrder`, `ecommerceAbandonedCart`, or `false` for all goals.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"columns","in":"query","description":"Optional metric name or list of metric names to return, for example `nb_conversions`, `nb_visits_converted`, `conversion_rate`, `revenue`, or ecommerce-specific metrics such as `items` or `avg_order_revenue`.","required":false,"schema":{"oneOf":[{"type":"string","default":"[]"},{"type":"array","items":{"type":"string"},"default":[]}]}},{"name":"showAllGoalSpecificMetrics","in":"query","description":"Whether to include per-goal metric columns when no specific goal is selected.","required":false,"schema":{"type":"boolean","default":false}},{"name":"compare","in":"query","description":"Whether to prepare the table for a comparison report by deferring metric formatting.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Goal metrics with additional columns for all visits, new visits, and returning visits.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.getDaysToConversion":{"get":{"tags":["Goals"],"description":"Returns conversions grouped by the number of days between first visit and conversion.","operationId":"Goals.getDaysToConversion","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}},{"name":"idGoal","in":"query","description":"Goal ID, `ecommerceOrder`, `ecommerceAbandonedCart`, or `false` for all goals.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}}],"responses":{"200":{"description":"Conversion counts grouped by days until conversion.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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=Goals.getVisitsUntilConversion":{"get":{"tags":["Goals"],"description":"Returns conversions grouped by the visit count before conversion.","operationId":"Goals.getVisitsUntilConversion","parameters":[{"$ref":"#\/components\/parameters\/formatOptional"},{"name":"idSite","in":"query","description":"Website ID(s) to query. - Single site ID (e.g. 1) - Multiple site IDs (e.g. [1, 4, 5]) - Comma-separated list (\"1,4,5\") or \"all\"","required":true,"schema":{"oneOf":[{"type":"integer","example":1},{"type":"string","example":"1"},{"type":"array","items":{"type":"integer"},"example":1}]}},{"name":"period","in":"query","description":"The period to process, processes data for the period containing the specified date.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},{"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 (ie, 'YYYY-MM-DD,YYYY-MM-DD', lastX, previousX).","required":true,"schema":{"type":"string","example":"yesterday"}},{"name":"segment","in":"query","description":"Custom segment to filter the report. Example: \"referrerName==example.com\" Supports AND (;) and OR (,) operators.","required":false,"schema":{"type":"string"}},{"name":"idGoal","in":"query","description":"Goal ID, `ecommerceOrder`, `ecommerceAbandonedCart`, or `false` for all goals.","required":false,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}}],"responses":{"200":{"description":"Conversion counts grouped by visits until conversion.\n\nExample responses require Super User access. Use Try it out to see a live response.","content":{"text\/xml":[],"application\/json":[],"application\/vnd.ms-excel":[]}},"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":{"schemas":{"GenericSuccess":{"description":"Generic Matomo success payload.","required":["result","message"],"properties":{"result":{"type":"string","example":"success"},"message":{"type":"string","example":"ok"},"code":{"type":"integer","example":"200"}},"type":"object","example":{"result":"success","message":"ok"},"additionalProperties":true},"GenericSuccessXml":{"description":"Generic Matomo success payload in XML.","required":["success"],"properties":{"success":{"properties":{"message":{"type":"string","xml":{"attribute":true},"example":"ok"}},"type":"object","xml":{"name":"success"}}},"type":"object","xml":{"name":"result"},"example":{"success":{"message":"ok"}},"additionalProperties":true},"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},"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"}}},"responses":{"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"}}}},"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"}}}},"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"}}}},"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"}}}},"GenericSuccessNoBody":{"description":"Generic 200 response with no body"},"GenericSuccess":{"description":"Generic 200 response","content":{"text\/plain":{"schema":{"type":"string"},"example":"Success:ok"},"text\/html":{"schema":{"type":"string"},"example":""},"application\/json":{"schema":{"$ref":"#\/components\/schemas\/GenericSuccess"}},"application\/xml":{"schema":{"$ref":"#\/components\/schemas\/GenericSuccessXml"}}}},"GenericString":{"description":"Generic 200 response with only a string body","content":{"text\/plain":{"schema":{"type":"string"},"example":"Result: success"},"text\/html":{"schema":{"type":"string"},"example":"success"},"application\/json":{"schema":{"type":"string"}},"application\/xml":{"schema":{"type":"string"}}}},"GenericBoolean":{"description":"Generic 200 response with only true or false as the body","content":{"text\/plain":{"schema":{"type":"boolean"}},"text\/html":{"schema":{"type":"boolean"}},"application\/json":{"schema":{"type":"boolean"}},"application\/xml":{"schema":{"type":"boolean"}}}},"GenericInteger":{"description":"Generic 200 response with only an integer as the body","content":{"text\/plain":{"schema":{"type":"integer"}},"text\/html":{"schema":{"type":"integer"}},"application\/json":{"schema":{"type":"integer"}},"application\/xml":{"schema":{"type":"integer"}}}},"GenericArray":{"description":"Generic 200 response with array body","content":{"text\/plain":{"schema":{"type":"string"}},"text\/html":{"schema":{"type":"string"}},"application\/json":{"schema":{"type":"array","items":[]}},"application\/xml":{"schema":{"type":"array","items":[]}}}}},"parameters":{"moduleRequired":{"name":"module","in":"query","description":"Always `API` for Reporting API requests.","required":true,"schema":{"type":"string","default":"API"}},"methodRequired":{"name":"method","in":"query","description":"API method, e.g. `VisitsSummary.get` or `CustomAlerts.getAlert`.","required":true,"schema":{"type":"string","example":"CustomAlerts.getAlert"}},"formatRequired":{"name":"format","in":"query","description":"Response format such as `xml` or `json`. Use `original` to get the original PHP data structure.","required":true,"schema":{"type":"string","default":"xml","enum":["xml","json","csv","tsv","html","rss","original"]}},"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"]}},"idSiteRequired":{"name":"idSite","in":"query","description":"Matomo site ID.","required":true,"schema":{"type":"integer","example":1}},"idSiteOptional":{"name":"idSite","in":"query","description":"Matomo site ID.","required":false,"schema":{"type":"integer","example":1}},"periodRequired":{"name":"period","in":"query","description":"Reporting period.","required":true,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},"periodOptional":{"name":"period","in":"query","description":"Reporting period.","required":false,"schema":{"type":"string","enum":["day","week","month","year","range"],"example":"day"}},"dateRequired":{"name":"date","in":"query","description":"Date or range (e.g. `2025-08-01`, `yesterday`, `last30`, or `2025-08-01,2025-08-11`).","required":true,"schema":{"type":"string","example":"today"}},"dateOptional":{"name":"date","in":"query","description":"Date or range (e.g. `2025-08-01`, `yesterday`, `last30`, or `2025-08-01,2025-08-11`).","required":false,"schema":{"type":"string","example":"today"}},"segmentRequired":{"name":"segment","in":"query","description":"Segment expression; see `API.getSegmentDimensionMetadata`.","required":true,"schema":{"type":"string"}},"segmentOptional":{"name":"segment","in":"query","description":"Segment expression; see `API.getSegmentDimensionMetadata`.","required":false,"schema":{"type":"string"}},"expandedOptional":{"name":"expanded","in":"query","description":"If true, loads all subtables.","required":false,"schema":{"type":"integer","default":0,"enum":[0,1],"example":0}},"idSubtableOptional":{"name":"idSubtable","in":"query","description":"An in-database subtable ID.","required":false,"schema":{"type":"integer"}},"idSubtableRequired":{"name":"idSubtable","in":"query","description":"An in-database subtable ID.","required":true,"schema":{"type":"integer"}},"flatOptional":{"name":"flat","in":"query","description":"Flatten subtables into the parent table.","required":false,"schema":{"type":"integer","enum":[0,1],"example":0}},"filter_patternOptional":{"name":"filter_pattern","in":"query","description":"Regex to keep matching rows.","required":false,"schema":{"type":"string"}},"filter_columnOptional":{"name":"filter_column","in":"query","description":"Column to apply the regex to (e.g., `label`).","required":false,"schema":{"type":"string","example":"label"}},"filter_pattern_recursiveOptional":{"name":"filter_pattern_recursive","in":"query","description":"Recursive regex filter.","required":false,"schema":{"type":"string"}},"filter_column_recursiveOptional":{"name":"filter_column_recursive","in":"query","description":"Column for the recursive regex filter.","required":false,"schema":{"type":"string"}},"filter_excludelowpopOptional":{"name":"filter_excludelowpop","in":"query","description":"Column to threshold and exclude low values.","required":false,"schema":{"type":"string"}},"filter_excludelowpop_valueOptional":{"name":"filter_excludelowpop_value","in":"query","description":"Minimum value threshold for `filter_excludelowpop`.","required":false,"schema":{"type":"number","example":0}},"filter_sort_columnOptional":{"name":"filter_sort_column","in":"query","description":"Column to sort by.","required":false,"schema":{"type":"string"}},"filter_sort_orderOptional":{"name":"filter_sort_order","in":"query","description":"Sort direction.","required":false,"schema":{"type":"string","enum":["asc","desc"],"example":"desc"}},"filter_truncateOptional":{"name":"filter_truncate","in":"query","description":"Row index after which rows are removed.","required":false,"schema":{"type":"integer"}},"filter_limitOptional":{"name":"filter_limit","in":"query","description":"Maximum number of rows to return.","required":false,"schema":{"type":"integer"}},"filter_offsetOptional":{"name":"filter_offset","in":"query","description":"Row offset.","required":false,"schema":{"type":"integer"}},"keep_summary_rowOptional":{"name":"keep_summary_row","in":"query","description":"Keep the summary row.","required":false,"schema":{"type":"integer","enum":[0,1],"example":1}},"disable_generic_filtersOptional":{"name":"disable_generic_filters","in":"query","description":"Disable generic filters (those above).","required":false,"schema":{"type":"integer","enum":[0,1],"example":0}},"disable_queued_filtersOptional":{"name":"disable_queued_filters","in":"query","description":"Skip queued filters.","required":false,"schema":{"type":"integer","enum":[0,1],"example":0}},"hideColumnsOptional":{"name":"hideColumns","in":"query","description":"Comma-separated list of columns to hide.","required":false,"schema":{"type":"string"}},"showColumnsOptional":{"name":"showColumns","in":"query","description":"Comma-separated list of columns to include.","required":false,"schema":{"type":"string"}},"labelOptional":{"name":"label","in":"query","description":"Keep only rows with these label(s). Supports path via '>' and arrays.","required":false,"schema":{"type":"string"}},"idGoalRequired":{"name":"idGoal","in":"query","description":"The ID of a configured goal.","required":true,"schema":{"type":"integer"}},"idGoalOptional":{"name":"idGoal","in":"query","description":"The ID of a configured goal.","required":false,"schema":{"type":"integer"}}},"securitySchemes":{"MatomoToken":{"type":"http","description":"Paste your token generated from Personal > Security. Swagger will send it as a Bearer token.","scheme":"bearer"}}},"security":[{"MatomoToken":[]}],"tags":[{"name":"Goals","description":"Goals API lets you Manage existing goals, via \"updateGoal\" and \"deleteGoal\", create new Goals via \"addGoal\", or list existing Goals for one or several websites via \"getGoals\" If you are tracking Ecommerce orders and products<\/a> on your site, the functions \"getItemsSku\", \"getItemsName\" and \"getItemsCategory\" will return the list of products purchased on your site, either grouped by Product SKU, Product Name or Product Category. For each name, SKU or category, the following metrics are returned: Total revenue, Total quantity, average price, average quantity, number of orders (or abandoned carts) containing this product, number of visits on the Product page, Conversion rate. By default, these functions return the 'Products purchased'. These functions also accept an optional parameter &abandonedCarts=1. If the parameter is set, it will instead return the metrics for products that were left in an abandoned cart therefore not purchased. The API also lets you request overall Goal metrics via the method \"get\": Conversions, Visits with at least one conversion, Conversion rate and Revenue. If you wish to request specific metrics about Ecommerce goals, you can set the parameter &idGoal=ecommerceAbandonedCart to get metrics about abandoned carts (including Lost revenue, and number of items left in the cart) or &idGoal=ecommerceOrder to get metrics about Ecommerce orders (number of orders, visits with an order, subtotal, tax, shipping, discount, revenue, items ordered) See also the documentation about Tracking Goals<\/a> in Matomo."}],"externalDocs":{"description":"Matomo Reporting API developer page","url":"https:\/\/developer.matomo.org\/api-reference\/reporting-api\/"}}