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