Waapi - HCM Senior icon

Waapi holerite, facial ponto and férias data

Senior Sistemas · Business 4.8 ★

Waapi is Senior Sistemas' Android employee app for workers at companies that run Gestão de Pessoas | HCM on the Senior X platform. After sign-in, home cards open a pay stub (holerite), professional profile and employment contract, a people search, férias scheduling, coworker feedback, birthday and company-anniversary lists, a Happiness Index mood check-in, and GPS-and-face ponto punches, plus an optional Club Wiipo payroll-debit marketplace HR can turn on. Senior Sistemas, based in Blumenau, Santa Catarina, is one of Brazil's largest management-software vendors; the Play listing is a free Business app priced in BRL, rated 4.8 from about 107,000 reviews with 1 million-plus downloads, last updated 8 Oct 2026, and ships tour copy in Portuguese, Spanish and English — sitting next to Workday, ADP Mobile Solutions and greytHR as the employee self-service front of Senior's Brazilian HCM suite.

Holerite files keyed by competence return an authenticated reportUrl plus netPay in BRL for the worker's registerNumber. Facial punches stamp a receipt with date, time, timeZone, cpf, cnpj, pis and identification, plus an outsideFence flag when GPS geolocation sits outside the site; the same day's marcações roll into hoursWorked on the Hours / Espelho ledger. Employment cards add hireDate, jobPosition, department, costCenter and workShift next to the employer CNPJ; personal rows carry birthday and nis. Open férias windows expose vacationDays, scheduledStartDate and status. Happiness Index posts store mood with reasons and reject a second submit when alreadyAnswered is true; coworker notes pair fromEmployeeId with toEmployeeId.

Payroll bots match each competence's reportUrl to the bank credit before month-end close; time-and-attendance ledgers rebuild the cartão-ponto for eSocial from punch receipts; workforce planners overlay scheduled férias on the team calendar; people-analytics stacks join daily mood with jobPosition. openData Studio turns those records into callable open data.

Screenshots

  • Waapi - HCM Senior screenshot 1
  • Waapi - HCM Senior screenshot 2
  • Waapi - HCM Senior screenshot 3
  • Waapi - HCM Senior screenshot 4
  • Waapi - HCM Senior screenshot 5
  • Waapi - HCM Senior screenshot 6
  • Waapi - HCM Senior screenshot 7
  • Waapi - HCM Senior screenshot 8

API surface

The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.

  • Tenant login settings

    POST /v1/tenancy/login-options osint

    Resolves a typed tenant domain into the login-provider list the sign-in screen shows before username and password.

    Auth: Unauthenticated. Body is tenantDomain (the part after @ in the worker's username). Response names the tenant and which login providers it allows.

    • tenantDomain
    • scope
    • tenantName
    • cookieDomain
    • authenticationTypes
    • idpActive
    • loginProviders
    • changePasswordSettings
    • rememberMeSettings
    POST /v1/tenancy/login-options HTTP/1.1
    Content-Type: application/json
    Accept: application/json
    
    {
      "tenantDomain": "acme.hcm",
      "scope": "mobile"
    }
    {
      "tenantName": "acme",
      "tenantDomain": "acme.hcm",
      "cookieDomain": ".acme.hcm",
      "authenticationTypes": ["USER_PASSWORD", "SAML"],
      "idpActive": false,
      "loginProviders": {
        "saml": false,
        "seniorIdentity": false,
        "legacy": true
      },
      "changePasswordSettings": {
        "allowed": true
      },
      "rememberMeSettings": {
        "allowed": true
      }
    }
  • Platform login

    POST /v1/identity/worker-session osint

    Exchanges a tenant-domain username and password for the jsonToken that gates later HCM calls; MFA tenants receive mfaInfo.temporaryToken instead.

    Auth: Unauthenticated. Body is username (user@tenant-domain), password and scope=mobile. Accept-Language is pt-BR / en-US / es-ES. Later calls send Authorization: Bearer from jsonToken.access_token.

    • username
    • password
    • scope
    • jsonToken
    • access_token
    • refresh_token
    • expires_in
    • token_type
    • fullName
    • tenantName
    • mfaInfo
    • temporaryToken
    • mfaStatus
    • resetPasswordInfo
    POST /v1/identity/worker-session HTTP/1.1
    Content-Type: application/json
    Accept: application/json
    Accept-Language: pt-BR
    
    {
      "username": "[email protected]",
      "password": "******",
      "scope": "mobile"
    }
    {
      "jsonToken": "{\"token_type\":\"Bearer\",\"access_token\":\"<access_token>\",\"refresh_token\":\"<refresh_token>\",\"expires_in\":3600,\"username\":\"[email protected]\",\"fullName\":\"Ana Silva\",\"tenantName\":\"acme\",\"email\":\"[email protected]\",\"locale\":\"pt-BR\"}",
      "mfaInfo": null,
      "resetPasswordInfo": null,
      "emailAddress": null
    }
  • Application-key login

    POST /v1/collectors/bind-device osint

    Binds a phone as a Senior ponto collector by exchanging the scanned application key and secret for a tenant jsonToken.

    Auth: Unauthenticated. Body is accessKey, secret, tenantName and scope=mobile from the QR the device scans. Returns jsonToken for ponto sync on that tenant.

    • accessKey
    • secret
    • tenantName
    • scope
    • jsonToken
    • access_token
    • refresh_token
    • expires_in
    POST /v1/collectors/bind-device HTTP/1.1
    Content-Type: application/json
    Accept: application/json
    
    {
      "accessKey": "<access-key>",
      "secret": "******",
      "tenantName": "acme",
      "scope": "mobile"
    }
    {
      "jsonToken": "{\"token_type\":\"Bearer\",\"access_token\":\"<access_token>\",\"refresh_token\":\"<refresh_token>\",\"expires_in\":3600,\"tenantName\":\"acme\"}"
    }
  • MFA login

    POST /v1/identity/mfa-complete osint

    Finishes MFA after login returned mfaInfo.temporaryToken, minting the same jsonToken later HCM calls use.

    Auth: Unauthenticated except X-Tenant. Body is temporaryToken from mfaInfo plus validationCode. Returns jsonToken on success.

    • temporaryToken
    • validationCode
    • jsonToken
    • access_token
    • refresh_token
    • expires_in
    POST /v1/identity/mfa-complete HTTP/1.1
    Content-Type: application/json
    X-Tenant: acme
    Accept: application/json
    
    {
      "temporaryToken": "mfa-tmp-77a1",
      "validationCode": "847291"
    }
    {
      "jsonToken": "{\"token_type\":\"Bearer\",\"access_token\":\"<access_token>\",\"refresh_token\":\"<refresh_token>\",\"expires_in\":3600,\"username\":\"[email protected]\"}"
    }
  • Platform user

    GET /v1/identity/me osint

    Loads the signed-in Senior X user behind Meu Perfil — name, email, tenant, photo and whether face biometry is already enrolled.

    Auth: Bearer access_token from jsonToken. Optional query includePhoto and username.

    • id
    • username
    • fullName
    • email
    • tenantDomain
    • tenantName
    • tenantLocale
    • blocked
    • admin
    • changePassword
    • allowedToChangePassword
    • activeBiometry
    • photoUrl
    • authenticationType
    • includePhoto
    GET /v1/identity/me?includePhoto=true&username=ana.silva%40acme.hcm HTTP/1.1
    Authorization: Bearer <access_token>
    Accept: application/json
    {
      "id": "u-44102",
      "username": "[email protected]",
      "fullName": "Ana Silva",
      "email": "[email protected]",
      "tenantDomain": "acme.hcm",
      "tenantName": "acme",
      "tenantLocale": "pt-BR",
      "locale": "pt-BR",
      "blocked": false,
      "admin": false,
      "changePassword": false,
      "allowedToChangePassword": true,
      "activeBiometry": true,
      "photoUrl": "/media/people/u-44102.jpg",
      "authenticationType": "USER_PASSWORD"
    }
  • Employee contract (jornada)

    GET /v1/workforce/contracts opendata

    Loads the signed-in worker's employment-contract card — hire date, matricula, job, department, cost center, shift and employer CNPJ — and the same filter drives people search.

    Auth: Bearer access_token from the worker session jsonToken.

    • id
    • contractType
    • hireDate
    • dismissalDate
    • registerNumber
    • jobPosition
    • department
    • costCenter
    • workShift
    • employer
    • cnpj
    • person
    • fullName
    • cpf
    GET /v1/workforce/contracts?filter=person.cpf eq '12345678900'&size=20&offset=0 HTTP/1.1
    Authorization: Bearer <access_token>
    Accept: application/json
    {
      "contents": [
        {
          "id": "e-44102",
          "contractType": "EMPLOYEE",
          "hireDate": "2019-03-11",
          "dismissalDate": null,
          "registerNumber": 10432,
          "jobPosition": {"id": "jp-88", "name": "Analista de DP", "codcar": "ANL-DP"},
          "department": {"id": "dept-folha", "code": "010", "name": "Departamento Pessoal"},
          "costCenter": {"id": "cc-12", "name": "Administrativo", "codccu": "ADM"},
          "workShift": {"id": "ws-1", "name": "Comercial", "workload": 8800},
          "employer": {"id": "co-1001", "numemp": 1, "tradingName": "Acme", "companyName": "Acme Indústria Ltda", "cnpj": "12345678000190"},
          "person": {"id": "p-44102", "nickname": "Ana", "fullName": "Ana Silva", "cpf": "12345678900"}
        }
      ]
    }
  • Person profile

    GET /v1/workforce/people osint

    Returns the personal record behind Meu Perfil — name, birthday, CPF, PIS/NIS, email and phone — and feeds the Birthdays home card from birthday.

    Auth: Bearer access_token from the worker session jsonToken.

    • id
    • firstname
    • lastname
    • fullName
    • nickname
    • birthday
    • gender
    • cpf
    • nis
    • emails
    • phoneContact
    GET /v1/workforce/people?filter=cpf eq '12345678900'&size=20&offset=0 HTTP/1.1
    Authorization: Bearer <access_token>
    Accept: application/json
    {
      "contents": [
        {
          "id": "p-44102",
          "firstname": "Ana",
          "middlename": "",
          "lastname": "Silva",
          "fullName": "Ana Silva",
          "nickname": "Ana",
          "birthday": "1992-10-14",
          "gender": "FEMALE",
          "cpf": "12345678900",
          "nis": [{"id": "nis-1", "number": "12345678901", "registrationDate": "2011-02-01"}],
          "emails": [{"id": "em-1", "email": "[email protected]", "emailType": "CORPORATE"}],
          "phoneContact": [{"countryCode": "55", "localCode": "47", "number": "999990000", "phoneContactType": "MOBILE"}]
        }
      ]
    }
  • Holerite by competence

    POST /v1/payroll/competence-stub openfinance

    Returns the authenticated URL of a holerite (pay stub) for the signed-in worker and competence, the object the Financial Data card opens.

    Auth: Bearer access_token from the worker session jsonToken.

    • employeeId
    • competence
    • registerNumber
    • reportUrl
    • netPay
    • currency
    POST /v1/payroll/competence-stub HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "employeeId": "e-44102",
      "competence": "2026-09"
    }
    {
      "competence": "2026-09",
      "employeeId": "e-44102",
      "registerNumber": 10432,
      "reportUrl": "/files/payroll/2026-09/e-44102.pdf",
      "netPay": 4820.15,
      "currency": "BRL"
    }
  • Vacation periods

    POST /v1/leave/accrual-windows opendata

    Lists open and paid férias periods for the worker and any already-scheduled stretch the Vacation card can book.

    Auth: Bearer access_token from the worker session jsonToken.

    • employeeId
    • periods
    • id
    • status
    • startDate
    • endDate
    • vacationDays
    • scheduledStartDate
    • scheduledDays
    POST /v1/leave/accrual-windows HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "employeeId": "e-44102"
    }
    {
      "periods": [
        {
          "id": "per-2025",
          "status": "OPEN",
          "startDate": "2025-03-11",
          "endDate": "2026-03-10",
          "vacationDays": 30,
          "scheduledStartDate": "2026-12-21",
          "scheduledDays": 20
        }
      ]
    }
  • Facial ponto punch

    POST /v1/timeclock/face-mark opendata

    Records a hold-to-register facial ponto punch with GPS and returns the receipt shown after capture.

    Auth: Bearer access_token from the worker session or the collector-binding jsonToken.

    • employeeId
    • geolocation
    • online
    • appVersion
    • platform
    • identification
    • date
    • time
    • timeZone
    • employeeName
    • cpf
    • companyName
    • cnpj
    • pis
    • outsideFence
    POST /v1/timeclock/face-mark HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "employeeId": "e-44102",
      "geolocation": {"latitude": -26.9194, "longitude": -49.0661},
      "online": true,
      "appVersion": "5.2.2",
      "platform": "ANDROID"
    }
    {
      "identification": "clk-77a1",
      "date": "2026-10-11",
      "time": "12:01:03",
      "timeZone": "America/Sao_Paulo",
      "employeeName": "Ana Silva",
      "cpf": "123.456.789-00",
      "companyName": "Acme Indústria Ltda",
      "cnpj": "12.345.678/0001-90",
      "pis": "123.45678.90-1",
      "outsideFence": false
    }
  • Clocking events of the day

    POST /v1/timeclock/day-ledger opendata

    Pages today's marcações and total hours for the Hours / Espelho tabs after a punch, including unsynced rows waiting for connectivity.

    Auth: Bearer access_token from the worker session or the collector-binding jsonToken.

    • employeeId
    • date
    • hoursWorked
    • events
    • identification
    • time
    • timeZone
    POST /v1/timeclock/day-ledger HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "employeeId": "e-44102",
      "date": "2026-10-11"
    }
    {
      "hoursWorked": "07:58",
      "events": [
        {
          "identification": "clk-77a0",
          "date": "2026-10-11",
          "time": "08:02:11",
          "timeZone": "America/Sao_Paulo"
        },
        {
          "identification": "clk-77a1",
          "date": "2026-10-11",
          "time": "12:01:03",
          "timeZone": "America/Sao_Paulo"
        }
      ]
    }
  • Happiness Index mood

    POST /v1/pulse/daily-mood opendata

    Stores today's Happiness Index feeling for the signed-in worker; a second submit the same day is rejected.

    Auth: Bearer access_token from the worker session jsonToken.

    • mood
    • language
    • notes
    • reasons
    • accepted
    • alreadyAnswered
    POST /v1/pulse/daily-mood HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "mood": "HAPPY",
      "language": "pt-BR",
      "notes": "Sprint delivered",
      "reasons": ["TEAM", "WORKLOAD"]
    }
    {
      "accepted": true,
      "alreadyAnswered": false
    }
  • Coworker feedback

    POST /v1/recognition/notes opendata

    Sends or requests a feedback note to a coworker, the object the Feedback home card posts.

    Auth: Bearer access_token from the worker session jsonToken.

    • fromEmployeeId
    • toEmployeeId
    • message
    • requestOnly
    • feedbackId
    • createdAt
    POST /v1/recognition/notes HTTP/1.1
    Authorization: Bearer <access_token>
    Content-Type: application/json
    
    {
      "fromEmployeeId": "e-44102",
      "toEmployeeId": "e-44188",
      "message": "Ótimo suporte no fechamento da folha.",
      "requestOnly": false
    }
    {
      "feedbackId": "fb-19c2",
      "fromEmployeeId": "e-44102",
      "toEmployeeId": "e-44188",
      "message": "Ótimo suporte no fechamento da folha.",
      "createdAt": "2026-10-11T12:15:00Z"
    }

Data categories

  • authentication
  • tenant settings
  • employee profiles
  • employment contracts
  • payroll / holerite
  • people directory
  • clock punches
  • vacation
  • happiness index
  • coworker feedback
  • birthdays

Where teams use this data

  • Holerite-to-ledger close

    A payroll bot pulls each competence's reportUrl and netPay in BRL, then matches the stub to the worker's bank credit before closing the month.

  • eSocial-ready ponto ledger

    Time-and-attendance software ingests facial punches with date, time, timeZone, cpf, cnpj, pis and identification so Brazilian employers can rebuild the cartão-ponto and flag outsideFence marks.

  • Férias calendar overlay

    Workforce planners read open periods (status, vacationDays, scheduledStartDate) against hireDate and registerNumber from the contract card and block clashes on the team calendar.

  • People-analytics mood overlay

    HR analytics stacks join daily mood and reasons with jobPosition and hireDate from the contract card to chart Happiness Index trends by team without opening the app.

Frequently asked questions

What employee data does the Waapi HCM API expose?

The employee surface covers tenant sign-in (jsonToken, tenantName, authenticationTypes), application-key binding (accessKey, secret), the signed-in user (fullName, photoUrl, activeBiometry), contract cards (hireDate, registerNumber, jobPosition), personal records (cpf, birthday, nis), holerite URLs (reportUrl, competence), facial ponto punches (date, cpf, identification), férias periods (vacationDays), Happiness Index mood check-ins, and coworker feedback notes.

How does Waapi authenticate workers?

The sign-in flow first resolves the tenant domain, then posts username (including the tenant domain) and password with scope=mobile. The response jsonToken carries access_token and refresh_token; later HCM calls send Authorization: Bearer. MFA tenants receive mfaInfo.temporaryToken instead of jsonToken and finish with a validationCode. Ponto collector phones can instead scan an application-key QR (accessKey and secret) and exchange those for the same jsonToken without a worker password.

Can I read clock punches and payslips, not just the profile?

Yes. Facial punches return date, time, timeZone, cpf, cnpj, pis, identification and an outsideFence flag; the day ledger adds hoursWorked. The holerite call returns reportUrl and netPay for the competence's pay stub — the same objects the Marcação de ponto and Financial Data screens render.

Which country is this employee API built for?

Brazil. Senior HCM is a Brazilian payroll and ponto stack (CPF, CNPJ, PIS, férias, eSocial-style clock receipts). The Play listing is priced in BRL with 1 million-plus downloads.

Apps similar to Waapi - HCM Senior

  • TOTVS Meu RH — TOTVS Meu RH is TOTVS's employee self-service app, natively integrated with Protheus, RM and Datasul HR, for geolocated clock-in, pay-slip downloads and vacation requests.
  • ADP Mobile Solutions — ADP Mobile Solutions is ADP's employee self-service app for companies on products such as Workforce Now, covering pay and W-2 statements, time-off requests, and punch in/out.
  • Workday — The Workday mobile app is an employee HCM client for checking in and out of work, viewing payslips, requesting time off, and submitting timesheets.
  • greytHR — greytHR is an employee self-service app for companies on the greytHR platform, covering leave applications, facial-recognition attendance, and payslip downloads.
  • My Ahgora — My Ahgora is Ahgora's employee app for companies that use its time-and-attendance stack, giving workers time stamps, time-bank balances, and timesheet-adjustment requests.
  • Gen.te Mobile — Gen.te Mobile is LG lugar de gente's HR self-service app for viewing paychecks, scheduling vacation, clocking ponto, and opening registration information.
  • Darwinbox — Darwinbox is an employee HCM app for viewing and downloading payslips, applying for leave, claiming expenses, and finding colleagues in a directory.
  • UKG Pro — The UKG Pro mobile app lets employees clock in and out, manage time-off requests, and view personal HR and pay information.

Topics

  • Waapi API
  • HCM Senior API
  • Senior Sistemas employee API
  • holerite API
  • marcação de ponto API
  • férias API
  • Brazilian payroll API
  • happiness index API

Need this app's data API integrated?

We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.

  • NDA + SOW on every engagement
  • Delivery in 3–7 days
  • Payment only after acceptance
  • Work scoped to authorized use

Get a quote