Entity Address Service
Overview
Entity Addresses represent physical addresses associated with entities (customers, suppliers, etc.).
Each Entity Address defines:
- address identifier (
Id) - associated entity identifier (
EntityId) - address details (street, city, postcode, country, etc.)
- address type (billing, shipping, etc.)
Entity Addresses enable multiple address management per entity, supporting scenarios such as different billing and shipping addresses, multiple delivery locations, or historical address tracking.
All entity address operations are tenant-aware and fully audited.
Endpoints
GET
/api/v1/EntitiesAddress/GetEntityAddressById/{id}
Returns a single entity address by its ID.
Route parameters:
id(long, required)
Behavior:
- Looks up address by
Id - Returns address details if found
Errors:
- Returns
404if address does not exist
Response:
AddressModel
Authorization:
- Requires Bearer Token
GET
/api/v1/EntitiesAddress/GetEntityAddressByEntityID/{entityId}
Returns all addresses for a specific entity.
Route parameters:
entityId(long, required)
Behavior:
- Filters by
EntityId - Returns a list of all addresses associated with the entity
- Returns
404if no addresses exist for the entity
Response:
List<AddressModel>
Authorization:
- Requires Bearer Token
POST
/api/v1/EntitiesAddress/AddNewEntityAddress
Creates a new entity address.
Request body (AddressModel):
EntityId(long, required, must be > 0)- Address fields (as defined by
AddressModelvalidation)
Behavior:
- Validation is enforced in the service layer
- Creates new address record associated with the entity
- Successful creation writes an audit log entry
Errors:
- Returns
400if:- request body is invalid
- database insert - or other internal error occurs
Response:
200 OKwith message:"New entity address added"400 Bad Requestwith message:"Add new entity address failed"
Authorization:
- Requires Bearer Token
PUT
/api/v1/EntitiesAddress/UpdateEntityAddressById/{id}
Updates an existing entity address.
Route parameters:
id(long, required)
Request body (AddressModel):
- Address fields to update (as defined by
AddressModel)
Behavior:
- The controller sets
Idfrom the route - Validation is enforced in the service layer
- Updates address record with provided fields
- Successful update writes an audit log entry
Errors:
- Returns
400if:- request body is invalid
- address does not exist
Response:
200 OKwith message:"Update Customer Address successful"(note: message uses "Customer" but should be generic "Entity")400 Bad Requestwith message:"Update Customer Address failed"(note: message uses "Customer" but should be generic "Entity")
Authorization:
- Requires Bearer Token
DELETE
/api/v1/EntitiesAddress/DeleteEntityAddressById/{id}
Deletes an entity address by its ID.
Route parameters:
id(long, required)
Behavior:
- Performs a hard delete
- Successful deletion writes an audit log entry
Errors:
- Returns
400with message"Customer Address not found"(note: message uses "Customer" but should be generic "Entity") if the address does not exist
Response:
200 OKwith message:"Customer Address deleted successfully"(note: message uses "Customer" but should be generic "Entity")400 Bad Requestwith message:"Customer Address not found"(note: message uses "Customer" but should be generic "Entity")
Authorization:
- Requires Bearer Token
Notes
- Validation is enforced in the service layer based on
AddressModelrequirements - Multiple addresses can be associated with a single entity
- Address types (billing, shipping, etc.) should be defined in the
AddressModel - Internal errors are logged and not exposed to API consumers
- Response messages reference "Customer Address" but the service is generic for all entity types