Bem vindo ao Tangerino Integrations

Esta é uma documentação direcionada à desenvolvedores que viabiliza a integração do Tangerino com seu próprio sistema =)

Token de acesso

O primeiro passo para utilizar nossas APIs é obter o token de acesso.

menu tangerino

Conhecendo o Swagger

O Swagger é uma ferramenta que utilizamos para mapear toda a nossa API e irá te ajudar a construir a estrutura de dados para cada endpoint e também executar testes para entender na prática como funciona cada endpoint da nossa API.

Se quiser saber mais sobre esta ferramenta, acesse: Modelando APIs REST com Swagger

Agora que você já sabe do que se trata, acesse aqui nossa api.

Primeiro teste

Agora que você já possui um token e já deu uma olhada em nosso Swagger, podemos executar um primeiro teste.

Inserindo o token de acesso

Para se inserir o token é necessário clicar no botão localizado acima da lista de APIs disponíveis, como na imagem abaixo.

botão para adicionar token

Ao clicar neste, é aberto uma janela na qual você tem a possibilidade de inserir o token que foi adquirido, pelos meios indicados à cima. Após confimação, todas as rotas poderão ser acessadas usando como referência o token indicado.

modal para inserção do token

Iniciando o teste

primeiro teste

Agora você já está apto a implementar essa requisição de teste dentro do seu próprio sistema, onde irá ocorrer as integrações.

GET http://employer.tangerino.com.br/test

Cadastros básicos

Vamos aprender agora como integrar algumas consultas e cadastros básicos dentro do Tangerino, mas primeiramente se ligue nestes quatro conceitos.

Cargo

Localize a API job-role-controller no Swagger e abra o endpoint POST /job-role/register. Observe que o Body desta requisição é um objeto chamado JobRoleDTO que possui vários atributos, porém para cadastrar um novo cargo vamos utilizar apenas dois atributos, sendo opcional o "externalId".

.

{
  "description": "Diretor Comercial",
  "externalId": "00001"
}

Execute a requisição e pronto, seu novo cargo foi registrado e estará disponível para ser associado aos colaboradores.

Observe que a resposta da requisição POST retornou o json acrescido do atributo "id", que no momento do cadastro foi auto gerado pelo Tangerino.

Você pode utilizar este id interno do tangerino ou o seu próprio externalId para consultar o registro através do endpoint

GET /job-role/find

Além disso você pode também consultar todos os seus cargos cadastrados através do endpoint GET /job-role/find-all que trás uma lista paginada dos registros.

Local de trabalho / Setor

Localize a API workplace-controller no Swagger e abra o endpoint POST /workplace/register.

.

{
  "name": "Diretor Comercial",
  "externalId": "00001"
}

Execute a requisição e pronto, seu novo Local de Trabalho foi registrado e estará disponível para ser associado aos colaboradores.

Observe que a resposta da requisição POST retornou o json acrescido do atributo "id", que no momento do cadastro foi auto gerado pelo Tangerino.

Você pode utilizar este id interno do tangerino ou o seu próprio externalId para consultar o registro através do endpoint

GET /workplace/find

Além disso você pode também consultar todos os seus cargos cadastrados através do endpoint GET /workplace/find-all que trás uma lista paginada dos registros.

Escala de trabalho

As escalas de trabalho devem ser cadastradas através do portal web app.tangerino.com.br, porém você precisará sincroniza-las em seu sistema para posteriormente associa-las em seus respectivos colaboradores.

Localize a API work-schedule-controller e abra o endpoint GET /work-schedule

Este endpoint também serve para consultar todos os registros de forma paginada, porém se trata de um objeto um pouco mais complexo, então vamos observar este exemplo:

{
  "id": #######,
  "name": "ESCALA SEG A SAB - 8HR AS 18HRS",
  "standard": false,
  "workScheduleTimetableList": [
    {
      "id": 2059250,
      "day": 2,
      "startShift1": 39600000,
      "endShift1": 54000000,
      "startShift2": 57600000,
      "endShift2": 75600000
    },
    {
      "id": 2059251,
      "day": 3,
      "startShift1": 39600000,
      "endShift1": 54000000,
      "startShift2": 57600000,
      "endShift2": 75600000
    },
    {
      "id": 2059252,
      "day": 4,
      "startShift1": 39600000,
      "endShift1": 54000000,
      "startShift2": 57600000,
      "endShift2": 75600000
    },
    {
      "id": 2059253,
      "day": 5,
      "startShift1": 39600000,
      "endShift1": 54000000,
      "startShift2": 57600000,
      "endShift2": 75600000
    },
    {
      "id": 2059254,
      "day": 6,
      "startShift1": 39600000,
      "endShift1": 54000000,
      "startShift2": 57600000,
      "endShift2": 75600000
    },
    {
      "id": 2059255,
      "day": 7,
      "startShift1": 39600000,
      "endShift1": 54000000
    }
  ]
}

Colaborador

Finalmente podemos cadastrar um novo colaborador!

Localize o employee-controller e vamos ao POST /employee/register

Vamos cadastrar agora o seguinte colaborador inserindo o json no body employeeDTO

{
  "name": "João da Silva",
  "email": "joaodasilva@mydomain.com",
  "birthDateInMillis": 1553113792002,
  "phone": "0123456789",
  "cpf": "99773635015",
  "ctps": "54321",
  "series": "123",
  "pis": "54238589918",
  "admissionDate": 1553113792002,
  "effectiveDate": 1553113792002,
  "workSchedule": #####,
  "workplace": #####,
  "timeZone": "SAO_PAULO"
}

Observe que você precisa informar o id de algum Local de Trabalho (workplace) e Escala (workSchedule) que cadastramos anteriormente.

Muito bom! Pode executar a requisição e terá seu novo colaborador registrado no Tangerino.

Um detalhe importante neste momento é no retorno desde endpoint, onde temos o json do colaborador cadastrado detalhadamente incluindo o atributo "pin" já possibilitando este novo colaborador a bater ponto no Tangerino.

Fuso horário / Time zone

Anteriormente cadastramos o colaborador João da Silva no fuso horário de São Paulo.

"timeZone": "SAO_PAULO"

O tangerino suporta a seguinte lista de diferentes horários.

BAHIA = America//Bahia
BELEM = America//Belem
CUIABA = America//Cuiaba
FORTALEZA = America//Fortaleza
MACEIO = America//Maceio
MANAUS = America//Manaus
NORONHA = America//Noronha
RECIVE = America//Recife
RIO_BRANCO = America//Rio_Branco
SAO_PAULO = America//Sao_Paulo
ARAGUAINA = America//Araguaina
BOA_VISTA = America//Boa_Vista
CAMPO_GRANDE = America//Campo_Grande
PORTO_VELHO = America//Porto_Velho
SANTAREM = America//Santarem
LISBOA = Europe//Lisbon
ILHA_MADEIRA = Atlantic//Madeira
AZORES = Atlantic//Azores
LONDRES = Europe//London
PARIS = Europe//Paris
EGITO = Africa//Cairo
MEXICO = America//Mexico_City
PANAMA = America//Panama 
LIMA = America//Lima
SANTIAGO = America//Santiago
NEW_YORK = America//New_York
MALINDI = Asia//Bahrain
SAN_JOSE = America//Costa_Rica
BUENOS_AIRES = America//Argentina//Buenos_Aires
ANDORRA = Europe//Andorra
DUBAI = Asia//Dubai
KABUL = Asia//Kabul
ANTIGUA = America//Antigua
ANGUILLA = America//Anguilla
TIRANE = Europe//Tirane
YEREVAN = Asia//Yerevan
LUANDA = Africa//Luanda
CASEY = Antarctica//Casey
DAVIS = Antarctica//Davis
DUMONTDURVILLE = Antarctica//DumontDUrville
MAWSON = Antarctica//Mawson
MCMURDO = Antarctica//McMurdo
PALMER = Antarctica//Palmer
ROTHERA = Antarctica//Rothera
SYOWA = Antarctica//Syowa
TROLL = Antarctica//Troll
VOSTOK = Antarctica//Vostok
CATAMARCA = America//Argentina//Catamarca
CORDOBA = America//Argentina//Cordoba
JUJUY = America//Argentina//Jujuy
LA_RIOJA = America//Argentina//La_Rioja
MENDOZA = America//Argentina//Mendoza
RIO_GALLEGOS = America//Argentina//Rio_Gallegos
SALTA = America//Argentina//Salta
SAN_JUAN = America//Argentina//San_Juan
SAN_LUIS = America//Argentina//San_Luis
TUCUMAN = America//Argentina//Tucuman
USHUAIA = America//Argentina//Ushuaia
PAGO_PAGO = Pacific//Pago_Pago
VIENNA = Europe//Vienna
MACQUARIE = Antarctica//Macquarie
ADELAIDE = Australia//Adelaide
BRISBANE = Australia//Brisbane
BROKEN_HILL = Australia//Broken_Hill
CURRIE = Australia//Currie
DARWIN = Australia//Darwin
EUCLA = Australia//Eucla
HOBART = Australia//Hobart
LINDEMAN = Australia//Lindeman
LORD_HOWE = Australia//Lord_Howe
MELBOURNE = Australia//Melbourne
PERTH = Australia//Perth
SYDNEY = Australia//Sydney
ARUBA = America//Aruba
MARIEHAMN = Europe//Mariehamn
BAKU = Asia//Baku
SARAJEVO = Europe//Sarajevo
BARBADOS = America//Barbados
DHAKA = Asia//Dhaka
BRUSSELS = Europe//Brussels
OUAGADOUGOU = Africa//Ouagadougou
SOFIA = Europe//Sofia
BAHRAIN = Asia//Bahrain
BUJUMBURA = Africa//Bujumbura
BERMUDA = Atlantic//Bermuda
BRUNEI = Asia//Brunei
LA_PAZ = America//La_Paz
NASSAU = America//Nassau
THIMPHU = Asia//Thimphu
GABORONE = Africa//Gaborone
MINSK = Europe//Minsk
BELIZE = America//Belize
ATIKOKAN = America//Atikokan
CAMBRIDGE_BAY = America//Cambridge_Bay
CRESTON = America//Creston
DAWSON = America//Dawson
DAWSON_CREEK = America//Dawson_Creek
EDMONTON = America//Edmonton
FORT_NELSON = America//Fort_Nelson
GLACE_BAY = America//Glace_Bay
GOOSE_BAY = America//Goose_Bay
HALIFAX = America//Halifax
INUVIK = America//Inuvik
IQALUIT = America//Iqaluit
MONCTON = America//Moncton
NIPIGON = America//Nipigon
PANGNIRTUNG = America//Pangnirtung
RAINY_RIVER = America//Rainy_River
RANKIN_INLET = America//Rankin_Inlet
REGINA = America//Regina
RESOLUTE = America//Resolute
ST_JOHNS = America//St_Johns
SWIFT_CURRENT = America//Swift_Current
THUNDER_BAY = America//Thunder_Bay
TORONTO = America//Toronto
VANCOUVER = America//Vancouver
WHITEHORSE = America//Whitehorse
WINNIPEG = America//Winnipeg
YELLOWKNIFE = America//Yellowknife
COCOS = Indian//Cocos
KINSHASA = Africa//Kinshasa
LUBUMBASHI = Africa//Lubumbashi
BANGUI = Africa//Bangui
BRAZZAVILLE = Africa//Brazzaville
ZURICH = Europe//Zurich
ABIDJAN = Africa//Abidjan
RAROTONGA = Pacific//Rarotonga
PUNTA_ARENAS = America//Punta_Arenas
EASTER = Pacific//Easter
DOUALA = Africa//Douala
SHANGHAI = Asia//Shanghai
URUMQI = Asia//Urumqi
BOGOTA = America//Bogota
COSTA_RICA = America//Costa_Rica
HAVANA = America//Havana
CAPE_VERDE = Atlantic//Cape_Verde
CURACAO = America//Curacao
CHRISTMAS = Indian//Christmas
FAMAGUSTA = Asia//Famagusta
NICOSIA = Asia//Nicosia
PRAGUE = Europe//Prague
BERLIN = Europe//Berlin
BUSINGEN = Europe//Busingen
DJIBOUTI = Africa//Djibouti
COPENHAGEN = Europe//Copenhagen
DOMINICA = America//Dominica
SANTO_DOMINGO = America//Santo_Domingo
ALGIERS = Africa//Algiers
GUAYAQUIL = America//Guayaquil
GALAPAGOS = Pacific//Galapagos
TALLINN = Europe//Tallinn
CAIRO = Africa//Cairo
EL_AAIUN = Africa//El_Aaiun
ASMARA = Africa//Asmara
CEUTA = Africa//Ceuta
CANARY = Atlantic//Canary
MADRID = Europe//Madrid
ADDIS_ABABA = Africa//Addis_Ababa
HELSINKI = Europe//Helsinki
FIJI = Pacific//Fiji
STANLEY = Atlantic//Stanley
CHUUK = Pacific//Chuuk
KOSRAE = Pacific//Kosrae
POHNPEI = Pacific//Pohnpei
FAROE = Atlantic//Faroe
LIBREVILLE = Africa//Libreville
LONDON = Europe//London
GRENADA = America//Grenada
TBILISI = Asia//Tbilisi
CAYENNE = America//Cayenne
GUERNSEY = Europe//Guernsey
ACCRA = Africa//Accra
GIBRALTAR = Europe//Gibraltar
DANMARKSHAVN = America//Danmarkshavn
GODTHAB = America//Godthab
SCORESBYSUND = America//Scoresbysund
THULE = America//Thule
BANJUL = Africa//Banjul
GUADELOUPE = America//Guadeloupe
MALABO = Africa//Malabo
ATHENS = Europe//Athens
SOUTH_GEORGIA = Atlantic//South_Georgia
GUATEMALA = America//Guatemala
GUAM = Pacific//Guam
GUYANA = America//Guyana
HONG_KONG = Asia//Hong_Kong
TEGUCIGALPA = America//Tegucigalpa
ZAGREB = Europe//Zagreb
BUDAPEST = Europe//Budapest
JAKARTA = Asia//Jakarta
JAYAPURA = Asia//Jayapura
MAKASSAR = Asia//Makassar
PONTIANAK = Asia//Pontianak
DUBLIN = Europe//Dublin
JERUSALEM = Asia//Jerusalem
ISLE_OF_MAN = Europe//Isle_of_Manan
KOLKATA = Asia//Kolkata
CHAGOS = Indian//Chagos
BAGHDAD = Asia//Baghdad
TEHRAN = Asia//Tehran
REYKJAVIK = Atlantic//Reykjavik
ROME = Europe//Rome
JERSEY = Europe//Jersey
JAMAICA = America//Jamaica
AMMAN = Asia//Amman
TOKYO = Asia//Tokyo
NAIROBI = Africa//Nairobi
BISHKEK = Asia//Bishkek
PHNOM_PENH = Asia//Phnom_Penh
ENDERBURY = Pacific//Enderbury
KIRITIMATI = Pacific//Kiritimati
TARAWA = Pacific//Tarawa
COMORO = Indian//Comoro
ST_KITTS = America//St_Kitts
PYONGYANG = Asia//Pyongyang
SEOUL = Asia//Seoul
KUWAIT = Asia//Kuwait
CAYMAN = America//Cayman
ALMATY = Asia//Almaty
AQTAU = Asia//Aqtau
AQTOBE = Asia//Aqtobe
ATYRAU = Asia//Atyrau
ORAL = Asia//Oral
QYZYLORDA = Asia//Qyzylorda
VIENTIANE = Asia//Vientiane
BEIRUT = Asia//Beirut
ST_LUCIA = America//St_Lucia
VADUZ = Europe//Vaduz
COLOMBO = Asia//Colombo
MONROVIA = Africa//Monrovia
MASERU = Africa//Maseru
VILNIUS = Europe//Vilnius
LUXEMBOURG = Europe//Luxembourg
RIGA = Europe//Riga
TRIPOLI = Africa//Tripoli
CASABLANCA = Africa//Casablanca
MONACO = Europe//Monaco
CHISINAU = Europe//Chisinau
PODGORICA = Europe//Podgorica
MARIGOT = America//Marigot
ANTANANARIVO = Indian//Antananarivo
KWAJALEIN = Pacific//Kwajalein
MAJURO = Pacific//Majuro
SKOPJE = Europe//Skopje
BAMAKO = Africa//Bamako
YANGON = Asia//Yangon
CHOIBALSAN = Asia//Choibalsan
HOVD = Asia//Hovd
ULAANBAATAR = Asia//Ulaanbaatar
MACAU = Asia//Macau
SAIPAN = Pacific//Saipan
MARTINIQUE = America//Martinique
NOUAKCHOTT = Africa//Nouakchott
MONTSERRAT = America//Montserrat
MALTA = Europe//Malta
MAURITIUS = Indian//Mauritius
MALDIVES = Indian//Maldives
BLANTYRE = Africa//Blantyre
BAHIA_BANDERAS = America//Bahia_Banderas
CANCUN = America//Cancun
CHIHUAHUA = America//Chihuahua
HERMOSILLO = America//Hermosillo
MATAMOROS = America//Matamoros
MAZATLAN = America//Mazatlan
MERIDA = America//Merida
MEXICO_CITY = America//Mexico_City
MONTERREY = America//Monterrey
OJINAGA = America//Ojinaga
TIJUANA = America//Tijuana
KUALA_LUMPUR = Asia//Kuala_Lumpur
KUCHING = Asia//Kuching
MAPUTO = Africa//Maputo
WINDHOEK = Africa//Windhoek
NOUMEA = Pacific//Noumea
NIAMEY = Africa//Niamey
NORFOLK = Pacific//Norfolk
LAGOS = Africa//Lagos
MANAGUA = America//Managua
AMSTERDAM = Europe//Amsterdam
OSLO = Europe//Oslo
KATHMANDU = Asia//Kathmandu
NAURU = Pacific//Nauru
NIUE = Pacific//Niue
AUCKLAND = Pacific//Auckland
CHATHAM = Pacific//Chatham
MUSCAT = Asia//Muscat
GAMBIER = Pacific//Gambier
MARQUESAS = Pacific//Marquesas
TAHITI = Pacific//Tahiti
BOUGAINVILLE = Pacific//Bougainville
PORT_MORESBY = Pacific//Port_Moresby
MANILA = Asia//Manila
KARACHI = Asia//Karachi
WARSAW = Europe//Warsaw
MIQUELON = America//Miquelon
PITCAIRN = Pacific//Pitcairn
PUERTO_RICO = America//Puerto_Rico
GAZA = Asia//Gaza
HEBRON = Asia//Hebron
MADEIRA = Atlantic//Madeira
LISBON = Europe//Lisbon
PALAU = Pacific//Palau
ASUNCION = America//Asuncion
QATAR = Asia//Qatar
REUNION = Indian//Reunion
BUCHAREST = Europe//Bucharest
BELGRADE = Europe//Belgrade
ANADYR = Asia//Anadyr
BARNAUL = Asia//Barnaul
CHITA = Asia//Chita
IRKUTSK = Asia//Irkutsk
KAMCHATKA = Asia//Kamchatka
KHANDYGA = Asia//Khandyga
KRASNOYARSK = Asia//Krasnoyarsk
MAGADAN = Asia//Magadan
NOVOKUZNETSK = Asia//Novokuznetsk
NOVOSIBIRSK = Asia//Novosibirsk
OMSK = Asia//Omsk
SAKHALIN = Asia//Sakhalin
SREDNEKOLYMSK = Asia//Srednekolymsk
TOMSK = Asia//Tomsk
VLADIVOSTOK = Asia//Vladivostok
YAKUTSK = Asia//Yakutsk
YEKATERINBURG = Asia//Yekaterinburg
ASTRAKHAN = Europe//Astrakhan
KALININGRAD = Europe//Kaliningrad
KIROV = Europe//Kirov
MOSCOW = Europe//Moscow
SAMARA = Europe//Samara
SARATOV = Europe//Saratov
SIMFEROPOL = Europe//Simferopol
ULYANOVSK = Europe//Ulyanovsk
VOLGOGRAD = Europe//Volgograd
KIGALI = Africa//Kigali
RIYADH = Asia//Riyadh
GUADALCANAL = Pacific//Guadalcanal
MAHE = Indian//Mahe
KHARTOUM = Africa//Khartoum
STOCKHOLM = Europe//Stockholm
SINGAPORE = Asia//Singapore
ST_HELENA = Atlantic//St_Helena
LJUBLJANA = Europe//Ljubljana
LONGYEARBYEN = Arctic//Longyearbyen
BRATISLAVA = Europe//Bratislava
FREETOWN = Africa//Freetown
SAN_MARINO = Europe//San_Marino
DAKAR = Africa//Dakar
MOGADISHU = Africa//Mogadishu
PARAMARIBO = America//Paramaribo
JUBA = Africa//Juba
SAO_TOME = Africa//Sao_Tome
EL_SALVADOR = America//El_Salvador
LOWER_PRINCES = America//Lower_Princes
DAMASCUS = Asia//Damascus
MBABANE = Africa//Mbabane
GRAND_TURK = America//Grand_Turk
NDJAMENA = Africa//Ndjamena
KERGUELEN = Indian//Kerguelen
LOME = Africa//Lome
BANGKOK = Asia//Bangkok
DUSHANBE = Asia//Dushanbe
FAKAOFO = Pacific//Fakaofo
DILI = Asia//Dili
ASHGABAT = Asia//Ashgabat
TUNIS = Africa//Tunis
TONGATAPU = Pacific//Tongatapu
ISTANBUL = Europe//Istanbul
PORT_OF_SPAIN = America//Port_of_Spainpain
FUNAFUTI = Pacific//Funafuti
TAIPEI = Asia//Taipei
DAR_ES_SALAAM = Africa//Dar_es_Salaamalaam
KIEV = Europe//Kiev
UZHGOROD = Europe//Uzhgorod
ZAPOROZHYE = Europe//Zaporozhye
KAMPALA = Africa//Kampala
MIDWAY = Pacific//Midway
WAKE = Pacific//Wake
ADAK = America//Adak
ANCHORAGE = America//Anchorage
BOISE = America//Boise
CHICAGO = America//Chicago
DENVER = America//Denver
DETROIT = America//Detroit
INDIANAPOLIS = America//Indiana//Indianapolis
KNOX = America//Indiana//Knox
MARENGO = America//Indiana//Marengo
PETERSBURG = America//Indiana//Petersburg
TELL_CITY = America//Indiana//Tell_City
VEVAY = America//Indiana//Vevay
VINCENNES = America//Indiana//Vincennes
WINAMAC = America//Indiana//Winamac
JUNEAU = America//Juneau
LOUISVILLE = America//Kentucky//Louisville
MONTICELLO = America//Kentucky//Monticello
LOS_ANGELES = America//Los_Angeles
MENOMINEE = America//Menominee
METLAKATLA = America//Metlakatla
BEULAH = America//North_Dakota//Beulah
CENTER = America//North_Dakota//Center
NEW_SALEM = America//North_Dakota//New_Salem
PHOENIX = America//Phoenix
SITKA = America//Sitka
YAKUTAT = America//Yakutat
HONOLULU = Pacific//Honolulu
MONTEVIDEO = America//Montevideo
SAMARKAND = Asia//Samarkand
TASHKENT = Asia//Tashkent
VATICAN = Europe//Vatican
ST_VINCENT = America//St_Vincent
CARACAS = America//Caracas
TORTOLA = America//Tortola
HO_CHI_MINH = Asia//Ho_Chi_Minhinh
EFATE = Pacific//Efate
WALLIS = Pacific//Wallis
APIA = Pacific//Apia
ADEN = Asia//Aden
MAYOTTE = Indian//Mayotte
JOHANNESBURG = Africa//Johannesburg
LUSAKA = Africa//Lusaka
HARARE = Africa//Harare

Gestor

Um determinado colaborador pode ser configurado como gestor de outros colaboradores.

Para isto, localize a API manager-controller no Swagger e abra o endpoint POST /manager/register

Vamos definir agora o seguinte colaborador como gestor inserindo o json no body managerDTO

{
  "employeeId": ####,
  "recordsPunch": true,
  "allowChangePunch": true,
  "allowExcludePunch": true,
  "employeeList": [
    ####,
    ####,
    ####
  ]
}

É possível também usar a lógica dos ids externos passando o json desta forma:

{
  "employeeExternalId": "####",
  "recordsPunch": true,
  "allowChangePunch": true,
  "allowExcludePunch": true,
  "employeeExternalIdList": [
    "####"
  ]
}

Ajustes de ponto

Nossa API de Ajuste de Ponto serve para lançar folgas, atestados, férias e outros tipos de ajustes que você poderá conferir a seguir.

Localize a API adjustment-reason-controller e abra e execute o endpoint GET /adjustment-reason/find-all

Executando este endpoint teremos um retorno com a lista de motivos de ajuste de ponto, para que você possa lançar futuramente as férias de um colaborador por exemplo.

{
  "content": [
    {
      "id": 1,
      "description": "FÉRIAS",
      "allowance": true,
      "fullDay": true,
      "countAsMissing": false
    },
    {
      "id": 4,
      "description": "ABONO",
      "allowance": true,
      "fullDay": false,
      "countAsMissing": false
    },
    ...

Lançamento de férias

Observe que no endpoint GET /adjustment-reason/find-all foi retornado um "motivo de ajuste" FÉRIAS, vamos usar este objeto para para lançar férias ao colaborador João da Silva que cadastramos anteriormente.

Localize a API adjustment-reason-record-controller e abra o endpoint POST /adjustment/register.

No body desta requisição vamos usar o seguinte json:

{
  "adjustmentReasonDTO": {
    "id": 1,
    "description": "FÉRIAS"
  },
  "employeeDTO": {
    "id": ******,
    "name": "João da Silva"
  },
  "startDate": 1559358000000,
  "endDate": 1561950000000,
  "fullDay": true,
  "origem": "Integração",
  "status": "APROVADO"
}

Repare que colocamos o objeto FÉRIAS no atributo "adjustmentReasonDTO" porém só é necessário informar o atributo "id", coloquei a description somente para facilitar nosso entendimento.

O mesmo acontece com o objeto "employeeDTO" onde se pode passar tanto "id" (tangerinoID) quanto "externalId" que seria seu próprio identificador para o colaborador.

"startDate" e "endDate" definem o período que este colaborador estará em férias.

"status" pode ser integrado com as seguintes opções: APROVADO, PENDENTE, REPROVADO.

Lançamento de ajustes

Exatametne da mesma forma que vimos no lançamento de férias, podemos lançar qualquer motivo de ajuste de acordo com a lista de opções obtidas em GET /adjustment-reason/find-all

Lançamento de ponto em atraso

Eventualmente será preciso lançar pontos com data passada, principalmente por esquecimento do próprio colaborador. Neste caso disponibizamos uma API onde é possível lançar um ponto em atraso, porém, a partir de agora daremos sequência em um outro módulo da API de integração acessando este link.

Antes de efetivamente lançar um ponto em atraso você precisará escolher uma justificativa, então veremos agora como listar as opções.

Localize a API manual-editing-justification-controller e execute o endpoint GET /manual-editing-justification-punch

Você receberá uma lista de possiveis justificativas, como este exemplo:

{
  "content": [
    {
      "id": *****,
      "description": "Greve"
    },
    {
      "id": *****,
      "description": "Excursão"
    },
    {
      "id": *****,
      "description": "Internet indisponível"
    },
    ...

Tendo em mãos esta lista, agora sim você poderá lançar um ponto em atraso com sua respectiva justificativa

Localize a API punch-controller e execute o endpoint POST /register/late/1.1

No body desta requisição vamos usar o seguinte json:

{
  "employeeId": ******,
  "date": "2019-08-01T14:52:36.968-0300", //exemplo com fuso horário de Sao Paulo
  "manualEditingJustificationId": *****
}

Folha de Ponto

Depois de passar por todos os cadastros, deixando os colaboradores aptos a bater ponto através do Tangerino, chegará o momento em que você precisará consultar as informações de ponto dos colaboradores e veremos agora algumas APIs para consulta de pontos e até mesmo para gerar uma folha de ponto.

Consulta de pontos

Dando sequência ainda na API punch-controller, localize o endpoint GET /

Este é o endpoint onde se pode consultar TODOS os pontos da sua empresa de forma paginada e com possiblidade de alguns filtros como você pode ver pelo swagger.

Caso você queira manter todos os pontos em sua própria base de dados, basta usar o query param lastUpdate na requisição deste endpoint, onde você poderá agendar um rotina de busca dos pontos, passando sempre a data da última vez que foi feita a requisição para que retorne apenas os 'novos' pontos registrados desde então.

Outra forma de usar esta consulta é passando um intervalo de datas startDate e endDate podendo ainda filtrar por colaborador através do parâmetro employeeId.

Histórico de observações

Cada ponto possui um histórico de observações e podemos buscar isto separadamente.

Localize o endpoint GET /observation-historical e veja como é simples usá-lo. Você pode usar um intervalo de datas startDate e endDate (em milisegundos) para listar todo o histórico deste período e opcionalmente pode-se passar o query param punchId para trazer o histórico de observações específico de um ponto.

Emissão de folha de ponto

Acesse agora este novo módulo.

Finalmente poderemos emitir uma folha de ponto através do endpoint GET /time-sheet

Veja que praticamente temos os mesmos filtros que se encontram na tela de Relatório de folha de ponto da plataforma Web do Tangerino.

folha de ponto

O retorno desta API terá este formato:

{
  "base64FileContent": "string",
  "fileExtension": "PDF",
  "fileName": "string"
}