Problem Description
At M-KOPA, we believe the best way to evaluate engineering candidates is to see how they
actually write code in a realistic environment. Rather than conducting live coding or whiteboard
exercises, we therefore choose to use a take-home exercise that lets you work comfortably at
your own desk with your normal workflows. This exercise is designed to take 4-5 hours to
complete.
Important Notes:
. If any instructions seem ambiguous, feel free to make and document your assumptions in
the readme file.
. Don't worry about handling every edge case - note any limitations for discussion in your
follow-up interview.
Remember: this exercise serves as a discussion point for your technical interview. Focus on
demonstrating your approach to software development. While your solution should represent
your capabilities well, we don't expect perfection.
The Exercise
v Service Archetypes at M-KOPA
M-KOPA builds and deploys code using microservices. To complement and standardize this
work we have a set of "service archetypes" that serve as reusable building blocks for
common use-cases. Each of these service archetypes is supported by best-practice
documentation and an automated template for quickly creating the skeleton new service
instances.
For this exercise we willl be giving you the best-practice documentation for a specific service
archetype: an Outbound HTTP Service. An Outbound HTTP Service is meant to wrap an
external HTTP API in an async, message-based contract. Other internal M-KOPA
microservices can then take advantage of this async contract.
Using the HTTP Integration Service Archetype to Build Part
of an SMS Service
In M-KOPA's markets SMS (aka "text messaging") remains an extremely important tool for
reaching customers. To send these SMS messages M-KOPA integrates with a range of
different SMS service providers in the countries where we operate, each of whom typically
expose their SMS-sending capabilities via REST-style HTTP APIs.
At a very high-level an integration will look something like:

Hints
No hints available for this question.