Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.
Registro de ponto é o evento de marcação de jornada de um colaborador
— entrada, saída, intervalos. É a fonte primária para todo cálculo de
frequência, horas extras, banco de horas e folha de pagamento da
plataforma.A API permite que sistemas externos (REPs customizados homologados,
apps próprios, integradores de jornada) registrem batidas, importem
arquivos AFD pré-existentes e consultem históricos.
A Pontua atua como REP-P (Registrador Eletrônico de Ponto via Programa)
homologado pelo INPI sob a Portaria MTP 671/2021 e Portaria 1.486/2022.
Isso traz obrigações inegociáveis para qualquer integração que
manipula registros:
NSR — Número Sequencial de Registro
Cada batida recebe um NSR sequencial gerado pelo Pontua, nunca
pelo cliente. Esse número entra no AFD/AEJ e nos comprovantes
assinados. Sequência inválida (gaps, duplicatas) configura
irregularidade.
Comprovante de registro
Para cada batida registrada, o colaborador tem direito a um
comprovante assinado digitalmente (PAdES embed). O comprovante
contém o NSR + hash SHA-256 + metadata INPI.
AFD e AEJ assinados
Arquivos exportados (AFD, AEJ) recebem assinatura digital CAdES
detached (.p7s). Os arquivos têm encoding ISO 8859-1 e estrutura
fixa por tipo (1 cabeçalho, 3 marcações, 99 trailer no AFD).
Soft-delete obrigatório
Registros nunca podem ser fisicamente removidos. Correções via API
geram novo registro com flag de ajuste + motivo + auditoria. O
histórico original é preservado por 5 anos (Art. 98).
POST /registro-ponto — Registra uma batida pontual.Quando usar:
REP customizado próprio (cliente que tem hardware homologado)
App de RH/onboarding que precisa registrar entrada manualmente
Sistema de portaria/controle de acesso integrado
Quando NÃO usar:
Sincronizar batidas históricas de outro sistema (use AFD em vez)
Importar grandes lotes de uma só vez (use AFD)
Eventos do app Pontua oficial (já passa por outra rota interna)
A jornada esperada do colaborador (turno) é validada no momento.
Batidas fora da janela de tolerância podem cair em status PENDENTE
aguardando aprovação de gestor. Veja Frequência.
POST /registro-ponto/afd — Importa arquivo AFD em conformidade
com Portaria 671.Quando usar:
Migrar histórico de outro sistema homologado
Importar batidas do REP-C físico que não roda Pontua
Onboarding de cliente vindo de outro REP
O arquivo deve seguir o layout exato da Portaria 671:
Encoding ISO 8859-1
Linhas tipo 1 (cabeçalho) + tipo 3 (marcações) + tipo 99 (trailer)
NSR sequencial sem gaps no arquivo
A API valida o arquivo, gera novos NSRs do lado Pontua e devolve
contadores totalRegistros, totalImportados, totalRejeitados
com motivo de rejeição linha-a-linha.
POST /registro-ponto/recibo — Gera comprovantes assinados em PDF
para um colaborador num período.O PDF contém todas as batidas do período com NSR, hash, e assinatura
PAdES embed (verificável em qualquer leitor PDF). Útil para:
GET /registro-ponto — Lista registros com filtros.Filtros típicos: colaboradorId, dataInicio, dataFim, status,
origem, departamentoId. Use paginação pagina + limite para
iterar grandes volumes — ver Paginação.Para sync incremental com seu sistema, salve um cursor de
timestamp e filtre por data crescente — ver Webhooks (polling).
GET /registro-ponto/ultimos — Retorna as últimas batidas de um
colaborador (limite default 10).Útil para:
Dashboard “quem bateu agora?”
Validar última marcação antes de novo registro
Detectar batida duplicada do lado do cliente
Endpoint
Retorna
GET /registro-ponto/localizacoes
Coordenadas GPS das batidas de uma jornada
GET /registro-ponto/fotos
URLs S3 (com expiração) das fotos de batida
Dados sensíveis sob LGPD. Localização e foto são dados pessoais.
Sua integração deve:
Acessar apenas com base legal documentada
Não armazenar fora do Pontua se não for necessário
Tratar URLs como temporárias (expirar em curto prazo)
Coletar apenas se o colaborador autorizou (configurado por UN)
Endpoints retornam vazio quando não há dados disponíveis ou
quando a UN não coleta GPS/foto.
Não tente enviar nsr no payload de POST /registro-ponto — é
ignorado ou rejeitado. O backend gera sequencial conforme Art. 80 da
Portaria 671. Misturar fontes de NSR é violação regulatória.
Sempre envie dataHora com offset explícito (ex: 2026-04-26T08:30:00-03:00).
Strings sem timezone são interpretadas como BRT, mas isso pode falhar
em horário de verão (ainda que abolido em 2019, alguns ambientes legados
têm problemas). Para máxima portabilidade: sempre com offset.
Se o período da dataHora está em fechamento concluído, o registro
é rejeitado ou cai em fluxo de ajuste com aprovação. Verifique
o status do fechamento antes de bulk-import histórico — ver
Fechamento.
São dados pessoais sensíveis. Sua integração deve:
Tratar com base legal explícita (consentimento ou execução de contrato)
Não trafegar fora do Brasil sem AIPD (Avaliação de Impacto)
Implementar política de retenção curta (URLs S3 com TTL no seu lado também)
GET /registro-ponto/gestao/dashboard, GET /registro-ponto/gestao/minha-equipe,
GET /registro-ponto/frequencias e variantes estão deprecated.
Use a tag Frequency para agregados — ver Frequência.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Pontua","description":"API oficial Pontua para integrações com a plataforma de gestão de jornada de trabalho. Acesse colaboradores, registros de ponto, batidas, banco de horas, escalas e relatórios via REST autenticado por token de API.","colors":{"primary":"#081A4F","light":"#3D6BFF","dark":"#0033CC"},"logo":{"light":"https://pontua.com.br/wp-content/uploads/2026/04/pontua_logo.svg","dark":"https://pontua.com.br/wp-content/uploads/2026/04/Logo-Pontua-Branca.svg"},"favicon":"https://mintlify.s3.us-west-1.amazonaws.com/pontua/favicon.png","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python","go","php","ruby"]}},"navbar":{"links":[{"href":"https://oi.pontua.com.br","label":"Portal"},{"href":"mailto:tecnologia@pontua.com.br","label":"Suporte"}],"primary":{"type":"button","label":"Começar agora","href":"/quick-start"}},"footer":{"socials":{"website":"https://www.pontua.com.br","linkedin":"https://www.linkedin.com/company/pontuabr"},"links":[{"header":"Pontua","items":[{"label":"Site","href":"https://www.pontua.com.br"},{"label":"Dashboard","href":"https://oi.pontua.com.br"},{"label":"Central de ajuda","href":"https://ajuda.pontua.com.br"}]},{"header":"Desenvolvedores","items":[{"label":"Comece agora","href":"/quick-start"},{"label":"Autenticação","href":"/conceitos/autenticacao"},{"label":"Referência da API","href":"/api-reference"},{"label":"Notas de versão","href":"/changelog"}]},{"header":"Suporte","items":[{"label":"Contato API","href":"mailto:tecnologia@pontua.com.br"}]}]},"seo":{"metatags":{"og:site_name":"Pontua API","og:image":"https://www.pontua.com.br/og-image.png"},"indexing":"navigable"},"fonts":{"family":"Inter"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"pontua","hasAudioNarration":false,"actualSubdomain":"pontua","customDomains":["developers.pontua.com.br"],"gitSource":{"type":"github","owner":"pontua-ponto-remoto","repo":"backend","deployBranch":"master","contentDirectory":"docs/public","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21ddb77005524106c9e48f","collectionId":"75ae1fcd-eb57-486a-a3c7-01ebda21eda8","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ada72458071d011f42bca94:failure","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"Referência da API","count":228},{"language":"default","tag":"Payment Sheet","count":33},{"language":"default","tag":"Guias","count":27},{"language":"default","tag":"Regras de ponto","count":27},{"language":"default","tag":"Unidade de Negócio","count":17},{"language":"default","tag":"Turno Exceção","count":16},{"language":"default","tag":"Calendário","count":15},{"language":"default","tag":"Colaborador","count":14},{"language":"default","tag":"Relatório","count":13},{"language":"default","tag":"Cargo","count":12}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"referencia/registros-ponto","slug":"/referencia/registros-ponto","pageMetadata":{"title":"Registros de Ponto","description":"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.","href":"/referencia/registros-ponto"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CardGroup,CodeBlock,Heading,Tab,Table,Tabs,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tab)_missingMdxReference(`Tab`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tabs)_missingMdxReference(`Tabs`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Registro de ponto`}),` é o evento de marcação de jornada de um colaborador\n— entrada, saída, intervalos. É a fonte primária para todo cálculo de\nfrequência, horas extras, banco de horas e folha de pagamento da\nplataforma.`]}),`\n`,_jsx(_components.p,{children:`A API permite que sistemas externos (REPs customizados homologados,\napps próprios, integradores de jornada) registrem batidas, importem\narquivos AFD pré-existentes e consultem históricos.`}),`\n`,_jsx(Heading,{level:`2`,id:`contexto-regulatório`,children:`Contexto regulatório`}),`\n`,_jsxs(_components.p,{children:[`A Pontua atua como `,_jsx(_components.strong,{children:`REP-P (Registrador Eletrônico de Ponto via Programa)`}),`\nhomologado pelo INPI sob a Portaria MTP 671/2021 e Portaria 1.486/2022.\nIsso traz obrigações `,_jsx(_components.strong,{children:`inegociáveis`}),` para qualquer integração que\nmanipula registros:`]}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`NSR — Número Sequencial de Registro`,icon:`hashtag`,children:_jsxs(_components.p,{children:[`Cada batida recebe um NSR sequencial `,_jsx(_components.strong,{children:`gerado pelo Pontua`}),`, nunca\npelo cliente. Esse número entra no AFD/AEJ e nos comprovantes\nassinados. Sequência inválida (gaps, duplicatas) configura\nirregularidade.`]})}),_jsx(Card,{title:`Comprovante de registro`,icon:`file-signature`,children:_jsx(_components.p,{children:`Para cada batida registrada, o colaborador tem direito a um\ncomprovante assinado digitalmente (PAdES embed). O comprovante\ncontém o NSR + hash SHA-256 + metadata INPI.`})}),_jsx(Card,{title:`AFD e AEJ assinados`,icon:`file-shield`,children:_jsx(_components.p,{children:`Arquivos exportados (AFD, AEJ) recebem assinatura digital CAdES\ndetached (.p7s). Os arquivos têm encoding ISO 8859-1 e estrutura\nfixa por tipo (1 cabeçalho, 3 marcações, 99 trailer no AFD).`})}),_jsx(Card,{title:`Soft-delete obrigatório`,icon:`recycle`,children:_jsx(_components.p,{children:`Registros nunca podem ser fisicamente removidos. Correções via API\ngeram novo registro com flag de ajuste + motivo + auditoria. O\nhistórico original é preservado por 5 anos (Art. 98).`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`origens-de-registro`,children:`Origens de registro`}),`\n`,_jsxs(_components.p,{children:[`Cada registro carrega o campo `,_jsx(_components.code,{children:`origem`}),` indicando como foi capturado.\nA integração de cliente externo tipicamente registra apenas `,_jsx(_components.code,{children:`API`}),`\nou `,_jsx(_components.code,{children:`AFD`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Origem`}),_jsx(_components.th,{children:`Significado`}),_jsx(_components.th,{children:`Acessível via API?`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`APP`})}),_jsx(_components.td,{children:`Mobile app oficial Pontua`}),_jsx(_components.td,{children:`Não (interno)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`WEB`})}),_jsx(_components.td,{children:`Portal de marcação web Pontua`}),_jsx(_components.td,{children:`Não (interno)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`REP`})}),_jsx(_components.td,{children:`Relógio de ponto físico homologado`}),_jsx(_components.td,{children:`Limitado ao token de integração específico`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`API`})}),_jsx(_components.td,{children:`Integração externa via REST`}),_jsxs(_components.td,{children:[`✅ `,_jsx(_components.code,{children:`POST /registro-ponto`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AFD`})}),_jsx(_components.td,{children:`Importação de arquivo AFD`}),_jsxs(_components.td,{children:[`✅ `,_jsx(_components.code,{children:`POST /registro-ponto/afd`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`AJUSTE`})}),_jsx(_components.td,{children:`Ajuste manual aprovado`}),_jsx(_components.td,{children:`Via fluxo de Ajustes (não direto)`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`endpoints-públicos`,children:`Endpoints públicos`}),`\n`,_jsx(Heading,{level:`3`,id:`registrar-batidas`,children:`Registrar batidas`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Batida individual`,id:`batida-individual`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /registro-ponto`}),` — Registra uma batida pontual.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Quando usar:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`REP customizado próprio (cliente que tem hardware homologado)`}),`\n`,_jsx(_components.li,{children:`App de RH/onboarding que precisa registrar entrada manualmente`}),`\n`,_jsx(_components.li,{children:`Sistema de portaria/controle de acesso integrado`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Quando NÃO usar:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Sincronizar batidas históricas de outro sistema (use AFD em vez)`}),`\n`,_jsx(_components.li,{children:`Importar grandes lotes de uma só vez (use AFD)`}),`\n`,_jsx(_components.li,{children:`Eventos do app Pontua oficial (já passa por outra rota interna)`}),`\n`]}),_jsxs(_components.p,{children:[`A jornada esperada do colaborador (turno) é validada no momento.\nBatidas fora da janela de tolerância podem cair em status `,_jsx(_components.code,{children:`PENDENTE`}),`\naguardando aprovação de gestor. Veja `,_jsx(_components.a,{href:`/referencia/frequencia`,children:`Frequência`}),`.`]})]}),_jsxs(Tab,{title:`Importação AFD`,id:`importa%C3%A7%C3%A3o-afd`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /registro-ponto/afd`}),` — Importa arquivo AFD em conformidade\ncom Portaria 671.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Quando usar:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Migrar histórico de outro sistema homologado`}),`\n`,_jsx(_components.li,{children:`Importar batidas do REP-C físico que não roda Pontua`}),`\n`,_jsx(_components.li,{children:`Onboarding de cliente vindo de outro REP`}),`\n`]}),_jsx(_components.p,{children:`O arquivo deve seguir o layout exato da Portaria 671:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Encoding `,_jsx(_components.code,{children:`ISO 8859-1`})]}),`\n`,_jsx(_components.li,{children:`Linhas tipo 1 (cabeçalho) + tipo 3 (marcações) + tipo 99 (trailer)`}),`\n`,_jsx(_components.li,{children:`NSR sequencial sem gaps no arquivo`}),`\n`]}),_jsxs(_components.p,{children:[`A API valida o arquivo, gera novos NSRs do lado Pontua e devolve\ncontadores `,_jsx(_components.code,{children:`totalRegistros`}),`, `,_jsx(_components.code,{children:`totalImportados`}),`, `,_jsx(_components.code,{children:`totalRejeitados`}),`\ncom motivo de rejeição linha-a-linha.`]})]}),_jsxs(Tab,{title:`Comprovante PDF`,id:`comprovante-pdf`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`POST /registro-ponto/recibo`}),` — Gera comprovantes assinados em PDF\npara um colaborador num período.`]}),_jsx(_components.p,{children:`O PDF contém todas as batidas do período com NSR, hash, e assinatura\nPAdES embed (verificável em qualquer leitor PDF). Útil para:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Anexar em folha de pagamento mensal`}),`\n`,_jsx(_components.li,{children:`Atender solicitação do colaborador (Art. 79)`}),`\n`,_jsx(_components.li,{children:`Auditoria interna ou fiscalização`}),`\n`]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`consultar-registros`,children:`Consultar registros`}),`\n`,_jsxs(Tabs,{children:[_jsxs(Tab,{title:`Listagem`,id:`listagem`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /registro-ponto`}),` — Lista registros com filtros.`]}),_jsxs(_components.p,{children:[`Filtros típicos: `,_jsx(_components.code,{children:`colaboradorId`}),`, `,_jsx(_components.code,{children:`dataInicio`}),`, `,_jsx(_components.code,{children:`dataFim`}),`, `,_jsx(_components.code,{children:`status`}),`,\n`,_jsx(_components.code,{children:`origem`}),`, `,_jsx(_components.code,{children:`departamentoId`}),`. Use paginação `,_jsx(_components.code,{children:`pagina`}),` + `,_jsx(_components.code,{children:`limite`}),` para\niterar grandes volumes — ver `,_jsx(_components.a,{href:`/conceitos/paginacao`,children:`Paginação`}),`.`]}),_jsxs(_components.p,{children:[`Para sync incremental com seu sistema, salve um `,_jsx(_components.strong,{children:`cursor de\ntimestamp`}),` e filtre por data crescente — ver `,_jsx(_components.a,{href:`/conceitos/webhooks`,children:`Webhooks (polling)`}),`.`]})]}),_jsxs(Tab,{title:`Últimos registros`,id:`%C3%BAltimos-registros`,children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /registro-ponto/ultimos`}),` — Retorna as últimas batidas de um\ncolaborador (limite default 10).`]}),_jsx(_components.p,{children:`Útil para:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Dashboard “quem bateu agora?”`}),`\n`,_jsx(_components.li,{children:`Validar última marcação antes de novo registro`}),`\n`,_jsx(_components.li,{children:`Detectar batida duplicada do lado do cliente`}),`\n`]})]}),_jsxs(Tab,{title:`Localização e fotos`,id:`localiza%C3%A7%C3%A3o-e-fotos`,children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Endpoint`}),_jsx(_components.th,{children:`Retorna`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /registro-ponto/localizacoes`})}),_jsx(_components.td,{children:`Coordenadas GPS das batidas de uma jornada`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`GET /registro-ponto/fotos`})}),_jsx(_components.td,{children:`URLs S3 (com expiração) das fotos de batida`})]})]})]}),_jsxs(Warning,{children:[_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Dados sensíveis sob LGPD.`}),` Localização e foto são dados pessoais.\nSua integração deve:`]}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Acessar apenas com base legal documentada`}),`\n`,_jsx(_components.li,{children:`Não armazenar fora do Pontua se não for necessário`}),`\n`,_jsx(_components.li,{children:`Tratar URLs como temporárias (expirar em curto prazo)`}),`\n`,_jsx(_components.li,{children:`Coletar apenas se o colaborador autorizou (configurado por UN)`}),`\n`]}),_jsx(_components.p,{children:`Endpoints retornam vazio quando não há dados disponíveis ou\nquando a UN não coleta GPS/foto.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`modelo-de-dados-campos-chave`,children:`Modelo de dados (campos chave)`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`typescript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` id`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`string`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // UUID Pontua`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` nsr`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`number`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Número Sequencial de Registro (Portaria 671)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` colaboradorId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`string`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` dataHora`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`string`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // ISO 8601 com timezone (BRT padrão)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` origem`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"APP\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"REP\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"WEB\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"API\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"AFD\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"AJUSTE\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` status`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"VALIDO\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"PENDENTE\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"REJEITADO\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#C8C8C8`},children:` hash`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`string`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // SHA-256 do registro (verifiable)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // ... demais campos no spec OpenAPI`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Campo`}),_jsx(_components.th,{children:`Significado`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`nsr`})}),_jsxs(_components.td,{children:[`Sequencial `,_jsx(_components.strong,{children:`gerado pelo Pontua`}),` ao gravar. Único e crescente por UN. Aparece no AFD/AEJ/comprovantes.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`dataHora`})}),_jsxs(_components.td,{children:[`Momento exato da batida em ISO 8601. `,_jsx(_components.strong,{children:`Use timezone BRT`}),` (`,_jsx(_components.code,{children:`-03:00`}),`) — registros sem timezone são interpretados como BRT por default.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`origem`})}),_jsxs(_components.td,{children:[`Como o registro entrou no sistema. Sua API key registra como `,_jsx(_components.code,{children:`API`}),`.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`status`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`VALIDO`}),` é o caso normal. `,_jsx(_components.code,{children:`PENDENTE`}),` aguarda aprovação. `,_jsx(_components.code,{children:`REJEITADO`}),` quando há violação clara (ex: batida fora do cerco geográfico).`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`hash`})}),_jsx(_components.td,{children:`SHA-256 do conteúdo, cacheado no servidor e expresso no comprovante. Permite verificação offline de integridade.`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`fluxos-típicos`,children:`Fluxos típicos`}),`\n`,_jsx(Heading,{level:`3`,id:`registrar-batida-em-rep-customizado`,children:`Registrar batida em REP customizado`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`24`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`24`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Hardware próprio detectou marcação biométrica → envia para Pontua`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` registrarBatidaRep`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`dadosBatida`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` resp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'https://api.pontua.com.br/registro-ponto'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'POST'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'application/json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` colaboradorId:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dadosBatida`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`colaboradorId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dataHora:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dadosBatida`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`timestamp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// já com timezone`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // demais campos opcionais (localização, etc) conforme spec`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`!`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`resp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ok`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` erro`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` throw`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Error`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`erro`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`service`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`erro`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`message`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` registro`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`NSR \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`registro`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`nsr`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` gerado para `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dadosBatida`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`colaboradorId`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` registro`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`sync-incremental-de-batidas-para-bi`,children:`Sync incremental de batidas para BI`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`30`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` syncIncrementalBatidas`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`desde`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` let`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` pagina`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` resultados`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` []`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` while`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` params`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` URLSearchParams`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` pagina:`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` String`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pagina`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`),`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` limite:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '100'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dataInicio:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` desde`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ISO 8601 — cursor incremental`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` })`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` resp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `https://api.pontua.com.br/registro-ponto?\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`params`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } },`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`resultados`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`lote`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`totalRegistros`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resultados`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`push`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`...`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`lote`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ((`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`pagina`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` +`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 100`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` totalRegistros`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`break`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` pagina`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`++`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Salvar cursor para próxima execução`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` if`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`resultados`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` >`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` ultimaBatida`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resultados`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`resultados`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:`length`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` -`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` storage`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`set`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'pontua.ultimo_sync_batidas'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ultimaBatida`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dataHora`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resultados`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`gerar-comprovantes-mensais`,children:`Gerar comprovantes mensais`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`21`,language:`javascript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`javascript`,children:_jsxs(_components.code,{language:`javascript`,numberOfLines:`21`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` gerarComprovantesMes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`colaboradorId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`mes`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` resp`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` fetch`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'https://api.pontua.com.br/registro-ponto/recibo'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` method:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'POST'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` headers:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Authorization:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `Bearer \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'Content-Type'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 'application/json'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` body:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` JSON`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`stringify`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` colaboradorId`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dataInicio:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`mes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"-01`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` dataFim:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\" `\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`mes`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"-31`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// ou último dia do mês exato`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }),`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` )`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Resposta inclui URL S3 do PDF assinado (PAdES)`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`url`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` } `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` resp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`json`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` url`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`gotchas-conhecidos`,children:`Gotchas conhecidos`}),`\n`,_jsx(Warning,{title:`NSR é gerado pelo Pontua, NUNCA pelo cliente`,children:_jsxs(_components.p,{children:[`Não tente enviar `,_jsx(_components.code,{children:`nsr`}),` no payload de `,_jsx(_components.code,{children:`POST /registro-ponto`}),` — é\nignorado ou rejeitado. O backend gera sequencial conforme Art. 80 da\nPortaria 671. Misturar fontes de NSR é violação regulatória.`]})}),`\n`,_jsx(Warning,{title:`Timezone obrigatório em ISO 8601`,children:_jsxs(_components.p,{children:[`Sempre envie `,_jsx(_components.code,{children:`dataHora`}),` com offset explícito (ex: `,_jsx(_components.code,{children:`2026-04-26T08:30:00-03:00`}),`).\nStrings sem timezone são interpretadas como BRT, mas isso pode falhar\nem horário de verão (ainda que abolido em 2019, alguns ambientes legados\ntêm problemas). Para máxima portabilidade: `,_jsx(_components.strong,{children:`sempre com offset`}),`.`]})}),`\n`,_jsx(Warning,{title:`Fechamento bloqueia ajustes`,children:_jsxs(_components.p,{children:[`Se o período da `,_jsx(_components.code,{children:`dataHora`}),` está em fechamento concluído, o registro\né `,_jsx(_components.strong,{children:`rejeitado`}),` ou cai em fluxo de ajuste com aprovação. Verifique\no status do fechamento antes de bulk-import histórico — ver\n`,_jsx(_components.a,{href:`/referencia/fechamento`,children:`Fechamento`}),`.`]})}),`\n`,_jsxs(Warning,{title:`Geolocalização e fotos têm peso LGPD alto`,children:[_jsx(_components.p,{children:`São dados pessoais sensíveis. Sua integração deve:`}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Tratar com base legal explícita (consentimento ou execução de contrato)`}),`\n`,_jsx(_components.li,{children:`Não trafegar fora do Brasil sem AIPD (Avaliação de Impacto)`}),`\n`,_jsx(_components.li,{children:`Implementar política de retenção curta (URLs S3 com TTL no seu lado também)`}),`\n`]})]}),`\n`,_jsx(Warning,{title:`Endpoints deprecated migraram para Frequência`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`GET /registro-ponto/gestao/dashboard`}),`, `,_jsx(_components.code,{children:`GET /registro-ponto/gestao/minha-equipe`}),`,\n`,_jsx(_components.code,{children:`GET /registro-ponto/frequencias`}),` e variantes estão `,_jsx(_components.strong,{children:`deprecated`}),`.\nUse a tag `,_jsx(_components.code,{children:`Frequency`}),` para agregados — ver `,_jsx(_components.a,{href:`/referencia/frequencia`,children:`Frequência`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`endpoints-expostos-publicamente`,children:`Endpoints expostos publicamente`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Método`}),_jsx(_components.th,{children:`Rota`}),_jsx(_components.th,{children:`Descrição`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto`})}),_jsx(_components.td,{children:`Lista com filtros`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto/ultimos`})}),_jsx(_components.td,{children:`Últimas batidas de um colaborador`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto/localizacoes`})}),_jsx(_components.td,{children:`Coordenadas GPS dos registros`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`GET`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto/fotos`})}),_jsx(_components.td,{children:`URLs S3 das fotos (com expiração)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`POST`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto`})}),_jsx(_components.td,{children:`Registrar batida individual via API`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`POST`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto/afd`})}),_jsx(_components.td,{children:`Importar arquivo AFD em massa`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`POST`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`/registro-ponto/recibo`})}),_jsx(_components.td,{children:`Gerar comprovantes PDF assinados`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Schema completo + try-it em `,_jsx(_components.a,{href:`/api-reference#tag/Registro-de-Ponto`,children:`Referência da API`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`veja-também`,children:`Veja também`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/referencia/frequencia`,children:`Frequência`}),` — agregados diários consolidados`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/referencia/relatorios`,children:`Relatórios`}),` — gerar AFD/AEJ/Espelho de Ponto oficiais`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/referencia/fechamento`,children:`Fechamento`}),` — verificar antes de bulk-import`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/conceitos/idempotencia`,children:`Idempotência`}),` — evitar batidas duplicadas em retry`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Registros de Ponto","description":"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.","href":"/referencia/registros-ponto"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Contexto regulatório","slug":"contexto-regulatório","depth":2,"children":[]},{"title":"Origens de registro","slug":"origens-de-registro","depth":2,"children":[]},{"title":"Endpoints públicos","slug":"endpoints-públicos","depth":2,"children":[{"title":"Registrar batidas","slug":"registrar-batidas","depth":3,"children":[]},{"title":"Consultar registros","slug":"consultar-registros","depth":3,"children":[]}]},{"title":"Modelo de dados (campos chave)","slug":"modelo-de-dados-campos-chave","depth":2,"children":[]},{"title":"Fluxos típicos","slug":"fluxos-típicos","depth":2,"children":[{"title":"Registrar batida em REP customizado","slug":"registrar-batida-em-rep-customizado","depth":3,"children":[]},{"title":"Sync incremental de batidas para BI","slug":"sync-incremental-de-batidas-para-bi","depth":3,"children":[]},{"title":"Gerar comprovantes mensais","slug":"gerar-comprovantes-mensais","depth":3,"children":[]}]},{"title":"Gotchas conhecidos","slug":"gotchas-conhecidos","depth":2,"children":[]},{"title":"Endpoints expostos publicamente","slug":"endpoints-expostos-publicamente","depth":2,"children":[]},{"title":"Veja também","slug":"veja-também","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"pontua","siteName":"Pontua","title":"Registros de Ponto - Pontua","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-27T11:28:09.629Z","originalFileLocation":"referencia/registros-ponto.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Pontua\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/pontua/favicon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/pontua/favicon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/pontua/favicon.png\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/pontua/favicon.png\">\u003cmeta data-mint-head property=\"og:title\" content=\"Registros de Ponto - Pontua\">\u003cmeta data-mint-head property=\"og:description\" content=\"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Pontua API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.pontua.com.br/referencia/registros-ponto\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://www.pontua.com.br/og-image.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Registros de Ponto - Pontua\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://www.pontua.com.br/og-image.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/pontua/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Pontua\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#081A4F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.pontua.com.br/referencia/registros-ponto\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/referencia/registros-ponto.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.pontua.com.br/#organization\",\"name\":\"Pontua\",\"url\":\"https://developers.pontua.com.br\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://pontua.com.br/wp-content/uploads/2026/04/pontua_logo.svg\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.pontua.com.br#website\",\"name\":\"Pontua\",\"url\":\"https://developers.pontua.com.br\",\"publisher\":{\"@id\":\"https://developers.pontua.com.br/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.pontua.com.br/referencia/registros-ponto#webpage\",\"url\":\"https://developers.pontua.com.br/referencia/registros-ponto\",\"name\":\"Registros de Ponto\",\"description\":\"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\",\"dateModified\":\"2026-04-27T11:28:09.629Z\",\"isPartOf\":{\"@id\":\"https://developers.pontua.com.br#website\"},\"breadcrumb\":{\"@id\":\"https://developers.pontua.com.br/referencia/registros-ponto#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.pontua.com.br/referencia/registros-ponto#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Referência por recurso\",\"item\":\"https://developers.pontua.com.br/referencia/api-keys\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Registros de Ponto\",\"item\":\"https://developers.pontua.com.br/referencia/registros-ponto\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.pontua.com.br/referencia/registros-ponto#article\",\"headline\":\"Registros de Ponto\",\"name\":\"Registros de Ponto\",\"description\":\"Marcações de jornada de trabalho — registro via API, importação AFD (Portaria 671), consulta histórica, geração de comprovantes e auditoria com NSR sequencial.\",\"url\":\"https://developers.pontua.com.br/referencia/registros-ponto\",\"mainEntityOfPage\":{\"@id\":\"https://developers.pontua.com.br/referencia/registros-ponto#webpage\"},\"image\":\"https://www.pontua.com.br/og-image.png\",\"dateModified\":\"2026-04-27T11:28:09.629Z\",\"publisher\":{\"@id\":\"https://developers.pontua.com.br/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.pontua.com.br#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Pontua\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Pontua","nav":{"global":null,"tabs":[{"tab":"Guias","groups":[{"group":"Começando","pages":[{"title":"Introdução","href":"/introducao"},{"title":"Quick Start","href":"/quick-start"}]},{"group":"Conceitos","pages":[{"title":"Autenticação","href":"/conceitos/autenticacao"},{"title":"Multi-tenant","href":"/conceitos/multi-tenant"},{"title":"Paginação","href":"/conceitos/paginacao"},{"title":"Erros","href":"/conceitos/erros"},{"title":"Idempotência","href":"/conceitos/idempotencia"},{"title":"Versionamento","href":"/conceitos/versionamento"},{"title":"Rate Limits","href":"/conceitos/rate-limits"},{"title":"Webhooks","href":"/conceitos/webhooks"}]},{"group":"Guias práticas","pages":[{"title":"Cadastrar primeiro colaborador via API","href":"/guias-praticas/primeiro-colaborador"},{"title":"Importar colaboradores em massa via CSV","href":"/guias-praticas/importar-em-massa-csv"},{"title":"Puxar folha do mês","href":"/guias-praticas/puxar-folha-do-mes"},{"title":"Sincronizar frequência com ERP/folha externa","href":"/guias-praticas/sincronizar-frequencia-erp"},{"title":"Gerar relatório de Banco de Horas","href":"/guias-praticas/relatorio-banco-horas"},{"title":"Lidar com Fechamento de Período","href":"/guias-praticas/lidar-com-fechamento"}]},{"group":"Referência por recurso","pages":[{"title":"Gestão de Tokens (API Keys)","href":"/referencia/api-keys"},{"title":"Colaboradores","href":"/referencia/colaboradores"},{"title":"Estrutura Organizacional","href":"/referencia/estrutura-organizacional"},{"title":"Turnos e calendario","href":"/referencia/turnos-e-calendario"},{"title":"Registros de Ponto","href":"/referencia/registros-ponto"},{"title":"Ajustes de Registro e Motivos","description":"Workflow de correção de batidas — solicitar ajuste, aprovar/rejeitar, vincular colaboradores. Catálogo de motivos (atestado, esquecimento, equipamento).","href":"/referencia/ajustes-e-motivos"},{"title":"Frequência","href":"/referencia/frequencia"},{"title":"Regras de Ponto","href":"/referencia/regras-de-ponto"},{"title":"Banco de Horas","href":"/referencia/banco-horas"},{"title":"Fechamento","href":"/referencia/fechamento"},{"title":"Folha de Pagamento","href":"/referencia/folha-de-pagamento"},{"title":"Relatórios","href":"/referencia/relatorios"}]}]},{"tab":"Referência da API","pages":[{"title":"Referência da API","href":"/api-reference/api-keys/lista-as-api-keys-da-unidade-de-negócio"}]}]},"title":"Registros de Ponto - Pontua","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":[],"chunks":[]}