Pular para o conteúdo principal

Oportunidades

Negócios do funil, com contatos, produtos e anotações.

31 rotas. Todas exigem a chave de API no header Authorization, salvo quando marcadas como públicas. Abrir este módulo no Swagger.

Listar oportunidades de uma etapa, paginado​

POST /companie/opportunity/byStepByPagination/{filter}/{date_start}/{date_end}

Devolve as oportunidades da etapa funnelStepId (veja GET /companie/funnel).

  • skip/take: paginação. A resposta é um array simples, sem total.
  • Envie sempre salesChannelId, companieUserId e responses_win_lose_id, nem que seja []: sem eles a rota responde 500.
  • status: Todos, Aberta, Ganha ou Perdida. order: title_*, created_at_* ou close_date_* (data da última mudança de status).
  • originAutomationType filtra pela origem do contato.
  • Em funil restrito, só voltam as oportunidades do dono da chave, mesmo com companieUserId.
  • Atenção: hoje o período da URL (filter, date_start, date_end) não é aplicado nesta rota. Use filterAdvanced se precisar filtrar por data.

Parâmetros

NomeEmTipoObrigatórioDescrição
filterURLall · today · yesterday · this_week · last_week · this_month · last_month · last_30_days · …simPeríodo. Com other_period, informe date_start e date_end (YYYY-MM-DD) nos segmentos seguintes da URL.
date_startURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.
date_endURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.

Corpo (application/json)

CampoTipoObrigatórioDescrição
ordertitle_asc · title_desc · created_at_asc · created_at_desc · close_date_asc · close_date_descsim
statusTodos · Aberta · Ganha · Perdidasim
responses_win_lose_idnúmero[]
companieUserIdnúmero[]
opportunityIdnúmero ou null
salesChannelIdnúmero[]
funnelStepIdnúmerosim
skipnúmerosim
takenúmerosim
citystring ou null
statestring ou null
originAutomationTypeimport · api · instagram · checkout · manual · ``

Respostas

StatusDescrição
200Oportunidades da etapa.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. error_funnel_access_denied: a etapa não existe na empresa ou o dono da chave não tem acesso ao funil. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar o funil com as oportunidades filtradas por etapa​

POST /companie/opportunity/filterAdvanced/{funnelId}/{filter}/{date_start}/{date_end}

Devolve o funil com cada etapa trazendo as oportunidades filtradas.

  • O período (filter) vale para a data de criação da oportunidade.
  • skip/take paginam dentro de cada etapa. Em cada etapa, totalPages é a quantidade de oportunidades do filtro e total a soma dos valores.
  • status: Todos, Aberta, Ganha ou Perdida. order: title_*, created_at_* ou close_date_*.
  • Filtros por arrays de ids: companieUserId, salesChannelId, activitieId, tagId, responses_win_lose_id. Também: opportunityId, contactId, city, state (UF), originAutomationType.
  • Aceitos fora do schema: text (busca no título e no nome/WhatsApp/telefone do contato; ignora status), segmentId (array) e close_date_filter + close_date_start/close_date_end (período da mudança de status).
  • productId e annotationFilter são aceitos mas ignorados.
  • Em funil restrito, só voltam as oportunidades do dono da chave.

Parâmetros

NomeEmTipoObrigatórioDescrição
funnelIdURLnúmerosim
filterURLall · today · yesterday · this_week · last_week · this_month · last_month · last_30_days · …simPeríodo. Com other_period, informe date_start e date_end (YYYY-MM-DD) nos segmentos seguintes da URL.
date_startURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.
date_endURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.

Corpo (application/json)

CampoTipoObrigatórioDescrição
ordertitle_asc · title_desc · created_at_asc · created_at_desc · close_date_asc · close_date_descsim
statusTodos · Aberta · Ganha · Perdidasim
annotationFilterstring
responses_win_lose_idnúmero[]
productIdnúmero[]
activitieIdnúmero[]
companieUserIdnúmero[]
opportunityIdnúmero ou null
contactIdnúmero ou null
salesChannelIdnúmero[]
skipnúmerosim
takenúmerosim
close_date_startstring
close_date_endstring
citystring ou null
statestring ou null
tagIdnúmero[]
originAutomationTypeimport · api · instagram · checkout · manual · ``

Respostas

StatusDescrição
200Funil (array com um item) e as etapas paginadas.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. error_funnel_access_denied: sem acesso ao funil. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar o funil com todas as oportunidades por etapa​

GET /companie/opportunity/filterFunnelByStep/{funnelId}/{filter}/{date_start}/{date_end}

Sem paginação: traz todas as oportunidades de cada etapa criadas no período. Em funis grandes, prefira filterAdvanced ou byStepByPagination. Em funil restrito, só as oportunidades do dono da chave.

Parâmetros

NomeEmTipoObrigatórioDescrição
funnelIdURLnúmerosim
filterURLall · today · yesterday · this_week · last_week · this_month · last_month · last_30_days · …simPeríodo. Com other_period, informe date_start e date_end (YYYY-MM-DD) nos segmentos seguintes da URL.
date_startURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.
date_endURLdataOpcional na URL: pode ser omitido junto com os segmentos seguintes.

Respostas

StatusDescrição
200Funil (array com um item) e as etapas com as oportunidades.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. error_funnel_access_denied: sem acesso ao funil. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar todas as oportunidades da empresa​

GET /companie/opportunity

Sem paginação e com muitos relacionamentos (etapa, contatos, atividades, anotações, histórico). Pode ser pesada; para listas use filterAdvanced. Não respeita a restrição de visibilidade dos funis.

Respostas

StatusDescrição
200Oportunidades, da mais nova para a mais antiga.
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Criar oportunidade​

POST /companie/opportunity

  • companie_user_id: usuário responsável, da empresa da chave; normalmente o dono da chave.
  • funnel_step_id: etapa de entrada (veja GET /companie/funnel).
  • person_id: contato principal (veja Contatos). person_owner_id troca o contato principal por outro.
  • sales_channel_id e segment_id inexistentes viram null sem erro.
  • Se o funil não aceita oportunidade duplicada, falha quando o contato já tem oportunidade aberta nele.

Efeitos colaterais: cria as atividades automáticas da etapa, dispara a mensagem automática de WhatsApp de nova oportunidade (se configurada) e notifica o responsável.

Corpo (application/json)

CampoTipoObrigatórioDescrição
companie_user_idnúmerosim
funnel_step_idnúmerosim
sales_channel_idnúmero ou null
segment_idnúmero ou null
person_idnúmerosim
titlestringsim
date_expectationdata ou null
obsstring
statestring
citystring
document_originstring ou null
name_originstring ou null
surgeries_countnúmero ou null
person_owner_idnúmero

Respostas

StatusDescrição
200Oportunidade criada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_companie_user_id_not_exist, error_funnel_step_id_not_exist, error_person_id_not_exist ou error_exist_opportunity_person_open (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Detalhar oportunidade​

GET /companie/opportunity/id/{id}

Traz etapa e funil, responsável, contatos (com tags), produtos, anotações, anexos (path pré-assinado), atividades, histórico de etapas e status, tags e propostas com contratos. Se o id não existir na empresa, responde 200 com null.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Respostas

StatusDescrição
200Oportunidade ou null.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Editar oportunidade​

PUT /companie/opportunity/{id}

Edição completa. Reexigidos em toda chamada: companie_user_id, funnel_step_id e title.

  • sales_channel_id e segment_id omitidos (ou inexistentes) são apagados (null). Reenvie os valores atuais para mantê-los.
  • Os demais campos omitidos ficam como estão. person_id é ignorado; use person_owner_id para trocar o contato principal.
  • total é recalculado a partir dos produtos da oportunidade.
  • Trocar funnel_step_id aqui registra o histórico, mas não roda as automações da etapa. Para isso use PUT /companie/opportunity/workflow/:id.
  • Trocar companie_user_id notifica o novo responsável.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
companie_user_idnúmerosim
funnel_step_idnúmerosim
sales_channel_idnúmero ou null
segment_idnúmero ou null
titlestringsim
date_expectationdata ou null
obsstring
statestring
citystring
name_originstring ou null
document_originstring ou null
surgeries_countnúmero ou null
person_owner_idnúmero

Respostas

StatusDescrição
200Campos principais atualizados.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist, error_companie_user_id_not_exist ou error_funnel_step_id_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Excluir oportunidade​

DELETE /companie/opportunity/{id}

Exclusão definitiva e em cascata: some com contatos vinculados, produtos, anotações, anexos, tags, histórico e também com as propostas e contratos ligados, sem checar se há contrato faturado. As atividades ficam, sem a oportunidade.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Mover oportunidade de etapa​

PUT /companie/opportunity/workflow/{id}

Move para funnel_step_id (pode ser de outro funil da empresa) e registra o histórico.

Efeitos colaterais:

  • Se a etapa mudou, envia as mensagens automáticas da etapa ao contato principal (WhatsApp, se houver instância conectada com envio automático, e e-mail).
  • Cria as atividades automáticas da etapa, mesmo se a etapa não mudou.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
funnel_step_idnúmerosim

Respostas

StatusDescrição
200Oportunidade atualizada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist ou error_funnel_step_id_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Marcar como ganha, perdida ou reabrir​

PUT /companie/opportunity/status/{id}

  • status: Aberta, Ganha ou Perdida. Envie sempre.
  • responses_win_lose_id: motivo de ganho/perda (cadastro em Cadastros).
  • reuse_contract_id (só com Ganha): reaproveita um contrato Aberto ou Cancelado de uma proposta desta oportunidade. O contrato recebe os produtos atuais da oportunidade e os dados do contato principal; se estava cancelado, volta a Aberto; a proposta fica Fechada.
  • Reabrir (Aberta) falha se a oportunidade tem contrato já faturado.

Cada chamada grava uma linha no histórico de status.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
statusAberta · Perdida · Ganha
responses_win_lose_idnúmero ou null
reuse_contract_idobjeto

Respostas

StatusDescrição
200Oportunidade atualizada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist, error_opportunity_contract_billed (contrato faturado, ou reuse_contract_id inválido/fora de Aberto/Cancelado) ou error_opportunity_owner_required (sem contato principal para reaproveitar o contrato) (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Transferir oportunidade para outro responsável​

PUT /companie/opportunity/{id}/transfer

Troca só o responsável e notifica o novo dono. Não mexe nas atividades nem grava histórico de transferência; para isso use POST /companie/transferOpportunity. Se o usuário já é o responsável, devolve 200 sem alterar.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLnúmerosim

Corpo (application/json)

CampoTipoObrigatórioDescrição
companie_user_idnúmerosimNovo responsável, usuário da empresa da chave.

Respostas

StatusDescrição
200Responsável atual.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist ou error_companie_user_id_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Transferir oportunidades em lote​

POST /companie/transferOpportunity

Transfere as oportunidades de opportunitys (ids) para companie_user_id.

  • Para mudar também de funil, envie funnel_id e funnel_step_id (etapa de destino).
  • As atividades Em andamento passam para o novo responsável, o histórico de transferência é gravado e o novo dono é notificado.
  • Se algum id não for da empresa, nada é alterado.
  • Mudar de etapa aqui não roda as automações da etapa.

Corpo (application/json)

CampoTipoObrigatórioDescrição
companie_user_idnúmerosim
opportunitysnúmero[]sim
funnel_idnúmero ou null
funnel_step_idnúmero ou null

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_companie_user_not_exist, error_funnel_not_exist, error_funnel_step_not_exist ou error_opportunity_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Gravar dados de campanha (UTM)​

PUT /companie/opportunity/campaign/{id}

Atualiza só os campos campaign_* enviados; os omitidos ficam como estão. campaign_state é a UF (2 letras).

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
campaign_projectstring
campaign_citystring
campaign_statestring
campaign_utm_sourcestring
campaign_utm_mediumstring
campaign_utm_campaignstring
campaign_utm_termstring
campaign_utm_contentstring
campaign_versionstring
campaign_messagestring
campaign_investmentstring

Respostas

StatusDescrição
200Oportunidade atualizada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar as tags da empresa​

GET /companie/opportunity/tags

Use os ids em PUT /companie/opportunity/:id/tags.

Respostas

StatusDescrição
200Tags em ordem alfabética.
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Definir as tags da oportunidade​

PUT /companie/opportunity/{id}/tags

Substitui todas as tags da oportunidade pelas de tag_ids. Envie [] para remover todas.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLnúmerosim

Corpo (application/json)

CampoTipoObrigatórioDescrição
tag_idsnúmero[]sim

Respostas

StatusDescrição
200Tags atuais da oportunidade.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_not_exist (texto) ou, para tag inexistente, { "error": "error_tag_id_not_exist", "invalid_tag_ids": [...] }.
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Buscar oportunidades por texto​

GET /companie/opportunity/autocomplete/find

Chame como GET /companie/opportunity/autocomplete/find?q=texto&skip=0&take=10. O :id do caminho é um resto do router: não envie nada além de /find.

Busca q no título, no nome do responsável, na etapa, no canal de venda e no segmento. q, skip e take são obrigatórios na prática.

Parâmetros

NomeEmTipoObrigatórioDescrição
qquerystringsimTexto buscado.
skipquerynúmerosim
takequerynúmerosim

Respostas

StatusDescrição
200Página de resultados.
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar os contatos da oportunidade​

GET /companie/opportunity/person/{opportunityId}

Parâmetros

NomeEmTipoObrigatórioDescrição
opportunityIdURLstringsim

Respostas

StatusDescrição
200Vínculos com o contato.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Vincular contato à oportunidade​

POST /companie/opportunity/person

Vincula como contato secundário. Para torná-lo principal, use PUT /companie/opportunity/person/:personId/:opportunityId.

Corpo (application/json)

CampoTipoObrigatórioDescrição
opportunity_idnúmerosim
person_idnúmerosim

Respostas

StatusDescrição
200Vínculo criado.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_person_id_not_exist, error_opportunity_id_not_exist ou error_opportunity_person_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Desvincular contato da oportunidade​

DELETE /companie/opportunity/person/{personId}/{opportunityId}

Não impede remover o contato principal; nesse caso defina outro principal em seguida.

Parâmetros

NomeEmTipoObrigatórioDescrição
personIdURLstringsim
opportunityIdURLstringsim

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_person_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Definir o contato principal da oportunidade​

PUT /companie/opportunity/person/{personId}/{opportunityId}

O contato precisa já estar vinculado. Os demais deixam de ser principais.

Parâmetros

NomeEmTipoObrigatórioDescrição
personIdURLstringsim
opportunityIdURLstringsim

Respostas

StatusDescrição
200Linhas alteradas.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
404error_opportunity_person_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar as anotações da oportunidade​

GET /companie/opportunity/annotation/{opportunityId}

Ordenadas pelo texto da anotação (ordem alfabética), não pela data.

Parâmetros

NomeEmTipoObrigatórioDescrição
opportunityIdURLstringsim

Respostas

StatusDescrição
200Anotações.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Criar anotação​

POST /companie/opportunity/annotation

companie_user_id: autor da anotação; normalmente o dono da chave.

Corpo (application/json)

CampoTipoObrigatórioDescrição
opportunity_idnúmerosim
companie_user_idnúmerosim
descriptionstringsim

Respostas

StatusDescrição
200Anotação criada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_companie_user_id_not_exist ou error_opportunity_id_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Editar anotação​

PUT /companie/opportunity/annotation/{id}

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
descriptionstringsim

Respostas

StatusDescrição
200Anotação atualizada.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_annotation_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Excluir anotação​

DELETE /companie/opportunity/annotation/{id}

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_annotation_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar os produtos da oportunidade​

GET /companie/opportunity/product/{opportunityId}

Parâmetros

NomeEmTipoObrigatórioDescrição
opportunityIdURLstringsim

Respostas

StatusDescrição
200Itens, do mais novo para o mais antigo.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Adicionar produto à oportunidade​

POST /companie/opportunity/product

  • companie_user_id: quem adicionou; normalmente o dono da chave.
  • product_id: produto do catálogo (Cadastros).
  • total não é calculado pelo servidor: envie value × qty (com descontos, se houver).
  • O total da oportunidade é recalculado com a soma dos itens.

Corpo (application/json)

CampoTipoObrigatórioDescrição
opportunity_idnúmerosim
companie_user_idnúmerosim
product_idnúmerosim
valuenúmerosim
qtynúmerosim
totalnúmerosim

Respostas

StatusDescrição
200Item criado.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_companie_user_id_not_exist, error_opportunity_id_not_exist ou error_product_id_not_exist (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Editar produto da oportunidade​

PUT /companie/opportunity/product/{id}

id é o do item (opportunity_products.id), não o do produto. Reexige value, qty e total; o total da oportunidade é recalculado.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Corpo (application/json)

CampoTipoObrigatórioDescrição
valuenúmerosim
qtynúmerosim
totalnúmerosim

Respostas

StatusDescrição
200Item atualizado.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_products: item inexistente. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Remover produto da oportunidade​

DELETE /companie/opportunity/product/{id}

id é o do item. O total da oportunidade é recalculado.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_products: item inexistente. (ErrorCode)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Listar os anexos da oportunidade​

GET /companie/opportunity/attachment/{opportunity_id}

path vem como URL pré-assinada e temporária.

Parâmetros

NomeEmTipoObrigatórioDescrição
opportunity_idURLstringsim

Respostas

StatusDescrição
200Anexos.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_id_not_exist (GenericError)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Enviar anexo​

POST /companie/opportunity/attachment

  • file.base64: conteúdo em Base64 puro, sem o prefixo data:...;base64,.
  • file.originalFileName: nome com extensão. Aceitas: doc, docx, pdf, txt, xls, xlsx, csv, jpg, jpeg, png, bmp, tiff, webp, mp4, avi, mkv, mov, webm, wav, mp3, aac, m4a, ogg, oga, opus.
  • O autor é o dono da chave. O path da resposta já vem pré-assinado.

Corpo (application/json)

CampoTipoObrigatórioDescrição
opportunity_idnúmerosim
titlestringsim
fileobject
file.originalFileNamestringsim
file.base64stringsim

Respostas

StatusDescrição
200Anexo criado.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_opportunity_id_not_exist (GenericError)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger

Excluir anexo​

DELETE /companie/opportunity/attachment/{id}

Apaga o arquivo do armazenamento e o registro.

Parâmetros

NomeEmTipoObrigatórioDescrição
idURLstringsim

Respostas

StatusDescrição
200Sempre true.
400Parâmetros inválidos. (ValidationError)
401Chave ausente, inválida, revogada ou vencida. (ErrorCode)
403Acesso via API desligado, empresa inativa ou rota não permitida. (ErrorCode)
409error_id_not_exist (GenericError)
429Limite de requisições excedido. (ErrorCode)
Testar no Swagger