DeliveryApi
: the API layer that exposes the endpoints.DeliveryDomain
: the business logic layer that contains the domain models and services.DeliveryInfrastructure
: the infrastructure layer that deals with data persistence using MongoDB and message queues using RabbitMQ.DeliveryBackground
: the background task that updates expired deliveries state every hour.DeliveryApiTests
: tests the Delivery endpoints.DeliveryDomainTests
: tests the business logic.DeliveryInfrastructureTests
: tests the database and message broker operations.POST /users/authenticate
- Authenticate user.GET /users
- Gets paged users.GET /users/{userID}
- Gets the user by user id.POST /deliveries/create
- Creates a new delivery.GET /deliveries
- Gets paged deliveries.GET /deliveries/{deliveryId}
- Gets the delivery by delivery id.PUT /deliveries/approve/{deliveryId}
- Approves the delivery.PUT /deliveries/complete/{deliveryId}
- Completes the delivery.PUT /deliveries/cancel/{deliveryId}
- Cancels the delivery.DELETE /deliveries/{deliveryId}
- Deletes the delivery by delivery id.