# # Preset

> Presets hold the preferences of individual users of the platform. This allows Gitaflow to show and maintain custom item listings and bookmarks for users of the app. Learn more about Presets.

- The Preset Object
- List Presets
- Retrieve a preset
- Create a Preset
- Create Multiple Presets
- Update a Preset
- Update Multiple Presets
- Delete a Preset
- Delete Multiple Presets

## # The Preset Object

`id` uuid
Primary key of the preset.

`bookmark` string
The title of the bookmark. If this value is `null`, it's considered a preset instead of a bookmark.

`user` many-to-one
User this preset applies to. Many-to-one to users.

`role` many-to-one
Role this preset applies to. Many-to-one to users.

`collection` string
Collection this preset applies to.

`search` string
The search query used in the preset.

`filters` array
The filters used in the preset.

`layout` string
The layout used in this preset.

`layout_query` object
The item query used by the layout. This structure is based on the used layout.

`layout_options` object
The options used by the layout. This structure is based on the used layout.

    {
    	"id": 39,
    	"bookmark": null,
    	"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
    	"role": null,
    	"collection": "gitaflow_activity",
    	"search": null,
    	"filters": [],
    	"layout": "tabular",
    	"layout_query": {
    		"tabular": {
    			"sort": "-timestamp",
    			"fields": ["action", "collection", "timestamp", "user"],
    			"page": 1
    		}
    	},
    	"layout_options": {
    		"tabular": {
    			"widths": {
    				"action": 100,
    				"collection": 210,
    				"timestamp": 240,
    				"user": 240
    			}
    		}
    	}
    }

## # List Presets

List all presets that exist in Gitaflow.

Permissions

The data returned in this endpoint will be filtered based on the user's permissions. For example, presets for a role other than the current user's role won't be returned.

### # Query Parameters

Supports all global query parameters.

### # Returns

An array of up to limit preset objects. If no items are available, data will be an empty array.

### # REST API

    GET /presets
    SEARCH /presets

Learn more about SEARCH ->

### # GraphQL

    POST /graphql/system

    type Query {
    	presets: [gitaflow_presets]
    }

##### # Example

    query {
    	presets {
    		id
    		user
    	}
    }

## # Retrieve a preset

List an existing preset by primary key.

### # Query Parameters

Supports all global query parameters.

### # Returns

Returns the requested preset object.

### # REST API

    GET /presets/:id

##### # Example

    GET /presets/42

### # GraphQL

    POST /graphql/system

    type Query {
    	presets_by_id(id: ID!): gitaflow_presets
    }

##### # Example

    query {
    	presets_by_id(id: 42) {
    		id
    		user
    	}
    }

## # Create a Preset

Create a new preset.

### # Query Parameters

Supports all global query parameters.

### # Request Body

A partial preset object.

### # Returns

Returns the preset object for the created preset.

### # REST API

    POST /presets

##### # Example

    // POST /presets

    {
    	"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
    	"layout": "cards",
    	"search": "Gitaflow"
    }

### # GraphQL

    POST /graphql/system

    type Mutation {
    	create_presets_item(data: create_gitaflow_presets_input!): gitaflow_presets
    }

##### # Example

    mutation {
    	create_presets_item(data: { user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca", layout: "cards", search: "Gitaflow" }) {
    		id
    		user
    	}
    }

## # Create Multiple Presets

Create multiple new presets.

### # Query Parameters

Supports all global query parameters.

### # Request Body

An array of partial preset objects.

### # Returns

Returns the preset object for the created preset.

### # REST API

    POST /presets

##### # Example

    // POST /presets

    [
    	{
    		"collection": "gitaflow_files",
    		"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
    		"layout": "cards",
    		"search": "Gitaflow"
    	},
    	{
    		"collection": "articles",
    		"user": "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca",
    		"layout": "tabular"
    	}
    ]

### # GraphQL

    POST /graphql/system

    type Mutation {
    	create_presets_items(data: [create_gitaflow_presets_input!]!): [gitaflow_presets]
    }

##### # Example

    mutation {
    	create_presets_items(
    		data: [
    			{
    				collection: "gitaflow_files"
    				user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca"
    				layout: "cards"
    				search: "Gitaflow"
    			}
    			{ collection: "articles", user: "410b5772-e63f-4ae6-9ea2-39c3a31bd6ca", layout: "tabular" }
    		]
    	) {
    		id
    		user
    	}
    }

## # Update a Preset

Update an existing preset.

### # Query Parameters

Supports all global query parameters.

### # Request Body

A partial preset object.

### # Returns

Returns the preset object for the updated preset.

### # REST API

    PATCH /presets/:id

##### # Example

    // PATCH /presets/34

    {
    	"layout": "tabular"
    }

### # GraphQL

    POST /graphql/system

    type Mutation {
    	update_presets_item(id: ID!, data: update_gitaflow_presets_input): gitaflow_presets
    }

##### # Example

    mutation {
    	update_presets_item(id: 32, data: { layout: "tabular" }) {
    		id
    		user
    	}
    }

## # Update Multiple Presets

Update multiple existing presets.

### # Query Parameters

Supports all global query parameters.

### # Request Body

`keys` Required
Array of primary keys of the presets you'd like to update.

`data` Required
Any of the preset object's properties.

### # Returns

Returns the preset objects for the updated presets.

### # REST API

    PATCH /presets

##### # Example

    // PATCH /presets

    {
    	"keys": [15, 64],
    	"data": {
    		"layout": "tabular"
    	}
    }

### # GraphQL

    POST /graphql/system

    type Mutation {
    	update_presets_items(ids: [ID!]!, data: update_gitaflow_presets_input): [gitaflow_presets]
    }

##### # Example

    mutation {
    	update_presets_items(ids: [15, 64], data: { layout: "tabular" }) {
    		id
    		user
    	}
    }

## # Delete a Preset

Delete an existing preset.

### # Returns

Empty body.

### # REST API

    DELETE /presets/:id

##### # Example

    DELETE /presets/34

### # GraphQL

    POST /graphql/system

    type Mutation {
    	delete_presets_item(id: ID!): delete_one
    }

##### # Example

    mutation {
    	delete_presets_item(id: 32) {
    		id
    	}
    }

## # Delete Multiple Presets

Delete multiple existing presets.

### # Request Body

An array of preset primary keys

### # Returns

Empty body.

### # REST API

    DELETE /presets

##### # Example

    // DELETE /presets
    [15, 251, 810]

### # GraphQL

    POST /graphql/system

    type Mutation {
    	delete_presets_items(ids: [ID!]!): delete_many
    }

##### # Example

    mutation {
    	delete_presets_items(ids: [15, 251, 810]) {
    		ids
    	}
    }