From 5b8d4f8b81994fbc950ca0f8fcaea2d372c1d5b7 Mon Sep 17 00:00:00 2001 From: Marcos Marques Date: Wed, 5 Aug 2026 17:49:56 -0300 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20adiciona=20doc=20dos=20novos=20endp?= =?UTF-8?q?oints=20de=20notifica=C3=A7=C3=A3o=20para=20condutor=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs.json | 6 +- pages/v2/changelog.mdx | 74 ++ pages/v2/openapi-corridas.json | 742 ++++++++++++++++++ ...t-condutor-in-app-messaging-individual.mdx | 5 + .../post-condutor-in-app-messaging.mdx | 5 + .../post-condutor-push-individual.mdx | 5 + .../endpoint/post-condutor-push.mdx | 5 + 7 files changed, 841 insertions(+), 1 deletion(-) create mode 100644 pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging-individual.mdx create mode 100644 pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging.mdx create mode 100644 pages/v2/referencia/notificacao/endpoint/post-condutor-push-individual.mdx create mode 100644 pages/v2/referencia/notificacao/endpoint/post-condutor-push.mdx diff --git a/docs.json b/docs.json index 27b654f..282cdc6 100644 --- a/docs.json +++ b/docs.json @@ -122,7 +122,11 @@ "pages/v2/referencia/notificacao/endpoint/post-push", "pages/v2/referencia/notificacao/endpoint/post-push-individual", "pages/v2/referencia/notificacao/endpoint/post-in-app-messaging", - "pages/v2/referencia/notificacao/endpoint/post-in-app-messaging-individual" + "pages/v2/referencia/notificacao/endpoint/post-in-app-messaging-individual", + "pages/v2/referencia/notificacao/endpoint/post-condutor-push", + "pages/v2/referencia/notificacao/endpoint/post-condutor-push-individual", + "pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging", + "pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging-individual" ] }, { diff --git a/pages/v2/changelog.mdx b/pages/v2/changelog.mdx index cef9cb5..c7d0869 100644 --- a/pages/v2/changelog.mdx +++ b/pages/v2/changelog.mdx @@ -154,6 +154,80 @@ export const EndpointBadge = ({ method, path, href }) => (

+ +

+ Envio de notificação para condutores +

+

+ Novos endpoints para notificar condutores, em lote ou individualmente, com push comum e in-app messaging. + Recebem a notificação os condutores da bandeira da sua chave de API (ou de suas filiais) que tenham + aplicativo com token de notificação registrado. +

+ + + + +

Campos aceitos no corpo da requisição:

+
    +
  • — obrigatório. Lista de identificadores dos condutores, limite de 1000 itens.
  • +
  • — opcional. Título da notificação, limite de 40 caracteres.
  • +
  • — obrigatório. Mensagem da notificação, limite de 255 caracteres.
  • +
+
+ +
+ + + +

Campos aceitos no corpo da requisição:

+
    +
  • — obrigatório. Identificador numérico do condutor que receberá a notificação.
  • +
  • — opcional. Título da notificação, limite de 40 caracteres.
  • +
  • — obrigatório. Mensagem da notificação, limite de 255 caracteres.
  • +
+
+
+ +
+ + + +

Campos aceitos no corpo da requisição:

+
    +
  • — obrigatório. Lista de identificadores dos condutores, limite de 1000 itens.
  • +
  • — obrigatório. Título da notificação, limite de 40 caracteres.
  • +
  • — obrigatório. Conteúdo principal da notificação, limite de 255 caracteres.
  • +
  • — opcional. URL de imagem exibida na notificação.
  • +
  • — opcional. Vincula a notificação a uma solicitação.
  • +
  • — opcional. Título do botão de redirecionamento, limite de 20 caracteres.
  • +
  • — opcional. Link acionado pelo botão de redirecionamento.
  • +
+
+
+ +
+ + + +

+ Mesmos campos do envio em lote, trocando por . +

+
+
+ +
+ Nota: informar ou torna os dois obrigatórios. Quando nenhum condutor informado tem token de notificação registrado, a resposta é 404 e nada é enviado. +
+
+

Envio de notificação para um único passageiro diff --git a/pages/v2/openapi-corridas.json b/pages/v2/openapi-corridas.json index 7ace9a2..959b60f 100644 --- a/pages/v2/openapi-corridas.json +++ b/pages/v2/openapi-corridas.json @@ -6295,6 +6295,748 @@ } } }, + "/notificacoes/condutor/push": { + "post": { + "summary": "Enviar notificação push para condutores", + "description": "Envia notificação push para uma lista de condutores. Só recebem a notificação os condutores da bandeira da chave de API (ou de suas filiais) que tenham aplicativo com token de notificação registrado.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "condutores", + "mensagem" + ], + "properties": { + "condutores": { + "type": "array", + "description": "Lista de condutores que receberão a notificação. Deve conter ao menos um item e todos os itens devem ser numéricos. Limite máximo de 1000 itens.", + "minItems": 1, + "maxItems": 1000, + "items": { + "type": "integer" + } + }, + "titulo": { + "type": "string", + "description": "Título da notificação.", + "maxLength": 40 + }, + "mensagem": { + "type": "string", + "description": "Mensagem da notificação.", + "maxLength": 255 + } + } + }, + "example": { + "condutores": [ + 123, + 456, + 789 + ], + "titulo": "Aviso da central", + "mensagem": "Nova regra de escala a partir de segunda." + } + } + } + }, + "responses": { + "200": { + "description": "Notificação enviada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": true, + "message": "Push enviado com sucesso", + "__links": [ + { + "rel": "self", + "href": "api/v2/integracao/notificacoes/condutor/push", + "metodo": "post" + }, + { + "rel": "enviar-push-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/push/individual", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutores", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging/individual", + "metodo": "post" + } + ] + } + } + } + }, + "400": { + "description": "Erro de validação", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "condutores_obrigatorio": { + "summary": "Lista de condutores ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'condutores': Preenchimento obrigatório" + } + ] + } + }, + "condutores_vazio": { + "summary": "Lista de condutores vazia", + "value": { + "success": false, + "errors": [ + { + "code": 0, + "message": "'condutores': Informe ao menos um condutor." + } + ] + } + }, + "condutor_invalido": { + "summary": "Item da lista não é numérico", + "value": { + "success": false, + "errors": [ + { + "code": 0, + "message": "'condutores.1': Deve ser numérico." + } + ] + } + }, + "mensagem_obrigatoria": { + "summary": "Campo mensagem ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'mensagem': Preenchimento obrigatório" + } + ] + } + } + } + } + } + }, + "404": { + "description": "Nenhum condutor informado possui token de notificação registrado", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Nenhum token FCM encontrado para os condutores informados" + } + ] + } + } + } + }, + "503": { + "description": "Não foi possível resolver o projeto de notificação do aplicativo do condutor", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Não foi possível resolver o projeto Firebase do aplicativo do condutor" + } + ] + } + } + } + } + } + } + }, + "/notificacoes/condutor/push/individual": { + "post": { + "summary": "Enviar notificação push para um condutor", + "description": "Envia notificação push para um único condutor identificado pelo `condutor_id`.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "condutor_id", + "mensagem" + ], + "properties": { + "condutor_id": { + "type": "integer", + "description": "Identificador do condutor que receberá a notificação. Deve ser numérico." + }, + "titulo": { + "type": "string", + "description": "Título da notificação.", + "maxLength": 40 + }, + "mensagem": { + "type": "string", + "description": "Mensagem da notificação.", + "maxLength": 255 + } + } + }, + "example": { + "condutor_id": 123, + "titulo": "Aviso da central", + "mensagem": "Nova regra de escala a partir de segunda." + } + } + } + }, + "responses": { + "200": { + "description": "Notificação enviada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": true, + "message": "Push enviado com sucesso", + "__links": [ + { + "rel": "self", + "href": "api/v2/integracao/notificacoes/condutor/push/individual", + "metodo": "post" + }, + { + "rel": "enviar-push-condutores", + "href": "api/v2/integracao/notificacoes/condutor/push", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutores", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging/individual", + "metodo": "post" + } + ] + } + } + } + }, + "400": { + "description": "Erro de validação", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "condutor_id_obrigatorio": { + "summary": "Campo condutor_id ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'condutor_id': Preenchimento obrigatório" + } + ] + } + }, + "condutor_invalido": { + "summary": "condutor_id não é numérico", + "value": { + "success": false, + "errors": [ + { + "code": 0, + "message": "'condutor_id': Deve ser numérico." + } + ] + } + }, + "mensagem_obrigatoria": { + "summary": "Campo mensagem ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'mensagem': Preenchimento obrigatório" + } + ] + } + } + } + } + } + }, + "404": { + "description": "Nenhum condutor informado possui token de notificação registrado", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Nenhum token FCM encontrado para os condutores informados" + } + ] + } + } + } + }, + "503": { + "description": "Não foi possível resolver o projeto de notificação do aplicativo do condutor", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Não foi possível resolver o projeto Firebase do aplicativo do condutor" + } + ] + } + } + } + } + } + } + }, + "/notificacoes/condutor/in-app-messaging": { + "post": { + "summary": "Enviar notificação in-app para condutores", + "description": "Envia notificação in-app para uma lista de condutores. A notificação é silenciosa: é o aplicativo do condutor que a exibe.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "condutores", + "titulo", + "body" + ], + "properties": { + "condutores": { + "type": "array", + "description": "Lista de condutores que receberão a notificação. Deve conter ao menos um item e todos os itens devem ser numéricos. Limite máximo de 1000 itens.", + "minItems": 1, + "maxItems": 1000, + "items": { + "type": "integer" + } + }, + "titulo": { + "type": "string", + "description": "Título da notificação.", + "maxLength": 40 + }, + "body": { + "type": "string", + "description": "Conteúdo principal da notificação.", + "maxLength": 255 + }, + "url_imagem": { + "type": "string", + "format": "uri", + "description": "URL de imagem exibida na notificação." + }, + "solicitacao_id": { + "type": "integer", + "description": "Vincula a notificação a uma solicitação." + }, + "titulo_botao_redirecionamento": { + "type": "string", + "description": "Título do botão de redirecionamento. Obrigatório quando `link_redirecionamento` é informado.", + "maxLength": 20 + }, + "link_redirecionamento": { + "type": "string", + "description": "Link acionado pelo botão de redirecionamento. Obrigatório quando `titulo_botao_redirecionamento` é informado." + } + } + }, + "example": { + "condutores": [ + 123, + 456 + ], + "titulo": "Bônus da semana", + "body": "Complete 20 corridas e receba um bônus.", + "url_imagem": "https://exemplo.com/banner.png", + "titulo_botao_redirecionamento": "Ver regras", + "link_redirecionamento": "https://exemplo.com/bonus" + } + } + } + }, + "responses": { + "200": { + "description": "Notificação enviada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": true, + "message": "In-App Messaging enviado com sucesso", + "__links": [ + { + "rel": "self", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging", + "metodo": "post" + }, + { + "rel": "enviar-push-condutores", + "href": "api/v2/integracao/notificacoes/condutor/push", + "metodo": "post" + }, + { + "rel": "enviar-push-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/push/individual", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging/individual", + "metodo": "post" + } + ] + } + } + } + }, + "400": { + "description": "Erro de validação", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "titulo_obrigatorio": { + "summary": "Campo titulo ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'titulo': Preenchimento obrigatório" + } + ] + } + }, + "body_obrigatorio": { + "summary": "Campo body ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'body': Preenchimento obrigatório" + } + ] + } + }, + "url_imagem_invalida": { + "summary": "url_imagem não é uma URL", + "value": { + "success": false, + "errors": [ + { + "code": 0, + "message": "'url_imagem': URL inválida." + } + ] + } + }, + "redirecionamento_incompleto": { + "summary": "Par de redirecionamento incompleto", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'titulo_botao_redirecionamento': Preenchimento obrigatório" + } + ] + } + } + } + } + } + }, + "404": { + "description": "Nenhum condutor informado possui token de notificação registrado", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Nenhum token FCM encontrado para os condutores informados" + } + ] + } + } + } + }, + "503": { + "description": "Não foi possível resolver o projeto de notificação do aplicativo do condutor", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Não foi possível resolver o projeto Firebase do aplicativo do condutor" + } + ] + } + } + } + } + } + } + }, + "/notificacoes/condutor/in-app-messaging/individual": { + "post": { + "summary": "Enviar notificação in-app para um condutor", + "description": "Envia notificação in-app para um único condutor identificado pelo `condutor_id`. A notificação é silenciosa: é o aplicativo do condutor que a exibe.", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "condutor_id", + "titulo", + "body" + ], + "properties": { + "condutor_id": { + "type": "integer", + "description": "Identificador do condutor que receberá a notificação. Deve ser numérico." + }, + "titulo": { + "type": "string", + "description": "Título da notificação.", + "maxLength": 40 + }, + "body": { + "type": "string", + "description": "Conteúdo principal da notificação.", + "maxLength": 255 + }, + "url_imagem": { + "type": "string", + "format": "uri", + "description": "URL de imagem exibida na notificação." + }, + "solicitacao_id": { + "type": "integer", + "description": "Vincula a notificação a uma solicitação." + }, + "titulo_botao_redirecionamento": { + "type": "string", + "description": "Título do botão de redirecionamento. Obrigatório quando `link_redirecionamento` é informado.", + "maxLength": 20 + }, + "link_redirecionamento": { + "type": "string", + "description": "Link acionado pelo botão de redirecionamento. Obrigatório quando `titulo_botao_redirecionamento` é informado." + } + } + }, + "example": { + "condutor_id": 123, + "titulo": "Bônus da semana", + "body": "Complete 20 corridas e receba um bônus." + } + } + } + }, + "responses": { + "200": { + "description": "Notificação enviada com sucesso", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": true, + "message": "In-App Messaging enviado com sucesso", + "__links": [ + { + "rel": "self", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging/individual", + "metodo": "post" + }, + { + "rel": "enviar-push-condutores", + "href": "api/v2/integracao/notificacoes/condutor/push", + "metodo": "post" + }, + { + "rel": "enviar-push-condutor-individual", + "href": "api/v2/integracao/notificacoes/condutor/push/individual", + "metodo": "post" + }, + { + "rel": "enviar-in-app-messaging-condutores", + "href": "api/v2/integracao/notificacoes/condutor/in-app-messaging", + "metodo": "post" + } + ] + } + } + } + }, + "400": { + "description": "Erro de validação", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "examples": { + "condutor_id_obrigatorio": { + "summary": "Campo condutor_id ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'condutor_id': Preenchimento obrigatório" + } + ] + } + }, + "titulo_obrigatorio": { + "summary": "Campo titulo ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'titulo': Preenchimento obrigatório" + } + ] + } + }, + "body_obrigatorio": { + "summary": "Campo body ausente", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'body': Preenchimento obrigatório" + } + ] + } + } + } + } + } + }, + "404": { + "description": "Nenhum condutor informado possui token de notificação registrado", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Nenhum token FCM encontrado para os condutores informados" + } + ] + } + } + } + }, + "503": { + "description": "Não foi possível resolver o projeto de notificação do aplicativo do condutor", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "success": false, + "errors": [ + { + "code": 0, + "message": "Não foi possível resolver o projeto Firebase do aplicativo do condutor" + } + ] + } + } + } + } + } + } + }, "/webhooks": { "get": { "summary": "Listar webhooks", diff --git a/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging-individual.mdx b/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging-individual.mdx new file mode 100644 index 0000000..d1c7030 --- /dev/null +++ b/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging-individual.mdx @@ -0,0 +1,5 @@ +--- +title: 'Enviar notificação in-app para um condutor' +tag: '2026-08-05' +openapi: 'pages/v2/openapi-corridas.json POST /notificacoes/condutor/in-app-messaging/individual' +--- diff --git a/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging.mdx b/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging.mdx new file mode 100644 index 0000000..a51f694 --- /dev/null +++ b/pages/v2/referencia/notificacao/endpoint/post-condutor-in-app-messaging.mdx @@ -0,0 +1,5 @@ +--- +title: 'Enviar notificação in-app para condutores' +tag: '2026-08-05' +openapi: 'pages/v2/openapi-corridas.json POST /notificacoes/condutor/in-app-messaging' +--- diff --git a/pages/v2/referencia/notificacao/endpoint/post-condutor-push-individual.mdx b/pages/v2/referencia/notificacao/endpoint/post-condutor-push-individual.mdx new file mode 100644 index 0000000..e8bf72a --- /dev/null +++ b/pages/v2/referencia/notificacao/endpoint/post-condutor-push-individual.mdx @@ -0,0 +1,5 @@ +--- +title: 'Enviar notificação push para um condutor' +tag: '2026-08-05' +openapi: 'pages/v2/openapi-corridas.json POST /notificacoes/condutor/push/individual' +--- diff --git a/pages/v2/referencia/notificacao/endpoint/post-condutor-push.mdx b/pages/v2/referencia/notificacao/endpoint/post-condutor-push.mdx new file mode 100644 index 0000000..6e24642 --- /dev/null +++ b/pages/v2/referencia/notificacao/endpoint/post-condutor-push.mdx @@ -0,0 +1,5 @@ +--- +title: 'Enviar notificação push para condutores' +tag: '2026-08-05' +openapi: 'pages/v2/openapi-corridas.json POST /notificacoes/condutor/push' +--- From ecd6563ae2b38e7bde723def7baf762ec4047834 Mon Sep 17 00:00:00 2001 From: tobiasfreire-gaudium Date: Thu, 6 Aug 2026 10:00:18 -0300 Subject: [PATCH 2/3] feat: adiciona sugestoes do gaudinho --- pages/v2/changelog.mdx | 4 ++-- pages/v2/openapi-corridas.json | 28 ++++++++++++++++++++++++++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/pages/v2/changelog.mdx b/pages/v2/changelog.mdx index c7d0869..c1b4ae9 100644 --- a/pages/v2/changelog.mdx +++ b/pages/v2/changelog.mdx @@ -198,7 +198,7 @@ export const EndpointBadge = ({ method, path, href }) => (
  • — obrigatório. Título da notificação, limite de 40 caracteres.
  • — obrigatório. Conteúdo principal da notificação, limite de 255 caracteres.
  • — opcional. URL de imagem exibida na notificação.
  • -
  • — opcional. Vincula a notificação a uma solicitação.
  • +
  • — opcional. Vincula a notificação a uma solicitação; quando informado, só é exibida se a solicitação estiver em andamento.
  • — opcional. Título do botão de redirecionamento, limite de 20 caracteres.
  • — opcional. Link acionado pelo botão de redirecionamento.
  • @@ -224,7 +224,7 @@ export const EndpointBadge = ({ method, path, href }) => ( fontSize: "13px", lineHeight: "1.6", }}> - Nota: informar ou torna os dois obrigatórios. Quando nenhum condutor informado tem token de notificação registrado, a resposta é 404 e nada é enviado. + Nota: informar ou torna os dois obrigatórios. Quando nenhum condutor informado tem token de notificação registrado, a resposta é 404 e nada é enviado. Uma falha ao resolver o projeto de notificação do app do condutor devolve 503. diff --git a/pages/v2/openapi-corridas.json b/pages/v2/openapi-corridas.json index 959b60f..0015a22 100644 --- a/pages/v2/openapi-corridas.json +++ b/pages/v2/openapi-corridas.json @@ -6688,7 +6688,7 @@ }, "solicitacao_id": { "type": "integer", - "description": "Vincula a notificação a uma solicitação." + "description": "Vincula a notificação a uma solicitação. Quando informado, a notificação só é exibida se a solicitação estiver em andamento." }, "titulo_botao_redirecionamento": { "type": "string", @@ -6890,7 +6890,7 @@ }, "solicitacao_id": { "type": "integer", - "description": "Vincula a notificação a uma solicitação." + "description": "Vincula a notificação a uma solicitação. Quando informado, a notificação só é exibida se a solicitação estiver em andamento." }, "titulo_botao_redirecionamento": { "type": "string", @@ -6991,6 +6991,30 @@ } ] } + }, + "url_imagem_invalida": { + "summary": "url_imagem não é uma URL", + "value": { + "success": false, + "errors": [ + { + "code": 0, + "message": "'url_imagem': URL inválida." + } + ] + } + }, + "redirecionamento_incompleto": { + "summary": "Par de redirecionamento incompleto", + "value": { + "success": false, + "errors": [ + { + "code": 2, + "message": "'titulo_botao_redirecionamento': Preenchimento obrigatório" + } + ] + } } } } From 0b28f1b11fb9813cf6a0f16f6e981d34e2941443 Mon Sep 17 00:00:00 2001 From: Marcos Marques Date: Thu, 13 Aug 2026 16:59:33 -0300 Subject: [PATCH 3/3] feat: adiciona ratelimit para endpoints de notificacao para condutores --- pages/v2/referencia/introducao.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pages/v2/referencia/introducao.mdx b/pages/v2/referencia/introducao.mdx index 577c85f..c07ca1e 100644 --- a/pages/v2/referencia/introducao.mdx +++ b/pages/v2/referencia/introducao.mdx @@ -287,8 +287,13 @@ Os valores da tabela são **limites base**. O limite efetivo de cada grupo é o | Notificações (in-app e push) | `/api/v2/integracao/notificacoes/in-app-messaging`
    `/api/v2/integracao/notificacoes/push` | 20 * fator requisições por minuto | | In-app messaging (individual) | `/api/v2/integracao/notificacoes/in-app-messaging/individual` | 200 * fator requisições por minuto | | Push (individual) | `/api/v2/integracao/notificacoes/push/individual` | 200 * fator requisições por minuto | +| In-app messaging para condutores | `/api/v2/integracao/notificacoes/condutor/in-app-messaging` | 100 * fator requisições por minuto | +| In-app messaging para condutores (individual) | `/api/v2/integracao/notificacoes/condutor/in-app-messaging/individual` | 200 * fator requisições por minuto | +| Push para condutores (individual) | `/api/v2/integracao/notificacoes/condutor/push/individual` | 200 * fator requisições por minuto | | Padrão | `/api/v2/integracao/*` | 1000 * fator requisições por minuto | +O envio em massa de push para condutores (`/api/v2/integracao/notificacoes/condutor/push`) não possui regra dedicada e segue o limite do grupo Padrão. + ---