reference:system-architecture:address-editing-and-query-api
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| reference:system-architecture:address-editing-and-query-api [2025/08/26 21:34] – [NAS Address Editing and Query API Specification] runarbe | reference:system-architecture:address-editing-and-query-api [2025/08/27 06:33] (current) – runarbe | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== Address Editing and Query API ====== |
| + | |||
| + | This API provides methods to interact with the core addressing data model such as creating, reading, updating and deleting address objects as well as querying them and keeping them in sync with application data and external copies/ | ||
| ===== 1. Integration with Third-Party GIS Platforms ===== | ===== 1. Integration with Third-Party GIS Platforms ===== | ||
| - | The APIsupports | + | The API supports |
| - | * | + | * GeoServer: Supports WFS, WMS, and GeoAPI. |
| - | + | * (ArcGIS Enterprise: Utilises the ArcGIS REST API) | |
| - | GeoServer: Supports WFS, WMS, and GeoAPI. | + | |
| - | + | ||
| - | * | + | |
| - | + | ||
| - | (ArcGIS Enterprise: Utilises the ArcGIS REST API) | + | |
| ===== 2. Suitable technologies for implementing API ===== | ===== 2. Suitable technologies for implementing API ===== | ||
| Line 17: | Line 14: | ||
| Selecting the right technologies is crucial for efficient APIimplementation. Two primary technologies are recommended: | Selecting the right technologies is crucial for efficient APIimplementation. Two primary technologies are recommended: | ||
| - | * | + | * Microsoft .NET Core: This framework is selected for its compatibility with the organisation’s software environment. It provides high performance and operates as a lower-level language, though it is marginally more complex. |
| + | * Python: Known as the universal language for data scientists, Python integrates smoothly with GIS platforms. ArcGIS utilises Python for analytics and extensions, making it a preferred choice for GIS programmers. Its use within the Microsoft platform further encourages its adoption. | ||
| - | Microsoft .NET Core: This framework is selected for its compatibility with the organisation’s software environment. It provides high performance and operates as a lower-level language, though it is marginally more complex. | + | ===== 3. Technical |
| - | + | ||
| - | * | + | |
| - | + | ||
| - | Python: Known as the universal language for data scientists, Python integrates smoothly with GIS platforms. ArcGIS utilises Python for analytics and extensions, making it a preferred choice for GIS programmers. Its use within the Microsoft platform further encourages its adoption. | + | |
| - | + | ||
| - | + | ||
| - | ===== 1. RESTful API ===== | + | |
| - | + | ||
| - | Types of actions in a REST API | + | |
| - | + | ||
| - | * HttpGet: This method is used to retrieve and query records from the database. | + | |
| - | * HttpPut: This function updates existing records. | + | |
| - | * HttpPost: Utilised for creating new entries in the database. | + | |
| - | * HttpDelete: This method deletes records currently stored. | + | |
| - | + | ||
| - | For each data type, a unique controller oversees these actions, ensuring a structured and coherent data handling process. The API is designed to be user-friendly, | + | |
| - | + | ||
| - | ===== 2. Technical | + | |
| From the outset, the technical approach involves utilising: | From the outset, the technical approach involves utilising: | ||
| Line 44: | Line 24: | ||
| * Python >= 3.12: The latest iteration of the Python programming language. | * Python >= 3.12: The latest iteration of the Python programming language. | ||
| * Containerization using Docker: The leading technology for containerization of server applications | * Containerization using Docker: The leading technology for containerization of server applications | ||
| - | + | * Linux operating system: A robust and proven platform for hosting services. | |
| - | Linux operating system: A robust and proven platform for hosting services. | + | |
| This structure aims to enhance the National Addressing System' | This structure aims to enhance the National Addressing System' | ||
| - | ==== 2.1 Performance Management, Rate Limiting, Caching, and Developer Enablement ==== | + | ==== 3.1 Performance Management, Rate Limiting, Caching, and Developer Enablement ==== |
| To ensure reliable, scalable, and fair access to the NAS API ecosystem—particularly as integrations expand to include both public and private third-party systems—the platform should adopt additional operational controls and developer support mechanisms: | To ensure reliable, scalable, and fair access to the NAS API ecosystem—particularly as integrations expand to include both public and private third-party systems—the platform should adopt additional operational controls and developer support mechanisms: | ||
| - | ==== 2.2 Rate Limiting and Caching ==== | + | ==== 3.2 Rate Limiting and Caching ==== |
| The NAS API layer will benefit from the implementation of rate limiting to prevent abuse, ensure equitable resource allocation, and protect backend systems from overload during periods of high demand. Rate limiting policies will be clearly defined in API documentation and enforced per API client or token, with the flexibility to grant higher limits to critical government and infrastructure partners. | The NAS API layer will benefit from the implementation of rate limiting to prevent abuse, ensure equitable resource allocation, and protect backend systems from overload during periods of high demand. Rate limiting policies will be clearly defined in API documentation and enforced per API client or token, with the flexibility to grant higher limits to critical government and infrastructure partners. | ||
| Line 59: | Line 38: | ||
| Complementing rate limiting, API-level caching mechanisms (e.g., in-memory caches, reverse proxies, or CDN-based edge caching) will be deployed to accelerate the most frequently accessed data and reduce repeated queries to the primary database. Caching strategies will be tailored according to data volatility and use-case, balancing data freshness against system responsiveness. | Complementing rate limiting, API-level caching mechanisms (e.g., in-memory caches, reverse proxies, or CDN-based edge caching) will be deployed to accelerate the most frequently accessed data and reduce repeated queries to the primary database. Caching strategies will be tailored according to data volatility and use-case, balancing data freshness against system responsiveness. | ||
| - | ==== 2.3 Service Level Agreements (SLAs) for Integrations ==== | + | ==== 3.3 Service Level Agreements (SLAs) for Integrations ==== |
| For all external integrations, | For all external integrations, | ||
| - | ==== 2.4 Performance Benchmarks and Scalability Thresholds ==== | + | ==== 3.4 Performance Benchmarks and Scalability Thresholds ==== |
| To guide system sizing and support future growth, the NAS API and underlying infrastructure will be subject to regular performance benchmarking. Metrics such as average and 95th percentile response times, throughput under load, and maximum supported concurrent connections will be documented. Scalability thresholds (e.g., API requests per minute, data volume limits, user concurrency) will be specified and reviewed as usage patterns evolve. | To guide system sizing and support future growth, the NAS API and underlying infrastructure will be subject to regular performance benchmarking. Metrics such as average and 95th percentile response times, throughput under load, and maximum supported concurrent connections will be documented. Scalability thresholds (e.g., API requests per minute, data volume limits, user concurrency) will be specified and reviewed as usage patterns evolve. | ||
| - | ==== 2.5 Sandbox Environments for Integration Testing ==== | + | ==== 3.5 Sandbox Environments for Integration Testing ==== |
| To facilitate secure and efficient onboarding of new integrators, | To facilitate secure and efficient onboarding of new integrators, | ||
| - | ===== 3 API methods | + | ===== 4 Required |
| The API must as minimum implement the following methods. Authentication is exempt but implicitly required for acceptable system operations. | The API must as minimum implement the following methods. Authentication is exempt but implicitly required for acceptable system operations. | ||
| - | ^_PARA__TABLE_INS_Tag^_PARA__TABLE_INS_Method^_PARA__TABLE_INS_Endpoint^_PARA__TABLE_INS_Description| | | + | ^ \\ Tag^ \\ Method^ \\ Endpoint^ \\ Description| | |
| - | |_PARA__TABLE_INS_**address-unit** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **address-unit** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| | | | | | | | | | | | | | | ||
| - | |_PARA__TABLE_INS_**sub-address** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **sub-address** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| | | | | | | | | | | | | | | ||
| - | |_PARA__TABLE_INS_**street** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **street** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| | | | | | | | | | | | | | | ||
| - | |_PARA__TABLE_INS_**street-segment** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **street-segment** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| | | | | | | | | | | | | | | ||
| - | |_PARA__TABLE_INS_**issues** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **issues** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| | | | | | | | | | | | | | | ||
| - | |_PARA__TABLE_INS_**start-stop** |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | \\ **start-stop** | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_GET|_PARA__TABLE_INS_/ | + | | | \\ GET| \\ / |
| - | | |_PARA__TABLE_INS_POST|_PARA__TABLE_INS_/ | + | | | \\ POST| \\ / |
| - | | |_PARA__TABLE_INS_DELETE|_PARA__TABLE_INS_/ | + | | | \\ DELETE| \\ / |
| | |POST|/ | | |POST|/ | ||
| |**query** | | | | | | |**query** | | | | | | ||
reference/system-architecture/address-editing-and-query-api.1756244040.txt.gz · Last modified: by runarbe
