POST
/api/v1/espelhos-ponto

Solicitar geração de Espelho de Ponto

Recebe o mesmo snapshot fechado da jornada e inicia a geração assíncrona de um PDF por empregado. Cada colaborador pode trazer espelho_exibicao, com a grade Data, Escala, Marcações, Ocorrência, Motivo e Resultados e o bloco ordenado de totais; esse bloco é sempre mantido integralmente na mesma página. A trilha opcional aprovacao.gestor e aprovacao.colaborador continua separada; quando o aceite do colaborador ainda não ocorreu, envie colaborador=null, e o PDF indicará que o aceite digital não foi registrado. O YouuREP calcula o código de integridade a partir do snapshot recebido, acrescenta o registro e o hash do INPI e assina obrigatoriamente cada PDF em PAdES. Para a mesma empresa, empregado e período, uma nova versão preliminar substitui a anterior somente após ser persistida; quando gestor e colaborador constam no snapshot, o arquivo é definitivo e solicitações futuras reutilizam sua geração. Requer arquivos:write e aceita Idempotency-Key. Se a geração idempotente anterior tiver falhado, uma nova chamada recoloca a mesma geração na fila sem criar outro identificador.
Autenticação:
🔑 API Key

Corpo

empresa_idnumber
Obrigatório

ID da empresa no YouuREP.

snapshotobject
Obrigatório

Snapshot completo e validado do período. colaboradores[].espelho_exibicao é opcional e define a apresentação fiel da grade e dos totais; clientes antigos sem esse bloco continuam compatíveis com o layout derivado dos campos fiscais. Em colaboradores[].aprovacao, gestor e colaborador são opcionais e podem ser null. Gestor aceita nome, papel e aprovado_em; colaborador aceita nome, documento e aceito_em. Datas devem estar em ISO 8601 com offset. Não envie um aceite que não tenha sido autenticado.

assinar_espelhoboolean

Campo legado mantido por compatibilidade. A assinatura PAdES é sempre aplicada, mesmo quando o campo é omitido ou enviado como false.

Respostas

{
  "ok": true,
  "data": {
    "geracao_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "pending",
    "criado": true,
    "correlacao_id": "36c9f170-8120-4d70-a36a-830e08d37071"
  }
}
curl --request POST \
  'https://rep-gestor.youuponto.com/api/v1/espelhos-ponto' \
  --header 'x-api-key: yk_sua_api_key' \
  --header 'Content-Type: application/json' \
  --data '{
  "empresa_id": 1,
  "snapshot": {
    "schema_version": "1.0",
    "snapshot_id": "550e8400-e29b-41d4-a716-446655440000",
    "generated_at": "2026-07-24T13:18:00-03:00",
    "source_system": "YOUPONTO",
    "empresa": {
      "id_externo": "empresa-demo",
      "rep_p_id": 1,
      "razao_social": "Empresa Demonstração Ltda.",
      "nome_fantasia": "Empresa Demonstração",
      "cnpj_cpf": "46630611000114"
    },
    "periodo": {
      "inicio": "2026-07-01",
      "fim": "2026-07-31"
    },
    "programa": {
      "nome": "YouuPonto",
      "versao": "1.0",
      "desenvolvedor_tipo": "1",
      "desenvolvedor_documento": "46630611000114",
      "desenvolvedor_nome": "YOUU JOB TECNOLOGIA LTDA",
      "desenvolvedor_email": "youujob@youujob.com"
    },
    "reps": [],
    "colaboradores": [
      {
        "id_externo": "2c31f45a-1437-4bb5-9032-00cd5248b3fa",
        "rep_p_id": 123,
        "nome": "Bruno Fabio",
        "cpf": "12345678909",
        "matricula": "00123",
        "data_admissao": "2024-01-15",
        "cargo": "Analista",
        "horarios_contratuais": [],
        "dias": [],
        "totais": {
          "Horas Previstas": "184:00",
          "Horas Trabalhadas": "176:21",
          "Horas Extras": "00:00",
          "Indenização intrajornada": "00:00",
          "Banco de Horas": "+04:00",
          "Adicional Noturno": "00:00",
          "Faltas": "00:00",
          "Déficits de jornada": "00:00"
        },
        "espelho_exibicao": {
          "linhas": [
            {
              "data": "2026-07-21",
              "data_rotulo": "21/07 Ter",
              "escala": "5x2",
              "marcacoes": "08:00 (Auto), 12:00 (Auto), 13:00 (Auto), 17:00 (Auto)",
              "ocorrencias": [],
              "ocorrencia_fallback": [],
              "motivo": "",
              "resultados": [
                "Horas Trabalhadas: 08:00",
                "Horas Previstas: 08:00"
              ]
            }
          ],
          "totais": [
            {
              "descricao": "Horas Previstas",
              "total": "184:00"
            },
            {
              "descricao": "Horas Trabalhadas",
              "total": "176:21"
            },
            {
              "descricao": "Horas Extras",
              "total": "00:00"
            },
            {
              "descricao": "Indenização intrajornada",
              "total": "00:00"
            },
            {
              "descricao": "Banco de Horas",
              "total": "+04:00"
            },
            {
              "descricao": "Adicional Noturno",
              "total": "00:00"
            },
            {
              "descricao": "Faltas",
              "total": "00:00"
            },
            {
              "descricao": "Déficits de jornada",
              "total": "00:00"
            }
          ]
        },
        "aprovacao": {
          "gestor": {
            "nome": "Administrador YouuPonto",
            "papel": "superadmin",
            "aprovado_em": "2026-07-21T20:38:00-03:00"
          },
          "colaborador": null
        }
      }
    ]
  },
  "assinar_espelho": true
}'

Exemplos de Resposta

{
  "ok": true,
  "data": {
    "geracao_id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "pending",
    "criado": true,
    "correlacao_id": "36c9f170-8120-4d70-a36a-830e08d37071"
  }
}