mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
* items semi complete
* updated items page to use snippet toggler and migrated endpoint docs to use it
* updated files page to use snippet toggler and migrated REST and GraphQL endpoint docs to it
* updated activity page to use snippet toggler and migrated REST and GraphQL endpoint doc to it
* updated collections page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* updated dashboards page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated extensions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated fields page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated flows page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated folders page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated notifications page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated operations page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated panels page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated permissions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated presets page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated relations page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated revisions page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated roles page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Made headlines consistant with the rest of the doc pages
* Updated server page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated settings page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated shares page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated translations page to use snippet togglers and migrated REST endpoint docs to them
* Updated users page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated utilities page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated webhooks page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated authentication page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* Updated Global Parameters page to use snippet togglers where there are adjacent REST and GraphQL Examples
* Added SDK code snippets to items page and made generic variables consistant
* Added SDK code snippets to files page and made generic variables consistant
* Few lang changes for files page
* Added SDK code snippets to activity page and made generic variables consistant
* Added SDK code snippets to collections page and made generic variables consistant
* Added SDK code snippets to dashboards page and made generic variables consistant
* removed query word from query parameter objects
* Added SDK code snippets to fields page and made generic variables consistant
* SnippetToggler border
* Used dynamic border color for snippettoggler heading
* Spacing top and bottom of snippet toggler in docs
* Removed extra HRs
* Remove manual TOC in query reference
* Small code styling change in items page
* Updated users page to use snippet togglers and migrated REST and GraphQL endpoint docs to them
* dashboards fixed up property names
* Small copy update on extensions page
* Updated keys in delete mult notifications REST
* Updated keys in operations
* Update keys in panel delete many
* Update keys in permissions
* Added quotes around generic example ID strings
* Added code formatting to final example in share public info
* Format files
* Refined sidebar
* Insert newline before ending template tags
* Fixed extra closing tags, causing an error, un users ref
* Text Formatting Users
* Put GQL related notes inside toggler
* Added SDK code snippets to flows page and made generic variables consistant
* Added SDK code snippets to folder page and made generic variables consistant
* fixing whitepsace for flows and folders page
* Consistent newlines in SnippetToggler usages
* Run prettier
* Fix 'alwaysDark' definition
* Home page snippet toggler style fixes
* Fix snippet toggler lang hover color in light mode
* Introduce different code theme for light mode
* Added SDK code snippets to notifications page and made generic variables consistant
* Switch to 'material-theme-lighter'
* Format file
* Fix tip
* Fix tip in sdk ref
* Consistent spacing for custom containers
* Added SDK code snippets to operations page and made generic variables consistant
* Lint & format code blocks
* Lint & format operations
* Added SDK code snippets to panels page and made generic variables consistant
* Added SDK code snippets to permissions page and made generic variables consistant
* Added SDK code snippets to presets page and made generic variables consistant
* Added SDK code snippets to relations page and made generic variables consistant
* Added SDK code snippets to revisions page and made generic variables consistant
* Added SDK code snippets to roles page and made generic variables consistant
* Added SDK code snippets to server page and made generic variables consistant
* Added SDK code snippets to settings page and made generic variables consistant
* app_url -> directus_project_url
* Omitted auth details in delete multiple files
* Added quotes to values in roles
* Upload a file snippets
* Pluralization for upload/import files
* More files functions typos
* Added SDK code snippets to shares page (still missing createShare(s) as endpoint not functioning currently) and made generic variables consistant
* Added SDK code snippets to translations page (missing delete endponts because not working) and made generic variables consistant
* Added SDK code snippets to users page and made generic variables consistant
* Added SDK code snippets to webhooks page and made generic variables consistant
* Added SDK code snippets to utilites page (except cleaning cache, will be tested and added in later commit) and made generic variables consistant
* Added SDK code snippets to auth page (not login, refresh, and logout though due to errors)
* Added SDK code snippets for utilsExport and clearCache
* added github username be7DOTis to contributors
* Omit auth commands in updateComment
* utilsImport
* rename app_url generic value
* changed instances of updated*operation* to update*Operation*
* missed some 'updated' changse
* Added SDK Snippets to Query Parameters page
* Add section on file security
* added create(s)Shares SDK snippet to shares page
* added console.log to create snippets
* Added delete(s)Webhook SDK snippet to webhooks page
* Added SDK snippets to extensions page
* Added create/updateSingleton section to items page
* Links in files security
* Added SDK Snippets to Schema page
* Added GQL Generic examples to snippet togglers and removed snippet toggler from Login Using SSO Providers
* Added create(s)Presets SDK Snippets to presets page
* replaced fields query in generics snippets for a more generic
* replaced fields query in generics snippets for a more generic
* Use storage value only if valid choice
* Sync snippet togglers across page
* Update docs/reference/system/activity.md
* Update docs/reference/system/activity.md
* Update docs/reference/system/extensions.md
* Update docs/reference/system/revisions.md
* Update docs/reference/system/settings.md
* Update docs/reference/system/revisions.md
* Update docs/reference/system/settings.md
* Update docs/reference/system/activity.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/roles.md
* Update docs/reference/system/schema.md
* Update docs/reference/system/server.md
* Update docs/reference/system/shares.md
* Replace all directus_project_url placeholders
* Revert "Sync snippet togglers across page"
This reverts commit 8b36f0d778.
* Update docs/reference/system/shares.md
* Update docs/reference/system/webhooks.md
* Clarify singleton section
* Consistent newlines between SnippetToggler templates
* Format files
* Remove console.log(result) statements from snippet
* Add examples for shares & users
Co-authored-by: Brainslug <tim@brainslug.nl>
* Fix hash GraphQL example
* Clarify update singleton section
* Add auth examples
Co-authored-by: Brainslug <tim@brainslug.nl>
* Final run on consistent newlines between SnippetToggler
* Switch to github themes
* The "Last One"
Co-authored-by: Brainslug <tim@brainslug.nl>
* The "Big One"
* Fix dead links
---------
Co-authored-by: Bevis Halsey-Perry <hi@be7.is>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
1122 lines
19 KiB
Markdown
1122 lines
19 KiB
Markdown
---
|
|
description: REST and GraphQL API documentation to access and manage Items in Directus.
|
|
readTime: 5 min read
|
|
pageClass: page-reference
|
|
---
|
|
|
|
# Accessing Items
|
|
|
|
> Items are individual pieces of data in your database. They can be anything, from articles, to IoT status checks.
|
|
> [Learn more about Items](/user-guide/overview/glossary#items).
|
|
|
|
## The Item Object
|
|
|
|
Items don't have a predefined schema. The format depends completely on how you configured your collections and fields in
|
|
Directus. For the sake of documentation, we'll use a fictional articles collection with the following fields: `id`,
|
|
`status`, `title`, `body`, `featured_image`, and `author`.
|
|
|
|
::: tip Relational Data
|
|
|
|
Please see [Relational Data](/reference/introduction#relational-data) and [Field Parameters](/reference/query#fields) to
|
|
learn more.
|
|
|
|
:::
|
|
|
|
```json
|
|
{
|
|
"id": 1,
|
|
"status": "published",
|
|
"title": "Hello, world!",
|
|
"body": "This is my first article",
|
|
"featured_image": "768eabec-3c54-4110-a6bb-64b548116661",
|
|
"author": "0bc7b36a-9ba9-4ce0-83f0-0a526f354e07"
|
|
}
|
|
```
|
|
|
|
## Get Items
|
|
|
|
List all items that exist in Directus.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/:collection`
|
|
|
|
`SEARCH /items/:collection`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Query {
|
|
<collection>: [<collection>]
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
readItems('collection_name', {
|
|
query,
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
[Learn more about SEARCH ->](/reference/introduction#search-http-method)
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
::: tip Relational Data
|
|
|
|
The [Field Parameter](/reference/query#fields) is required to return nested relational data.
|
|
|
|
:::
|
|
|
|
### Response
|
|
|
|
An array of up to [limit](/reference/query#limit) [item objects](#the-item-object). If no items are available, data will
|
|
be an empty array.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/articles`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
query {
|
|
articles {
|
|
id
|
|
title
|
|
author {
|
|
first_name
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
readItems('posts', {
|
|
fields: ['*'],
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Get Item by ID
|
|
|
|
Get an item that exists in Directus.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/:collection/:id`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Query {
|
|
<collection>_by_id(id: ID!): <collection>
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(readItem('collection_name', 'item_id'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
### Response
|
|
|
|
Returns an [item object](#the-item-object) if a valid primary key was provided.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/articles/15`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Query {
|
|
<collection>_by_id(id: ID!): <collection>
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(readItem('articles', '1'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Get Singleton
|
|
|
|
List the singleton item in Directus.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/:collection`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Query {
|
|
<collection>: [<collection>]
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readSingleton } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(readSingleton('collection_name'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
::: tip Info
|
|
|
|
The REST and GraphQL requests for singletons are the same as those used to [Get Items](#get-items) but in contrast the
|
|
response consists of a plain [item object](#the-item-object) (the singleton) instead of an array of items.
|
|
|
|
:::
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
`collection_name` the name of the collection is required.
|
|
|
|
### Response
|
|
|
|
Returns an [item object](#the-item-object) if a valid collection name was provided.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`GET /items/about`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
query {
|
|
about {
|
|
id
|
|
content
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, readSingleton } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(readSingleton('about'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Create an Item
|
|
|
|
Create a new item in the given collection.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`POST /items/:collection`
|
|
|
|
```json
|
|
{
|
|
"field": "value",
|
|
"field_2": "value_2"
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
create_<collection>_item(data: create_<collection>_input): <collection>
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, createItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
createItem('collection_name', {
|
|
field: 'value_1',
|
|
field_2: 'value_2',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
An array of partial [item objects](#the-item-object).
|
|
|
|
::: tip Relational Data
|
|
|
|
Relational data needs to be correctly nested to add new items successfully. Check out the
|
|
[relational data section](/reference/introduction#relational-data) for more information.
|
|
|
|
:::
|
|
|
|
### Response
|
|
|
|
Returns the [item objects](#the-item-object) of the item that were created.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`POST /items/articles`
|
|
|
|
```json
|
|
{
|
|
"title": "Hello world!",
|
|
"body": "This is our first article"
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
create_articles_item(data: { title: "Hello world!", body: "This is our first article" }) {
|
|
id
|
|
title
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, createItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
createItem('articles', {
|
|
title: 'What is Directus?',
|
|
content: 'Directus is an Open Data Platform built to democratize the database.',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Create Multiple Items
|
|
|
|
Create new items in the given collection.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`POST /items/:collection`
|
|
|
|
```json
|
|
[
|
|
{
|
|
"field_1": "value_1",
|
|
"field_2": "value_2"
|
|
},
|
|
{
|
|
"field_1": "value_3",
|
|
"field_2": "value_4"
|
|
}
|
|
]
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
create_<collection>_items(data: [create_<collection>_input]): [<collection>]
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, createItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
createItems('collection_name', [
|
|
{
|
|
field_1: 'value_1',
|
|
field_2: 'value_2',
|
|
},
|
|
{
|
|
field_1: 'value_3',
|
|
field_2: 'value_4',
|
|
},
|
|
])
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
An array of partial [item objects](#the-item-object).
|
|
|
|
### Response
|
|
|
|
Returns the [item objects](#the-item-object) of the item that were created.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`POST /items/articles`
|
|
|
|
```json
|
|
[
|
|
{
|
|
"title": "Hello world!",
|
|
"body": "This is our first article"
|
|
},
|
|
{
|
|
"title": "Hello again, world!",
|
|
"body": "This is our second article"
|
|
}
|
|
]
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
create_articles_items(
|
|
data: [
|
|
{ title: "Hello world!", body: "This is our first article" }
|
|
{ title: "Hello again, world!", body: "This is our second article" }
|
|
]
|
|
) {
|
|
id
|
|
title
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, createItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
createItems('articles', [
|
|
{
|
|
title: 'What is Directus?',
|
|
content: 'Directus is an Open Data Platform built to democratize the database.',
|
|
},
|
|
{
|
|
title: 'Build your internal tools with Directus',
|
|
content: 'Flows enable custom, event-driven data processing and task automation within Directus.',
|
|
},
|
|
])
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Update an Item
|
|
|
|
Update an existing item.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/:collection/:id`
|
|
|
|
```json
|
|
{
|
|
"field": "value"
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
update_<collection>_item(id: ID!, data: update_<collection>_input!): <collection>
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateItem('collection_name', 'item_id', {
|
|
field: 'value',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
A partial [item object](#the-item-object).
|
|
|
|
### Response
|
|
|
|
Returns the [item object](#the-item-object) of the item that was updated.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/articles/15`
|
|
|
|
```json
|
|
{
|
|
"title": "An updated title"
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
update_articles_item(id: 15, data: { title: "An updated title" }) {
|
|
id
|
|
title
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateItem('articles', '5', {
|
|
title: 'What is Directus and how it can help you build your next app!?',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Update Singleton
|
|
|
|
Update a singleton item.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/:collection`
|
|
|
|
```json
|
|
{
|
|
"item_field": "value"
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
update_<collection>_items(data: [update_<collection>_input]): [<collection>]
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateSingleton } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateSingleton('collection_name', {
|
|
item_field: 'value',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
::: tip Info
|
|
|
|
The REST and GraphQL requests for singletons are the same as those used to
|
|
[Update Multiple Items](#update-multiple-items) but in contrast the request should consist of the plain
|
|
[item object](#the-item-object).
|
|
|
|
:::
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
The name of the collection `collection_name` is required and a partial [item object](#the-item-object).
|
|
|
|
### Response
|
|
|
|
Returns an [item object](#the-item-object) if a valid primary key was provided.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/about`
|
|
|
|
```json
|
|
{
|
|
"content": "Founded in 2023, this website is dedicated to..."
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
update_articles_items(data: { content: "Founded in 2023, this website is dedicated to..." }) {
|
|
content
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateSingleton } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateSingleton('about', {
|
|
content: 'Founded in 2023, this website is dedicated to...',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Update Multiple Items
|
|
|
|
Update multiple items at the same time.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/:collection`
|
|
|
|
```json
|
|
{
|
|
"keys": ["id_1", "id_2"],
|
|
"data": {
|
|
"field": "value"
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
update_<collection>_items(ids: [ID!]!, data: [update_<collection>_input]): [<collection>]
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateItems('collection_name', ['id_1', 'id_2'], {
|
|
field: 'value',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
Object containing `data` for the values to set, and either `keys` or `query` to select what items to update.
|
|
|
|
### Response
|
|
|
|
Returns the [item objects](#the-item-object) for the updated items.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`PATCH /items/articles`
|
|
|
|
```json
|
|
{
|
|
"keys": [1, 2],
|
|
"data": {
|
|
"status": "published"
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
update_articles_items(ids: [1, 2], data: { status: "published" }) {
|
|
id
|
|
status
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, updateItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(
|
|
updateItems('articles', ['5', '6'], {
|
|
status: 'published',
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Delete an Item
|
|
|
|
Delete an existing item.
|
|
|
|
### Request
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`DELETE /items/:collection/:id`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
delete_<collection>_item(id: ID!): delete_one
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, deleteItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(deleteItem('collection_name', 'id'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
### Response
|
|
|
|
Empty body.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`DELETE /items/articles/15`
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
delete_articles_item(id: 15) {
|
|
id
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, deleteItem } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(deleteItem('articles', '5'));
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
## Delete Multiple Items
|
|
|
|
Delete multiple existing items.
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`DELETE /items/:collection`
|
|
|
|
```json
|
|
// Array
|
|
["key_1", "key_2", "key_3"]
|
|
```
|
|
|
|
```json
|
|
// Object
|
|
{
|
|
"field": ["key_1", "key_2", "key_3"]
|
|
}
|
|
```
|
|
|
|
```json
|
|
// Object containing query
|
|
{
|
|
"query": {
|
|
"query_type": {
|
|
"field_1": {
|
|
"filter_condition": "value_1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
type Mutation {
|
|
delete_<collection>_items(ids: [ID!]!): delete_many
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, deleteItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(deleteItems('collection_name', ['id_1', 'id_2']));
|
|
|
|
//or
|
|
|
|
const result2 = await client.request(
|
|
deleteItems('collection_name', {
|
|
query_type: {
|
|
field_1: {
|
|
filter_condition: 'value_1',
|
|
},
|
|
},
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|
|
|
|
#### Query Parameters
|
|
|
|
Supports all [global query parameters](/reference/query).
|
|
|
|
#### Request Body
|
|
|
|
An array of item primary keys or an object containing either `keys` or `query` to select what items to update.
|
|
|
|
### Response
|
|
|
|
Empty body.
|
|
|
|
### Example
|
|
|
|
<SnippetToggler :choices="['REST', 'GraphQL', 'SDK']" label="API">
|
|
<template #rest>
|
|
|
|
`DELETE /items/articles`
|
|
|
|
```json
|
|
// Array of primary keys
|
|
[15, 16, 21]
|
|
```
|
|
|
|
```json
|
|
// Object containing keys
|
|
{
|
|
"keys": [15, 16, 21]
|
|
}
|
|
```
|
|
|
|
```json
|
|
// Object containing query
|
|
{
|
|
"query": {
|
|
"filter": {
|
|
"status": {
|
|
"_eq": "draft"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #graphql>
|
|
|
|
`POST /graphql`
|
|
|
|
```graphql
|
|
mutation {
|
|
delete_articles_items(ids: [15, 16, 21]) {
|
|
ids
|
|
}
|
|
}
|
|
```
|
|
|
|
</template>
|
|
<template #sdk>
|
|
|
|
```js
|
|
import { createDirectus } from '@directus/sdk';
|
|
import { rest, deleteItems } from '@directus/sdk/rest';
|
|
|
|
const client = createDirectus('https://directus.example.com').with(rest());
|
|
|
|
const result = await client.request(deleteItems('articles', ['6', '7']));
|
|
|
|
//or
|
|
|
|
const result2 = await client.request(
|
|
deleteItems('articles', {
|
|
filter: {
|
|
status: {
|
|
_eq: 'draft',
|
|
},
|
|
},
|
|
})
|
|
);
|
|
```
|
|
|
|
</template>
|
|
</SnippetToggler>
|