Sales summary
curl --request GET \
--url http://localhost:3000/v1/reports/sales-summary \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:3000/v1/reports/sales-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:3000/v1/reports/sales-summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/v1/reports/sales-summary",
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>"
],
]);
$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 := "http://localhost:3000/v1/reports/sales-summary"
req, _ := http.NewRequest("GET", url, nil)
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("http://localhost:3000/v1/reports/sales-summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/v1/reports/sales-summary")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "sales_summary",
"day_id": "<string>",
"currency": "<string>",
"sales": {
"count": 123,
"total": 123,
"total_tax": 123,
"by_method": {
"wristband": 123,
"card": 123,
"cash": 123,
"external_card": 123
}
},
"topups": {
"count": 123,
"total": 123,
"by_method": {
"cash": 123,
"card": 123,
"online": 123,
"manual": 123
}
},
"courtesy": {
"count": 123,
"total": 123
},
"withdrawals": {
"count": 123,
"total": 123
},
"unconsumed_balance": 123
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}Reports
Sales summary
Aggregate of sales, top-ups and withdrawals. Without day it returns the whole event. The amounts match the closeout in the VENTRY dashboard.
GET
/
reports
/
sales-summary
Sales summary
curl --request GET \
--url http://localhost:3000/v1/reports/sales-summary \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:3000/v1/reports/sales-summary"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:3000/v1/reports/sales-summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/v1/reports/sales-summary",
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>"
],
]);
$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 := "http://localhost:3000/v1/reports/sales-summary"
req, _ := http.NewRequest("GET", url, nil)
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("http://localhost:3000/v1/reports/sales-summary")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/v1/reports/sales-summary")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "sales_summary",
"day_id": "<string>",
"currency": "<string>",
"sales": {
"count": 123,
"total": 123,
"total_tax": 123,
"by_method": {
"wristband": 123,
"card": 123,
"cash": 123,
"external_card": 123
}
},
"topups": {
"count": 123,
"total": 123,
"by_method": {
"cash": 123,
"card": 123,
"online": 123,
"manual": 123
}
},
"courtesy": {
"count": 123,
"total": 123
},
"withdrawals": {
"count": 123,
"total": 123
},
"unconsumed_balance": 123
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}{
"error": {
"type": "authentication_error",
"code": "ticket_not_found",
"message": "<string>",
"request_id": "req_9f2c1a4e7b304d51",
"param": "<string>"
}
}Authorizations
Integrator API key, issued from the VENTRY dashboard. Format vk_live_... in production and vk_test_... in test environments.
Query Parameters
Day id from GET /days. If omitted, the whole event.
Response
Sales summary for the period.
Amounts in cents. Matches the dashboard's closeout.
Available options:
sales_summary Show child attributes
Show child attributes
Paid top-ups. Balance given away by the organiser is not included here: it goes in courtesy.
Show child attributes
Show child attributes
Balance given away by the organiser (courtesies, bonuses). It moves balance, but it is not money received.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Balance left unspent on wristbands.