blq.out.postal.aks.BLQPostalVIPLib
1.0.5
dotnet add package blq.out.postal.aks.BLQPostalVIPLib --version 1.0.5
NuGet\Install-Package blq.out.postal.aks.BLQPostalVIPLib -Version 1.0.5
<PackageReference Include="blq.out.postal.aks.BLQPostalVIPLib" Version="1.0.5" />
<PackageVersion Include="blq.out.postal.aks.BLQPostalVIPLib" Version="1.0.5" />
<PackageReference Include="blq.out.postal.aks.BLQPostalVIPLib" />
paket add blq.out.postal.aks.BLQPostalVIPLib --version 1.0.5
#r "nuget: blq.out.postal.aks.BLQPostalVIPLib, 1.0.5"
#:package blq.out.postal.aks.BLQPostalVIPLib@1.0.5
#addin nuget:?package=blq.out.postal.aks.BLQPostalVIPLib&version=1.0.5
#tool nuget:?package=blq.out.postal.aks.BLQPostalVIPLib&version=1.0.5
BLQPostalVIPLib
A .NET class library for resolving and validating Serbian postal addresses against the AKS courier delivery network. Given a loosely-formatted address (postal code, place name, street), it normalizes the text, matches it to the official place/street registry, and returns the responsible delivery center (centar) and courier zone (kurir).
The library is published as a NuGet package (blq.out.postal.aks.BLQPostalVIPLib) and the registry data is synchronized from a remote BLQ postal API.
Requirements
- .NET 10 SDK (the library targets
net10.0and is platform-neutral) - A valid
aks_identAPI key
Installation
Reference the project directly, or install the generated NuGet package:
dotnet add package blq.out.postal.aks.BLQPostalVIPLib
The only external dependency is Newtonsoft.Json (13.0.4).
Usage
The public surface is BLQPostalVIPLib.AKS.PostalClient. Connect once with your API key, then check addresses:
using BLQPostalVIPLib.AKS;
// Authenticate and pull the latest registry from the API.
PostalClient.DoConnect("your-aks-ident-key");
// Resolve a free-form address.
AdresaSearchResp resp = PostalClient.CheckAddress(
PBroj: "22400", // postal code
MestoStr: "Ruma", // place / city
AdresaStr: "Glavna 100"); // street + house number
if (resp.ErrorCode == 0)
{
Console.WriteLine($"Center: {resp.CentarLabel} (matched: {resp.CentarOK})");
Console.WriteLine($"Zone: {resp.ZonaLabel} (matched: {resp.ZonaOK})");
Console.WriteLine($"Place: {resp.MESStr} ({resp.PostanskiBroj})");
Console.WriteLine($"Street: {resp.ADRStr}");
}
An overload accepts a pre-split address (street, house number, floor, apartment):
var client = new PostalClient();
AdresaSearchResp resp = client.CheckAddress(
"22400", "Ruma", "Glavna 100",
STRUlica: "Glavna", STRKucniBroj: "100", STRSprat: "", STRBrojStana: "");
AdresaSearchResp
| Field | Meaning |
|---|---|
CentarOK |
A delivery center was matched. |
ZonaOK |
A courier zone was matched. |
CentarLabel |
Label of the matched delivery center ("n/a" if none). |
ZonaLabel |
Code of the matched courier zone ("n/a" if none). |
MESStr |
Normalized place string. |
ADRStr |
Normalized street + house number. |
PostanskiBroj |
Resolved postal code. |
ErrorCode |
0 on success; non-zero on failure (e.g. 101 = authorization failed, others = registry not synchronized). |
ErrorMsg |
Human-readable status ("OK", "Authorisation failed", "Not synchonized"). |
How it works
- Sync —
DoConnect/CheckStatecalls and deserializes the full registry (places, streets, postal codes, centers, couriers) into an in-memory singleton. The registry is cached after the first successful sync. - Normalize — input text is cleaned: Serbian Cyrillic and Latin diacritics are transliterated to ASCII, parentheses and noise tokens are stripped, abbreviations like
Dr.are expanded, and street/house-number are separated. - Match —
BLQBRAddressCntrl/BLQBRMasterlocate the place by name and postal code (with progressive postal-code proximity fallback), then the street, then narrow to a specific address range and house number to derive the center and courier.
Notes
- The library targets the Serbian market; internal identifiers and comments are in Serbian (e.g. mesto = place, opština = municipality, kurir = courier, centar = delivery center).
- The registry is held in a process-wide singleton; the first
CheckAddress/DoConnectcall performs the network sync.
License
Proprietary. Copyright (c) 2026 BLQ.io. All rights reserved.
This software is provided free of charge to specific authorized clients only, in binary form. No source code is provided. Redistribution and modification are not permitted. See LICENSE.txt for the full End User License Agreement.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Newtonsoft.Json (>= 13.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.