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