We need to provide the specification (or contract) by which users can interact with Delivery Service.
In Java terms, we need only Interfaces and Dtos in the scope of this task.
Provide a contract for getting order delivery status, e.g. when the customer is awaiting the delivery and wants to understand its status (packed, await delivery manager, delivering, delivered, and so on).
Provide a contract for updating delivery status todelivering``, e.g. when the delivery manager gets the order and goes to the customer.
Provide a contract for updating delivery status todelivered``, e.g. when the delivery manager delivered the order to the customer.
Acceptance Criteria
The spec submodule is added
Defined the Request, Response objects
Defined the Interface for interacting with Delivery Service
Well-documented specification with JavaDoc and OpenApi
Ability to extend the contract in the future without impacting clients (versioning)
Technical Details
Explore versioning of REST API
Explore what is Specification Driven Development
Explore what is Api First Approach
Explore springdoc-openapi-starter-webflux-ui and springdoc-openapi-starter-webmvc-ui
Remember about SOLID (Interface Segregation Principle)
Context
getting order delivery status
, e.g. when the customer is awaiting the delivery and wants to understand its status (packed, await delivery manager, delivering, delivered, and so on).updating delivery status to
delivering``, e.g. when the delivery manager gets the order and goes to the customer.updating delivery status to
delivered``, e.g. when the delivery manager delivered the order to the customer.Acceptance Criteria
spec
submodule is addedTechnical Details
springdoc-openapi-starter-webflux-ui
andspringdoc-openapi-starter-webmvc-ui