Act! CRM · OpenAPI Overlay 1.0.0

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

30 actions 30 updates phrasing extends openapi/act-analytics-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 30 · first 16 shown; the file carries all of them

$.info
$.paths['/api/activities/analytics/task-list'].get
$.paths['/api/activities/analytics/activity-by-user'].get
$.paths['/api/activities/analytics/activity-by-user-details'].get
$.paths['/api/emarketing/analytics/campaign-leads'].get
$.paths['/api/emarketing/analytics/campaign-lead-info'].get
$.paths['/api/emarketing/analytics/campaign-sent'].get
$.paths['/api/emarketing/analytics/campaign-results'].get
$.paths['/api/{entityname}/analytics/query'].get
$.paths['/api/{entityname}/analytics/query-details'].get
$.paths['/api/emarketing/analytics/history'].get
$.paths['/api/analytics/kpi'].get
$.paths['/api/opportunity/analytics/revenue/actual-predicted'].get
$.paths['/api/opportunity/analytics/revenue/forecast-by-product'].get
$.paths['/api/opportunity/analytics/revenue/forecast-by-product-details'].get
$.paths['/api/opportunity/analytics/revenue/forecast-by-rep'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for act.web.api Analytics API
  version: 1.0.0
extends: openapi/act-analytics-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: 29
- target: $.paths['/api/activities/analytics/task-list'].get
  update:
    x-apievangelist-phrasing:
      intent: Get task list activities for a date range
      effect: read
      questions:
      - What tasks are on my list between two dates?
      - Can I limit the analytics task list to certain priorities or activity types?
      instructions:
      - text: Show my task list activities from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Get up to {max} tasks between {start} and {end} with priority {priorityIds}.
        slots:
          max: query.max
          start: query.start
          end: query.end
          priorityIds: query.priorityIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/activities/analytics/activity-by-user'].get
  update:
    x-apievangelist-phrasing:
      intent: Summarize activities by user
      effect: read
      questions:
      - How many activities has each rep logged in a period?
      - Can I compare activity counts across several users for a date range?
      instructions:
      - text: Summarize activities by user from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Compare activity totals for users {userIds} between {start} and {end}.
        slots:
          userIds: query.userIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/activities/analytics/activity-by-user-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one user's activities
      effect: read
      questions:
      - Which individual activities did one rep complete in a date range?
      - Can I see the detail behind one user's activity total?
      instructions:
      - text: Show activity details for user {userId} from {start} to {end}, types {typeIds}.
        slots:
          userId: query.userId
          start: query.start
          end: query.end
          typeIds: query.typeIds
      - text: Break down the {typeIds} activities user {userId} logged between {start} and {end}.
        slots:
          typeIds: query.typeIds
          userId: query.userId
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/emarketing/analytics/campaign-leads'].get
  update:
    x-apievangelist-phrasing:
      intent: Get leads generated by email campaigns
      effect: read
      questions:
      - Which contacts became leads from my email marketing?
      - Is there a quick count of campaign leads?
      instructions:
      - text: Show my email campaign leads.
      - text: List the contacts that came in as campaign leads.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/emarketing/analytics/campaign-lead-info'].get
  update:
    x-apievangelist-phrasing:
      intent: Get opportunities from campaign leads
      effect: read
      questions:
      - Which opportunities came out of my campaigns in a given period?
      - Can I filter campaign-driven opportunities by status or owner?
      instructions:
      - text: Show opportunities from campaign leads between {start} and {end}.
        slots:
          start: query.start
          end: query.end
      - text: List opportunities from campaigns {campaignIds} from {start} to {end}.
        slots:
          campaignIds: query.campaignIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/emarketing/analytics/campaign-sent'].get
  update:
    x-apievangelist-phrasing:
      intent: Count email campaigns sent in a period
      effect: read
      questions:
      - How many email campaigns did we send last month?
      - What campaigns went out between two dates?
      instructions:
      - text: Show campaigns sent between {start} and {end}.
        slots:
          start: query.start
          end: query.end
      - text: Count the email campaigns we sent from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/emarketing/analytics/campaign-results'].get
  update:
    x-apievangelist-phrasing:
      intent: Get email campaign results
      effect: read
      questions:
      - How did my email campaigns perform in a date range?
      - Can I see results for just a few specific campaigns?
      instructions:
      - text: Show campaign results from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Get the results of campaigns {campaignIds} between {start} and {end}.
        slots:
          campaignIds: query.campaignIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/{entityname}/analytics/query'].get
  update:
    x-apievangelist-phrasing:
      intent: Run a custom aggregate query on a record type
      effect: read
      questions:
      - Can I build my own analytics query, like counting opportunities grouped by a field?
      - What custom aggregations can I run over contacts, companies or opportunities?
      instructions:
      - text: Run a {operation} of {entityname} grouped by {field}.
        slots:
          operation: query.operation
          entityname: path.entityname
          field: query.field
      - text: Aggregate {entityname} by {field} using {operation} for users {userIds}.
        slots:
          entityname: path.entityname
          field: query.field
          operation: query.operation
          userIds: query.userIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/{entityname}/analytics/query-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one value of a custom query
      effect: read
      questions:
      - Which records sit behind one bar of my custom analytics chart?
      - Can I list the detail records where a field equals a given value?
      instructions:
      - text: Show the {entityname} records where {field} is {fieldValue}.
        slots:
          entityname: path.entityname
          field: query.field
          fieldValue: query.fieldValue
      - text: Drill into {entityname} custom query details for {field} = {fieldValue} from {start} to {end}.
        slots:
          entityname: path.entityname
          field: query.field
          fieldValue: query.fieldValue
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/emarketing/analytics/history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get e-marketing history for a date range
      effect: read
      questions:
      - What email marketing activity was recorded over a past period?
      - Can I pull historical e-marketing data between two dates?
      instructions:
      - text: Show e-marketing history from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Get the historical email marketing record between {start} and {end}.
        slots:
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/analytics/kpi'].get
  update:
    x-apievangelist-phrasing:
      intent: Get KPI figures for a KPI group
      effect: read
      questions:
      - What are my KPI numbers for a given KPI group?
      - Can I filter KPI data by stage, owner or amount?
      instructions:
      - text: Get KPI data for group {groupName}.
        slots:
          groupName: query.groupName
      - text: Show KPI group {groupName} from {start} to {end}.
        slots:
          groupName: query.groupName
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/actual-predicted'].get
  update:
    x-apievangelist-phrasing:
      intent: Compare actual and predicted revenue
      effect: read
      questions:
      - Is our closed revenue tracking ahead of or behind what was forecast?
      - Can I compare actual against predicted revenue by month or quarter?
      instructions:
      - text: Compare actual and predicted revenue.
      - text: Show actual vs predicted revenue by {interval} from {start} to {end}.
        slots:
          interval: query.args.interval
          start: query.args.start
          end: query.args.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/forecast-by-product'].get
  update:
    x-apievangelist-phrasing:
      intent: Forecast revenue by product
      effect: read
      questions:
      - Which products carry the most forecast revenue?
      - Can I see the opportunity forecast split across several products?
      instructions:
      - text: Show the revenue forecast by product.
      - text: Forecast opportunity revenue for products {productIds}.
        slots:
          productIds: query.productIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/forecast-by-product-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one product's forecast
      effect: read
      questions:
      - Which opportunities make up the forecast for one product?
      - What's in the forecast detail for a single product?
      instructions:
      - text: Show forecast details for product {productId}.
        slots:
          productId: query.productId
      - text: List the forecasted opportunities behind product {productId}.
        slots:
          productId: query.productId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/forecast-by-rep'].get
  update:
    x-apievangelist-phrasing:
      intent: Forecast revenue by sales rep
      effect: read
      questions:
      - What is each sales rep forecast to close?
      - Can I compare forecast revenue across a few reps?
      instructions:
      - text: Show the revenue forecast by rep.
      - text: Forecast opportunity revenue for reps {userIds}.
        slots:
          userIds: query.userIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/forecast-by-rep-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one rep's forecast
      effect: read
      questions:
      - Which deals make up one salesperson's forecast?
      - What's behind a single rep's forecast number?
      instructions:
      - text: Show forecast details for rep {userId}.
        slots:
          userId: query.userId
      - text: List the forecasted opportunities owned by user {userId}.
        slots:
          userId: query.userId
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/analytics/pipeline'].get
  update:
    x-apievangelist-phrasing:
      intent: View the open opportunity pipeline
      effect: read
      questions:
      - What deals are currently being worked in the pipeline?
      - Can I filter the pipeline view by stage, owner or probability?
      instructions:
      - text: Show my current opportunity pipeline.
      - text: Show pipeline deals in stages {stageIds} for users {userIds}.
        slots:
          stageIds: query.stageIds
          userIds: query.userIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/analytics/pipelines'].post
  update:
    x-apievangelist-phrasing:
      intent: Query the pipeline with a filter in the body
      effect: read
      questions:
      - Can I send a long pipeline filter as a POST body instead of query parameters?
      - Is there a POST form of the pipeline query for many stage or user ids?
      instructions:
      - text: Query the pipeline via POST for stages {stageIds} between {start} and {end}.
        slots:
          stageIds: requestBody.stageIds
          start: requestBody.start
          end: requestBody.end
      - text: Post a pipeline filter for users {userIds} with status {statuses}.
        slots:
          userIds: requestBody.userIds
          statuses: requestBody.statuses
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunities/analytics/top-open'].get
  update:
    x-apievangelist-phrasing:
      intent: List the top open opportunities
      effect: read
      questions:
      - What are my biggest open deals right now?
      - Can I cap the top open opportunities list at a certain number?
      instructions:
      - text: Show my top open opportunities.
      - text: List the top {max} open deals for users {userIds}.
        slots:
          max: query.max
          userIds: query.userIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/stage-time'].get
  update:
    x-apievangelist-phrasing:
      intent: Measure average time deals spend in each stage
      effect: read
      questions:
      - How long do opportunities sit in each sales stage on average?
      - Where are deals getting stuck in the process?
      instructions:
      - text: Show average time in stage from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Measure how long deals stay in stages {stageIds} between {start} and {end}.
        slots:
          stageIds: query.stageIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/close-reason'].get
  update:
    x-apievangelist-phrasing:
      intent: Count opportunities by close reason
      effect: read
      questions:
      - Why are we losing deals, counted by close reason?
      - What are the most common reasons won opportunities closed?
      instructions:
      - text: Count {status} opportunities by close reason from {start} to {end}.
        slots:
          status: query.status
          start: query.start
          end: query.end
      - text: Tally close reasons for deals with status {status} between {start} and {end}.
        slots:
          status: query.status
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/close-reason-details'].get
  update:
    x-apievangelist-phrasing:
      intent: List deals closed for a given reason
      effect: read
      questions:
      - Which specific deals were lost for a particular reason?
      - Can I see the opportunities behind one close reason?
      instructions:
      - text: List {status} deals closed as {closeReason} from {start} to {end}.
        slots:
          status: query.status
          closeReason: query.closeReason
          start: query.start
          end: query.end
      - text: Show the opportunities with close reason {closeReason} and status {status} between {start} and {end}.
        slots:
          closeReason: query.closeReason
          status: query.status
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/stages/analytics/opportunity-count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count opportunities in each stage
      effect: read
      questions:
      - How many opportunities are in each stage of the sales process?
      - Can I count deals per stage for just certain reps?
      instructions:
      - text: Count opportunities by stage.
      - text: Show the number of deals per stage for users {userIds}.
        slots:
          userIds: query.userIds
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/cost'].get
  update:
    x-apievangelist-phrasing:
      intent: Compare revenue against cost
      effect: read
      questions:
      - Are my products earning more than they cost over time?
      - Can I chart revenue versus cost by period for chosen products?
      instructions:
      - text: Compare revenue and cost by period.
      - text: Show revenue vs cost for products {productIds} by {interval}.
        slots:
          productIds: query.productIds
          interval: query.args.interval
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/sales-by-product'].get
  update:
    x-apievangelist-phrasing:
      intent: Summarize closed sales by product
      effect: read
      questions:
      - Which products sold the most in a period?
      - Can I compare sales across a set of products for a date range?
      instructions:
      - text: Show sales by product from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Compare sales of products {productIds} between {start} and {end}.
        slots:
          productIds: query.productIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/sales-by-product-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one product's sales
      effect: read
      questions:
      - Which deals produced the sales of one product?
      - What's behind a single product's sales number?
      instructions:
      - text: Show sales details for product {productId} from {start} to {end}.
        slots:
          productId: query.productId
          start: query.start
          end: query.end
      - text: List the opportunities that sold product {productId} between {start} and {end}.
        slots:
          productId: query.productId
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/sales-by-rep'].get
  update:
    x-apievangelist-phrasing:
      intent: Summarize closed sales by rep
      effect: read
      questions:
      - Who are my top sellers for a period?
      - Can I compare sales totals for a few reps?
      instructions:
      - text: Show sales by rep from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Compare sales for reps {userIds} between {start} and {end}.
        slots:
          userIds: query.userIds
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/sales-by-rep-details'].get
  update:
    x-apievangelist-phrasing:
      intent: Drill into one rep's sales
      effect: read
      questions:
      - Which deals did one salesperson close in a period?
      - What's the detail behind a single rep's sales total?
      instructions:
      - text: Show sales details for rep {userId} from {start} to {end}.
        slots:
          userId: query.userId
          start: query.start
          end: query.end
      - text: List the deals user {userId} closed between {start} and {end}.
        slots:
          userId: query.userId
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'
- target: $.paths['/api/opportunity/analytics/revenue/won-lost'].get
  update:
    x-apievangelist-phrasing:
      intent: Compare won and lost opportunities
      effect: read
      questions:
      - What's our win rate versus losses for a period?
      - How many deals did we win compared to lose last quarter?
      instructions:
      - text: Compare won and lost deals from {start} to {end}.
        slots:
          start: query.start
          end: query.end
      - text: Show the win versus loss breakdown between {start} and {end}.
        slots:
          start: query.start
          end: query.end
      method: generated
      generated: '2026-10-01'