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.
+
---