Konto API

# @ CallAPI ~ 4 min
#konto #saldo #limity #api

Konto API

Dokumentacja Konto API systemu CallAPI / VPBX.

Informacje rozliczeniowe

Informacje rozliczeniowe API służy do pobrania aktualnego stanu rozliczeniowego konta: salda, typu konta (przedpłacone / postpaid), limitów wydatków oraz pozostałych środków.

Zapytanie zawsze dotyczy konta, do którego należy użyty token JWT.

Przykład z wykorzystaniem cURL: GET https://api.vpbx.pl/api/v1/account/accounting

curl --header "Content-Type: application/json" \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAoMS0Iiwi" \
--request GET \
https://api.vpbx.pl/api/v1/account/accounting

Przykład poprawnej odpowiedzi:

{
    "result": "OK",
    "accounting": {
        "account_type": "prepaid",
        "currency": "Zloty",
        "currency_iso": "PLN",
        "balance": "95.06",
        "available_credit": "19.03",
        "limits": {
            "daily": {
                "spent": "80.97",
                "global": {
                    "limit": "200.00",
                    "remaining": "119.03",
                    "percentage_used": 40.48
                },
                "self_imposed": {
                    "limit": "100.00",
                    "remaining": "19.03",
                    "percentage_used": 80.97
                },
                "binding": "self_imposed"
            },
            "monthly": {
                "spent": "80.97",
                "global": {
                    "limit": "200.00",
                    "remaining": "119.03",
                    "percentage_used": 40.48
                },
                "self_imposed": {
                    "limit": null,
                    "remaining": null,
                    "percentage_used": null
                },
                "binding": "global"
            }
        },
        "as_of": "2026-07-31T12:01:02Z"
    }
}

Przykład błędu:
{
    "error": "token expired",
    "result": "error"
}

Odpowiedź

Pole Typ Opis
result String Status zapytania. [OK | error]
accounting Object Dane rozliczeniowe konta

Obiekt accounting

Pole Typ Opis
account_type String Typ konta. [prepaid | postpaid | unknown]
currency String Nazwa waluty konta
currency_iso String Kod waluty w formacie ISO 4217
balance String Saldo konta. Zawsze wartość dodatnia - znaczenie zależy od account_type
available_credit String Kwota, którą konto może jeszcze wydać. null oznacza brak ograniczeń
limits Object Limity wydatków dzienne i miesięczne
as_of String Data i czas wygenerowania danych w formacie RFC3339, w strefie czasowej UTC

Saldo a typ konta

Pole balance jest zawsze liczbą dodatnią, a jego znaczenie określa account_type:

account_type Znaczenie pola balance
prepaid Środki pozostałe na koncie
postpaid Kwota aktualnie należna (zadłużenie)

Do decyzji, czy konto może wykonać połączenie lub wysłać wiadomość, należy używać pola available_credit, a nie balance. Dla kont prepaid jest to saldo ograniczone dodatkowo przez obowiązujące limity. Dla kont postpaid o dostępnych środkach decydują wyłącznie limity - saldo nie ogranicza wydatków.

Obiekt limits

Pole Typ Opis
daily Object Limity dzienne. Licznik zerowany jest codziennie
monthly Object Limity miesięczne. Licznik zerowany jest raz w miesiącu

Każdy z okresów (daily, monthly) zawiera:

Pole Typ Opis
spent String Kwota wydana w danym okresie. Wspólna dla obu limitów
global Object Limit globalny, ustawiany przez operatora
self_imposed Object Limit własny, ustawiany samodzielnie przez użytkownika w panelu
binding String Który z limitów faktycznie ogranicza konto. [global | self_imposed]. null gdy żaden limit nie jest ustawiony

Oba limity obowiązują jednocześnie - decyduje ten bardziej restrykcyjny. Pole binding wskazuje, z którego z nich wyliczono available_credit. W przypadku równych wartości zwracany jest global.

Obiekty global i self_imposed

Pole Typ Opis
limit String Wysokość limitu. null oznacza brak limitu
remaining String Kwota pozostała do wykorzystania w danym okresie. null gdy limit nie jest ustawiony
percentage_used Float Procent wykorzystania limitu, w zakresie 0-100. null gdy limit nie jest ustawiony

Wartość null w polu limit oznacza, że limit nie jest ustawiony, czyli nie ogranicza konta. Nie należy jej interpretować jako limitu równego zero. Gdy limit nie jest ustawiony, pola remaining oraz percentage_used również przyjmują wartość null.

Jeśli konto przekroczy limit, pole remaining przyjmuje wartość 0.00, a percentage_used wartość 100 - wartości te nigdy nie są ujemne ani większe niż 100.

Format kwot

Wszystkie kwoty zwracane są jako łańcuchy znaków (String), a nie jako liczby, z dokładnością wynikającą z waluty konta - dla PLN, EUR i GBP są to dwa miejsca po przecinku ("95.06", "200.00").

Zapis tekstowy pozwala zachować pełną dokładność kwoty, w tym końcowe zera, co nie jest możliwe przy użyciu typu liczbowego w formacie JSON. Przed wykonaniem obliczeń lub porównań na tych wartościach należy przekonwertować je na typ dziesiętny - porównywanie ich jako tekstu da błędne wyniki.

Pole percentage_used nie jest kwotą i zwracane jest jako liczba.

Odpowiedź - błąd

Pole Typ Opis
result String Status zapytania. [OK | error]
error String Opis błędu

Kody błędów HTTP

Kod HTTP Opis
200 Dane rozliczeniowe zwrócone poprawnie
401 Brak tokenu JWT, token nieprawidłowy lub wygasły
404 Konto nie zostało znalezione
503 Usługa rozliczeniowa chwilowo niedostępna - danych nie udało się pobrać

Kod 503 oznacza, że stanu konta nie udało się ustalić. W takiej sytuacji odpowiedź nigdy nie zawiera danych rozliczeniowych - w szczególności nie należy interpretować jej jako zerowego salda.