Report license balances
curl --request POST \
--url https://api.useaira.com/v1/licenses/report-balances \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"balances": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"total": 1,
"payload": [
{
"id": "<string>",
"name": "<string>"
}
]
}
]
}
'import requests
url = "https://api.useaira.com/v1/licenses/report-balances"
payload = { "balances": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"total": 1,
"payload": [
{
"id": "<string>",
"name": "<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({
balances: [
{
code: '<string>',
customerExternalId: '<string>',
occurredAt: '2023-11-07T05:31:56Z',
total: 1,
payload: [{id: '<string>', name: '<string>'}]
}
]
})
};
fetch('https://api.useaira.com/v1/licenses/report-balances', 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.useaira.com/v1/licenses/report-balances",
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([
'balances' => [
[
'code' => '<string>',
'customerExternalId' => '<string>',
'occurredAt' => '2023-11-07T05:31:56Z',
'total' => 1,
'payload' => [
[
'id' => '<string>',
'name' => '<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.useaira.com/v1/licenses/report-balances"
payload := strings.NewReader("{\n \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\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.useaira.com/v1/licenses/report-balances")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useaira.com/v1/licenses/report-balances")
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 \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{}{
"message": "<string>",
"code": "<string>",
"details": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "<string>",
"errors": [
{
"message": "<string>"
}
]
}
]
}Licenses
Report license balances
Reports a batch of license balance readings. Each reading names its license by code and is identified by (code, customer, moment): the first reading for a slot is recorded, re-sending an unchanged reading is a no-op, and a changed reading records a new version that supersedes the previous one. The payload length must equal the total. Validation applies across the whole batch — if any reading is rejected, none are recorded.
POST
/
v1
/
licenses
/
report-balances
Report license balances
curl --request POST \
--url https://api.useaira.com/v1/licenses/report-balances \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"balances": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"total": 1,
"payload": [
{
"id": "<string>",
"name": "<string>"
}
]
}
]
}
'import requests
url = "https://api.useaira.com/v1/licenses/report-balances"
payload = { "balances": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "2023-11-07T05:31:56Z",
"total": 1,
"payload": [
{
"id": "<string>",
"name": "<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({
balances: [
{
code: '<string>',
customerExternalId: '<string>',
occurredAt: '2023-11-07T05:31:56Z',
total: 1,
payload: [{id: '<string>', name: '<string>'}]
}
]
})
};
fetch('https://api.useaira.com/v1/licenses/report-balances', 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.useaira.com/v1/licenses/report-balances",
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([
'balances' => [
[
'code' => '<string>',
'customerExternalId' => '<string>',
'occurredAt' => '2023-11-07T05:31:56Z',
'total' => 1,
'payload' => [
[
'id' => '<string>',
'name' => '<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.useaira.com/v1/licenses/report-balances"
payload := strings.NewReader("{\n \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\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.useaira.com/v1/licenses/report-balances")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useaira.com/v1/licenses/report-balances")
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 \"balances\": [\n {\n \"code\": \"<string>\",\n \"customerExternalId\": \"<string>\",\n \"occurredAt\": \"2023-11-07T05:31:56Z\",\n \"total\": 1,\n \"payload\": [\n {\n \"id\": \"<string>\",\n \"name\": \"<string>\"\n }\n ]\n }\n ]\n}"
response = http.request(request)
puts response.read_body{}{
"message": "<string>",
"code": "<string>",
"details": [
{
"code": "<string>",
"customerExternalId": "<string>",
"occurredAt": "<string>",
"errors": [
{
"message": "<string>"
}
]
}
]
}Authorizations
API Key Authentication.
Body
application/json
An object containing an array of license balance readings to report.
An array of balance readings. Each names its license by code and carries the customer, moment, total, and payload.
Required array length:
1 - 10000 elementsShow child attributes
Show child attributes
Response
The request was successfully processed.
The response is of type object.
⌘I