According to the HAL standard (see here and here) the links to other resources should be placed in a specific embedded section.
So for instance this
The "_Links" property must go in the root of a resource object. That resource object might be at the root, or it could be in the _embedded object.
I suspect some of the confusing is coming from having an "_embedded" key point to an array. This is only done when you want to represent multiple instances of a related resource.
In the example the key is movies which infers you are embedding a resource object which represents multiple movies. However, the array indicates there are multiple embedded resource objects. Each resource object is one movie.
By changing the name of the key to "movie" you get this:
{
"movies": [
{
"id": "123",
"title": "Movie title 1",
},{
"id": "456",
"title": "Movie title 2",
}
],
"_embedded": {
"movie": [
{
"id": "123",
"_links": {
"href": "movies/123/subtitles"
}
},
{
"id": "456",
"_links": {
"href": "movies/456/subtitles"
}
}
]
}
"_links": {
"self": "https://example.org/movielist"
}
}
So, now you have a representation of a "movie-list" resource object and you have embedded a bunch of "movie" resource objects for each item in the "movie-list". Each resource object pointed to by "movie" has a "_links" property to related information. I'm assuming that "subtitles" link was supposed to be a self link.