Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Identity Platform Tenant Service API
12 actions
12 updates
phrasing
extends
openapi/canonical-tenantservice-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canonical's API. It is a proposal applied on top of the contract, not a document Canonical publishes.
What the actions change
x-apievangelist-phrasing
Targets 12
$.info
$.paths['/api/v0/me/tenants'].get
$.paths['/api/v0/tenants'].get
$.paths['/api/v0/tenants'].post
$.paths['/api/v0/tenants/{tenant_id}'].delete
$.paths['/api/v0/tenants/{tenant_id}'].patch
$.paths['/api/v0/tenants/{tenant_id}/invites'].post
$.paths['/api/v0/tenants/{tenant_id}/users'].get
$.paths['/api/v0/tenants/{tenant_id}/users'].post
$.paths['/api/v0/tenants/{tenant_id}/users/{user_id}'].patch
$.paths['/api/v0/tenants/lookup'].get
$.paths['/api/v0/users/{user_id}/tenants'].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 Identity Platform Tenant Service API
version: 1.0.0
extends: openapi/canonical-tenantservice-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 11
- target: $.paths['/api/v0/me/tenants'].get
update:
x-apievangelist-phrasing:
intent: List the tenants I belong to
effect: read
questions:
- Which tenants is my own account a member of?
- Can I see only my enabled tenants?
instructions:
- text: List the tenants I belong to.
- text: Show my tenants filtered by enabled = {enabled}.
slots:
enabled: query.enabled
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants'].get
update:
x-apievangelist-phrasing:
intent: List all tenants as an admin
effect: read
questions:
- As an administrator, how do I list every tenant in the system?
- Can I page through all tenants and filter out disabled ones?
instructions:
- text: List all tenants, {page_size} per page.
slots:
page_size: query.page_size
- text: Show every tenant where enabled is {enabled}, continuing from page token {page_token}.
slots:
enabled: query.enabled
page_token: query.page_token
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants'].post
update:
x-apievangelist-phrasing:
intent: Create a tenant
effect: write
questions:
- How do I create a new tenant?
- What do I need to provide to add a tenant?
instructions:
- text: Create a tenant named {name}.
slots:
name: requestBody.name
- text: Add a new tenant called {name}.
slots:
name: requestBody.name
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a tenant
effect: destructive
questions:
- Can I permanently remove a tenant?
- What is the way to delete a tenant I no longer use?
instructions:
- text: Delete tenant {tenant_id}.
slots:
tenant_id: path.tenant_id
- text: Remove the tenant {tenant_id} permanently.
slots:
tenant_id: path.tenant_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}'].patch
update:
x-apievangelist-phrasing:
intent: Update a tenant
effect: write
questions:
- How do I rename or disable an existing tenant?
- Can I update only certain tenant fields using an update mask?
instructions:
- text: Update tenant {tenant_id} with {tenant}.
slots:
tenant_id: path.tenant_id
tenant: requestBody.tenant
- text: Change only fields {update_mask} of tenant {tenant_id}.
slots:
update_mask: requestBody.update_mask
tenant_id: path.tenant_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}/invites'].post
update:
x-apievangelist-phrasing:
intent: Invite someone to a tenant
effect: write
questions:
- How do I invite a colleague by email to join a tenant?
- Can I choose the role a person gets when invited to a tenant?
instructions:
- text: Invite {email} to tenant {tenant_id}.
slots:
email: requestBody.email
tenant_id: path.tenant_id
- text: Send an invitation to {email} for tenant {tenant_id} with role {role}.
slots:
email: requestBody.email
tenant_id: path.tenant_id
role: requestBody.role
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}/users'].get
update:
x-apievangelist-phrasing:
intent: List users in a tenant
effect: read
questions:
- Who are the users in a given tenant?
- Can I filter a tenant's users by role or email?
instructions:
- text: List the users in tenant {tenant_id}.
slots:
tenant_id: path.tenant_id
- text: Show users of tenant {tenant_id} with role {role}, including their emails ({include_emails}).
slots:
tenant_id: path.tenant_id
role: query.role
include_emails: query.include_emails
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}/users'].post
update:
x-apievangelist-phrasing:
intent: Add a user directly to a tenant
effect: write
questions:
- Can I add a user to a tenant straight away without sending an invite?
- How do I provision an account into a tenant with a specific role?
instructions:
- text: Provision {email} into tenant {tenant_id}.
slots:
email: requestBody.email
tenant_id: path.tenant_id
- text: Add user {email} to tenant {tenant_id} directly as {role}.
slots:
email: requestBody.email
tenant_id: path.tenant_id
role: requestBody.role
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/{tenant_id}/users/{user_id}'].patch
update:
x-apievangelist-phrasing:
intent: Change a user's role in a tenant
effect: write
questions:
- How do I promote or demote a user inside a tenant?
- Can a tenant member's role be changed after they join?
instructions:
- text: Set the role of user {user_id} in tenant {tenant_id} to {role}.
slots:
user_id: path.user_id
tenant_id: path.tenant_id
role: requestBody.role
- text: Change {user_id}'s tenant role in {tenant_id}.
slots:
user_id: path.user_id
tenant_id: path.tenant_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/tenants/lookup'].get
update:
x-apievangelist-phrasing:
intent: Look up tenants by email or identity
effect: read
questions:
- Which tenants is a given email address associated with?
- Can I find tenants for an identity ID using the internal lookup?
instructions:
- text: Look up the tenants for {email}.
slots:
email: query.email
- text: Find tenants linked to identity {identity_id}.
slots:
identity_id: query.identity_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v0/users/{user_id}/tenants'].get
update:
x-apievangelist-phrasing:
intent: List a specific user's tenants
effect: read
questions:
- Which tenants does a particular user belong to?
- Can I see only the enabled tenants of another user?
instructions:
- text: List the tenants of user {user_id}.
slots:
user_id: path.user_id
- text: Show the enabled ({enabled}) tenants for user {user_id}.
slots:
enabled: query.enabled
user_id: path.user_id
method: generated
generated: '2026-09-26'