mirror of
https://github.com/directus/directus.git
synced 2026-01-27 02:48:02 -05:00
351 lines
5.2 KiB
Markdown
351 lines
5.2 KiB
Markdown
---
|
|
pageClass: page-reference
|
|
---
|
|
|
|
# Relations
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
> What data is linked to what other data. Allows you to assign authors to articles, products to sales, and whatever other
|
|
structures you can think of. [Learn more about Relationships](/concepts/relationships/).
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
[[toc]]
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## The Relation Object
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
<div class="definitions">
|
|
|
|
`id` **integer**\
|
|
Primary key of the relation.
|
|
|
|
`many_collection` **string**\
|
|
Collection on the "many" side of the relation.
|
|
|
|
`many_field` **string**\
|
|
Field on the "many" side of the relation.
|
|
|
|
`one_collection` **string**\
|
|
Collection on the "one" side of the relation.
|
|
|
|
`one_field` **string**\
|
|
Field on the "one" side of the relation.
|
|
|
|
`one_collection_field` **string**\
|
|
In Many-to-Any type fields, this holds the field in the many collection that holds the name of the "one" collection.
|
|
|
|
`one_allowed_collections` **string**\
|
|
In Many-to-Any type fields, this holds a csv of collection names the user is allowed to use through the m2a relation.
|
|
|
|
`junction_field` **string**\
|
|
For Many-to-Many type fields, this holds the name of the field that "links" a many-to-one to a one-to-many, creating a many-to-many.
|
|
|
|
</div>
|
|
</div>
|
|
<div class="right">
|
|
|
|
```json
|
|
{
|
|
"id": 13,
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files",
|
|
"one_field": null,
|
|
"one_collection_field": null,
|
|
"one_allowed_collections": null,
|
|
"junction_field": null
|
|
}
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## List relations
|
|
|
|
List all relations that exist in Directus.
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
::: tip Permissions
|
|
|
|
The data returned in this endpoint will be filtered based on the user's permissions. For example, relations that apply
|
|
to a collection that the current user doesn't have access to are stripped out.
|
|
|
|
:::
|
|
|
|
### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/api/query).
|
|
|
|
### Returns
|
|
|
|
An array of up to [limit](/reference/api/query/#limit) [relation objects](#the-relation-object). If no items are
|
|
available, data will be an empty array.
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
GET /relations
|
|
```
|
|
|
|
```json
|
|
// Response
|
|
|
|
{
|
|
"data": [
|
|
{
|
|
"id": 13,
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files",
|
|
"one_field": null,
|
|
"one_collection_field": null,
|
|
"one_allowed_collections": null,
|
|
"junction_field": null
|
|
},
|
|
{...},
|
|
{...}
|
|
]
|
|
}
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Retrieve a relation
|
|
|
|
List an existing relation by primary key.
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/api/query).
|
|
|
|
### Returns
|
|
|
|
Returns the requested [relation object](#the-relation-object).
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
GET /relations/:id
|
|
```
|
|
|
|
```json
|
|
// Response
|
|
|
|
{
|
|
"data": {
|
|
"id": 13,
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files",
|
|
"one_field": null,
|
|
"one_collection_field": null,
|
|
"one_allowed_collections": null,
|
|
"junction_field": null
|
|
}
|
|
}
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Create relation
|
|
|
|
Create one or more new relation(s).
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/api/query).
|
|
|
|
### Request Body
|
|
|
|
A partial [relation object](#the-relation-object) or an array of partial [relation objects](#the-relation-object).
|
|
|
|
### Returns
|
|
|
|
Returns the [relation object](#the-relation-object) for the created relation.
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
POST /relations
|
|
```
|
|
|
|
```json
|
|
// Request
|
|
|
|
{
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files"
|
|
}
|
|
```
|
|
|
|
```json
|
|
// Response
|
|
|
|
{
|
|
"data": {
|
|
"id": 13,
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files",
|
|
"one_field": null,
|
|
"one_collection_field": null,
|
|
"one_allowed_collections": null,
|
|
"junction_field": null
|
|
}
|
|
}
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Update relation
|
|
|
|
Update an existing relation.
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/api/query).
|
|
|
|
### Request Body
|
|
|
|
A partial [relation object](#the-relation-object).
|
|
|
|
### Returns
|
|
|
|
Returns the [relation object](#the-relation-object) for the created relation.
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
PATCH /relations/:id
|
|
```
|
|
|
|
```json
|
|
// Request
|
|
|
|
{
|
|
"one_field": "articles"
|
|
}
|
|
```
|
|
|
|
```json
|
|
// Response
|
|
|
|
{
|
|
"data": {
|
|
"id": 13,
|
|
"many_collection": "articles",
|
|
"many_field": "featured_image",
|
|
"one_collection": "directus_files",
|
|
"one_field": "articles",
|
|
"one_collection_field": null,
|
|
"one_allowed_collections": null,
|
|
"junction_field": null
|
|
}
|
|
}
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Delete relation
|
|
|
|
Delete an existing relation.
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
### Returns
|
|
|
|
Empty body.
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
DELETE /relations/:id
|
|
```
|
|
|
|
```json
|
|
// Empty Response
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|
|
|
|
## Delete Multiple relations
|
|
|
|
Delete multiple existing relations.
|
|
|
|
<div class="two-up">
|
|
<div class="left">
|
|
|
|
### Request Body
|
|
|
|
An array of relation primary keys
|
|
|
|
### Returns
|
|
|
|
Empty body.
|
|
|
|
</div>
|
|
<div class="right">
|
|
|
|
```
|
|
DELETE /relations
|
|
```
|
|
|
|
```json
|
|
// Request
|
|
[15, 251, 810]
|
|
```
|
|
|
|
```json
|
|
// Empty Response
|
|
```
|
|
|
|
</div>
|
|
</div>
|
|
|
|
---
|