Nedevski / py_kat_bulgaria

Python library to check for obligations/fines to KAT Bulgaria programatically
0 stars 1 forks source link

KAT updated their API. Response bodies needed for me to rewrite the integration. #2

Open Nedevski opened 2 weeks ago

Nedevski commented 2 weeks ago

Ще използвам това issue като дневник за различните отговори, които връщат КАТ.

Nedevski commented 2 weeks ago

КАТ са имплементирали и rate limiting след 10 заявки в рамките на минута. При достигането му се връща нормална HTML страница с toast error message. Предполагам може да се валидира по Content-Type?

EDIT: Добра шега, държавен сайт да връща Content-Type headers. Няма никаква информация за върнатия тип на данни, явно ще се проверява просто с проверка дали е валиден JSON. Така или иначе не би трябвало да има проблем за тази грешка, не мисля че някой има нужда от проверка на по-често от 30 мин или час.

Nedevski commented 2 weeks ago
// Валидни данни, без глоби
{
  "obligationsData": [
    {
      "unitGroup": 1,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": []
    },
    {
      "unitGroup": 2,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": []
    }
  ]
}
// Невалидно ЕГН или номер СУМПС
{
  "obligationsData": [
    {
      "unitGroup": 1,
      "errorNoDataFound": true,
      "errorReadingData": false,
      "obligations": []
    },
    {
      "unitGroup": 2,
      "errorNoDataFound": true,
      "errorReadingData": false,
      "obligations": []
    }
  ]
}
// Два фиша, връчени - липса на преглед и неправилно изпреварване - серия GT
{
  "obligationsData": [
    {
      "unitGroup": 1,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": [
        {
          "status": 0,
          "amount": 50,
          "discountAmount": 50,
          "bankName": "\"ОББ\" АД",
          "bic": "UBBSBGSF",
          "iban": "BG22UBBS88883122944101",
          "paymentReason": "ФИШ СЕРИЯ GT 1234*** 29.07.2024",
          "pepCin": "epayments_ais_client_{GUID}",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|18646***",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "isServed": "True",
            "discount": "0",
            "documentType": "TICKET",
            "documentSeries": "GT",
            "documentNumber": "3375***",
            "documentIdentifier": "17455***",
            "amount": "50",
            "issueDate": "2024-07-29",
            "obligedPersonIdent": "880101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PВ0000AA",
            "breachDate": "2024-07-29",
            "breachOfOrder": "чл. 147, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 20,
          "discountAmount": 16,
          "bankName": "\"ОББ\" АД",
          "bic": "UBBSBGSF",
          "iban": "BG22UBBS88883122944101",
          "paymentReason": "ФИШ СЕРИЯ GT 1234*** 24.08.2024",
          "pepCin": "epayments_ais_client_{GUID}",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|18912***",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "isServed": "True",
            "discount": "20",
            "documentType": "TICKET",
            "documentSeries": "GT",
            "documentNumber": "3221***",
            "documentIdentifier": "13815***",
            "amount": "20",
            "issueDate": "2024-08-24",
            "obligedPersonIdent": "880101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PВ0000AA",
            "breachDate": "2024-08-24",
            "breachOfOrder": "чл. 6, т. 1, от ЗДвП"
          },
          "andSourceId": 1
        }
      ]
    },
    {
      "unitGroup": 2,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": []
    }
  ]
}
// НЕвръчени глоби за скорост - серия K
{
  "obligationsData": [
    {
      "unitGroup": 1,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": [
        {
          "status": 0,
          "amount": 100,
          "discountAmount": 70,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 29.03.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17720000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "100",
            "issueDate": "2024-03-29",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2024-01-25",
            "breachOfOrder": "чл. 21, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 200,
          "discountAmount": 140,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 03.04.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17740000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "200",
            "issueDate": "2024-04-03",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2022-11-03",
            "breachOfOrder": "чл. 21, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 100,
          "discountAmount": 70,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 06.04.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17820000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "100",
            "issueDate": "2024-04-06",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2023-12-30",
            "breachOfOrder": "чл. 21, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 50,
          "discountAmount": 35,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 08.04.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17830000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "50",
            "issueDate": "2024-04-08",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2023-08-05",
            "breachOfOrder": "чл. 21, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 50,
          "discountAmount": 35,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 21.04.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17920000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "50",
            "issueDate": "2024-04-21",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2023-10-13",
            "breachOfOrder": "чл. 21, ал. 1, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 100,
          "discountAmount": 70,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K 0000000 21.04.2024",
          "pepCin": "epayments_ais_client_GUID",
          "expirationDate": "2024-08-26T23:59:59",
          "obligationDate": "2024-08-26T00:00:00",
          "obligationIdentifier": "KAT|TICKET|17920000",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "0000000",
            "documentIdentifier": "99999999",
            "amount": "100",
            "issueDate": "2024-04-21",
            "obligedPersonIdent": "970101****",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "PB 0000 АА",
            "breachDate": "2023-09-05",
            "breachOfOrder": "чл. 21, ал. 2, от ЗДвП"
          },
          "andSourceId": 1
        }
      ]
    },
    {
      "unitGroup": 2,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": []
    }
  ]
}
// още НЕвръчени глоби за скорост - серия K
{
  "obligationsData": [
    {
      "unitGroup": 1,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": [
        {
          "status": 0,
          "amount": 50,
          "discountAmount": 35,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K XXXXXXX 08.10.2022",
          "pepCin": "epayments_ais_client_521007bd-xxxx-xxxx-xxxx-xxxxxxxxxxx",
          "expirationDate": "2024-08-27T23:59:59",
          "obligationDate": "2024-08-27T00:00:00",
          "obligationIdentifier": "KAT|TICKET|xxxxxxxx",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "XXXXXXX",
            "documentIdentifier": "xxxxxxxx",
            "amount": "50",
            "issueDate": "2022-10-08",
            "obligedPersonIdent": "**********",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "X XXXX XX",
            "breachDate": "2022-07-17",
            "breachOfOrder": "чл. 21, ал. 2, от ЗДвП"
          },
          "andSourceId": 1
        },
        {
          "status": 0,
          "amount": 50,
          "discountAmount": 35,
          "bankName": "БНБ",
          "bic": "BNBGBGSD",
          "iban": "BG64BNBG96613100147701",
          "paymentReason": "ЕЛ.ФИШ СЕРИЯ K xxxxxxxx 18.10.2023",
          "pepCin": "epayments_ais_client_521007bd-xxxx-xxxx-xxxx-xxxxxxxxxxx",
          "expirationDate": "2024-08-27T23:59:59",
          "obligationDate": "2024-08-27T00:00:00",
          "obligationIdentifier": "KAT|TICKET|xxxxxxxx",
          "type": 2,
          "serviceID": 349,
          "additionalData": {
            "discount": "30",
            "documentType": "TICKET",
            "documentSeries": "K",
            "documentNumber": "xxxxxxxx",
            "documentIdentifier": "xxxxxxxx",
            "amount": "50",
            "issueDate": "2023-10-18",
            "obligedPersonIdent": "**********",
            "obligedPersonIdentType": "person",
            "vehicleNumber": "XXXXXXX",
            "breachDate": "2023-09-19",
            "breachOfOrder": "чл. 21, ал. 2, от ЗДвП"
          },
          "andSourceId": 1
        }
      ]
    },
    {
      "unitGroup": 2,
      "errorNoDataFound": false,
      "errorReadingData": false,
      "obligations": []
    }
  ]
}