Pular para o conteúdo

Pedir uma exportação

POST
/v1/exports
curl --request POST \
--url https://developers.nexo.winningsales.com.br/v1/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "kind": "conversations", "filters": {} }'

Monta, em segundo plano, os arquivos do que você enxerga: as conversas (uma linha NDJSON por conversa, com os trechos e a leitura do Nexo), um negócio, o contexto da empresa, ou tudo da empresa (só administradores; os outros administradores recebem um aviso). Responde na hora com a exportação na fila; acompanhe por GET /v1/exports/{id}. Exige o escopo exports:create, e conversations:read para exportar conversas. Cada pedido fica na atividade da empresa. Os arquivos ficam num bucket próprio do Nexo por 7 dias; o download é sempre por link assinado do S3, válido por 15 minutos e renovado a cada consulta. Nenhum arquivo passa pela API.

Media typeapplication/json
object
kind
required

O que exportar: conversations (as conversas que você enxerga, com trechos e leitura), deal (um negócio, com contatos e conversas), context (o contexto da empresa em JSON e Markdown) ou everything (tudo da empresa; só administradores, e os outros administradores são avisados)

string
Allowed values: conversations deal context everything
filters

Filtros das conversas exportadas nos tipos conversations e deal; context e everything ignoram os filtros

object
channels

Canais das conversas (meeting, note, call, email, whatsapp, crm_whatsapp). Ausente: todos

Array<string>
>= 1 items
Allowed values: meeting note call email whatsapp crm_whatsapp
from

Só conversas que começaram a partir deste instante (ISO-8601)

string format: date-time
to

Só conversas que começaram antes deste instante (ISO-8601)

string format: date-time
dealId

Negócio: obrigatório no tipo deal; nas conversas, filtra pelas do negócio

string format: uuid

Exportação na fila

Media typeapplication/json
object
id
required

Id da exportação

string format: uuid
kind
required

Tipo da exportação

string
Allowed values: conversations deal context everything
status
required

Queued (na fila), building (montando), ready (pronta), failed (falhou) ou expired (passou dos 7 dias e foi apagada)

string
Allowed values: queued building ready failed expired
filters
required

Os filtros aplicados: os pedidos em conversations e deal; todos nulos em context e everything

object
channels
required

Canais aplicados; nulo: todos

Array<string>
nullable
from
required

Início do período

string
nullable
to
required

Fim do período

string
nullable
dealId
required

Negócio

string
nullable
requestedAt
required

Quando foi pedida

string format: date-time
startedAt
required

Quando começou a ser montada

string format: date-time
nullable
readyAt
required

Quando ficou pronta

string format: date-time
nullable
expiresAt
required

Quando os arquivos somem (7 dias depois do pedido)

string format: date-time
failureReason
required

Por que falhou: owner_unavailable, forbidden, deal_unavailable, too_large ou unexpected

string
nullable
sizeInBytes
required

Soma dos arquivos

integer
nullable
counts
required

Quantos itens saíram, por tipo (conversations, deals)

object
key
additional properties
integer
files
required

Os arquivos; o manifest.json lista os outros com tamanho, sha256 e linhas

Array<object>
object
name
required

Nome do arquivo: manifest.json, company_context.json, context_pack.md, deal.json ou -0001.ndjson.gz

string
contentType
required

Tipo do arquivo

string
sizeInBytes
required

Tamanho em bytes

integer
sha256
required

SHA-256 do arquivo, em hexadecimal, para conferir o download

string
rows
required

Linhas do NDJSON (uma por conversa ou por negócio); nulo nos outros arquivos

integer
nullable
url
required

Link assinado do S3, válido por 15 minutos e renovado a cada consulta; nulo na listagem ou fora de ready

string format: uri
nullable
urlExpiresAt
required

Quando o link expira

string format: date-time
nullable

Example

{
"kind": "conversations",
"status": "queued"
}

Tipo ou filtros inválidos, ou tipo deal sem dealId

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 generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"requestId": "example",
"meta": {
"additionalProperty": "example"
}
}

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"
}

Tudo da empresa sem ser administrador

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"
}
}

Negócio inexistente ou fora da sua carteira

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 generated

{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"requestId": "example",
"meta": {
"additionalProperty": "example"
}
}

Duas exportações da empresa já estão em andamento

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
}
}