Pular para o conteúdo

Painel de um vendedor

GET
/v1/indicators/reps/{ownerId}
curl --request GET \
--url https://developers.nexo.winningsales.com.br/v1/indicators/reps/example \
--header 'Authorization: Bearer <token>'

O vendedor contra o time e contra o próprio mês anterior: meta com commit e upside, maiores negócios abertos, comparações por métrica, funil por fase e por etapa do CRM, buracos do funil e motivos de perda. O vendedor só abre o próprio painel. Os números são calculados depois de cada sincronização do CRM e a cada hora: nada é calculado na chamada.

ownerId
required
string

Id do dono no CRM, de GET /v1/indicators/reps

pipelineId

Pipeline (funnel) in analysis. Absent = every funnel, the number of today. A pipeline out of analysis answers the same numbers of “every funnel” with funnelScope.pipelineId null.

string format: uuid

Pipeline (funnel) in analysis. Absent = every funnel, the number of today. A pipeline out of analysis answers the same numbers of “every funnel” with funnelScope.pipelineId null.

Painel do vendedor

Media typeapplication/json
object
rep
required
object
ownerId
required

CRM owner id

string format: uuid
name
required

Owner name from the CRM

string
nullable
isYou
required

True when the CRM owner is linked to the user who asks: a lead or admin who also sells

boolean
attention
required

No_goal = no goal this month; below_goal = realized + declared commit below the goal; null = nothing to flag

string
nullable
Allowed values: no_goal below_goal
discipline
required

Task discipline of the rep in the current period, for the lead to compare across the team without a ranking

object
total
required

Count over the DealTasks table, with its base: done + missed + cancelled + rescheduled + open in the period; no note by AI, no ranking

integer
done
required

Tasks marked as done in the period

integer
missed
required

Tasks missed: the day turned and it was not done

integer
cancelled
required

Tasks the rep cancelled

integer
rescheduled
required

Tasks the rep moved to another day

integer
autoClosed
required

Tasks that closed by themselves because the signal was gone; they do not count against the rep

integer
collection
required

The same cut, only for “cobrar o cliente” tasks

object
total
required

“Cobrar o cliente” tasks (buyer_commitment_due, buyer_deadline_passed) counted against the rep in the period

integer
done
required

Of those, done

integer
missed
required

Of those, missed

integer
periods
required

Current = this month so far; recent = the last three closed months

object
current
required

The window the numbers refer to

object
key
required

Requested period

string
start
required

First day, in the company time zone (YYYY-MM-DD)

string
end
required

Last day, in the company time zone (YYYY-MM-DD)

string
months
required

Months covered

integer
closed
required

False for the current month, still moving

boolean
recent
required

The window the numbers refer to

object
key
required

Requested period

string
start
required

First day, in the company time zone (YYYY-MM-DD)

string
end
required

Last day, in the company time zone (YYYY-MM-DD)

string
months
required

Months covered

integer
closed
required

False for the current month, still moving

boolean
today
required

Today in the company time zone, YYYY-MM-DD

string
computedAt
required

When the numbers were computed; null means not computed yet

string format: date-time
nullable
minimumBase
required

Below this base a number is shown with its base and never compared

integer
sameAsTeamRatio
required

A difference below this share of the team number reads as “na média”

number
goal
required

Goal, realized, commit and upside of the rep this month

object
currency
required

Currency of the goal and of the forecast

string
goalInCents
required

Goal of the rep this month; null without goal

integer
nullable
realizedInCents
required

Won this month

integer
attainment
required

Realized ÷ goal in %

integer
nullable
commitInCents
required

Open deals the rep declared as commit, closing this month

integer
upsideInCents
required

Open deals the rep declared as upside (best case), closing this month

integer
floorAttainment
required

(realized + commit) ÷ goal in %: where the month ends if the commit closes

integer
nullable
forecastMode
required

Declared = categories the rep set in the CRM; weighted = the plan has no categories, weighted by stage probability

string
nullable
estimatedInCents
required

Open deals without close date whose estimated date falls this month; a separate band, never in commit or upside

integer
realizedPace
required

Realized per business day, with or without a goal: what the screen shows instead of the goal when there is none

object
businessDays
required

Business days (Monday to Friday) from the start of the period up to today

integer
businessDaysInPeriod
required

Business days in the whole period

integer
perBusinessDayInCents
required

Realized ÷ business days (Monday to Friday), in cents; null without business days

integer
nullable
previous
required

The previous month for comparison; only for the current period

object
periodStart
required

First day of the previous month, YYYY-MM-DD

string
periodEnd
required

Last day of the previous month, YYYY-MM-DD

string
realizedInCents
required

Won in the previous month, same scope and currency

integer
businessDays
required

Business days of the previous month

integer
perBusinessDayInCents
required

Realized ÷ business days (Monday to Friday), in cents; null without business days

integer
nullable
deviationPercent
required

Realized per business day against the previous month, in % above (+) or below (−); null without both

integer
nullable
portfolio
required

Open deals of the rep now

object
open
required

Open deals now

integer
openAmounts
required

Open pipeline, per currency

Array<object>
object
currency
required

ISO currency of the deals summed here

string
amountInCents
required

Sum in cents

integer
atRisk
required

Open deals that fire at least one risk rule of the CRM

object
count
required

Open deals

integer
amounts
required

Their amount, per currency

Array<object>
object
currency
required

ISO currency of the deals summed here

string
amountInCents
required

Sum in cents

integer
largest
required

The five largest open deals by amount

Array<object>
object
dealId
required

Deal id

string format: uuid
name
required

Deal name in the CRM

string
amountInCents
required

Deal amount; null when the CRM has none

integer
nullable
currency
required

Currency of the amount

string
stageName
required

Stage name as the CRM calls it

string
nullable
expectedCloseDate
required

Close date in the CRM, YYYY-MM-DD, company time zone

string
nullable
nextActivityOn
required

Next activity day in the CRM, YYYY-MM-DD; null when none is scheduled

string
nullable
lastActivityOn
required

Last activity day in the CRM, YYYY-MM-DD; null when there is none

string
nullable
daysWithoutActivity
required

Days since the last activity; null when there is none

integer
nullable
rules
required

Risk rules this deal fires; empty when none

Array<string>
Allowed values: closeDateOverdue closeDateSlipped noNextActivity
reason
required

Why the deal is at risk, citing the source; null when no rule fires

string
nullable
estimatedCloseDate
required

Estimated close date, YYYY-MM-DD, only when the CRM has none; never written to the CRM

string
nullable
closeDateEstimated
required

True when estimatedCloseDate is set: show it labeled as estimated

boolean
temperature
required

Temperature read from the conversations; null when there is no reading yet

object
score
required

Temperature of the deal, 0 to 100

integer
band
required

Band of the score

string
Allowed values: cold warm hot
diagnosis
required

Diagnosis read from the conversations, the heaviest one; null when there is no reading that explains it

object
code
required

Diagnosis code

string
Allowed values: absent_decision_maker prolonged_silence slipping_close_date broken_commitment unanswered_competitor
label
required

What the conversations show, in the words of the reading

string
evidence
required

Reference to the excerpt that backs the reading; this endpoint does not carry the text itself — it comes from GET /conversations/{channel}/{conversationId}/excerpts

object
channel
required

Channel of the conversation that backs the excerpt

string
Allowed values: meeting note call email crm_whatsapp
conversationId
required

Id of the conversation; use it to link to the conversation or fetch its excerpts

string
excerptRefs
required

References of the excerpts inside the conversation

Array<string>
at
required

When the excerpt happened

string
mostlyStalled
required

True when more than half of the open deals of the rep fire noNextActivity

boolean
stalled
required

Open deals of the rep without real activity past the deadline of the stage

object
count
required

Open deals that fire noNextActivity

integer
open
required

Open deals

integer
share
required

Count ÷ open in %, null without open deals

integer
nullable
stalledLargest
required

The five largest stalled deals of the rep by amount

Array<object>
object
dealId
required

Deal id

string format: uuid
name
required

Deal name in the CRM

string
ownerId
required

CRM owner id; null for deals without owner

string format: uuid
nullable
ownerName
required

Owner name from the CRM

string
nullable
amountInCents
required

Deal amount; null when the CRM has none

integer
nullable
currency
required

Currency of the amount

string
rule
required

The rule with the largest weight, the one the “why” column shows

string
Allowed values: closeDateOverdue closeDateSlipped noNextActivity
rules
required

Every rule the deal fired

Array<string>
Allowed values: closeDateOverdue closeDateSlipped noNextActivity
chance
required

Chance of closing used in the impact, 0 to 1: the declared forecast category first, measured in the company history (wins ÷ decided deals of that category in the last 12 months, minimumBase decided) and only below that base the external Winning number; then the measured history of the stage, then the stage probability configured in the CRM, then the fixed Winning chain

number
weight
required

Weight of the rule used in the impact

number
impactInCents
required

Amount × chance × weight: what orders the list

integer
expectedCloseDate
required

Close date in the CRM, YYYY-MM-DD, company time zone

string
nullable
closeDateSlips
required

How many times the close date changed

integer
daysWithoutActivity
required

Days since the last activity in the CRM; null when there is none

integer
nullable
reason
required

Why the deal is at risk, in pt-BR, citing the source (e.g. “última reunião há 12 dias, nada agendado, prazo da etapa 6 dias”)

string
nullable
activity
required

Real activity of the deal behind noNextActivity; null on numbers computed before it existed

object
source
required

Latest real activity: crm = last contact or activity recorded in the CRM; meeting = last meeting linked to the deal; stage_change = entry in the current stage; created = nothing recorded since the deal was created

string
Allowed values: crm meeting stage_change created
lastActivityOn
required

Day of that activity, YYYY-MM-DD, company time zone

string
days
required

Days since that activity

integer
deadlineDays
required

Deadline of the stage in days, between 3 and 30

integer
deadlineBasis
required

Stage = median days deals stay in this stage; pipeline = median cycle to win of the pipeline × 1.5; ceiling = no measured cycle, 30 days

string
Allowed values: stage pipeline ceiling
deadlineBase
required

Deals the deadline was measured on; 0 for ceiling

integer
nextActivityOn
required

Next scheduled activity (CRM field or future meeting), YYYY-MM-DD; null when nothing is scheduled

string
nullable
nextSource
required

Where the next activity comes from

string
nullable
Allowed values: crm meeting
estimatedCloseDate
required

Estimated close date, YYYY-MM-DD, only when the CRM has none; never written to the CRM

string
nullable
closeDateEstimated
required

True when estimatedCloseDate is set: show it labeled as estimated

boolean
diagnosis
required

Diagnosis read from the conversations, the heaviest one; null when there is no reading that explains it

object
code
required

Diagnosis code

string
Allowed values: absent_decision_maker prolonged_silence slipping_close_date broken_commitment unanswered_competitor
label
required

What the conversations show, in the words of the reading

string
evidence
required

Reference to the excerpt that backs the reading; this endpoint does not carry the text itself — it comes from GET /conversations/{channel}/{conversationId}/excerpts

object
channel
required

Channel of the conversation that backs the excerpt

string
Allowed values: meeting note call email crm_whatsapp
conversationId
required

Id of the conversation; use it to link to the conversation or fetch its excerpts

string
excerptRefs
required

References of the excerpts inside the conversation

Array<string>
at
required

When the excerpt happened

string
comparisons
required

The rep against the team average, one card per metric; ICP enters when the declared ICP exists

Array<object>
object
metric
required

Conversion = won ÷ decided; cycleToWin = mean days from creation to win; wonTicket = amount won ÷ wins with amount; followUp = second meeting booked up to 7 days after the first; noShow = no-show ÷ meetings with outcome; noNextActivity = open deals without next activity, or with it overdue; whatsappFirstReply = median minutes from the client’s first unanswered WhatsApp message to the rep’s first reply; withinIcp = value of open deals classified as inside the declared ICP ÷ value of open deals classified (inside + partial + outside)

string
Allowed values: conversion cycleToWin wonTicket followUp noShow noNextActivity whatsappFirstReply withinIcp
unit
required

How to read value and difference

string
Allowed values: percent days money minutes
higherIsBetter
required

Direction of the metric

boolean
window
required

Current = this month so far; recent = the last three closed months (periods.recent); now = a snapshot of the open pipeline

string
Allowed values: current recent now
currency
required

Currency of a money metric; null when the wins mix currencies or for other units

string
nullable
rep
required

The rep

object
value
required

The number: % for rates, days for cycles, cents for money, minutes for whatsappFirstReply; null when there is nothing to measure

number
nullable
part
required

Numerator of a rate (e.g. won); null for averages

integer
nullable
base
required

How many deals, meetings or WhatsApp first replies the number is measured on

integer
declared
required

False below minimumBase: show the number with its base, never compared

boolean
team
required

The whole team, the same number the home page shows: the rep included, deals without owner too

object
value
required

The number: % for rates, days for cycles, cents for money, minutes for whatsappFirstReply; null when there is nothing to measure

number
nullable
part
required

Numerator of a rate (e.g. won); null for averages

integer
nullable
base
required

How many deals, meetings or WhatsApp first replies the number is measured on

integer
declared
required

False below minimumBase: show the number with its base, never compared

boolean
coverage
required

Coverage of the CRM field behind the number, for the rep; for no-show, filled/total are meetings with the outcome filled ÷ past meetings; for withinIcp, filled/total are open deals with a profile class and a value ÷ open deals

object
filled
required

Meetings with the outcome filled, or open deals with a profile class and a value

integer
total
required

Past meetings in the window, or the open deals of the rep

integer
share
required

Filled ÷ total in %

integer
nullable
verdict
required

Even = difference below sameAsTeamRatio of the team number; small_base = rep or team below minimumBase, not compared; no_data = nothing measured on one side

string
Allowed values: better worse even small_base no_data
difference
required

Rep − team in the unit of the metric (points for percent)

number
nullable
relative
required

(rep − team) ÷ team, as a ratio; null when the team is zero or missing

number
nullable
funnel
required

Conversion of each canonical phase this month, rep against team

Array<object>
object
phase
required

Canonical phase

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
rep
required
object
entered
required

Deals that entered the phase this month

integer
advanced
required

Of those, deals that went to a later phase or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ entered in %, null below minimumBase

integer
nullable
team
required
object
entered
required

Deals that entered the phase this month

integer
advanced
required

Of those, deals that went to a later phase or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ entered in %, null below minimumBase

integer
nullable
difference
required

Seller rate − team rate, in points; null when either rate is not declared

integer
nullable
hole
required

True when the rep is 5 points or more below the team in this phase

boolean
stageFunnels
required

Conversion of each real CRM stage this month, rep against team, in CRM order; one entry per pipeline in analysis, respecting ?pipelineId (one funnel at a time, as in the home page)

Array<object>
object
pipelineId
required

Pipeline id

string format: uuid
pipelineName
required

Pipeline name as the CRM calls it

string
available
required

False when no deal of the team entered an open stage of the pipeline in the period

boolean
top
required

Distinct deals of the team that entered any open stage of the pipeline in the period

integer
won
required

Of those, deals of the team won

integer
steps
required

Every open stage of the pipeline, in CRM order; won and lost stages are not steps

Array<object>
object
stageId
required

CRM stage id

string format: uuid
name
required

Stage name as the CRM calls it

string
rep
required
object
entered
required

Deals that entered the stage this month

integer
advanced
required

Of those, deals that went to a later open stage of the same pipeline or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ (advanced + stopped) in %, one decimal; null below minimumBase

number
nullable
team
required
object
entered
required

Deals that entered the stage this month

integer
advanced
required

Of those, deals that went to a later open stage of the same pipeline or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ (advanced + stopped) in %, one decimal; null below minimumBase

number
nullable
reference
required

The rep own passage in the last 12 closed months, or the Winning reference of the canonical phase of the stage when the rep history is below minimumBase; null without either

object
rate
required

Reference conversion of the passage, in %, one decimal

number
base
required

Advanced + stopped of the stage in the history window; below minimumBase when the source is winning

integer
source
required

History = the same passage in the company, last 12 closed months, same owners; winning = the Winning reference of the canonical phase of the stage, only when the history is below minimumBase: label it as such

string
Allowed values: history winning
difference
required

Rep rate − team rate, in points, one decimal; null when either rate is not declared

number
nullable
hole
required

True when the rep is 5 points or more below the team in this stage

boolean
holes
required

What each hole of the funnel above (against the team) costs, and the best single fix

object
currency
required

Currency of ticket, valueInCents and extraValueInCents

string
items
required

One entry per hole of funnel (against the team, or the rep own previous month)

Array<object>
object
phase
required

Canonical phase of the passage below the reference

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
stopped
required

Deals that stopped at this passage in the month, the rep

integer
recovered
required

Of those, how many would have advanced at the reference rate (team, or the rep own previous month)

integer
nextHistoryRate
required

Team conversion to won from the following phase, last 12 closed months, in %; null below minimumBase

number
nullable
ticket
required

Null when neither the rep nor the funnel have 8 wins in the last 12 months

object
amountInCents
required

Average amount of a win, used to price the hole

integer
base
required

Wins the average is measured on

integer
source
required

Rep = the rep own 12 months of wins; funnel = the whole funnel 12 months, used when the rep has less than 8 wins

string
Allowed values: rep funnel
valueInCents
required

Recovered × nextHistoryRate × ticket: what closing this hole is worth, “se voltasse à referência” — never a goal projection. null without nextHistoryRate or ticket

integer
nullable
habit
required

Null when the passage has no habit mapped to it

object
label
required

The measured habit that most relates to this passage, from a fixed, versioned table — never a model

string
bestFix
required

Null without any hole

object
phase
required

Canonical phase of the worst hole, the only one simulated

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
before
required

Criado → ganho today

object
rate
required

Won ÷ entered the funnel, in %; null below minimumBase

integer
nullable
wins
required

Deals won in the period

integer
base
required

Deals that entered the funnel in the period

integer
after
required

Criado → ganho if this one passage reached the reference; a single simulation, one passage at a time

object
rate
required

Won ÷ entered the funnel, in %; null below minimumBase

integer
nullable
wins
required

Deals won in the period

integer
base
required

Deals that entered the funnel in the period

integer
extraWins
required

Wins added by fixing only this passage

integer
extraValueInCents
required

Value of those extra wins, same formula as valueInCents

integer
nullable
previous
required

The rep against their own previous closed month, the “meu mês anterior” ruler

object
available
required

False when the rep has less than one closed month of data; comparisons, funnel and verdict are empty

boolean
period
required

The window the numbers refer to

object
key
required

Requested period

string
start
required

First day, in the company time zone (YYYY-MM-DD)

string
end
required

Last day, in the company time zone (YYYY-MM-DD)

string
months
required

Months covered

integer
closed
required

False for the current month, still moving

boolean
comparisons
required

Same shape as comparisons, but the “team” side carries the rep own previous closed month instead of the team; for the cards whose window is “recent” (three closed months), it is the three closed months before those

Array<object>
object
metric
required

Conversion = won ÷ decided; cycleToWin = mean days from creation to win; wonTicket = amount won ÷ wins with amount; followUp = second meeting booked up to 7 days after the first; noShow = no-show ÷ meetings with outcome; noNextActivity = open deals without next activity, or with it overdue; whatsappFirstReply = median minutes from the client’s first unanswered WhatsApp message to the rep’s first reply; withinIcp = value of open deals classified as inside the declared ICP ÷ value of open deals classified (inside + partial + outside)

string
Allowed values: conversion cycleToWin wonTicket followUp noShow noNextActivity whatsappFirstReply withinIcp
unit
required

How to read value and difference

string
Allowed values: percent days money minutes
higherIsBetter
required

Direction of the metric

boolean
window
required

Current = this month so far; recent = the last three closed months (periods.recent); now = a snapshot of the open pipeline

string
Allowed values: current recent now
currency
required

Currency of a money metric; null when the wins mix currencies or for other units

string
nullable
rep
required

The rep

object
value
required

The number: % for rates, days for cycles, cents for money, minutes for whatsappFirstReply; null when there is nothing to measure

number
nullable
part
required

Numerator of a rate (e.g. won); null for averages

integer
nullable
base
required

How many deals, meetings or WhatsApp first replies the number is measured on

integer
declared
required

False below minimumBase: show the number with its base, never compared

boolean
team
required

The whole team, the same number the home page shows: the rep included, deals without owner too

object
value
required

The number: % for rates, days for cycles, cents for money, minutes for whatsappFirstReply; null when there is nothing to measure

number
nullable
part
required

Numerator of a rate (e.g. won); null for averages

integer
nullable
base
required

How many deals, meetings or WhatsApp first replies the number is measured on

integer
declared
required

False below minimumBase: show the number with its base, never compared

boolean
coverage
required

Coverage of the CRM field behind the number, for the rep; for no-show, filled/total are meetings with the outcome filled ÷ past meetings; for withinIcp, filled/total are open deals with a profile class and a value ÷ open deals

object
filled
required

Meetings with the outcome filled, or open deals with a profile class and a value

integer
total
required

Past meetings in the window, or the open deals of the rep

integer
share
required

Filled ÷ total in %

integer
nullable
verdict
required

Even = difference below sameAsTeamRatio of the team number; small_base = rep or team below minimumBase, not compared; no_data = nothing measured on one side

string
Allowed values: better worse even small_base no_data
difference
required

Rep − team in the unit of the metric (points for percent)

number
nullable
relative
required

(rep − team) ÷ team, as a ratio; null when the team is zero or missing

number
nullable
funnel
required

Same shape as funnel, but “team” carries the rep own previous month; hole means 5 points or more below it

Array<object>
object
phase
required

Canonical phase

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
rep
required
object
entered
required

Deals that entered the phase this month

integer
advanced
required

Of those, deals that went to a later phase or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ entered in %, null below minimumBase

integer
nullable
team
required
object
entered
required

Deals that entered the phase this month

integer
advanced
required

Of those, deals that went to a later phase or were won

integer
stopped
required

Of those, deals that did not advance and were lost

integer
rate
required

Advanced ÷ entered in %, null below minimumBase

integer
nullable
difference
required

Seller rate − team rate, in points; null when either rate is not declared

integer
nullable
hole
required

True when the rep is 5 points or more below the team in this phase

boolean
verdict
required

Rule-based sentence, pt-BR, e.g. “melhorou em 5 das 6 passagens contra agosto; a maior queda é Proposta → Negociação, de 74% para 68%”; null without any passage with base on both months

string
nullable
holes
required

What each hole against the previous month costs, same shape as the top-level holes

object
currency
required

Currency of ticket, valueInCents and extraValueInCents

string
items
required

One entry per hole of funnel (against the team, or the rep own previous month)

Array<object>
object
phase
required

Canonical phase of the passage below the reference

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
stopped
required

Deals that stopped at this passage in the month, the rep

integer
recovered
required

Of those, how many would have advanced at the reference rate (team, or the rep own previous month)

integer
nextHistoryRate
required

Team conversion to won from the following phase, last 12 closed months, in %; null below minimumBase

number
nullable
ticket
required

Null when neither the rep nor the funnel have 8 wins in the last 12 months

object
amountInCents
required

Average amount of a win, used to price the hole

integer
base
required

Wins the average is measured on

integer
source
required

Rep = the rep own 12 months of wins; funnel = the whole funnel 12 months, used when the rep has less than 8 wins

string
Allowed values: rep funnel
valueInCents
required

Recovered × nextHistoryRate × ticket: what closing this hole is worth, “se voltasse à referência” — never a goal projection. null without nextHistoryRate or ticket

integer
nullable
habit
required

Null when the passage has no habit mapped to it

object
label
required

The measured habit that most relates to this passage, from a fixed, versioned table — never a model

string
bestFix
required

Null without any hole

object
phase
required

Canonical phase of the worst hole, the only one simulated

string
label
required

Phase label

string
next
required

Label of the phase that follows, or Ganho

string
before
required

Criado → ganho today

object
rate
required

Won ÷ entered the funnel, in %; null below minimumBase

integer
nullable
wins
required

Deals won in the period

integer
base
required

Deals that entered the funnel in the period

integer
after
required

Criado → ganho if this one passage reached the reference; a single simulation, one passage at a time

object
rate
required

Won ÷ entered the funnel, in %; null below minimumBase

integer
nullable
wins
required

Deals won in the period

integer
base
required

Deals that entered the funnel in the period

integer
extraWins
required

Wins added by fixing only this passage

integer
extraValueInCents
required

Value of those extra wins, same formula as valueInCents

integer
nullable
losses
required

Why the rep lost deals in the last three closed months, as recorded in the CRM, with coverage

object
lost
required

Deals lost with close date in the period

integer
withReason
required

Of those, deals with the loss reason filled

integer
withoutReason
required

Of those, deals without a loss reason; they stay out of items

integer
fillRate
required

WithReason ÷ lost in %, null below minimumBase

integer
nullable
items
required

Loss reasons, most frequent first, at most eight; share is over withReason

Array<object>
object
label
required

Value as the team typed it in the CRM; spellings that differ only in case, accents or spaces count together

string
count
required

Lost deals with this value

integer
share
required

Count ÷ the filled base of the list in %, null below minimumBase

integer
nullable
othersCount
required

Lost deals whose reason is beyond the eight listed

integer
competitor
required

Competitor the deals were lost to; null when no CRM field is mapped as competitor or the period has no activity at all

object
filled
required

Lost deals with the competitor field filled

integer
fillRate
required

Filled ÷ lost in %, null below minimumBase

integer
nullable
items
required

Competitors, most frequent first, at most eight

Array<object>
object
label
required

Value as the team typed it in the CRM; spellings that differ only in case, accents or spaces count together

string
count
required

Lost deals with this value

integer
share
required

Count ÷ the filled base of the list in %, null below minimumBase

integer
nullable
othersCount
required

Lost deals whose competitor is beyond the eight listed

integer
withoutReasonByOwner
required

Owners among the selected ones with losses in the period, most losses without reason first

Array<object>
object
ownerId
required

CRM owner id

string format: uuid
name
required

Owner name from the CRM

string
nullable
lost
required

Deals this owner lost in the period

integer
withoutReason
required

Of those, deals without a loss reason

integer
share
required

WithoutReason ÷ lost in %, null below minimumBase

integer
nullable
stages
required

Where in the funnel the deals died, crossed with the loss reason of the CRM, one row per open stage in CRM order

object
lost
required

Lost deals of the scope in the period; same as losses.lost

integer
withStage
required

Of those, the ones with a registered loss stage

integer
withReason
required

Of the ones with a registered stage, the ones with the loss reason filled

integer
funnels
required

One entry per funnel in analysis, even with lost 0; most losses first, ties by the CRM pipeline order

Array<object>
object
pipelineId
required

Pipeline id

string format: uuid
pipelineName
required

Pipeline name as the CRM calls it

string
lost
required

Losses attributed to this funnel, sum of the count of its stages below

integer
stages
required

One row per open stage of this funnel, in CRM order, even with count 0; the unregistered-stage row comes last

Array<object>
object
stageId
required

CRM stage where the deal died; null is the “Etapa não registrada” row, always last

string format: uuid
nullable
name
required

Stage name from the CRM, or exactly “Etapa não registrada”

string
count
required

Lost deals whose loss stage is this one

integer
amounts
required

Amount lost per currency, largest first; empty when none of these losses has a value

Array<object>
object
currency
required

ISO currency of the deals summed here

string
amountInCents
required

Sum in cents

integer
withoutAmount
required

Of these losses, the ones without a value in the CRM

integer
share
required

Count ÷ lost of the funnel in %, null when count is below minimumBase

integer
nullable
withReason
required

Of these losses, the ones with the loss reason filled

integer
fillRate
required

WithReason ÷ count in %, null below minimumBase

integer
nullable
items
required

Loss reasons of this stage, most frequent first, at most eight; share is over withReason

Array<object>
object
label
required

Value as the team typed it in the CRM; spellings that differ only in case, accents or spaces count together

string
count
required

Lost deals with this value

integer
share
required

Count ÷ the filled base of the list in %, null below minimumBase

integer
nullable
othersCount
required

Losses of this stage whose reason is beyond the eight listed

integer
teamShare
required

Share of the team in the same stage, for the rep panel and any owner-filtered view; null when the view is already the whole team or the team is below minimumBase in the stage

integer
nullable
discipline
required

Task discipline of the rep in the current period: a count over DealTasks, with its base

object
total
required

Count over the DealTasks table, with its base: done + missed + cancelled + rescheduled + open; auto_closed is not in it

integer
done
required

Tasks marked as done

integer
missed
required

Tasks missed: the day turned and it was not done

integer
cancelled
required

Tasks cancelled by the rep

integer
rescheduled
required

Tasks moved to another day

integer
open
required

Tasks still open

integer
autoClosed
required

Tasks that closed by themselves because the signal was gone; not in total, not against the rep

integer
cancelReasons
required

Cancelled tasks tallied by the reason the rep chose

object
key
additional properties
integer
collection
required

The same buckets, only for “cobrar o cliente” tasks (buyer_commitment_due and buyer_deadline_passed)

object
total
required

Count over the DealTasks table, with its base: done + missed + cancelled + rescheduled + open; auto_closed is not in it

integer
done
required

Tasks marked as done

integer
missed
required

Tasks missed: the day turned and it was not done

integer
cancelled
required

Tasks cancelled by the rep

integer
rescheduled
required

Tasks moved to another day

integer
open
required

Tasks still open

integer
autoClosed
required

Tasks that closed by themselves because the signal was gone; not in total, not against the rep

integer
followUps
required

Follow-ups: the next step agreed with the client, done by the date

object
onTime
required

Commitment and collection tasks (commitment_due, buyer_commitment_due, buyer_deadline_passed) done or closed by themselves because the client acted, on their original day

integer
late
required

The same, but only after the rep moved the task to another day

integer
missed
required

Expired without being done

integer
cancelled
required

Cancelled by the rep; not in the base of the rate

integer
period
required

Period this count covers

object
fromDay
required

First day of the period counted, YYYY-MM-DD, company time zone

string
toDay
required

Last day of the period counted, YYYY-MM-DD, company time zone

string

Example

{
"rep": {
"attention": "no_goal"
},
"portfolio": {
"largest": [
{
"rules": [
"closeDateOverdue"
],
"temperature": {
"band": "cold"
},
"diagnosis": {
"code": "absent_decision_maker"
},
"evidence": {
"channel": "meeting"
}
}
],
"stalledLargest": [
{
"rule": "closeDateOverdue",
"rules": [
"closeDateOverdue"
],
"activity": {
"source": "crm",
"deadlineBasis": "stage",
"nextSource": "crm"
},
"diagnosis": {
"code": "absent_decision_maker"
},
"evidence": {
"channel": "meeting"
}
}
]
},
"comparisons": [
{
"metric": "conversion",
"unit": "percent",
"window": "current",
"verdict": "better"
}
],
"stageFunnels": [
{
"steps": [
{
"reference": {
"source": "history"
}
}
]
}
],
"holes": {
"items": [
{
"ticket": {
"source": "rep"
}
}
]
},
"previous": {
"comparisons": [
{
"metric": "conversion",
"unit": "percent",
"window": "current",
"verdict": "better"
}
],
"holes": {
"items": [
{
"ticket": {
"source": "rep"
}
}
]
}
}
}

Token ausente, inválido, expirado ou revogado

Media typeapplication/json
object
type
required

Stable machine-readable error code (e.g. identity.email_already_in_use)

string
title
required

Error class name

string
status
required

HTTP status code

integer
detail
required

Human-readable message, safe to display to end users

string
requestId
required

Correlation id — send it to support to locate the full trail

string
nullable
meta

Structured details safe for the frontend (field errors, ids)

object
key
additional properties

Example

{
"type": "public_api.invalid_credential",
"title": "InvalidCredentialError",
"status": 401,
"detail": "Token de acesso inválido, expirado ou revogado. Crie um novo token de acesso no Nexo.",
"requestId": "019fcae7-3e54-755a-8458-bdb605b324bb"
}

Papel, escopo do token ou plano não permitem a operação

Media typeapplication/json
object
type
required

Stable machine-readable error code (e.g. identity.email_already_in_use)

string
title
required

Error class name

string
status
required

HTTP status code

integer
detail
required

Human-readable message, safe to display to end users

string
requestId
required

Correlation id — send it to support to locate the full trail

string
nullable
meta

Structured details safe for the frontend (field errors, ids)

object
key
additional properties

Example

{
"type": "public_api.insufficient_scope",
"title": "InsufficientScopeError",
"status": 403,
"detail": "Este token não tem o escopo conversations:read, exigido por esta operação. Gere um token com esse escopo.",
"requestId": "019fcae7-3e54-755a-8458-bdb605b324bb",
"meta": {
"operation": "conversations.reading",
"scope": "conversations:read"
}
}

Dono sem dados, não é pessoa, ou não é o vendedor que pede

Media typeapplication/json
object
type
required

Stable machine-readable error code (e.g. identity.email_already_in_use)

string
title
required

Error class name

string
status
required

HTTP status code

integer
detail
required

Human-readable message, safe to display to end users

string
requestId
required

Correlation id — send it to support to locate the full trail

string
nullable
meta

Structured details safe for the frontend (field errors, ids)

object
key
additional properties

Example

{
"type": "indicators.rep_not_found",
"title": "RepNotFoundError",
"status": 404,
"detail": "Vendedor sem negócios nos funis em análise neste mês, ou marcado como \"não é pessoa\".",
"requestId": "0192a8f4-4d4c-7c5e-9e0f-2b7a1d3c9e41",
"meta": {
"ownerId": "0192a8f4-5b1e-7d2a-8c3f-6e9d2a1b7c04"
}
}

Limite de chamadas da empresa ou do token atingido

Media typeapplication/json
object
type
required

Stable machine-readable error code (e.g. identity.email_already_in_use)

string
title
required

Error class name

string
status
required

HTTP status code

integer
detail
required

Human-readable message, safe to display to end users

string
requestId
required

Correlation id — send it to support to locate the full trail

string
nullable
meta

Structured details safe for the frontend (field errors, ids)

object
key
additional properties

Example

{
"type": "public_api.rate_limited",
"title": "PublicRateLimitedError",
"status": 429,
"detail": "Muitas chamadas em pouco tempo. Tente de novo em 12 segundos.",
"requestId": "019fcae7-3e54-755a-8458-bdb605b324bb",
"meta": {
"class": "content",
"limitedBy": "company",
"limit": 120,
"windowSeconds": 60,
"retryAfterSeconds": 12
}
}