A library to check for existing obligations to KAT Bulgaria
Project description
Summary
This is a python library to check for obligations to KAT Bulgaria programatically.
It does NOT save or log your data anywhere and it works with a single HTTPS request.
Installation
pip install kat_bulgaria
Example:
import asyncio
from dataclasses import asdict
from kat_bulgaria.obligations import (
KatError,
KatFatalError,
async_verify_credentials,
async_check_obligations,
async_get_obligations,
)
EGN = "0011223344"
LICENSE_NUMBER = "123456789"
def example_func() -> None:
try:
# Validates EGN and Driver License Number locally and with the API
is_valid = asyncio.run(async_verify_credentials(EGN, LICENSE_NUMBER))
# Checks if a person has obligations, returns true or false
has_obligations = asyncio.run(async_check_obligations(EGN, LICENSE_NUMBER))
# Returns an object with additinal data (if any)
obligations = asyncio.run(async_get_obligations(EGN, LICENSE_NUMBER))
except ValueError as err:
# Validation error, such as invalid EGN or Driver License Number
print(f"Error: {str(err)}")
return
except KatError as err:
# Standard error, means the KAT website is down or too slow to respond.
# If you get this, just try again in a bit.
print(f"Error: {str(err)}")
return
except KatFatalError as err:
# Fatal error, this means the KAT website returned an unexpected response.
# If you get this error this means the website was probably updated and this library
# needs to reflect that change. Please open a new issue so it can be fixed.
print(f"Error: {str(err)}")
return
print(f"is_valid = {is_valid}")
print(f"has_obligations = {has_obligations}")
print(f"obligations = {asdict(obligations)}")
example_func()
Known raw API responses (debug info):
# No fines/obligations:
{"obligations":[],"hasNonHandedSlip":false}
# One or more fines/obligations, which have not been served
{"obligations":[],"hasNonHandedSlip":true}
# One or more fines/obligations, which *have* been served
{
"obligations": [
{
"status": 0,
"amount": 100,
"discountAmount": 80,
"bic": "UBBSBGSF",
"iban": "BG22UBBS88883122944101",
"paymentReason": "НП 22-1085-002609 14.10.2022",
"pepCin": "",
"expirationDate": "2023-04-06T23:59:59",
"obligedPersonName": "ИМЕ ПРЕЗИМЕ ФАМИЛИЯ",
"obligedPersonIdent": "1234567890",
"obligedPersonIdentType": 1,
"obligationDate": "2023-04-06T00:00:00",
"obligationIdentifier": "PENAL_DECREE||22-1085-002609|100",
"type": 2,
"serviceID": 349,
"additionalData": {
"isServed": "True",
"discount": "20",
"isMainDocument": "False",
"documentType": "PENAL_DECREE",
"documentSeries": null,
"documentNumber": "22-1085-002609",
"amount": "100",
"fishCreateDate": "2022-10-14"
}
}
],
"hasNonHandedSlip": false
}
# Invalid EGN or Driver License Number:
{"code":"GL_00038_E","message":"Няма данни за посоченото СУМПС/ЕГН или не се намира съответствие за издадено СУМПС на лице с посочения ЕГН/ЛНЧ"}
# The service is down, that happens a couple of times a day:
{"code":"GL_UNDELIVERED_AND_UNPAID_DEBTS_E","message":"По технически причини към момента не може да бъде извършена справка за невръчени и неплатени НП и/или електронни фишове по Закона за движението по пътищата и/или по Кодекса за застраховането."}
# Timeout:
# From time to time the API hangs and it takes more than 10s to load.
# You can retry immediately, you can wait a couple of minutes
# Господине, не виждате ли че сме в обедна почивка???
# At this point it's out of your hands
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kat_bulgaria-0.3.0.tar.gz
(4.8 kB
view hashes)
Built Distribution
Close
Hashes for kat_bulgaria-0.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e9fdbe04173716797c0cbbc483970628078eeab7167e7dee06bdb3dbdb6ffab |
|
MD5 | 6131430f356aa6b16d5474c54caf2d9e |
|
BLAKE2b-256 | e7d78aca368bf57cd0893b9bd8ca27a981b0b54a949b77dd26dbaab27ee46216 |