STR Tasks
Upload an STR task
Create a new STR upload task for multiple reservations.
Allowed Roles:
admin, str-uploader
Special Validation Rules:
- Exactly one of:
amountReceived,cancellationAmountmust be provided. - Exactly one of:
cancellationDate,endDatemust be provided. - If
isForeigneris true, thenguestNameandguestIdare required. - If
isForeigneris false, thenguestTaxIdis required.guestIdandguestNameare ignored. startDatemust be beforeendDate.
POST
/
str
/
task
Upload an STR task
curl --request POST \
--url https://str.keroshospitality.com/api/v1/str/task \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"draftUpload": true,
"reservations": [
{
"reservationId": "HMXDBC4N22",
"apartmentId": 42,
"startDate": "01/02/2025",
"endDate": "05/02/2025",
"amountReceived": 309.83,
"platform": "Airbnb",
"paymentMethod": "Λογαριασμός Πληρωμών Ημεδαπής",
"guestName": "John Doe",
"guestId": "AT1237212",
"guestTaxId": "137269544",
"isForeigner": true
}
]
}
'import requests
url = "https://str.keroshospitality.com/api/v1/str/task"
payload = {
"draftUpload": True,
"reservations": [
{
"reservationId": "HMXDBC4N22",
"apartmentId": 42,
"startDate": "01/02/2025",
"endDate": "05/02/2025",
"amountReceived": 309.83,
"platform": "Airbnb",
"paymentMethod": "Λογαριασμός Πληρωμών Ημεδαπής",
"guestName": "John Doe",
"guestId": "AT1237212",
"guestTaxId": "137269544",
"isForeigner": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
draftUpload: true,
reservations: [
{
reservationId: 'HMXDBC4N22',
apartmentId: 42,
startDate: '01/02/2025',
endDate: '05/02/2025',
amountReceived: 309.83,
platform: 'Airbnb',
paymentMethod: 'Λογαριασμός Πληρωμών Ημεδαπής',
guestName: 'John Doe',
guestId: 'AT1237212',
guestTaxId: '137269544',
isForeigner: true
}
]
})
};
fetch('https://str.keroshospitality.com/api/v1/str/task', 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://str.keroshospitality.com/api/v1/str/task",
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([
'draftUpload' => true,
'reservations' => [
[
'reservationId' => 'HMXDBC4N22',
'apartmentId' => 42,
'startDate' => '01/02/2025',
'endDate' => '05/02/2025',
'amountReceived' => 309.83,
'platform' => 'Airbnb',
'paymentMethod' => 'Λογαριασμός Πληρωμών Ημεδαπής',
'guestName' => 'John Doe',
'guestId' => 'AT1237212',
'guestTaxId' => '137269544',
'isForeigner' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://str.keroshospitality.com/api/v1/str/task"
payload := strings.NewReader("{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://str.keroshospitality.com/api/v1/str/task")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://str.keroshospitality.com/api/v1/str/task")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"taskId": 123,
"requestId": "a1b2c3d4-e5f6-7890-a1b2-c3d4e5f67890",
"createdAt": "2022-01-01T00:00:00Z"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}Authorizations
JWT Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"
Body
application/json
⌘I
Upload an STR task
curl --request POST \
--url https://str.keroshospitality.com/api/v1/str/task \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"draftUpload": true,
"reservations": [
{
"reservationId": "HMXDBC4N22",
"apartmentId": 42,
"startDate": "01/02/2025",
"endDate": "05/02/2025",
"amountReceived": 309.83,
"platform": "Airbnb",
"paymentMethod": "Λογαριασμός Πληρωμών Ημεδαπής",
"guestName": "John Doe",
"guestId": "AT1237212",
"guestTaxId": "137269544",
"isForeigner": true
}
]
}
'import requests
url = "https://str.keroshospitality.com/api/v1/str/task"
payload = {
"draftUpload": True,
"reservations": [
{
"reservationId": "HMXDBC4N22",
"apartmentId": 42,
"startDate": "01/02/2025",
"endDate": "05/02/2025",
"amountReceived": 309.83,
"platform": "Airbnb",
"paymentMethod": "Λογαριασμός Πληρωμών Ημεδαπής",
"guestName": "John Doe",
"guestId": "AT1237212",
"guestTaxId": "137269544",
"isForeigner": True
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
draftUpload: true,
reservations: [
{
reservationId: 'HMXDBC4N22',
apartmentId: 42,
startDate: '01/02/2025',
endDate: '05/02/2025',
amountReceived: 309.83,
platform: 'Airbnb',
paymentMethod: 'Λογαριασμός Πληρωμών Ημεδαπής',
guestName: 'John Doe',
guestId: 'AT1237212',
guestTaxId: '137269544',
isForeigner: true
}
]
})
};
fetch('https://str.keroshospitality.com/api/v1/str/task', 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://str.keroshospitality.com/api/v1/str/task",
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([
'draftUpload' => true,
'reservations' => [
[
'reservationId' => 'HMXDBC4N22',
'apartmentId' => 42,
'startDate' => '01/02/2025',
'endDate' => '05/02/2025',
'amountReceived' => 309.83,
'platform' => 'Airbnb',
'paymentMethod' => 'Λογαριασμός Πληρωμών Ημεδαπής',
'guestName' => 'John Doe',
'guestId' => 'AT1237212',
'guestTaxId' => '137269544',
'isForeigner' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://str.keroshospitality.com/api/v1/str/task"
payload := strings.NewReader("{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://str.keroshospitality.com/api/v1/str/task")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://str.keroshospitality.com/api/v1/str/task")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"draftUpload\": true,\n \"reservations\": [\n {\n \"reservationId\": \"HMXDBC4N22\",\n \"apartmentId\": 42,\n \"startDate\": \"01/02/2025\",\n \"endDate\": \"05/02/2025\",\n \"amountReceived\": 309.83,\n \"platform\": \"Airbnb\",\n \"paymentMethod\": \"Λογαριασμός Πληρωμών Ημεδαπής\",\n \"guestName\": \"John Doe\",\n \"guestId\": \"AT1237212\",\n \"guestTaxId\": \"137269544\",\n \"isForeigner\": true\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"taskId": 123,
"requestId": "a1b2c3d4-e5f6-7890-a1b2-c3d4e5f67890",
"createdAt": "2022-01-01T00:00:00Z"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}{
"errorMessage": "<string>",
"requestId": "<string>"
}