curl --request POST \
--url https://api.absentify.com/api/v1/overtime-entries/{id}/approve \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"recognized_amount": 123,
"reason": "<string>"
}
'import requests
url = "https://api.absentify.com/api/v1/overtime-entries/{id}/approve"
payload = {
"recognized_amount": 123,
"reason": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({recognized_amount: 123, reason: '<string>'})
};
fetch('https://api.absentify.com/api/v1/overtime-entries/{id}/approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.absentify.com/api/v1/overtime-entries/{id}/approve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recognized_amount' => 123,
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.absentify.com/api/v1/overtime-entries/{id}/approve"
payload := strings.NewReader("{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.absentify.com/api/v1/overtime-entries/{id}/approve")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/overtime-entries/{id}/approve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 0,
"member": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"allowance_type_id": "<string>",
"allowance_unit": "days",
"date": "<string>",
"amount": 123,
"recognized_amount": 123,
"day_kind": "WORKDAY",
"factor": 123,
"credit_expiry_date": "<string>",
"comment": "<string>",
"status": "PENDING",
"decided_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"decided_at": "<string>",
"created_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"created_at": "<string>",
"canceled_at": "<string>",
"canceled_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"decline_reason": "<string>",
"credited_amount": 123,
"credit_removed": true
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Approve an overtime entry
Approves one approval step of a pending entry on behalf of the API key’s member: their own step first if they are an approver, otherwise the next pending one (an admin key can approve for any approver). In chains that need more than one approval the entry stays pending until the last step is approved and is credited then, so call it once per step and read the entry before retrying after a lost response. Send a lower recognized_amount to approve less than was logged; a reason is then required.
curl --request POST \
--url https://api.absentify.com/api/v1/overtime-entries/{id}/approve \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"recognized_amount": 123,
"reason": "<string>"
}
'import requests
url = "https://api.absentify.com/api/v1/overtime-entries/{id}/approve"
payload = {
"recognized_amount": 123,
"reason": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({recognized_amount: 123, reason: '<string>'})
};
fetch('https://api.absentify.com/api/v1/overtime-entries/{id}/approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.absentify.com/api/v1/overtime-entries/{id}/approve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recognized_amount' => 123,
'reason' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.absentify.com/api/v1/overtime-entries/{id}/approve"
payload := strings.NewReader("{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.absentify.com/api/v1/overtime-entries/{id}/approve")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/overtime-entries/{id}/approve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recognized_amount\": 123,\n \"reason\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 0,
"member": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"allowance_type_id": "<string>",
"allowance_unit": "days",
"date": "<string>",
"amount": 123,
"recognized_amount": 123,
"day_kind": "WORKDAY",
"factor": 123,
"credit_expiry_date": "<string>",
"comment": "<string>",
"status": "PENDING",
"decided_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"decided_at": "<string>",
"created_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"created_at": "<string>",
"canceled_at": "<string>",
"canceled_by": {
"id": "<string>",
"custom_id": "<string>",
"name": "<string>",
"email": "<string>"
},
"decline_reason": "<string>",
"credited_amount": 123,
"credit_removed": true
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Autorisierungen
Pfadparameter
The id of the overtime entry.
-9007199254740991 <= x <= 9007199254740991Body
Antwort
Successful response
-9007199254740991 <= x <= 9007199254740991The member the overtime was worked by.
Show child attributes
Show child attributes
The unit of the allowance type. Amounts are in days for days and in MINUTES for hours.
days, hours The day the overtime was worked, YYYY-MM-DD.
The amount that was logged. Days (0.5 or 1) when allowance_unit is days, whole MINUTES when it is hours (for example 90 = 1 hour 30 minutes).
The amount an approver recognized, never more than amount. Equal to amount until someone lowers it. Days (0.5 or 1) when allowance_unit is days, whole MINUTES when it is hours (for example 90 = 1 hour 30 minutes).
What kind of day it was when the entry was logged.
WORKDAY, DAY_OFF, PUBLIC_HOLIDAY The multiplier applied to the recognized amount, fixed when the entry was logged.
The LAST day (inclusive, YYYY-MM-DD) the credit can still be used, or null when it does not expire.
PENDING, APPROVED, DECLINED, CANCELED Who made the final decision. Null while the entry is open.
Show child attributes
Show child attributes
Who logged the entry. It differs from member when an admin logged it for someone else. Null for entries from before this was recorded and once that member has been deleted.
Show child attributes
Show child attributes
Who withdrew the entry. It differs from member when the member who logged it for them withdrew it. Null unless the status is CANCELED.
Show child attributes
Show child attributes
The reason given when the entry was declined, also when an admin declined for the approver.
What was credited to the allowance: the recognized amount times factor, as booked. Null while there is no credit. Days (rounded to two decimals, for example 0.75 or 1.5) when allowance_unit is days, whole MINUTES when it is hours.
True when the entry is approved but its credit was deleted from the allowance afterwards.
War diese Seite hilfreich?