Pular para o conteúdo

Inicia uma conversa no MSP Talks a partir do ticket

POST
/v1/tickets/{ticketId}/chat-conversations
Code sample: Shell / cURL
curl --request POST \
--url https://public-api.mspdesk.com.br/v1/tickets/1/chat-conversations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "agentId": 42, "channelId": "c1", "departmentId": "d1", "parameters": { "CHAMADO": "18342", "NOME": "Beatriz" }, "primary": true, "templateId": "t1" }'

Escopo exigido: tickets:write. Manda o modelo aprovado pelo canal para o contato do ticket — o telefone sai do contato, no servidor, e não do corpo: um número livre transformaria permissão de ticket em permissão de mandar mensagem para qualquer um.

Isto custa dinheiro: a Meta cobra por conversa iniciada. Mande Idempotency-Key — uma repetição por timeout devolve a resposta original, inclusive o 202, em vez de iniciar uma segunda conversa.

Duas respostas possíveis, e as duas são sucesso:

  • 201 com o vínculo e o cabeçalho Location, quando a conversa já existe do outro lado;
  • 202 sem corpo, quando não há vínculo a devolver: a conversa ainda não nasceu do outro lado, o vínculo falhou depois do envio, ou a chamada ao MSP Talks ficou sem resposta depois de a conexão abrir (timeout). O 202 significa “pode ter saído”, e é assim que ele deve ser lido: preferimos aceitar uma mensagem que talvez não tenha saído a cobrar o cliente duas vezes.

Como conferir depois de um 202, sempre: liste as conversas do ticket (GET /v1/tickets/{ticketId}/chat-sessions). Se a conversa aparecer, a mensagem saiu — não reenvie. Se nada aparecer ali depois de alguns minutos (a conversa também entra sozinha quando o contato responder), então o envio provavelmente não aconteceu: para tentar de novo, mande a requisição com uma Idempotency-Key NOVA. Repetir com a mesma chave devolve o 202 guardado e não fala com o fornecedor.

Os erros desta rota significam que nenhuma mensagem saiu: 422 é recusa nossa, antes de qualquer envio, e 503 é recusa explícita do MSP Talks ou conexão que nem chegou a abrir (recusada, endereço que não resolve). Os dois podem ser repetidos com a mesma chave.

agentId é obrigatório: é o e-mail dele que o MSP Talks recebe como atendente da conversa. O ticket precisa ter contato com telefone, e a integração precisa estar configurada e ativa na empresa.

ticketId
required
integer format: int64

ID do ticket

Exemplo
1
Idempotency-Key
string
<= 255 characters

Garante que repetir a mesma requisição não duplique o efeito. 1 a 255 caracteres ASCII visíveis. Repetir a mesma chave devolve a mesma resposta (cabeçalho Idempotent-Replayed: true); a mesma chave com um corpo diferente é 422 idempotency_key_reused. A resposta repetida é a original: o corpo mantém o requestId e o idioma da primeira requisição; o cabeçalho X-Request-Id é o da requisição nova. A repetição também consome o limite de uso.

Media typeapplication/json

Conversa a iniciar no MSP Talks a partir do ticket.

object
agentId
required

Agente que fica registrado como quem abriu a conversa. Precisa existir, estar ativo e ser da empresa da chave — é o e-mail dele que o MSP Talks recebe como atendente.

integer format: int64
channelId
required

Canal por onde falar, entre os da conta do MSP Talks da empresa.

string
departmentId

Equipe a quem atribuir a conversa. Opcional.

string
parameters

Valor final de cada parâmetro do modelo.

object
key
additional properties

Valor final de cada parâmetro do modelo.

string
primary

Se a conversa aberta vira a principal do ticket. Ausente decide sozinho.

boolean
templateId
required

Modelo aprovado no canal. É ele que define o texto que o cliente recebe.

string
0 <= 36 characters
Exemplo
{
"agentId": 42,
"channelId": "c1",
"departmentId": "d1",
"parameters": {
"CHAMADO": "18342",
"NOME": "Beatriz"
},
"primary": true,
"templateId": "t1"
}

A conversa foi aberta e vinculada

Media typeapplication/json

Conversa do MSP Talks vinculada a um ticket.

object
alsoLinkedToTicketId

Outro ticket da mesma empresa que já usa esta conversa. Só vem preenchido na resposta de POST /chat-sessions, e é aviso, não erro: a mesma conversa pode estar em mais de um ticket. Nas demais respostas — inclusive a de iniciar conversa, que também cria um vínculo — vem sempre nulo, porque a conversa é nova e não havia o que comparar.

integer format: int64
nullable
channelLabel

Canal por onde a conversa acontece, como o catálogo do MSP Talks o nomeia. Decorativo: nulo não impede nada.

string
nullable
contactName

Quem está do outro lado da conversa.

string
nullable
createdAt

Instante em que a conversa foi vinculada ao ticket.

string format: date-time
nullable
id

ID do vínculo entre a conversa e o ticket. É o id da rota.

integer format: int64
lastNoteAt

Instante da última anotação enviada à conversa. Nulo quando nenhuma foi tentada.

string format: date-time
nullable
lastNoteStatus

Resultado da última anotação enviada à conversa: NONE, SENT ou FAILED.

string
nullable
linkOrigin

De onde veio o vínculo: MANUAL (alguém apontou a conversa), OUTBOUND (o Desk abriu a conversa), WEBHOOK (a conversa originou o ticket) ou EMBED (o ticket foi aberto de dentro da conversa).

string
nullable
linkedByAgentId

Agente que vinculou a conversa. Nulo no vínculo automático, que não tem pessoa por trás.

integer format: int64
nullable
primarySession

Se esta é a conversa principal do ticket — a que o ticket referencia. No máximo uma por ticket.

boolean
nullable
sessionId

ID da conversa no MSP Talks.

string
nullable
sessionNumber

Protocolo da conversa no MSP Talks.

string
nullable
sessionUrl

Endereço da conversa no MSP Talks. Nulo quando não foi possível derivar o domínio da instalação do cliente.

string
nullable
updatedAt

Igual a lastNoteAt quando há anotação, e a createdAt quando não há: a anotação é a única alteração que o vínculo sofre.

string format: date-time
nullable
Exemplo
{
"alsoLinkedToTicketId": null,
"channelLabel": "Suporte WhatsApp",
"contactName": "Beatriz Lima",
"createdAt": "2026-01-10T12:50:00Z",
"id": 77,
"lastNoteAt": "2026-01-10T14:10:00Z",
"lastNoteStatus": "SENT",
"linkOrigin": "OUTBOUND",
"linkedByAgentId": 42,
"primarySession": true,
"sessionId": "3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34",
"sessionNumber": "98765",
"sessionUrl": "https://atendimento.exemplo.com.br/sessions/3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34",
"updatedAt": "2026-01-10T14:10:00Z"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

A mensagem pode ter saído e não há vínculo a devolver. Confirme listando as conversas do ticket em GET /v1/tickets/{ticketId}/chat-sessions: se a conversa aparecer, não reenvie; se nada aparecer ali, tente de novo com uma Idempotency-Key NOVA — repetir com a mesma devolve este mesmo 202 sem falar com o fornecedor

Media typeapplication/json

Conversa do MSP Talks vinculada a um ticket.

object
alsoLinkedToTicketId

Outro ticket da mesma empresa que já usa esta conversa. Só vem preenchido na resposta de POST /chat-sessions, e é aviso, não erro: a mesma conversa pode estar em mais de um ticket. Nas demais respostas — inclusive a de iniciar conversa, que também cria um vínculo — vem sempre nulo, porque a conversa é nova e não havia o que comparar.

integer format: int64
nullable
channelLabel

Canal por onde a conversa acontece, como o catálogo do MSP Talks o nomeia. Decorativo: nulo não impede nada.

string
nullable
contactName

Quem está do outro lado da conversa.

string
nullable
createdAt

Instante em que a conversa foi vinculada ao ticket.

string format: date-time
nullable
id

ID do vínculo entre a conversa e o ticket. É o id da rota.

integer format: int64
lastNoteAt

Instante da última anotação enviada à conversa. Nulo quando nenhuma foi tentada.

string format: date-time
nullable
lastNoteStatus

Resultado da última anotação enviada à conversa: NONE, SENT ou FAILED.

string
nullable
linkOrigin

De onde veio o vínculo: MANUAL (alguém apontou a conversa), OUTBOUND (o Desk abriu a conversa), WEBHOOK (a conversa originou o ticket) ou EMBED (o ticket foi aberto de dentro da conversa).

string
nullable
linkedByAgentId

Agente que vinculou a conversa. Nulo no vínculo automático, que não tem pessoa por trás.

integer format: int64
nullable
primarySession

Se esta é a conversa principal do ticket — a que o ticket referencia. No máximo uma por ticket.

boolean
nullable
sessionId

ID da conversa no MSP Talks.

string
nullable
sessionNumber

Protocolo da conversa no MSP Talks.

string
nullable
sessionUrl

Endereço da conversa no MSP Talks. Nulo quando não foi possível derivar o domínio da instalação do cliente.

string
nullable
updatedAt

Igual a lastNoteAt quando há anotação, e a createdAt quando não há: a anotação é a única alteração que o vínculo sofre.

string format: date-time
nullable
Exemplo
{
"alsoLinkedToTicketId": null,
"channelLabel": "Suporte WhatsApp",
"contactName": "Beatriz Lima",
"createdAt": "2026-01-10T12:50:00Z",
"id": 77,
"lastNoteAt": "2026-01-10T14:10:00Z",
"lastNoteStatus": "SENT",
"linkOrigin": "OUTBOUND",
"linkedByAgentId": 42,
"primarySession": true,
"sessionId": "3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34",
"sessionNumber": "98765",
"sessionUrl": "https://atendimento.exemplo.com.br/sessions/3b2f6c1e-9a4d-4f8b-8c2e-1d5a7e9b0c34",
"updatedAt": "2026-01-10T14:10:00Z"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Requisição malformada ou parâmetros de consulta inválidos

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Chave de API ausente, inválida, revogada ou expirada

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}

Acesso negado: empresa inativa (account_inactive), API pública desabilitada para a empresa (public_api_disabled), escopo liberado só com a API pública (scope_requires_public_api) ou escopo insuficiente (insufficient_scope)

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

not_found: o ticket ou o agente não existe nesta empresa

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Conflito — unicidade, recurso em uso, ou Idempotency-Key em execução

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Corpo da requisição acima de 1 MB

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Content-Type não suportado

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

ticket_deleted em ticket na lixeira, ou business_rule_violation quando o contato do ticket não tem telefone, ou quando a integração com o MSP Talks não está configurada/ativa nesta empresa. Nenhuma mensagem saiu

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Limite de uso atingido (rate_limited); o campo layer indica a camada: ip, company, key, operation ou concurrency

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

Retry-After
integer format: int32

Segundos até poder repetir

Erro interno inesperado

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo

service_unavailable: o MSP Talks recusou a chamada respondendo um erro, ou a conexão com ele nem chegou a abrir — nenhuma mensagem saiu, e vale repetir, inclusive com a mesma Idempotency-Key. Uma falha SEM resposta depois de a conexão abrir não chega aqui: ela sai como 202, porque não dá para afirmar que nada foi enviado. O mesmo código também sai como idempotency_unavailable quando a requisição traz Idempotency-Key e o Redis está fora — o campo code do corpo distingue os dois

Media typeapplication/problem+json

Erro no formato RFC 9457 (application/problem+json).

object
code
required

Código estável do erro, para tratamento programático.

string
detail
required

Explicação legível deste erro específico.

string
errors

Erros de campo — presente quando a falha vem de validação de campo.

Array<object>
object
code

Código estável do erro de campo.

string
Allowed values: required too_long too_short invalid_value invalid_format unknown_field unsupported_operator unsupported_field out_of_range not_found inactive inconsistent_reference not_applicable
field

Campo com erro, em notação de ponto/colchete. Ausente quando o erro não é de um campo específico.

string
nullable
message

Mensagem traduzida no locale da requisição.

string
layer

Presente só no 429

string
Allowed values: ip company key operation concurrency
operation

Presente só quando layer=operation

string
Allowed values: report pdf upload
requestId

Identificador da requisição — informe-o ao suporte ao reportar um erro.

string
requiredScope

Presente só no 403 insufficient_scope

string
status
required

Status HTTP da resposta.

integer format: int32
title
required

Título curto e legível do erro.

string
type
required

URI que identifica o tipo do erro.

string
Exemplo
{
"code": "not_found",
"detail": "O recurso solicitado não foi encontrado.",
"errors": [
{
"code": "required"
}
],
"layer": "ip",
"operation": "report",
"requestId": "7f3a9c2e-4b1d-4f7a-9e0c-2b8d6a1f3c55",
"status": 404,
"title": "Recurso não encontrado",
"type": "https://developers.mspdesk.com.br/erros/#not_found"
}
RateLimit-Limit
integer format: int32

Capacidade do balde mais restritivo consumido nesta requisição

RateLimit-Remaining
integer format: int32

Requisições restantes nesse balde

RateLimit-Reset
integer format: int32

Segundos até o balde encher de novo