I have a question in regards to designing relationships in REST API's. Imagine I have a relationship like in this diagram
Now, should I show the relationship in the team
endpoint like this?
/v1/teams/:id
{
id: "66e08a2b-2495-4edc-a528-ef00a3f908f1",
name: "Sales",
description: "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Fusce tellus odio, dapibus id fermentum quis, suscipit id erat".
members: [
{
id: "a31604c6-2289-4a0b-9127-7219abf4f494",
name: "John Doe",
role: "manager"
},
{
id: "fa3c68f4-2008-4bd3-8280-8ae8c4c40a26",
name: "James Smitt",
role: "member"
},
{
id: "946d2c3d-415c-4461-850d-892385a65f86",
firstName: "Jane Doe",
role: "member"
}
]
}
And an employee
endpoint like this:
/v1/employees/:id
{
id: "a31604c6-2289-4a0b-9127-7219abf4f494",
name: "John Doe",
teams: [
{
id: "66e08a2b-2495-4edc-a528-ef00a3f908f1",
name: "Sales",
role: "manager"
},
{
id: "66e08a2b-2495-4edc-a528-ef00a3f908f1",
name: "Account management",
role: "member"
},
]
}
OR should I have a separate endpoint for teammembers
?
/v1/teams/:id/members
[
{
id: "a31604c6-2289-4a0b-9127-7219abf4f494",
name: "John Doe",
role: "manager"
},
{
id: "fa3c68f4-2008-4bd3-8280-8ae8c4c40a26",
name: "James Smitt",
role: "member"
},
{
id: "946d2c3d-415c-4461-850d-892385a65f86",
firstName: "Jane Doe",
role: "member"
}
]
And, if I use the separate should I still include the teams
and members
properties in the employee and team endpoints?