I'd say you'd need to qualify what you mean by "difficult".
That is, the exercise in itself is not too complex. As described by the API specification, the operations are acceptably simple and well defined. So for someone with some experience, it's probably an easy problem.
However there is a lot that is implicit and assumed, and that can take quite more effort and time, particularly for a Junior dev - which is what you've ranked the difficulty at. The main problem is the infrastructure. The candidate is expected to create not only the service asked, but also setting up a bunch of things just to be able to build and run it.
Maybe some of that is helped with the mentioned "Guided local testing instructions" but it doesn't sound like it is.
As mentioned on "Why Microservices as coding tests" [0]: "Building a Microservice from scratch involves a ton of different skills, and so it gives us a complete overview of developers' abilities." However, many of the skills mentioned there can't be really expected from a Junior dev.
And that is a problem because if they don't have those more advanced skills they just won't be able to show the basic skills they do have. In my experience, for Junior devs it works much better if you provide them with at least some infrastructure and let them focus on a specific part of the problem.
Notice also, that the answers you get from comments here, would probably need to be qualified by the commenter's experience.
I would put this at a 5/10, there’s a lot to do and read through.
My thoughts:
1. ChatGPT can do this trivially.
2. It’s a reasonable amount of things to read through and understand. Reminds me of a project from my CS masters program (Georgia Tech) where most of the difficulty is in parsing the instructions and figuring out what’s required (not that it’s a bad thing, just an observation).
3) I would maybe consider dropping the word “fun” from “we would like you to complete a fun coding exercise”. Job interviews are not fun in general and this exercise doesn’t seem that fun to me!
Regardless of the difficulty, this is a lot of text describing the setup for what is basically: can you write basic SQL, can you append, split, and remove text from a string, can you write a basic API endpoint. Why is there so much fluff?
I would say around a 6 or 7 for someone with mid-level experience. For a junior dev, it might be closer to an 8, given the multiple components involved.
That is, the exercise in itself is not too complex. As described by the API specification, the operations are acceptably simple and well defined. So for someone with some experience, it's probably an easy problem.
However there is a lot that is implicit and assumed, and that can take quite more effort and time, particularly for a Junior dev - which is what you've ranked the difficulty at. The main problem is the infrastructure. The candidate is expected to create not only the service asked, but also setting up a bunch of things just to be able to build and run it.
Maybe some of that is helped with the mentioned "Guided local testing instructions" but it doesn't sound like it is.
As mentioned on "Why Microservices as coding tests" [0]: "Building a Microservice from scratch involves a ton of different skills, and so it gives us a complete overview of developers' abilities." However, many of the skills mentioned there can't be really expected from a Junior dev.
And that is a problem because if they don't have those more advanced skills they just won't be able to show the basic skills they do have. In my experience, for Junior devs it works much better if you provide them with at least some infrastructure and let them focus on a specific part of the problem.
Notice also, that the answers you get from comments here, would probably need to be qualified by the commenter's experience.
[0] https://codigrade.com/index.html#whymicroservice