Customer Service
Overview
The Customer Service manages customer entities in the system.
Customers represent individual or corporate clients and include information such as contact details, status, and unique identifiers.
Each customer includes:
Id- unique identifierCode- unique customer codeName- customer nameEmail- contact emailPhone- contact phone numberIsActive- active status flag
All operations are tenant-aware.
Endpoints
GET
/api/v1/Customer/GetCustomerById/{id}
Returns a customer by its ID.
Route parameters:
id(long, required) - customer identifier
Behavior:
- Looks up the customer by ID
- Returns
404 Not Foundif the customer does not exist
Response:
EntityModel- customer details
Authorization:
- Requires Bearer Token
GET
/api/v1/Customer/GetCustomerByCode/{code}
Returns a customer by its code.
Route parameters:
code(string, required) - customer code
Behavior:
- Looks up the customer by code
- Returns
404 Not Foundif the customer does not exist
Response:
EntityModel- customer details
Authorization:
- Requires Bearer Token
GET
/api/v1/Customer/GetCustomerByEmail/{email}
Returns customers by email.
Route parameters:
email(string, required) - customer email
Behavior:
- Searches customers by email
- Returns
404 Not Foundif no matching customers exist
Response:
List<EntityModel>- customers matching the email
Authorization:
- Requires Bearer Token
GET
/api/v1/Customer/GetAllCustomers?isActive={isActive}
Returns all customers filtered by active status.
Query parameters:
isActive(bool, required) - filter by active/inactive customers
Behavior:
- Returns all customers matching the status
- Returns
404 Not Foundif no customers exist
Response:
List<EntityModel>- list of customers
Authorization:
- Requires Bearer Token
POST
/api/v1/Customer/AddNewCustomer
Creates a new customer.
Request body (EntityModel):
Code(string, required) - customer codeName(string, required) - customer nameEmail(string?, optional) - contact emailPhone(string?, optional) - contact phoneIsActive(bool?, optional, default: true)- Other
EntityModelproperties as needed
Behavior:
- Validates required fields in service layer
- Adds the customer to the database
- Writes an audit log entry on success
Errors:
- Returns
400 Bad Requestif validation - or insertion -
Response:
200 OK-"New Customer added successfully"400 Bad Request-"Add new customer failed"
Authorization:
- Requires Bearer Token
PUT
/api/v1/Customer/UpdateCustomerById/{id}
Updates an existing customer.
Route parameters:
id(long, required) - customer identifier
Request body (EntityModel):
- Only the fields to update need to be provided
Idis set from route
Behavior:
- Validates required fields in service layer
- Updates the customer record in the database
- Writes an audit log entry on success
Errors:
- Returns
400 Bad Requestif validation - or customer does not exist
Response:
200 OK-"Update Customer successful"400 Bad Request-"Update Customer failed"
Authorization:
- Requires Bearer Token
DELETE
/api/v1/Customer/DeleteCustomerById/{id}
Deletes a customer by ID.
Route parameters:
id(long, required) - customer identifier
Behavior:
- Performs a hard delete
- Writes an audit log entry on success
Errors:
- Returns
400 Bad Requestif the customer does not exist
Response:
200 OK-"Customer deleted successfully"400 Bad Request-"Customer not found"
Authorization:
- Requires Bearer Token
Notes
- Validation is enforced in the service layer, not via model attributes
- Email and Code are used for searching and uniqueness
- Tenant-aware operations ensure data isolation per tenant
- Internal errors are logged but not exposed to API consumers