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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="blq.out.postal.aks.BLQPostalVIPLib" Version="1.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="blq.out.postal.aks.BLQPostalVIPLib" Version="1.0.5" />
                    
Directory.Packages.props
<PackageReference Include="blq.out.postal.aks.BLQPostalVIPLib" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add blq.out.postal.aks.BLQPostalVIPLib --version 1.0.5
                    
#r "nuget: blq.out.postal.aks.BLQPostalVIPLib, 1.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package blq.out.postal.aks.BLQPostalVIPLib@1.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=blq.out.postal.aks.BLQPostalVIPLib&version=1.0.5
                    
Install as a Cake Addin
#tool nuget:?package=blq.out.postal.aks.BLQPostalVIPLib&version=1.0.5
                    
Install as a Cake Tool

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.0 and is platform-neutral)
  • A valid aks_ident API 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

  1. Sync — DoConnect / CheckState calls 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.
  2. 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.
  3. Match — BLQBRAddressCntrl / BLQBRMaster locate 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/DoConnect call 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.5 133 6/27/2026
1.0.4 117 6/25/2026
1.0.3 132 6/25/2026 1.0.3 is deprecated because it has critical bugs.