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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'