Client configuration
curl --request GET \
--url https://tapcoupon.at/api/v1/client-config \
--header 'Authorization: Bearer <token>' \
--header 'X-Device-ID: <x-device-id>'import requests
url = "https://tapcoupon.at/api/v1/client-config"
headers = {
"X-Device-ID": "<x-device-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Device-ID': '<x-device-id>', Authorization: 'Bearer <token>'}
};
fetch('https://tapcoupon.at/api/v1/client-config', 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://tapcoupon.at/api/v1/client-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Device-ID: <x-device-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapcoupon.at/api/v1/client-config"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Device-ID", "<x-device-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapcoupon.at/api/v1/client-config")
.header("X-Device-ID", "<x-device-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapcoupon.at/api/v1/client-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Device-ID"] = '<x-device-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"mandatoryCustomerFields": {
"email": true,
"name": true,
"phone": false,
"address": false,
"birthdate": false
},
"testPeriodStatus": {
"inTestWindow": true,
"testCardsUsed": 2,
"maxTestCards": 10,
"testPeriodExpiresAt": "2026-10-15T12:00:00Z"
},
"hasSubscription": false
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}Account and rewards
Client configuration
Retrieve mandatory customer fields, test-period status, and subscription availability.
GET
/
client-config
Client configuration
curl --request GET \
--url https://tapcoupon.at/api/v1/client-config \
--header 'Authorization: Bearer <token>' \
--header 'X-Device-ID: <x-device-id>'import requests
url = "https://tapcoupon.at/api/v1/client-config"
headers = {
"X-Device-ID": "<x-device-id>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-Device-ID': '<x-device-id>', Authorization: 'Bearer <token>'}
};
fetch('https://tapcoupon.at/api/v1/client-config', 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://tapcoupon.at/api/v1/client-config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Device-ID: <x-device-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://tapcoupon.at/api/v1/client-config"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Device-ID", "<x-device-id>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://tapcoupon.at/api/v1/client-config")
.header("X-Device-ID", "<x-device-id>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://tapcoupon.at/api/v1/client-config")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Device-ID"] = '<x-device-id>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"mandatoryCustomerFields": {
"email": true,
"name": true,
"phone": false,
"address": false,
"birthdate": false
},
"testPeriodStatus": {
"inTestWindow": true,
"testCardsUsed": 2,
"maxTestCards": 10,
"testPeriodExpiresAt": "2026-10-15T12:00:00Z"
},
"hasSubscription": false
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}{
"error": "<string>",
"errorCode": "<string>"
}GET /client-config
Retrieve mandatory customer fields, test-period status, and subscription availability.
Send Authorization: Bearer YOUR_API_KEY and X-Device-ID: YOUR_DEVICE_ID. See authentication.
Map mandatoryCustomerFields.name to customer.contact.fullName and phone to customer.contact.phone. The address flag requires the nested address data. See customer data.
hasSubscription reports whether the subscription status is active. testPeriodStatus reports whether the test window is open, how many cards have been used, the maximum count, and its expiration. Check these values before offering test or real card issuance.
Example request
curl "https://tapcoupon.at/api/v1/client-config" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "X-Device-ID: YOUR_DEVICE_ID"
Example response
{
"mandatoryCustomerFields": {
"email": true,
"name": true,
"phone": false,
"address": false,
"birthdate": false
},
"testPeriodStatus": {
"inTestWindow": true,
"testCardsUsed": 2,
"maxTestCards": 10,
"testPeriodExpiresAt": "2026-10-15T12:00:00Z"
},
"hasSubscription": false
}
Authorizations
Location API key. Also requires X-Device-ID.
Headers
Stable device identifier. API key binds to this value on first use.
