Resumen de ventas
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>"
}
}Informes
Resumen de ventas
Agregado de ventas, recargas y retiradas. Sin day devuelve el acumulado de todo el evento. Los importes coinciden con el cierre de caja del panel de VENTRY.
GET
/
reports
/
sales-summary
Resumen de ventas
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>"
}
}Autorizaciones
API key del integrador, emitida desde el panel de VENTRY. Formato vk_live_... en producción y vk_test_... en entornos de prueba.
Parámetros de consulta
Id de día de GET /days. Si se omite, todo el evento.
Respuesta
Resumen de ventas del periodo.
Importes en céntimos. Coincide con el cierre de caja del panel.
Opciones disponibles:
sales_summary Show child attributes
Show child attributes
Recargas pagadas. El saldo regalado por el organizador no entra aquí: va en courtesy.
Show child attributes
Show child attributes
Saldo regalado por el organizador (cortesías, bonificaciones). Mueve saldo, pero no es dinero ingresado.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Saldo que queda en las pulseras sin gastar.