Matomo · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Matomo Reporting API for plugin Users Manager API
33 actions
33 updates
phrasing
extends
openapi/matomo-usersmanager-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 33 · first 16 shown; the file carries all of them
$.info
$.paths['/index.php?module=API&method=UsersManager.getAvailableRoles'].get
$.paths['/index.php?module=API&method=UsersManager.getAvailableCapabilities'].get
$.paths['/index.php?module=API&method=UsersManager.setUserPreference'].get
$.paths['/index.php?module=API&method=UsersManager.getUserPreference'].get
$.paths['/index.php?module=API&method=UsersManager.getUsersPlusRole'].get
$.paths['/index.php?module=API&method=UsersManager.getUsers'].get
$.paths['/index.php?module=API&method=UsersManager.getUsersLogin'].get
$.paths['/index.php?module=API&method=UsersManager.getUsersSitesFromAccess'].get
$.paths['/index.php?module=API&method=UsersManager.getUsersAccessFromSite'].get
$.paths['/index.php?module=API&method=UsersManager.getUsersWithSiteAccess'].get
$.paths['/index.php?module=API&method=UsersManager.getSitesAccessFromUser'].get
$.paths['/index.php?module=API&method=UsersManager.getSitesAccessForUser'].get
$.paths['/index.php?module=API&method=UsersManager.getUser'].get
$.paths['/index.php?module=API&method=UsersManager.getUserByEmail'].get
$.paths['/index.php?module=API&method=UsersManager.addUser'].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 Users Manager API
version: 1.0.0
extends: openapi/matomo-usersmanager-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: 32
- target: $.paths['/index.php?module=API&method=UsersManager.getAvailableRoles'].get
update:
x-apievangelist-phrasing:
intent: List the roles a user can be given
effect: read
questions:
- What roles can I assign to users in Matomo?
- Which access roles exist besides view and admin?
instructions:
- text: List every role available for user access.
- text: Show me the role options I can pick when granting site access.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getAvailableCapabilities'].get
update:
x-apievangelist-phrasing:
intent: List the capabilities that can be granted
effect: read
questions:
- Which extra capabilities can be layered on top of a user's role?
- What capabilities are available to grant users?
instructions:
- text: List all available user capabilities.
- text: Show the capability names I can add to a user.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.setUserPreference'].get
update:
x-apievangelist-phrasing:
intent: Set a preference for a user
effect: write
questions:
- Can I change a user's saved preference, like their default report, through the API?
- How do I store a user preference value for someone else's login?
instructions:
- text: Set preference {preferenceName} to {preferenceValue} for user {userLogin}.
slots:
preferenceName: query.preferenceName
preferenceValue: query.preferenceValue
userLogin: query.userLogin
- text: Change {userLogin}'s {preferenceName} setting to {preferenceValue}.
slots:
userLogin: query.userLogin
preferenceName: query.preferenceName
preferenceValue: query.preferenceValue
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUserPreference'].get
update:
x-apievangelist-phrasing:
intent: Read a user's preference value
effect: read
questions:
- What value does a user currently have stored for a given preference?
- Can I check my own saved preference without naming a login?
instructions:
- text: Get the value of preference {preferenceName} for user {userLogin}.
slots:
preferenceName: query.preferenceName
userLogin: query.userLogin
- text: Read my current {preferenceName} preference.
slots:
preferenceName: query.preferenceName
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersPlusRole'].get
update:
x-apievangelist-phrasing:
intent: List a site's users with their roles
effect: read
questions:
- Who has access to this website and what role does each person have?
- Can I filter a site's user list by access level or invite status?
- Is there a way to search and page through users of one site?
instructions:
- text: List users and their roles for site {idSite}.
slots:
idSite: query.idSite
- text: Show users on site {idSite} with {filter_access} access matching {filter_search}.
slots:
idSite: query.idSite
filter_access: query.filter_access
filter_search: query.filter_search
- text: List pending-status users for site {idSite}, {limit} at a time.
slots:
idSite: query.idSite
limit: query.limit
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsers'].get
update:
x-apievangelist-phrasing:
intent: List users visible to me
effect: read
questions:
- Which user accounts can I see with my access?
- Can I fetch full details for several specific logins at once?
instructions:
- text: List all user accounts I can see.
- text: Get user details for logins {userLogins}.
slots:
userLogins: query.userLogins
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersLogin'].get
update:
x-apievangelist-phrasing:
intent: List the login names of visible users
effect: read
questions:
- Can I get just the usernames of everyone, without their full details?
- What login names exist that I'm allowed to see?
instructions:
- text: List only the login names of all users I can see.
- text: Give me a plain list of usernames.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersSitesFromAccess'].get
update:
x-apievangelist-phrasing:
intent: Map users to sites for one access level
effect: read
questions:
- For each user, which sites do they hold admin access on?
- Which site IDs does every user have a given access level for?
instructions:
- text: For access level {access}, list each user with the site IDs where they have it.
slots:
access: query.access
- text: Map every user to the sites where they hold {access} access.
slots:
access: query.access
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersAccessFromSite'].get
update:
x-apievangelist-phrasing:
intent: Show each user's access level on a site
effect: read
questions:
- What access level does each user have on this one website?
- Can I see a login-to-access map for a single site?
instructions:
- text: Show the access entry each user has on site {idSite}.
slots:
idSite: query.idSite
- text: Map logins to their access level for site {idSite}.
slots:
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersWithSiteAccess'].get
update:
x-apievangelist-phrasing:
intent: Find users with a given access on a site
effect: read
questions:
- Who are the admins on this particular website?
- Which users have view-only access to a specific site?
instructions:
- text: List users who have {access} access to site {idSite}.
slots:
access: query.access
idSite: query.idSite
- text: Find everyone holding {access} on site {idSite}.
slots:
access: query.access
idSite: query.idSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getSitesAccessFromUser'].get
update:
x-apievangelist-phrasing:
intent: Get a user's raw site access entries
effect: read
questions:
- Which websites can a given user access, and at what level?
- Can I get the unfiltered access list assigned to one login?
instructions:
- text: Get the raw site access entries for user {userLogin}.
slots:
userLogin: query.userLogin
- text: List every site and access level assigned to {userLogin}, unpaginated.
slots:
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getSitesAccessForUser'].get
update:
x-apievangelist-phrasing:
intent: Page through a user's site access with filters
effect: read
questions:
- Can I search a non-superuser's site permissions by site name?
- How do I page through a long list of sites one user can access?
instructions:
- text: Show sites user {userLogin} can access matching {filter_search}.
slots:
userLogin: query.userLogin
filter_search: query.filter_search
- text: List sites where {userLogin} has {filter_access} access, {limit} per page.
slots:
userLogin: query.userLogin
filter_access: query.filter_access
limit: query.limit
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUser'].get
update:
x-apievangelist-phrasing:
intent: Get a user's details by login
effect: read
questions:
- What account details are stored for a particular username?
- Can I look up one user's metadata by their login?
instructions:
- text: Get the account details for user {userLogin}.
slots:
userLogin: query.userLogin
- text: Show me {userLogin}'s user profile metadata.
slots:
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUserByEmail'].get
update:
x-apievangelist-phrasing:
intent: Get a user's details by email
effect: read
questions:
- Can I pull up a user's account details using only their email address?
- What does the user record look like for a given email?
instructions:
- text: Get the full user record for email {userEmail}.
slots:
userEmail: query.userEmail
- text: Show account metadata for the user with email {userEmail}.
slots:
userEmail: query.userEmail
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.addUser'].get
update:
x-apievangelist-phrasing:
intent: Create a user account with a password
effect: write
questions:
- How do I create a new user account with a password I set myself?
- Can a new user be given access to a starting website when the account is created?
instructions:
- text: Create user {userLogin} with email {email} and password {password}.
slots:
userLogin: query.userLogin
email: query.email
password: query.password
- text: Add account {userLogin} ({email}, password {password}) with initial access to site {initialIdSite}.
slots:
userLogin: query.userLogin
email: query.email
password: query.password
initialIdSite: query.initialIdSite
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.inviteUser'].get
update:
x-apievangelist-phrasing:
intent: Invite a new user by email
effect: write
questions:
- Can I send someone an email invitation instead of setting their password?
- How long does an invitation stay valid, and can I change it?
instructions:
- text: Invite {email} as user {userLogin}.
slots:
email: query.email
userLogin: query.userLogin
- text: Invite {userLogin} at {email} to site {initialIdSite} with the invite expiring in {expiryInDays} days.
slots:
userLogin: query.userLogin
email: query.email
initialIdSite: query.initialIdSite
expiryInDays: query.expiryInDays
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.setSuperUserAccess'].get
update:
x-apievangelist-phrasing:
intent: Grant or revoke super user access
effect: destructive
questions:
- How do I make a user a super user?
- What happens to a user's existing permissions when they become a super user?
instructions:
- text: Set super user access for {userLogin} to {hasSuperUserAccess}.
slots:
userLogin: query.userLogin
hasSuperUserAccess: query.hasSuperUserAccess
- text: Remove super user rights from {userLogin} by setting {hasSuperUserAccess}.
slots:
userLogin: query.userLogin
hasSuperUserAccess: query.hasSuperUserAccess
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.hasSuperUserAccess'].get
update:
x-apievangelist-phrasing:
intent: Check if I am a super user
effect: read
questions:
- Does the token I'm using have super user rights?
- Am I signed in with super user access right now?
instructions:
- text: Check whether my current account has super user access.
- text: Tell me if this API token belongs to a super user.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUsersHavingSuperUserAccess'].get
update:
x-apievangelist-phrasing:
intent: List all super users
effect: read
questions:
- Who are all the super users on this instance?
- Which accounts currently have full super user rights?
instructions:
- text: List every user that has super user access.
- text: Show me all super user accounts.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.updateUser'].get
update:
x-apievangelist-phrasing:
intent: Change a user's email or password
effect: write
questions:
- How do I change an existing user's email address?
- Can I reset another user's password through the API?
instructions:
- text: Change the email of user {userLogin} to {email}.
slots:
userLogin: query.userLogin
email: query.email
- text: Set a new password {password} for existing user {userLogin}.
slots:
password: query.password
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.deleteUser'].get
update:
x-apievangelist-phrasing:
intent: Delete a user account
effect: destructive
questions:
- How do I permanently remove a user and all their site access?
- Does deleting a user also remove their access assignments?
instructions:
- text: Delete user account {userLogin}.
slots:
userLogin: query.userLogin
- text: Remove {userLogin} and all of their access entries.
slots:
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.logoutUser'].get
update:
x-apievangelist-phrasing:
intent: Sign a user out of all sessions
effect: destructive
questions:
- Can I force a user to be logged out everywhere?
- Is there a way to end all active sessions for a compromised account?
instructions:
- text: Sign {userLogin} out of all active sessions.
slots:
userLogin: query.userLogin
- text: Force-logout user {userLogin} on every device.
slots:
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.userExists'].get
update:
x-apievangelist-phrasing:
intent: Check if a login name exists
effect: read
questions:
- Is a particular username already taken?
- Can I check whether a login exists before creating it?
instructions:
- text: Check whether login {userLogin} exists.
slots:
userLogin: query.userLogin
- text: Tell me if username {userLogin} is already in use.
slots:
userLogin: query.userLogin
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.userEmailExists'].get
update:
x-apievangelist-phrasing:
intent: Check if an email belongs to a user
effect: read
questions:
- Is there already an account registered with this email?
- Can I verify an email isn't in use before inviting someone?
instructions:
- text: Check whether any user has email {userEmail}.
slots:
userEmail: query.userEmail
- text: Confirm whether {userEmail} is already registered.
slots:
userEmail: query.userEmail
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.getUserLoginFromUserEmail'].get
update:
x-apievangelist-phrasing:
intent: Find a user's login from their email
effect: read
questions:
- What's the username for the person with this email address?
- Can I translate an email into a login name?
instructions:
- text: Find the login name for email {userEmail}.
slots:
userEmail: query.userEmail
- text: Return only the username tied to {userEmail}.
slots:
userEmail: query.userEmail
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.setUserAccess'].get
update:
x-apievangelist-phrasing:
intent: Set a user's access level on sites
effect: write
questions:
- How do I give a user admin access to several websites at once?
- Can I change someone from view to write access on a site?
instructions:
- text: Give {userLogin} {access} access to sites {idSites}.
slots:
userLogin: query.userLogin
access: query.access
idSites: query.idSites
- text: Set the role of {userLogin} on site {idSites} to {access}.
slots:
userLogin: query.userLogin
idSites: query.idSites
access: query.access
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.addCapabilities'].get
update:
x-apievangelist-phrasing:
intent: Grant capabilities to a user on sites
effect: write
questions:
- Can I let a view-only user also publish live widgets or edit tags without making them admin?
- How do I add an extra capability for a user on specific sites?
instructions:
- text: Grant capabilities {capabilities} to {userLogin} on sites {idSites}.
slots:
capabilities: query.capabilities
userLogin: query.userLogin
idSites: query.idSites
- text: Add the {capabilities} capability for {userLogin} on site {idSites}.
slots:
capabilities: query.capabilities
userLogin: query.userLogin
idSites: query.idSites
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.removeCapabilities'].get
update:
x-apievangelist-phrasing:
intent: Remove capabilities from a user on sites
effect: destructive
questions:
- How do I take a capability away from a user without changing their role?
- Can I revoke an extra capability on only some sites?
instructions:
- text: Revoke capabilities {capabilities} from {userLogin} on sites {idSites}.
slots:
capabilities: query.capabilities
userLogin: query.userLogin
idSites: query.idSites
- text: Take {capabilities} away from {userLogin} for site {idSites}.
slots:
capabilities: query.capabilities
userLogin: query.userLogin
idSites: query.idSites
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.createAppSpecificTokenAuth'].get
update:
x-apievangelist-phrasing:
intent: Create an app-specific API token
effect: write
questions:
- How do I generate a new auth token for an integration?
- Can an API token be set to expire after a number of hours or on a date?
- Can I restrict a new token so it only works over secure POST requests?
instructions:
- text: Create a token for {userLogin} described as {description}, confirming with password {passwordConfirmation}.
slots:
userLogin: query.userLogin
description: query.description
passwordConfirmation: query.passwordConfirmation
- text: Generate a token {description} for {userLogin} that expires on {expireDate}; my password is {passwordConfirmation}.
slots:
description: query.description
userLogin: query.userLogin
expireDate: query.expireDate
passwordConfirmation: query.passwordConfirmation
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.newsletterSignup'].get
update:
x-apievangelist-phrasing:
intent: Sign me up for the newsletter
effect: write
questions:
- Can I subscribe my account to the product newsletter via the API?
- Is there a call to opt the current user into newsletter emails?
instructions:
- text: Sign my account up for the newsletter.
- text: Subscribe the current user to newsletter updates.
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.resendInvite'].get
update:
x-apievangelist-phrasing:
intent: Resend a pending user's invitation email
effect: write
questions:
- Someone never got their invite email, can I send it again?
- Can I extend the expiry when re-sending an invitation?
instructions:
- text: Resend the invitation email to pending user {userLogin}.
slots:
userLogin: query.userLogin
- text: Email {userLogin} their invite again, valid for {expiryInDays} days.
slots:
userLogin: query.userLogin
expiryInDays: query.expiryInDays
method: generated
generated: '2026-10-01'
- target: $.paths['/index.php?module=API&method=UsersManager.generateInviteLink'].get
update:
x-apievangelist-phrasing:
intent: Generate an invite link for a pending user
effect: write
questions:
- Can I get an invitation link to share myself instead of emailing it?
- What's a way to produce a fresh invite URL for someone who hasn't accepted yet?
instructions:
- text: Generate a new invite link for pending user {userLogin}.
slots:
userLogin: query.userLogin
- text: Give me a shareable invite URL for {userLogin} that expires in {expiryInDays} days.
slots:
userLogin: query.userLogin
expiryInDays: query.expiryInDays
method: generated
generated: '2026-10-01'