Limble CMMS · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Limble Cmms Routes API

213 actions 213 updates phrasing extends openapi/limble-cmms-routes-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Limble CMMS's API. It is a proposal applied on top of the contract, not a document Limble CMMS publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 213 · first 16 shown; the file carries all of them

$.info
$.paths['/v2/me'].get
$.paths['/v2/assets/{assetID}/image'].put
$.paths['/v2/assets/{assetID}/image'].delete
$.paths['/v2/assets/fields'].get
$.paths['/v2/assets/fields'].post
$.paths['/v2/assets/fields/suggested'].get
$.paths['/v2/assets/fields/history'].get
$.paths['/v2/assets/{assetID}/fields'].put
$.paths['/v2/assets/fields/{valueID}'].delete
$.paths['/v2/assets/fields/{valueID}'].patch
$.paths['/v2/assets/logs/file/{fileID}'].delete
$.paths['/v2/assets/{assetID}/logs/{logID}/file'].put
$.paths['/v2/assets/{assetID}/logs'].get
$.paths['/v2/assets/{assetID}/logs'].post
$.paths['/v2/assets/logs/{logID}'].delete

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 Limble Cmms Routes API
  version: 1.0.0
extends: openapi/limble-cmms-routes-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: 212
- target: $.paths['/v2/me'].get
  update:
    x-apievangelist-phrasing:
      intent: Check which customer and plan my API keys belong to
      effect: read
      questions:
      - Which Limble customer account are my API keys authenticated as?
      - What plan is my CMMS account subscribed to, and is it a deprecated legacy plan?
      instructions:
      - text: Test that my API credentials work and tell me the customer name.
      - text: Show the subscription plan tied to these API keys.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/image'].put
  update:
    x-apievangelist-phrasing:
      intent: Set the main image for an asset
      effect: write
      questions:
      - Can I upload a main photo for a piece of equipment?
      - How do I set the primary picture shown on an asset record?
      instructions:
      - text: Upload a new main image for asset {assetID}.
        slots:
          assetID: path.assetID
      - text: Set the main photo on asset {assetID}.
        slots:
          assetID: path.assetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/image'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove an asset's main image
      effect: destructive
      questions:
      - How can I take the main photo off an asset?
      - Is it possible to clear an equipment record's primary picture?
      instructions:
      - text: Remove the main image from asset {assetID}.
        slots:
          assetID: path.assetID
      - text: Delete the primary photo on asset {assetID}.
        slots:
          assetID: path.assetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields'].get
  update:
    x-apievangelist-phrasing:
      intent: List custom field values on assets
      effect: read
      questions:
      - What values are stored in the Make, Model and other custom fields on my assets?
      - Can I filter asset field values by field type or by the value itself?
      - Which files are attached to asset fields?
      instructions:
      - text: Show the field values for assets {assets}.
        slots:
          assets: query.assets
      - text: List asset field values where the field is named {name}.
        slots:
          name: query.name
      - text: Get asset fields at locations {locations} edited after {start}.
        slots:
          locations: query.locations
          start: query.start
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new suggested field for assets
      effect: write
      questions:
      - Can I add a new custom field option that assets at a location can use?
      - What does it take to define a new suggested asset field like Serial Number?
      instructions:
      - text: Create a new suggested asset field for a location.
      - text: Add a custom field to the list of suggested fields available to assets.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields/suggested'].get
  update:
    x-apievangelist-phrasing:
      intent: List suggested fields available to assets
      effect: read
      questions:
      - Which fields can an asset choose from when setting up its fields?
      - What suggested fields exist for assets at each of my locations?
      instructions:
      - text: List the suggested asset fields at locations {locations}.
        slots:
          locations: query.locations
      - text: Show the suggested asset field named {name}.
        slots:
          name: query.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields/history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the change history of asset field values
      effect: read
      questions:
      - How have an asset's field values changed over time?
      - Can I see trends in a meter reading field across my equipment?
      instructions:
      - text: Pull the field value history for assets {assets}.
        slots:
          assets: query.assets
      - text: Show the history of asset field {fields} between {start} and {end}.
        slots:
          fields: query.fields
          start: query.start
          end: query.end
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/fields'].put
  update:
    x-apievangelist-phrasing:
      intent: Attach a suggested field to an asset
      effect: write
      questions:
      - How do I add the Make field to an asset that doesn't have it yet?
      - Must a field and an asset be at the same location before I can attach it?
      instructions:
      - text: Attach a suggested field to asset {assetID}.
        slots:
          assetID: path.assetID
      - text: Add an existing custom field to equipment record {assetID}.
        slots:
          assetID: path.assetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields/{valueID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a field from an asset
      effect: destructive
      questions:
      - Can I detach a custom field that was attached to an asset?
      - How do I remove an unwanted field from one piece of equipment?
      instructions:
      - text: Delete asset field value {valueID}.
        slots:
          valueID: path.valueID
      - text: Remove the attached asset field with value ID {valueID}.
        slots:
          valueID: path.valueID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields/{valueID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update the value of an asset's field
      effect: write
      questions:
      - How do I change the value stored in an asset's custom field?
      - Can I set a truck's Make field to Dodge through the API?
      instructions:
      - text: Update the value of asset field {valueID}.
        slots:
          valueID: path.valueID
      - text: Change the stored asset field value {valueID} to a new reading.
        slots:
          valueID: path.valueID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/logs/file/{fileID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a file attached to an asset log
      effect: destructive
      questions:
      - Can I remove an attachment from an asset log entry?
      - How do I delete a file that was uploaded to an equipment log?
      instructions:
      - text: Delete asset log file {fileID}.
        slots:
          fileID: path.fileID
      - text: Remove the attachment {fileID} from its asset log.
        slots:
          fileID: path.fileID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/logs/{logID}/file'].put
  update:
    x-apievangelist-phrasing:
      intent: Attach a file to an asset log
      effect: write
      questions:
      - Can I attach a document or photo to an asset log entry?
      - What ID do I get back after adding a file to an equipment log?
      instructions:
      - text: Attach a file to log {logID} on asset {assetID}.
        slots:
          logID: path.logID
          assetID: path.assetID
      - text: Upload a photo to asset {assetID}'s log entry {logID}.
        slots:
          assetID: path.assetID
          logID: path.logID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List log entries for an asset
      effect: read
      questions:
      - What has been logged against a specific asset, manually or automatically?
      - Can I search an asset's log entries by text or by the user who wrote them?
      instructions:
      - text: Show the logs for asset {assetID}.
        slots:
          assetID: path.assetID
      - text: List asset {assetID} log entries containing {logEntry}.
        slots:
          assetID: path.assetID
          logEntry: query.logEntry
      - text: Get logs on asset {assetID} written by users {users} since {start}.
        slots:
          assetID: path.assetID
          users: query.users
          start: query.start
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/logs'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a manual log entry to an asset
      effect: write
      questions:
      - How do I write a manual note into an asset's log?
      - Can I record who wrote an asset log entry?
      instructions:
      - text: Add the log entry {logEntry} to asset {assetID}.
        slots:
          logEntry: requestBody.logEntry
          assetID: path.assetID
      - text: Log {logEntry} on asset {assetID} as user {userID}.
        slots:
          logEntry: requestBody.logEntry
          assetID: path.assetID
          userID: requestBody.userID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/logs/{logID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a manual asset log entry
      effect: destructive
      questions:
      - Can I delete a manual log entry I made on an asset?
      - Is it possible to remove a mistaken note from equipment history?
      instructions:
      - text: Delete asset log {logID}.
        slots:
          logID: path.logID
      - text: Remove manual asset log entry {logID}.
        slots:
          logID: path.logID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/logs/{logID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Edit a manual asset log entry
      effect: write
      questions:
      - Can I correct the text of a manual log entry on an asset?
      - How do I edit a note already written into an asset's log?
      instructions:
      - text: Change the text of asset log {logID} to {logEntry}.
        slots:
          logID: path.logID
          logEntry: requestBody.logEntry
      - text: Update manual asset log entry {logID}.
        slots:
          logID: path.logID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/fields/batch/update'].post
  update:
    x-apievangelist-phrasing:
      intent: Update many asset field values at once
      effect: write
      questions:
      - Can I update several asset field values in one call?
      - What is the minimum number of field values a batch asset update needs?
      instructions:
      - text: Batch update a set of asset field values in a single request.
      - text: Push these meter readings to multiple asset fields at once.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/parts'].get
  update:
    x-apievangelist-phrasing:
      intent: List which parts are linked to which assets
      effect: read
      questions:
      - Which spare parts are associated with each asset, and in what quantity?
      - Can I see all part-to-asset relationships for a set of parts?
      instructions:
      - text: List part-asset relations for assets {assets}.
        slots:
          assets: query.assets
      - text: Show which assets use parts {parts}.
        slots:
          parts: query.parts
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets'].get
  update:
    x-apievangelist-phrasing:
      intent: List assets
      effect: read
      questions:
      - What equipment and assets do I have in my CMMS?
      - Can I list only the child assets under a particular parent asset?
      - Which assets have a geolocation set?
      instructions:
      - text: List assets at locations {locations}.
        slots:
          locations: query.locations
      - text: Find assets named {name}.
        slots:
          name: query.name
      - text: Show the child assets of parent asset {parentAssetID}.
        slots:
          parentAssetID: query.parentAssetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new asset
      effect: write
      questions:
      - How do I add a new piece of equipment to the system?
      - Can I set weekly operating hours when creating an asset?
      instructions:
      - text: Create a new blank asset.
      - text: Add a new equipment record called Boiler 3.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an asset
      effect: destructive
      questions:
      - Can I permanently remove an asset from my account?
      - What happens when I delete an asset record?
      instructions:
      - text: Delete asset {assetID}.
        slots:
          assetID: path.assetID
      - text: Remove equipment record {assetID} from the account.
        slots:
          assetID: path.assetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update an asset's top-level details
      effect: write
      questions:
      - How do I rename an asset or change its top-level information?
      - Can I change an asset's parent or hours per week?
      instructions:
      - text: Rename asset {assetID}.
        slots:
          assetID: path.assetID
      - text: Update the top-level details of asset {assetID}.
        slots:
          assetID: path.assetID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/assets/{assetID}/move'].patch
  update:
    x-apievangelist-phrasing:
      intent: Move an asset to another location
      effect: write
      questions:
      - Can I transfer an asset from one site to another?
      - Can a parent asset with children be moved to a different location?
      - Do the asset's parts come along when it moves location?
      instructions:
      - text: Move asset {assetID} to location {locationID}.
        slots:
          assetID: path.assetID
          locationID: requestBody.locationID
      - text: Transfer asset {assetID} to location {locationID} and bring its parts with it ({transferParts}).
        slots:
          assetID: path.assetID
          locationID: requestBody.locationID
          transferParts: requestBody.transferParts
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/locations'].get
  update:
    x-apievangelist-phrasing:
      intent: List locations
      effect: read
      questions:
      - What sites or locations are set up in my account?
      - Can I list the locations that belong to a particular region?
      instructions:
      - text: List my locations.
      - text: Show locations in regions {regions}.
        slots:
          regions: query.regions
      - text: Find the location named {name}.
        slots:
          name: query.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/locations'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new location
      effect: write
      questions:
      - How do I add a new site or facility?
      - Does a new location need a timezone?
      instructions:
      - text: Create a new location.
      - text: Add a facility called North Plant with its timezone.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/locations/{locationID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a location and everything in it
      effect: destructive
      questions:
      - What happens to assets, parts and tasks when a location is removed?
      - Can I delete an entire site from my account?
      instructions:
      - text: Delete location {locationID} and all its contents.
        slots:
          locationID: path.locationID
      - text: Remove site {locationID} from the account.
        slots:
          locationID: path.locationID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/locations/{locationID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a location's name or timezone
      effect: write
      questions:
      - Can I rename a location or change its timezone?
      - How do I edit a site's details?
      instructions:
      - text: Rename location {locationID}.
        slots:
          locationID: path.locationID
      - text: Change the timezone of location {locationID}.
        slots:
          locationID: path.locationID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/image'].put
  update:
    x-apievangelist-phrasing:
      intent: Set the main image for a part
      effect: write
      questions:
      - Can I add a photo to a spare part record?
      - How do I set a part's main picture?
      instructions:
      - text: Upload the main image for part {partID}.
        slots:
          partID: path.partID
      - text: Set a photo on inventory part {partID}.
        slots:
          partID: path.partID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/image'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a part's main image
      effect: destructive
      questions:
      - How do I remove the photo from a part?
      - Can a part's main picture be cleared?
      instructions:
      - text: Delete the main image on part {partID}.
        slots:
          partID: path.partID
      - text: Remove the photo from inventory part {partID}.
        slots:
          partID: path.partID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/categories'].get
  update:
    x-apievangelist-phrasing:
      intent: List part categories
      effect: read
      questions:
      - What categories are my parts organized into?
      - Is there a part category called Filters?
      instructions:
      - text: List all part categories.
      - text: Find the part category named {name}.
        slots:
          name: query.name
      - text: Show part categories {categories}.
        slots:
          categories: query.categories
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/categories'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a part category
      effect: write
      questions:
      - How do I create a new category to organize parts?
      - Can I add a Filters category for inventory?
      instructions:
      - text: Create a new part category.
      - text: Add a part category called Belts.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/categories/{categoryID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a part category
      effect: destructive
      questions:
      - What happens to parts when their category is deleted?
      - Can I remove a part category I no longer use?
      instructions:
      - text: Delete part category {categoryID}.
        slots:
          categoryID: path.categoryID
      - text: Remove part category {categoryID} from every part.
        slots:
          categoryID: path.categoryID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/categories/{categoryID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Rename a part category
      effect: write
      questions:
      - Can I rename a part category?
      - How do I change what a parts category is called?
      instructions:
      - text: Rename part category {categoryID}.
        slots:
          categoryID: path.categoryID
      - text: Change the name of parts category {categoryID}.
        slots:
          categoryID: path.categoryID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/fields'].get
  update:
    x-apievangelist-phrasing:
      intent: List custom field values on parts
      effect: read
      questions:
      - What custom field values are set on my parts?
      - Can I pull files attached to part fields?
      instructions:
      - text: Show the field values for parts {parts}.
        slots:
          parts: query.parts
      - text: List part field values named {name} at locations {locations}.
        slots:
          name: query.name
          locations: query.locations
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/fields'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new suggested field for parts
      effect: write
      questions:
      - Can I define a new custom field that parts at a location can use?
      - How do I add a suggested field for inventory parts?
      instructions:
      - text: Create a new suggested part field for a location.
      - text: Add a custom field to the suggested fields for parts.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/fields/suggested'].get
  update:
    x-apievangelist-phrasing:
      intent: List suggested fields available to parts
      effect: read
      questions:
      - Which fields can a part pick from when deciding its fields?
      - What suggested part fields exist?
      instructions:
      - text: List the suggested part fields.
      - text: Show the suggested part field named {name}.
        slots:
          name: query.name
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/fields/{valueID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a field from a part
      effect: destructive
      questions:
      - Can I detach a custom field from a part?
      - How do I delete a field value attached to an inventory item?
      instructions:
      - text: Delete part field value {valueID}.
        slots:
          valueID: path.valueID
      - text: Remove the attached part field {valueID}.
        slots:
          valueID: path.valueID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/fields/{valueID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update the value of a part's field
      effect: write
      questions:
      - How do I change a value stored in a part's custom field?
      - Does the value format for a part field depend on its field type?
      instructions:
      - text: Update part field value {valueID}.
        slots:
          valueID: path.valueID
      - text: Set a new value for the part field {valueID}.
        slots:
          valueID: path.valueID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/fields'].put
  update:
    x-apievangelist-phrasing:
      intent: Attach a suggested field to a part
      effect: write
      questions:
      - How do I add a suggested field to one of my parts?
      - Can I give an inventory part a custom field it doesn't have yet?
      instructions:
      - text: Attach a suggested field to part {partID}.
        slots:
          partID: path.partID
      - text: Add an existing custom field to inventory part {partID}.
        slots:
          partID: path.partID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List log entries for one part
      effect: read
      questions:
      - What is the log history for one specific part?
      - Can I filter a part's logs by source or by the user who made them?
      instructions:
      - text: Show the logs for part {partID}.
        slots:
          partID: path.partID
      - text: List part {partID} log entries from sources {sources}.
        slots:
          partID: path.partID
          sources: query.sources
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/logs'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a manual log entry to a part
      effect: write
      questions:
      - How do I write a manual note into a part's log?
      - Can a part log entry be attributed to a specific user?
      instructions:
      - text: Add the log entry {logEntry} to part {partID}.
        slots:
          logEntry: requestBody.logEntry
          partID: path.partID
      - text: Log {logEntry} on part {partID} as user {userID}.
        slots:
          logEntry: requestBody.logEntry
          partID: path.partID
          userID: requestBody.userID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/logs/{logID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a manual part log entry
      effect: destructive
      questions:
      - Which part logs can be deleted through the API?
      - Can I remove a manual note from a part's history?
      instructions:
      - text: Delete part log {logID}.
        slots:
          logID: path.logID
      - text: Remove manual part log entry {logID}.
        slots:
          logID: path.logID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/logs/{logID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Edit a manual part log entry
      effect: write
      questions:
      - Can I edit the text of a manual part log?
      - Are only manual part logs editable?
      instructions:
      - text: Change the text of part log {logID} to {logEntry}.
        slots:
          logID: path.logID
          logEntry: requestBody.logEntry
      - text: Update manual part log entry {logID}.
        slots:
          logID: path.logID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/logs'].get
  update:
    x-apievangelist-phrasing:
      intent: List part logs across the whole account
      effect: read
      questions:
      - Can I see part logs for every part in my account at once?
      - Which part log entries were written by a certain user across all inventory?
      instructions:
      - text: List all part logs across the account.
      - text: Show account-wide part logs for parts {parts} since {start}.
        slots:
          parts: query.parts
          start: query.start
      - text: Search every part log for {logEntry}.
        slots:
          logEntry: query.logEntry
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}/purchasables'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a part's purchasable units
      effect: read
      questions:
      - What purchasable options are defined for a part?
      - Can I look up a part's purchasables by name prefix?
      instructions:
      - text: Show the purchasables for part {partID}.
        slots:
          partID: path.partID
      - text: List purchasables of part {partID} starting with {nameStartsWith}.
        slots:
          partID: path.partID
          nameStartsWith: query.nameStartsWith
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/vendors/associations'].get
  update:
    x-apievangelist-phrasing:
      intent: List vendor-part associations
      effect: read
      questions:
      - Which vendors supply which parts?
      - Can I find a part association by the vendor's part number?
      instructions:
      - text: List vendor associations for parts {parts}.
        slots:
          parts: query.parts
      - text: Find vendor-part associations with vendor part number {vendorPartNumber}.
        slots:
          vendorPartNumber: query.vendorPartNumber
      - text: Show parts associated with vendor {vendorName}.
        slots:
          vendorName: query.vendorName
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/vendors/associations'].post
  update:
    x-apievangelist-phrasing:
      intent: Link a vendor to a part
      effect: write
      questions:
      - How do I record that a vendor supplies a certain part?
      - Does the vendor need to be available at the part's location to link them?
      instructions:
      - text: Associate vendor {vendorID} with part {partID}.
        slots:
          vendorID: requestBody.vendorID
          partID: requestBody.partID
      - text: Link part {partID} to supplier {vendorID}.
        slots:
          partID: requestBody.partID
          vendorID: requestBody.vendorID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/vendors/associations/{relationID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a vendor-part association
      effect: destructive
      questions:
      - Can I unlink a vendor from a part?
      - Which vendor-part associations can be deleted?
      instructions:
      - text: Delete vendor-part association {relationID}.
        slots:
          relationID: path.relationID
      - text: Remove the manual vendor link {relationID}.
        slots:
          relationID: path.relationID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts'].get
  update:
    x-apievangelist-phrasing:
      intent: List parts in inventory
      effect: read
      questions:
      - What spare parts do I have in inventory?
      - Can I look up parts by their part number?
      instructions:
      - text: List parts at locations {locations}.
        slots:
          locations: query.locations
      - text: Find parts named {name}.
        slots:
          name: query.name
      - text: Look up parts with part numbers {numbers}.
        slots:
          numbers: query.numbers
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a new part to inventory
      effect: write
      questions:
      - How do I add a new spare part to my inventory list?
      - Do new parts need a location?
      instructions:
      - text: Create a new inventory part.
      - text: Add a new spare part to inventory at my main location.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a part from inventory
      effect: destructive
      questions:
      - Can I remove a part from the inventory list?
      - How do I delete a discontinued part record?
      instructions:
      - text: Delete part {partID}.
        slots:
          partID: path.partID
      - text: Remove inventory part {partID}.
        slots:
          partID: path.partID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/{partID}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Update a part's details or quantity
      effect: write
      questions:
      - How do I adjust a part's quantity on hand?
      - Can I change a part's name or price?
      instructions:
      - text: Update the quantity of part {partID}.
        slots:
          partID: path.partID
      - text: Edit the details of inventory part {partID}.
        slots:
          partID: path.partID
      method: generated
      generated: '2026-09-26'
- target: $.paths['/v2/parts/usage'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the parts usage log
      effect: read
      questions:
      - Which parts were used on which tasks?
      - Can I see parts consumption within a date range?
      instructions:
      - text: Show the parts usage log for parts {parts}.
        slots:
          parts: query.parts
      - text: List parts used on tasks {tasks}.
        slots:
          tasks: query.tasks
      - text: Get parts usage between {start} and {end}.
        slots:
          start: query.start
          end: query.end
      method: generated
      generated: '2026-09-26'


# --- truncated at 32 KB (129 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/limble-cmms/refs/heads/main/overlays/limble-cmms-routes-api-phrasing-overlay.yaml