mirror of
https://github.com/directus/directus.git
synced 2026-01-29 00:27:59 -05:00
424 lines
8.0 KiB
Markdown
424 lines
8.0 KiB
Markdown
---
|
|
description: REST and GraphQL API documentation on the "Collections" collection in Directus.
|
|
readTime: 5 min read
|
|
pageClass: page-reference
|
|
---
|
|
|
|
# Collections
|
|
|
|
> Collections are the individual collections of items, similar to tables in a database. Changes to collections will
|
|
> alter the schema of the database. [Learn more about Collections](/getting-started/glossary#collections).
|
|
|
|
---
|
|
|
|
## The Collection Object
|
|
|
|
`collection` **string**\
|
|
Name of the collection. This matches the table name in the database.
|
|
|
|
#### Meta
|
|
|
|
Directus metadata, primarily used in the Admin App.
|
|
|
|
`collection` **string**\
|
|
Name of the collection. This matches the table name in the database.
|
|
|
|
`icon` **string**\
|
|
Icon displayed in the Admin App when working with this collection.
|
|
|
|
`note` **string**\
|
|
Short description displayed in the Admin App.
|
|
|
|
`display_template` **string**\
|
|
How items in this collection should be displayed when viewed relationally in the Admin App.
|
|
|
|
`hidden` **boolean**\
|
|
Whether or not this collection is hidden in the Admin App.
|
|
|
|
`singleton` **boolean**\
|
|
Whether or not this collection is treated as a singleton.
|
|
|
|
`translations` **array**\
|
|
How this collection's name is displayed in the different languages in the Admin App.
|
|
|
|
`archive_field` **string**\
|
|
What field in the collection holds the archived state.
|
|
|
|
`archive_value` **string**\
|
|
What value the archive field should be set to when archiving an item.
|
|
|
|
`unarchive_value` **string**\
|
|
What value the archive field should be set to when unarchiving an item.
|
|
|
|
`archive_app_filter` **boolean**\
|
|
Whether or not the Admin App should allow the user to view archived items.
|
|
|
|
`sort_field` **boolean**\
|
|
What field holds the sort value on the collection. The Admin App uses this to allow drag-and-drop manual sorting.
|
|
|
|
`accountability` **string**\
|
|
What data is tracked. One of `all`, `activity`. See [Accountability](/configuration/data-model#accountability) for more information.
|
|
|
|
`item_duplication_fields` **array**\
|
|
What fields are duplicated during "Save as copy" action of an item in this collection. See [Duplication](/configuration/data-model#duplication)
|
|
for more information.
|
|
|
|
`group` **string**\
|
|
The name of the parent collection. This is used in [grouping/nesting of collections](/configuration/data-model#sorting-grouping).
|
|
|
|
`sort` **number**\
|
|
What sort order of the collection relative to other collections of the same level. This is used in [sorting of collections](/configuration/data-model#sorting-grouping).
|
|
|
|
`collapse` **string**\
|
|
What is the default behavior of this collection or "folder" collection when it has nested collections. One of `open`, `closed`,
|
|
`locked`.
|
|
|
|
#### Schema
|
|
|
|
"Raw" database information. Based on the database vendor used, different information might be returned. The following
|
|
are available for all drivers.
|
|
|
|
`name` **string**\
|
|
The table name.
|
|
|
|
`comment` **string**\
|
|
The table comment.
|
|
|
|
#### Fields
|
|
|
|
This holds an array of initial fields used for the collection. You can use the same model as used in
|
|
[Fields](/reference/system/fields.html) to submit fields here. You can use this to set a custom primary key type as
|
|
well. If a primary key field is omitted, the request will auto-generate an auto-incremented primary key field named
|
|
`id`.
|
|
|
|
::: tip
|
|
|
|
["folder" collections do not hold any data](/configuration/data-model#sorting-grouping), hence their schema would be
|
|
`null`.
|
|
|
|
:::
|
|
|
|
```json
|
|
{
|
|
"collection": "articles",
|
|
"meta": {
|
|
"collection": "articles",
|
|
"icon": "article",
|
|
"note": "Blog posts",
|
|
"display_template": "{{ title }}",
|
|
"hidden": false,
|
|
"singleton": false,
|
|
"translations": [
|
|
{
|
|
"language": "en-US",
|
|
"translation": "Articles"
|
|
},
|
|
{
|
|
"language": "nl-NL",
|
|
"translation": "Artikelen"
|
|
}
|
|
],
|
|
"archive_field": "status",
|
|
"archive_value": "archived",
|
|
"unarchive_value": "draft",
|
|
"archive_app_filter": true,
|
|
"sort_field": "sort",
|
|
"item_duplication_fields": null,
|
|
"sort": 1
|
|
},
|
|
"schema": {
|
|
"name": "pages",
|
|
"comment": null
|
|
},
|
|
"fields": [
|
|
{
|
|
"field": "title",
|
|
"type": "string",
|
|
"meta": {
|
|
"icon": "title"
|
|
},
|
|
"schema": {
|
|
"is_primary_key": true,
|
|
"is_nullable": false
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## List Collections
|
|
|
|
List the available collections.
|
|
|
|
### Query Parameters
|
|
|
|
This endpoint doesn't currently support any query parameters.
|
|
|
|
### Returns
|
|
|
|
An array of [collection objects](#the-collection-object).
|
|
|
|
### REST API
|
|
|
|
```
|
|
GET /collections
|
|
SEARCH /collections
|
|
```
|
|
|
|
[Learn more about SEARCH ->](/reference/introduction#search-http-method)
|
|
|
|
### GraphQL
|
|
|
|
```
|
|
POST /graphql/system
|
|
```
|
|
|
|
```graphql
|
|
type Query {
|
|
collections: [directus_collections]
|
|
}
|
|
```
|
|
|
|
##### Example
|
|
|
|
```graphql
|
|
query {
|
|
collections {
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Retrieve a Collection
|
|
|
|
Retrieve a single collection by table name.
|
|
|
|
### Query Parameters
|
|
|
|
This endpoint doesn't currently support any query parameters.
|
|
|
|
### Returns
|
|
|
|
A [collection object](#the-collection-object).
|
|
|
|
### REST API
|
|
|
|
```
|
|
GET /collections/:collection
|
|
```
|
|
|
|
##### Example
|
|
|
|
```
|
|
GET /collections/articles
|
|
```
|
|
|
|
### GraphQL
|
|
|
|
```
|
|
POST /graphql/system
|
|
```
|
|
|
|
```graphql
|
|
type Query {
|
|
collections_by_name(name: String!): directus_collections
|
|
}
|
|
```
|
|
|
|
##### Example
|
|
|
|
```graphql
|
|
query {
|
|
collections_by_name(name: "articles") {
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Create a Collection
|
|
|
|
Create a new Collection. This will create a new table in the database as well.
|
|
|
|
### Query Parameters
|
|
|
|
This endpoint doesn't currently support any query parameters.
|
|
|
|
### Request Body
|
|
|
|
The `collection` property is required, all other properties of the [collection object](#the-collection-object) are
|
|
optional.
|
|
|
|
You are able to provide an array of `fields` to be created during the creation of the collection. See the
|
|
[fields object](/reference/system/fields#the-fields-object) for more information on what properties are available in a
|
|
field.
|
|
|
|
### Returns
|
|
|
|
The [collection object](#the-collection-object) for the collection created in this request.
|
|
|
|
::: tip
|
|
|
|
Make sure to pass an empty object for schema (`schema: {}`) when creating collections. Alternatively, you can omit it
|
|
entirely or use `schema: null` to create ["folder" collections](/configuration/data-model#sorting-grouping).
|
|
|
|
:::
|
|
|
|
### REST API
|
|
|
|
```
|
|
POST /collections
|
|
```
|
|
|
|
##### Example
|
|
|
|
```json
|
|
// POST /collections
|
|
|
|
{
|
|
"collection": "testimonials",
|
|
"meta": {
|
|
"icon": "format_quote"
|
|
}
|
|
}
|
|
```
|
|
|
|
### GraphQL
|
|
|
|
```
|
|
POST /graphql/system
|
|
```
|
|
|
|
```graphql
|
|
type Mutation {
|
|
create_collections_item(data: directus_collections): directus_collections
|
|
}
|
|
```
|
|
|
|
##### Example
|
|
|
|
```graphql
|
|
mutation {
|
|
create_collections_item(data: {
|
|
collection: "testimonials",
|
|
meta: {
|
|
icon: "format_quote"
|
|
}
|
|
}) {
|
|
...
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Update a Collection
|
|
|
|
Update the metadata for an existing collection.
|
|
|
|
### Query Parameters
|
|
|
|
This endpoint doesn't currently support any query parameters.
|
|
|
|
### Request Body
|
|
|
|
You can only update the `meta` values of the [collection object](#the-collection-object). Updating the collection name
|
|
is not supported at this time.
|
|
|
|
### Returns
|
|
|
|
The [collection object](#the-collection-object) for the updated collection in this request.
|
|
|
|
### REST API
|
|
|
|
```
|
|
PATCH /collections/:collection
|
|
```
|
|
|
|
##### Example
|
|
|
|
```json
|
|
// PATCH /collections/testimonials
|
|
|
|
{
|
|
"meta": {
|
|
"note": "Short quotes from happy customers."
|
|
}
|
|
}
|
|
```
|
|
|
|
### GraphQL
|
|
|
|
```
|
|
POST /graphql/system
|
|
```
|
|
|
|
```graphql
|
|
type Mutation {
|
|
update_collections_item(collection: String!, data: update_directus_collections_input!): directus_collections
|
|
}
|
|
```
|
|
|
|
##### Example
|
|
|
|
```graphql
|
|
mutation {
|
|
update_collections_item(collection: "testimonials", data: { meta: { note: "Short quotes from happy customers." } }) {
|
|
collection
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Delete a Collection
|
|
|
|
Delete a collection.
|
|
|
|
::: danger Destructive
|
|
|
|
Be aware, this will delete the table from the database, including all items in it. This action can't be undone.
|
|
|
|
:::
|
|
|
|
### REST API
|
|
|
|
```
|
|
DELETE /collections/:collection
|
|
```
|
|
|
|
##### Example
|
|
|
|
```
|
|
DELETE /collections/articles
|
|
```
|
|
|
|
### GraphQL
|
|
|
|
```
|
|
POST /graphql/system
|
|
```
|
|
|
|
```graphql
|
|
type Mutation {
|
|
delete_collections_item(collection: String!): delete_collection
|
|
}
|
|
```
|
|
|
|
##### Example
|
|
|
|
```graphql
|
|
mutation {
|
|
delete_collections_item(collection: "articles") {
|
|
collection
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|