Act! CRM · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for act.web.api Opportunities API

46 actions 46 updates phrasing extends openapi/act-opportunities-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Act! CRM's API. It is a proposal applied on top of the contract, not a document Act! CRM publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

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

$.info
$.paths['/api/companies/{companyId}/associated-opportunities/{opportunityId}'].put
$.paths['/api/companies/{companyId}/associated-opportunities/{opportunityId}'].delete
$.paths['/api/companies/{companyId}/associated-opportunities'].get
$.paths['/api/companies/{companyId}/associated-opportunities'].put
$.paths['/api/companies/{companyId}/associated-opportunities'].delete
$.paths['/api/contacts/{contactId}/associated-opportunities/{opportunityId}'].put
$.paths['/api/contacts/{contactId}/associated-opportunities/{opportunityId}'].delete
$.paths['/api/contacts/{contactId}/associated-opportunities'].get
$.paths['/api/contacts/{contactId}/associated-opportunities'].put
$.paths['/api/contacts/{contactId}/associated-opportunities'].delete
$.paths['/api/groups/{groupId}/associated-opportunities/{opportunityId}'].put
$.paths['/api/groups/{groupId}/associated-opportunities/{opportunityId}'].delete
$.paths['/api/groups/{groupId}/associated-opportunities'].get
$.paths['/api/groups/{groupId}/associated-opportunities'].put
$.paths['/api/groups/{groupId}/associated-opportunities'].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 act.web.api Opportunities API
  version: 1.0.0
extends: openapi/act-opportunities-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: 45
- target: $.paths['/api/companies/{companyId}/associated-opportunities/{opportunityId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Link one opportunity to a company
      effect: write
      questions:
      - How do I attach a single deal to a company record in Act!?
      - Can I tie one existing opportunity to a company account?
      instructions:
      - text: Link opportunity {opportunityId} to company {companyId}.
        slots:
          opportunityId: path.opportunityId
          companyId: path.companyId
      - text: Associate deal {opportunityId} with the company {companyId}.
        slots:
          opportunityId: path.opportunityId
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-opportunities/{opportunityId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink one opportunity from a company
      effect: destructive
      questions:
      - How can I detach a single deal from a company without deleting the deal?
      - What happens to the opportunity when I remove it from one company?
      instructions:
      - text: Unlink opportunity {opportunityId} from company {companyId}.
        slots:
          opportunityId: path.opportunityId
          companyId: path.companyId
      - text: Remove the association between company {companyId} and deal {opportunityId}.
        slots:
          companyId: path.companyId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-opportunities'].get
  update:
    x-apievangelist-phrasing:
      intent: List opportunities linked to a company
      effect: read
      questions:
      - Which deals are linked to a particular company?
      - Can I filter a company's opportunities with an OData query?
      instructions:
      - text: Show all opportunities linked to company {companyId}.
        slots:
          companyId: path.companyId
      - text: List the open deals for company {companyId}.
        slots:
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-opportunities'].put
  update:
    x-apievangelist-phrasing:
      intent: Link several opportunities to a company at once
      effect: write
      questions:
      - Can I attach a batch of deals to one company in a single call?
      - How do I bulk-link a list of opportunity ids to a company?
      instructions:
      - text: Link opportunities {opportunities} to company {companyId} in one go.
        slots:
          opportunities: requestBody.opportunities
          companyId: path.companyId
      - text: Bulk-associate the deal list {opportunities} with company {companyId}.
        slots:
          opportunities: requestBody.opportunities
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/companies/{companyId}/associated-opportunities'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink several opportunities from a company
      effect: destructive
      questions:
      - Can I detach a whole list of deals from a company at once?
      - Is there a bulk way to remove opportunities from a company record?
      instructions:
      - text: Unlink opportunities {opportunities} from company {companyId} in bulk.
        slots:
          opportunities: requestBody.opportunities
          companyId: path.companyId
      - text: Remove the deal list {opportunities} from company {companyId}.
        slots:
          opportunities: requestBody.opportunities
          companyId: path.companyId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/associated-opportunities/{opportunityId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Link one opportunity to a contact
      effect: write
      questions:
      - How do I attach a single deal to a contact person?
      - Can I tie an existing opportunity to one contact record?
      instructions:
      - text: Link opportunity {opportunityId} to contact {contactId}.
        slots:
          opportunityId: path.opportunityId
          contactId: path.contactId
      - text: Associate deal {opportunityId} with the contact {contactId}.
        slots:
          opportunityId: path.opportunityId
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/associated-opportunities/{opportunityId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink one opportunity from a contact
      effect: destructive
      questions:
      - How can I detach a single deal from a contact without deleting it?
      - Can I remove one opportunity from a contact's record?
      instructions:
      - text: Unlink opportunity {opportunityId} from contact {contactId}.
        slots:
          opportunityId: path.opportunityId
          contactId: path.contactId
      - text: Remove the association between contact {contactId} and deal {opportunityId}.
        slots:
          contactId: path.contactId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/associated-opportunities'].get
  update:
    x-apievangelist-phrasing:
      intent: List opportunities linked to a contact
      effect: read
      questions:
      - Which deals is a given contact involved in?
      - Can I filter a contact's opportunities using OData?
      instructions:
      - text: Show all opportunities linked to contact {contactId}.
        slots:
          contactId: path.contactId
      - text: List the deals contact {contactId} is part of.
        slots:
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/associated-opportunities'].put
  update:
    x-apievangelist-phrasing:
      intent: Link several opportunities to a contact at once
      effect: write
      questions:
      - Can I attach a batch of deals to one contact in a single request?
      - How do I bulk-link opportunity ids to a contact?
      instructions:
      - text: Link opportunities {opportunities} to contact {contactId} in one go.
        slots:
          opportunities: requestBody.opportunities
          contactId: path.contactId
      - text: Bulk-associate the deal list {opportunities} with contact {contactId}.
        slots:
          opportunities: requestBody.opportunities
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/contacts/{contactId}/associated-opportunities'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink several opportunities from a contact
      effect: destructive
      questions:
      - Can I detach a whole list of deals from a contact at once?
      - Is there a bulk way to remove opportunities from a contact?
      instructions:
      - text: Unlink opportunities {opportunities} from contact {contactId} in bulk.
        slots:
          opportunities: requestBody.opportunities
          contactId: path.contactId
      - text: Remove the deal list {opportunities} from contact {contactId}.
        slots:
          opportunities: requestBody.opportunities
          contactId: path.contactId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-opportunities/{opportunityId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Link one opportunity to a group
      effect: write
      questions:
      - How do I add a single deal to a group?
      - Can I associate one existing opportunity with a contact group?
      instructions:
      - text: Link opportunity {opportunityId} to group {groupId}.
        slots:
          opportunityId: path.opportunityId
          groupId: path.groupId
      - text: Associate deal {opportunityId} with the group {groupId}.
        slots:
          opportunityId: path.opportunityId
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-opportunities/{opportunityId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink one opportunity from a group
      effect: destructive
      questions:
      - How can I take a single deal out of a group?
      - Does removing an opportunity from a group delete the opportunity?
      instructions:
      - text: Unlink opportunity {opportunityId} from group {groupId}.
        slots:
          opportunityId: path.opportunityId
          groupId: path.groupId
      - text: Remove the association between group {groupId} and deal {opportunityId}.
        slots:
          groupId: path.groupId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-opportunities'].get
  update:
    x-apievangelist-phrasing:
      intent: List opportunities linked to a group
      effect: read
      questions:
      - Which deals belong to a particular group?
      - Can I query a group's opportunities with an OData filter?
      instructions:
      - text: Show all opportunities linked to group {groupId}.
        slots:
          groupId: path.groupId
      - text: List the deals in group {groupId}.
        slots:
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-opportunities'].put
  update:
    x-apievangelist-phrasing:
      intent: Link several opportunities to a group at once
      effect: write
      questions:
      - Can I add a batch of deals to a group in one request?
      - How do I bulk-link opportunity ids to a group?
      instructions:
      - text: Link opportunities {opportunities} to group {groupId} in one go.
        slots:
          opportunities: requestBody.opportunities
          groupId: path.groupId
      - text: Bulk-associate the deal list {opportunities} with group {groupId}.
        slots:
          opportunities: requestBody.opportunities
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/groups/{groupId}/associated-opportunities'].delete
  update:
    x-apievangelist-phrasing:
      intent: Unlink several opportunities from a group
      effect: destructive
      questions:
      - Can I pull a whole list of deals out of a group at once?
      - Is there a bulk way to remove opportunities from a group?
      instructions:
      - text: Unlink opportunities {opportunities} from group {groupId} in bulk.
        slots:
          opportunities: requestBody.opportunities
          groupId: path.groupId
      - text: Remove the deal list {opportunities} from group {groupId}.
        slots:
          opportunities: requestBody.opportunities
          groupId: path.groupId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an opportunity's details
      effect: read
      questions:
      - How do I look up a single deal by its id?
      - What fields come back for one opportunity, like stage, probability and close date?
      instructions:
      - text: Fetch opportunity {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      - text: Show me the stage and estimated close date of deal {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace an opportunity's details
      effect: write
      questions:
      - How do I overwrite an entire opportunity record with new values?
      - Can I mark a deal as won by sending the full opportunity back?
      instructions:
      - text: Replace opportunity {opportunityId} with name {name} and status {status}.
        slots:
          opportunityId: path.opportunityId
          name: requestBody.name
          status: requestBody.status
      - text: Do a full update of deal {opportunityId}, setting its estimated close date to {estimatedCloseDate}.
        slots:
          opportunityId: path.opportunityId
          estimatedCloseDate: requestBody.estimatedCloseDate
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an opportunity
      effect: destructive
      questions:
      - How do I permanently remove a deal from my pipeline?
      - Can a deleted opportunity be recovered?
      instructions:
      - text: Delete opportunity {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      - text: Remove the deal {opportunityId} from the database.
        slots:
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change a few fields on an opportunity
      effect: write
      questions:
      - Can I update just the probability of a deal without resending everything?
      - How do I change only the close date on an opportunity?
      instructions:
      - text: Set the win probability of opportunity {opportunityId} to {probability}.
        slots:
          opportunityId: path.opportunityId
          probability: requestBody.probability
      - text: Patch deal {opportunityId} so its actual close date is {actualCloseDate}.
        slots:
          opportunityId: path.opportunityId
          actualCloseDate: requestBody.actualCloseDate
      - text: Record {reason} as the reason deal {opportunityId} changed status.
        slots:
          reason: requestBody.reason
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a sales process
      effect: read
      questions:
      - How do I see the details of one sales process?
      - What does a single opportunity process definition contain?
      instructions:
      - text: Fetch sales process {processId}.
        slots:
          processId: path.processId
      - text: Show me the name and description of process {processId}.
        slots:
          processId: path.processId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a sales process definition
      effect: write
      questions:
      - How do I overwrite a whole sales process, including its stages?
      - Can I redefine every stage of an existing process in one call?
      instructions:
      - text: Replace sales process {processId} with name {name} and stages {stages}.
        slots:
          processId: path.processId
          name: requestBody.name
          stages: requestBody.stages
      - text: Fully update process {processId} with the description {description}.
        slots:
          processId: path.processId
          description: requestBody.description
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a sales process
      effect: destructive
      questions:
      - How do I remove a sales process I no longer use?
      - Can I delete an opportunity process entirely?
      instructions:
      - text: Delete sales process {processId}.
        slots:
          processId: path.processId
      - text: Remove the opportunity process {processId}.
        slots:
          processId: path.processId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Rename or tweak a sales process
      effect: write
      questions:
      - Can I just rename a sales process without touching its stages?
      - How do I change only the description of an opportunity process?
      instructions:
      - text: Rename sales process {processId} to {name}.
        slots:
          processId: path.processId
          name: requestBody.name
      - text: Patch the status of process {processId} to {status}.
        slots:
          processId: path.processId
          status: requestBody.status
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products/{productId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one product line on an opportunity
      effect: read
      questions:
      - How do I look up a single product line item on a deal?
      - What price, quantity and discount does one opportunity product carry?
      instructions:
      - text: Fetch product line {productId} on opportunity {opportunityId}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
      - text: Show the price and quantity of item {productId} in deal {opportunityId}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products/{productId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a product line on an opportunity
      effect: write
      questions:
      - How do I overwrite a whole product line item on a deal?
      - Can I resend an opportunity product with a new price and quantity?
      instructions:
      - text: Replace product line {productId} on opportunity {opportunityId} with quantity {quantity} at price {price}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
          quantity: requestBody.quantity
          price: requestBody.price
      - text: Fully update item {productId} in deal {opportunityId} with the name {name}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
          name: requestBody.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products/{productId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a product line from an opportunity
      effect: destructive
      questions:
      - How do I take a product off a deal?
      - Can I delete one line item from an opportunity?
      instructions:
      - text: Remove product line {productId} from opportunity {opportunityId}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
      - text: Delete item {productId} from deal {opportunityId}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products/{productId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Adjust a product line on an opportunity
      effect: write
      questions:
      - Can I change just the quantity of a product on a deal?
      - How do I update only the discounted price of a line item?
      instructions:
      - text: Change the quantity of product line {productId} on opportunity {opportunityId} to {quantity}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
          quantity: requestBody.quantity
      - text: Patch item {productId} in deal {opportunityId} to a discounted price of {discountPrice}.
        slots:
          productId: path.productId
          opportunityId: path.opportunityId
          discountPrice: requestBody.discountPrice
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/stages/{stageId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get a pipeline stage
      effect: read
      questions:
      - How do I look up one stage of a sales process?
      - What probability is set on a given pipeline stage?
      instructions:
      - text: Fetch pipeline stage {stageId}.
        slots:
          stageId: path.stageId
      - text: Show the name and probability of stage {stageId}.
        slots:
          stageId: path.stageId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/stages/{stageId}'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a pipeline stage
      effect: write
      questions:
      - How do I overwrite every field of a pipeline stage?
      - Can I fully redefine a stage's name, order and probability?
      instructions:
      - text: Replace stage {stageId} with name {name}, position {number} and probability {probability}.
        slots:
          stageId: path.stageId
          name: requestBody.name
          number: requestBody.number
          probability: requestBody.probability
      - text: Fully update pipeline stage {stageId} with description {description}.
        slots:
          stageId: path.stageId
          description: requestBody.description
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/stages/{stageId}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a pipeline stage
      effect: destructive
      questions:
      - How do I remove a stage from my sales pipeline?
      - Can I delete a single opportunity stage?
      instructions:
      - text: Delete pipeline stage {stageId}.
        slots:
          stageId: path.stageId
      - text: Remove opportunity stage {stageId}.
        slots:
          stageId: path.stageId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/stages/{stageId}'].patch
  update:
    x-apievangelist-phrasing:
      intent: Adjust a pipeline stage
      effect: write
      questions:
      - Can I change only the win probability of a stage?
      - How do I rename one stage without resending the rest of it?
      instructions:
      - text: Set the probability of stage {stageId} to {probability}.
        slots:
          stageId: path.stageId
          probability: requestBody.probability
      - text: Rename pipeline stage {stageId} to {name}.
        slots:
          stageId: path.stageId
          name: requestBody.name
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/lookup'].get
  update:
    x-apievangelist-phrasing:
      intent: Convert an opportunity filter into criteria JSON
      effect: read
      questions:
      - How do I turn an OData filter on opportunities into criteria JSON for a dynamic list preview?
      - Can I translate an opportunity query into lookup criteria?
      instructions:
      - text: Convert my opportunity OData filter into dynamic-list criteria JSON.
      - text: Build lookup criteria from an opportunity filter query.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities'].get
  update:
    x-apievangelist-phrasing:
      intent: List or search opportunities
      effect: read
      questions:
      - What deals are in my pipeline right now?
      - Can I search all opportunities with an OData filter, like by status?
      instructions:
      - text: List all my opportunities.
      - text: Search every opportunity in the database for deals that are still open.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an opportunity
      effect: write
      questions:
      - How do I add a new deal to my pipeline?
      - Can I set the expected close date and products when creating an opportunity?
      instructions:
      - text: Create an opportunity named {name} expected to close on {estimatedCloseDate}.
        slots:
          name: requestBody.name
          estimatedCloseDate: requestBody.estimatedCloseDate
      - text: Open a new deal {name} for companies {companies} with source {source}.
        slots:
          name: requestBody.name
          companies: requestBody.companies
          source: requestBody.source
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity-lists'].get
  update:
    x-apievangelist-phrasing:
      intent: Get several opportunities by id
      effect: read
      questions:
      - Can I fetch a specific set of opportunities by passing their ids?
      - How do I load many deals at once when I already know their ids?
      instructions:
      - text: Fetch the opportunities with ids {ids}.
        slots:
          ids: query.ids
      - text: 'Load just these deals: {ids}.'
        slots:
          ids: query.ids
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/{entityName}/{id}/associated-opportunities'].get
  update:
    x-apievangelist-phrasing:
      intent: List opportunities linked to a custom entity record
      effect: read
      questions:
      - Which deals are attached to a record in one of my custom entities?
      - Can I see the opportunities linked to a custom entity row?
      instructions:
      - text: List opportunities linked to {entityName} record {id}.
        slots:
          entityName: path.entityName
          id: path.id
      - text: Show the deals tied to custom entity {entityName} row {id}.
        slots:
          entityName: path.entityName
          id: path.id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/access'].get
  update:
    x-apievangelist-phrasing:
      intent: See who can access an opportunity
      effect: read
      questions:
      - Who has access to a particular deal?
      - Is an opportunity public, private or limited to certain users?
      instructions:
      - text: Show the access level for opportunity {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      - text: List who is allowed to see deal {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/access'].put
  update:
    x-apievangelist-phrasing:
      intent: Change who can access an opportunity
      effect: write
      questions:
      - How do I restrict a deal to specific users?
      - Can I change an opportunity's access level to limited?
      instructions:
      - text: Limit access to opportunity {opportunityId} to accessors {accessors}.
        slots:
          opportunityId: path.opportunityId
          accessors: requestBody.accessors
      - text: Set the access level of deal {opportunityId} to {type}.
        slots:
          opportunityId: path.opportunityId
          type: requestBody.type
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes'].get
  update:
    x-apievangelist-phrasing:
      intent: List sales processes
      effect: read
      questions:
      - What sales processes are defined in my database?
      - Can I filter the list of opportunity processes with OData?
      instructions:
      - text: List all sales processes.
      - text: Show every opportunity process we have set up.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a sales process
      effect: write
      questions:
      - How do I set up a new sales process with custom stages?
      - Can I define the stages when I create a process?
      instructions:
      - text: Create a sales process called {name} with stages {stages}.
        slots:
          name: requestBody.name
          stages: requestBody.stages
      - text: Add a new opportunity process {name} described as {description}.
        slots:
          name: requestBody.name
          description: requestBody.description
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products'].get
  update:
    x-apievangelist-phrasing:
      intent: List products on an opportunity
      effect: read
      questions:
      - What products and services are attached to a deal?
      - How do I see every line item on an opportunity?
      instructions:
      - text: List all product lines on opportunity {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      - text: Show every item in deal {opportunityId}.
        slots:
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/{opportunityId}/products'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a product to an opportunity
      effect: write
      questions:
      - How do I add a product line to an existing deal?
      - Can I set quantity, price and discount when adding an item to an opportunity?
      instructions:
      - text: Add {quantity} of product {productID} to opportunity {opportunityId}.
        slots:
          quantity: requestBody.quantity
          productID: requestBody.productID
          opportunityId: path.opportunityId
      - text: Add a line item {name} priced at {price} to deal {opportunityId}.
        slots:
          name: requestBody.name
          price: requestBody.price
          opportunityId: path.opportunityId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/stages'].get
  update:
    x-apievangelist-phrasing:
      intent: List all pipeline stages
      effect: read
      questions:
      - What stages exist across all my sales processes?
      - Can I query every opportunity stage regardless of process?
      instructions:
      - text: List every pipeline stage across all processes.
      - text: Show all opportunity stages in the database.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}/stages'].get
  update:
    x-apievangelist-phrasing:
      intent: List the stages of one sales process
      effect: read
      questions:
      - Which stages make up a specific sales process?
      - In what order do the stages of a process run?
      instructions:
      - text: List the stages of sales process {processId}.
        slots:
          processId: path.processId
      - text: Show the stage order for process {processId}.
        slots:
          processId: path.processId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/processes/{processId}/stages'].post
  update:
    x-apievangelist-phrasing:
      intent: Add a stage to a sales process
      effect: write
      questions:
      - How do I add a new stage to an existing sales process?
      - Can I set the probability and position of a stage when I create it?
      instructions:
      - text: Add a stage {name} to process {processId} with probability {probability}.
        slots:
          name: requestBody.name
          processId: path.processId
          probability: requestBody.probability
      - text: Create stage {name} at position {number} in sales process {processId}.
        slots:
          name: requestBody.name
          number: requestBody.number
          processId: path.processId
      method: generated
      generated: '2026-10-01'