Right¶
A right controls which DSPs may distribute a given product, optionally scoped to territories and/or continents. Each right links a distributor to a product (distributed) and one or more DSPs, and is associated with a user email.
Lists Rights¶
GET https://domain.com/api/v1/rights
Headers¶
| Name | Type | Description |
|---|---|---|
| Authorization* | String | Bearer \ |
| Content-Type* | String | application/vnd.api+json |
Response — 200 OK
{
"data": [
{
"type": "rights",
"id": "<ID>",
"attributes": {
"action": "add",
"comments": null,
"created-by": "user-email@user-email.com",
"updated-by": "user-email@user-email.com",
"user-email": "user-email@user-email.com",
"created-at": "2023-08-11T20:45:30.000000Z",
"updated-at": "2023-08-11T20:45:30.000000Z"
},
"relationships": {
"distributor": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributor",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributor"
}
},
"distributed": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributed",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributed"
}
},
"territories": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/territories",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/territories"
}
},
"continents": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/continents",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/continents"
}
},
"dsps": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/dsps",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/dsps"
}
}
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
}
],
"meta": {
"page": {
"currentPage": 1,
"from": 1,
"lastPage": 1,
"perPage": 20,
"to": 1,
"total": 1
}
},
"jsonapi": {
"version": "1.0"
},
"links": {
"first": "https://domain.com/api/v1/rights?page[number]=1&page[size]=20",
"last": "https://domain.com/api/v1/rights?page[number]=1&page[size]=20"
}
}
Filters¶
| Filter | Example |
|---|---|
| ID | /rights?filter[id]=1 |
| User email | /rights?filter[user-email]=user@example.com |
| Product ID | /rights?filter[product-id]=42 |
Get Right¶
GET https://domain.com/api/v1/rights/:id
Path Parameters¶
| Name | Type | Description |
|---|---|---|
| id* | Number | Right ID |
Headers¶
| Name | Type | Description |
|---|---|---|
| Authorization* | String | Bearer \ |
| Content-Type* | String | application/vnd.api+json |
Response — 200 OK
{
"data": {
"type": "rights",
"id": "<ID>",
"attributes": {
"action": "add",
"comments": null,
"created-by": "user-email@user-email.com",
"updated-by": "user-email@user-email.com",
"user-email": "user-email@user-email.com",
"created-at": "2023-08-11T20:45:30.000000Z",
"updated-at": "2023-08-11T20:45:30.000000Z"
},
"relationships": {
"distributor": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributor",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributor"
}
},
"distributed": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributed",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributed"
}
},
"territories": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/territories",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/territories"
}
},
"continents": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/continents",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/continents"
}
},
"dsps": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/dsps",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/dsps"
}
}
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
},
"jsonapi": {
"version": "1.0"
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
}
Create Right¶
POST https://domain.com/api/v1/rights
On create, action must be add. At least one DSP is required. The product is referenced through the distributed relationship.
Headers¶
| Name | Type | Description |
|---|---|---|
| Authorization* | String | Bearer \ |
| Content-Type* | String | application/vnd.api+json |
Request Body¶
| Name | Type | Required | Description |
|---|---|---|---|
| action | String | Yes | Must be add on create |
| user-email | String | Yes | Email responsible for this rights action |
| distributor | Object | Yes | Distributor resource (relationship) |
| distributed | Object | Yes | Product resource (relationship) |
| dsps | Array | Yes | DSP resources (relationship, at least one) |
| comments | String | No | Free-text notes |
| territories | Array | No | Territory resources (relationship) |
| continents | Array | No | Continent resources (relationship) |
Response — 201 Created
{
"data": {
"type": "rights",
"id": "<ID>",
"attributes": {
"action": "add",
"comments": null,
"created-by": "user-email@user-email.com",
"updated-by": "user-email@user-email.com",
"user-email": "user-email@user-email.com",
"created-at": "2023-08-11T20:45:30.000000Z",
"updated-at": "2023-08-11T20:45:30.000000Z"
},
"relationships": {
"distributor": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributor",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributor"
}
},
"distributed": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributed",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributed"
}
},
"territories": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/territories",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/territories"
}
},
"continents": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/continents",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/continents"
}
},
"dsps": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/dsps",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/dsps"
}
}
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
},
"jsonapi": {
"version": "1.0"
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
}
Response — 422 Unprocessable Entity
{
"jsonapi": {
"version": "1.0"
},
"errors": [
{
"detail": "The action field is required.",
"source": {
"pointer": "/data/attributes/action"
},
"status": "422",
"title": "Unprocessable Entity"
}
]
}
Update Right¶
PATCH https://domain.com/api/v1/rights/:id
Path Parameters¶
| Name | Type | Description |
|---|---|---|
| id* | Number | Right ID |
Headers¶
| Name | Type | Description |
|---|---|---|
| Authorization* | String | Bearer \ |
| Content-Type* | String | application/vnd.api+json |
Request Body¶
| Name | Type | Required | Description |
|---|---|---|---|
| action | String | No | add |
| user-email | String | No | Email responsible for this rights action |
| comments | String | No | Free-text notes |
| distributor | Object | No | Distributor resource (relationship) |
| distributed | Object | No | Product resource (relationship) |
| dsps | Array | No | DSP resources (relationship) |
| territories | Array | No | Territory resources (relationship) |
| continents | Array | No | Continent resources (relationship) |
Response — 200 OK
{
"data": {
"type": "rights",
"id": "<ID>",
"attributes": {
"action": "add",
"comments": null,
"created-by": "user-email@user-email.com",
"updated-by": "user-email@user-email.com",
"user-email": "user-email@user-email.com",
"created-at": "2023-08-11T20:45:30.000000Z",
"updated-at": "2023-08-11T20:45:30.000000Z"
},
"relationships": {
"distributor": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributor",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributor"
}
},
"distributed": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/distributed",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/distributed"
}
},
"territories": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/territories",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/territories"
}
},
"continents": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/continents",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/continents"
}
},
"dsps": {
"links": {
"related": "https://domain.com/api/v1/rights/<ID>/dsps",
"self": "https://domain.com/api/v1/rights/<ID>/relationships/dsps"
}
}
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
},
"jsonapi": {
"version": "1.0"
},
"links": {
"self": "https://domain.com/api/v1/rights/<ID>"
}
}
Delete Right¶
DELETE https://domain.com/api/v1/rights/:id
Path Parameters¶
| Name | Type | Description |
|---|---|---|
| id* | Number | Right ID |
Headers¶
| Name | Type | Description |
|---|---|---|
| Authorization* | String | Bearer \ |
| Content-Type* | String | application/vnd.api+json |
Response — 204 No Content (delete OK, empty body)
Response — 404 Not Found