Request is received using a dedicated request struct CreateOrderRequest
this request struct has all the relevant annotations and validations for that request ONLY, it can use shared records, something like types.AddressRequest
but shared types MUST be setup for request validation also.
IMPORTANT do not use data from order service or API here as it will make it easy to break API contracts
the CreateOrderRequest
will be validated using go validator and there is example code on how to use that. It will automatically run any nested validations, for available validations check go validator docs