37 |
38 |
39 |
40 | To perform a GET request with your token append the query parameter **token** with your **preview** or **public** token as shown in the example above.
--------------------------------------------------------------------------------
/content/content-delivery/v1/topics/cache-invalidation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Cache Invalidation
3 | ---
4 |
5 | Storyblok uses a CDN in front of the API to deliver your content in the fastest way possible. If you're using the Storyblok Content Delivery API directly in your client application it is recommended to use a backend version number or the `versions` parameter provided by the `/v1/cdn/spaces/me?token=access_token` call.
6 |
7 | ## Recommended: Client Side
8 |
9 | 1. Request the resource `/v1/cdn/spaces/me` to get the `space.version` property
10 | 2. Append the `space.version` to all your subsequent calls of the endpoint `/v1/cdn/stories`
11 |
12 | ## Recommended: SSG / Server Side
13 |
14 | 1. Generate a timestamp (once on a server, not on every request/client load)
15 | 2. Append your timestamp to all your subsequent calls of the endpoint `/v1/cdn/stories`
16 |
17 | Also server side applications application can use the `space.version` option. Storing the version string to a file and reusing this timestamp will guarantee you the latest version with optimal speed. You can either use the [Storyblok Webhooks](https://www.storyblok.com/docs/Guides/using-storyblok-webhooks) or [Storyblok JavaScript Events](https://www.storyblok.com/docs/Guides/storyblok-latest-js#events) to update your version file.
18 |
19 | ;examplearea
20 |
21 | Example Request
22 |
23 |
24 |
25 | Example Response
26 |
27 | ```json
28 | {
29 | "space": {
30 | "name": "Space A",
31 | "domain": "http://example.storyblok.com",
32 | "version": 1541863983
33 | }
34 | }
35 | ```
36 |
37 | Use the timestamp as `cv`:
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/content/content-delivery/v1/topics/errors.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Errors
3 | ---
4 |
5 | Storyblok uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the `2xx` range indicate success. Codes in the `4xx` range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, content entry was not published but version requested was set to published, etc.). Codes in the `5xx` range indicate an error with Storyblok's servers (these are rare).
6 |
7 | Some `4xx` errors that could be handled programmatically (e.g., content entry was not found) include an error code that briefly explains the error reported.
8 |
9 | ;examplearea
10 |
11 | Http Status Code Summary
12 |
13 | | Code | Description |
14 | |------|----------------------|
15 | | 200 - OK | Everything worked as expected. |
16 | | 400 - Bad Request | Wrong format was sent (eg. XML instead of JSON). |
17 | | 401 - Unauthorized | No valid API key provided. |
18 | | 404 - Not Found | The requested resource doesn't exist (perhaps due to not yet published content entries). |
19 | | 422 - Unprocessable Entity | The request was unacceptable, often due to missing a required parameter. |
20 | | 429 - Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
21 | | 500, 502, 503, 504 - Server Errors | Something went wrong on Storyblok's end. (These are rare.) |
22 |
--------------------------------------------------------------------------------
/content/content-delivery/v1/topics/pagination.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Pagination
3 | ---
4 |
5 | All top-level API resources have support for bulk fetches via "list" API methods. For instance, you can list `stories` and `datasource_entries`. These list API methods share a common structure, taking these two parameters: `page`, `per_page`.
6 |
7 | The default `per_page` is set to `25` entries per page. You can increase this number to receive up to `100` entries per page. To go through different pages you can utilize the `page` parameter. The `page` parameter is a numeric value and uses `1` as default.
8 |
9 | To allow a calculation of how many pages are available you can access the `Total` response header that you will receive after you made your first request. Access it and divide it with your `per_page` parameter to receive the highest possible page, otherwise you will receive an empty array as result.
10 |
11 | | Query Parameter | Description |
12 | |---------------------|----------------------|
13 | | `page` | Default: `1`. Increase this to receive the next page of content entries |
14 | | `per_page` | Default: `25`, Max for Stories: `100`, Max for Datasource Entries: `1000` . Defines the number of content entries you will receive per page |
15 |
16 | ;examplearea
17 |
18 | Example Request
19 |
20 |
21 |
22 | Example Response
23 |
24 | ```json
25 | {
26 | "stories": [
27 | { ... },
28 | { ... }
29 | ]
30 | }
31 | ```
32 |
33 | Example Response Headers
34 |
35 | ```bash
36 | status: 200
37 | per-page: 2
38 | total: 3
39 | ...
40 | ```
--------------------------------------------------------------------------------
/content/content-delivery/v1/topics/rate-limit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Rate Limit
3 | ---
4 |
5 | The content delivery api has a rate limit of 50 requests per second for uncached request. The limit decreases if you use a higher page size than 25.
6 |
7 |
8 | ;examplearea
9 |
10 | | Type of request | Rate Limit |
11 | |------|-----------|
12 | | Cached requests from the CDN | > 1000 per second |
13 | | Single content item, datasources, ... | 50 per second |
14 | | Listings with page size below and with 25 | 50 per second |
15 | | Listings with page size between 25 and 50 | 15 per second |
16 | | Listings with page size between 50 and 75 | 10 per second |
17 | | Listings with page size between 75 and 100 | 5 per second |
18 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasource-entries/datasource-entries.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Datasource Entries
3 | ---
4 |
5 | A data source is simply a collection of key-value pairs. One specific datasource-entry is a set of two linked attributes: a key, which is a unique identifier for the item and the value.
6 |
7 | Key-value pairs can be used for a single-choice, multiple-choice options and as well directly through our API to use them for multi-language labels, categories, or any use-case you might need key-value pairs.
8 |
9 | ;examplearea
10 |
11 | Endpoint
12 |
13 | ```bash
14 | GET /v2/cdn/datasource_entries/
15 | ```
16 |
17 | Additional Information
18 |
19 | You can load content entries from different spaces by using different access tokens for your requests. Your access tokens decide which space you want to access. Checkout [Cache Invalidations](#topics/cache-invalidation) if you want to know more about how you are able to invalidate the cache of your published content.
20 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasource-entries/retrieve-multiple-datasource-entries.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve Multiple Datasource Entries
3 | ---
4 |
5 | Returns an array of datasource entry objects for the `datasource` and `dimension` defined, if authenticated using a preview or public token.
6 |
7 | | Query Parameter | Description |
8 | |---------------------|----------------------|
9 | | `token` (required) | Your public or preview token |
10 | | `datasource` | Datasource group id/slug |
11 | | `dimension` | Dimension that you defined for your datasource (eg. `dimension=en`) |
12 | | `page` | Numeric. default: `1`. Read more at [Pagination](#topics/pagination) |
13 | | `per_page` | Numeric. default: `25`, max: `1000`. Read more at [Pagination](#topics/pagination) |
14 | | `cv` | Read more about cache version at [Cache invalidation](#topics/cache-invalidation) |
15 |
16 | ;examplearea
17 |
18 | Endpoint
19 |
20 | ```bash
21 | GET /v2/cdn/datasource_entries?datasource=:slug
22 | ```
23 |
24 | Example Request
25 |
26 |
27 |
28 | Example Response
29 |
30 | ```json
31 | {
32 | "datasource_entries": [
33 | {
34 | "id": 22237,
35 | "name": "cancel",
36 | "value": "Abbrechen",
37 | "dimension_value": null
38 | },
39 | {
40 | "id": 22238,
41 | "name": "read_more",
42 | "value": "Mehr erfahren",
43 | "dimension_value": null
44 | }
45 | ]
46 | }
47 | ```
48 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasource-entries/the-datasource-entry-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Datasource Entry Object
3 | ---
4 |
5 | You can use the `dimension=your_defined_dimension` (eg. `dimension=en`) to receive the dimensions value besides the default value in one datasource entry.
6 |
7 | | Property | Description |
8 | |---------------------|----------------------|
9 | | `id` | Numeric id |
10 | | `name` | Given name |
11 | | `value` | Given value in default dimension |
12 | | `dimension_value` | Given value in the requested dimension |
13 |
14 | ;examplearea
15 |
16 | Example Object: No specific dimension requested
17 |
18 | ```json
19 | {
20 | "id": 22237,
21 | "name": "cancel",
22 | "value": "Abbrechen",
23 | "dimension_value": null
24 | }
25 | ```
26 |
27 | Example Object: Specific dimension (en) requested
28 |
29 | ```json
30 | {
31 | "id": 22237,
32 | "name": "cancel",
33 | "value": "Abbrechen",
34 | "dimension_value": "Cancel"
35 | }
36 | ```
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasources/datasources.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Datasources
3 | ---
4 |
5 | A data source is contains the information (slug) to receive a collection of datasource entries. You can use this endpoint to receive all datasources and then call the [datasource entries](#core-resources/datasource-entries/retrieve-multiple-datasource-entries) endpoint using the slug of the datasource.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v2/cdn/datasources/
13 | ```
14 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasources/retrieve-multiple-datasources.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve Multiple Datasources
3 | ---
4 |
5 | Returns an array of datasource objects.
6 |
7 | | Query Parameter | Description |
8 | |---------------------|----------------------|
9 | | `token` (required) | Your public or preview token |
10 | | `page` | Numeric. default: `1`. Read more at [Pagination](#pagination) |
11 | | `per_page` | Numeric. default: `25`, max: `1000`. Read more at [Pagination](#pagination) |
12 |
13 | ;examplearea
14 |
15 | Endpoint
16 |
17 | ```bash
18 | GET /v2/cdn/datasources
19 | ```
20 |
21 | Example Request
22 |
23 |
24 |
25 | Example Response
26 |
27 | ```json
28 | {
29 | "datasources": [
30 | {
31 | "id": 1433,
32 | "name": "Label",
33 | "slug": "labels",
34 | "dimensions": [
35 | {
36 | "id": 126,
37 | "entry_value": "en",
38 | "name": "English"
39 | }
40 | ]
41 | }
42 | ]
43 | }
44 | ```
45 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/datasources/the-datasource-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Datasource Object
3 | ---
4 |
5 | | Property | Description |
6 | |---------------------|----------------------|
7 | | `id` | Numeric id |
8 | | `name` | Given name |
9 | | `slug` | Given slug |
10 | | `dimensions` | Array of dimension objects |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "id": 1433,
19 | "name": "Label",
20 | "slug": "labels",
21 | "dimensions": [
22 | {
23 | "id": 126,
24 | "entry_value": "en",
25 | "name": "English"
26 | }
27 | ]
28 | }
29 | ```
30 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/links/links.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Links
3 | ---
4 |
5 | Links are another representation of your content entries, eg. Stories. With the Links format you can resolve `uuid`s of stories. The links object returned consists of multiple keys, where each key is the `uuid` of one Story. In the link object you will have access to basic information to identify, load or already display a link to that resource.
6 |
7 | This endpoint is paginated by default. In order to receive more than the default of `25` link entries, the `per_page` parameter can be set to a maximum of `1000`. Please refer to [Pagination](https://www.storyblok.com/docs/api/content-delivery/v2#topics/pagination) for further information.
8 |
9 | Important: For spaces created before May 9th, 2023, the links endpoint is not paginated by default. To enable pagination, set the `paginated` parameter to `1`.
10 |
11 | ;examplearea
12 |
13 | Endpoint
14 |
15 | ```bash
16 | GET /v2/cdn/links/
17 | ```
18 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/links/the-links-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Links Object
3 | ---
4 |
5 | | Property | Description |
6 | |---------------------|----------------------|
7 | | Multiple `uuid` | One key per Story, where the key is the `uuid` of the story |
8 |
9 | ;examplearea
10 |
11 | Example Object
12 |
13 | ```json
14 | {
15 | "links": {
16 | "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb": {
17 | "id": 107350,
18 | "slug": "home",
19 | "name": "My Startpage",
20 | "is_folder": false,
21 | "parent_id": 107348,
22 | "published": true,
23 | "position": -20,
24 | "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
25 | "is_startpage": false,
26 | "real_path": "/"
27 | },
28 | ...
29 | }
30 | }
31 | ```
32 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/spaces/retrieve-current-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve Current Space
3 | ---
4 |
5 | Returns the current space object, if you're authenticated with a `token`.
6 |
7 | | Query Parameter | Description |
8 | |---------------------|----------------------|
9 | | `token` (required) | Your public or preview token |
10 |
11 | ;examplearea
12 |
13 | Endpoint
14 |
15 | ```bash
16 | GET /v2/cdn/spaces/me/
17 | ```
18 |
19 | Example Request
20 |
21 |
22 |
23 | Example Response
24 |
25 | ```json
26 | {
27 | "space": {
28 | "id": 123,
29 | "name": "Storyblok.com",
30 | "domain": "https://www.storyblok.com/",
31 | "version": 1544117388,
32 | "language_codes": ["de"]
33 | }
34 | }
35 | ```
36 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/spaces/spaces.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Spaces
3 | ---
4 |
5 | This endpoint is mostly useful for client side apps. The response contains `space.version` which developers can use to call the story API and get the most recent published version.
6 |
7 | As Storyblok uses a CDN in front of the API to deliver the response in the fastest way possible, you should append the `cv` parameter to the story api.
8 |
9 | Read more about [Cache invalidation](#cache-invalidation)
10 |
11 | ;examplearea
12 |
13 | Endpoint
14 |
15 | ```bash
16 | GET /v2/cdn/spaces/me/
17 | ```
18 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/spaces/the-space-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Space Object
3 | ---
4 |
5 | In the content delivery API a space object is mostly used to receive the latest version timestamp to invalidate the cache.
6 |
7 | | Property | Description |
8 | |---------------------|----------------------|
9 | | `id` | Numeric id |
10 | | `name` | Given name |
11 | | `domain` | Given domain |
12 | | `version` | Cache version |
13 | | `language_codes` | Array of language codes |
14 |
15 | ;examplearea
16 |
17 | Example Object
18 |
19 | ```json
20 | {
21 | "space": {
22 | "id": 123,
23 | "name": "Storyblok.com",
24 | "domain": "https://www.storyblok.com/",
25 | "version": 1544117388,
26 | "language_codes": ["de"]
27 | }
28 | }
29 | ```
30 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/stories/stories.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Stories
3 | ---
4 |
5 | Storyblok’s most used content delivery endpoint is trimmed for low latency and optimum availability.
6 |
7 | To achieve low latencies all over the world, Storyblok uses a CDN in front of the API. The official Storyblok SDKs already take care of cache invalidation, so you don’t have to. But if you are doing the API calls on your own, you will need to append the `cv` (cache version) parameter to the story API in order to get the latest version of the content. Have a look at [Cache Invalidations](#topics/cache-invalidation) for workflow descriptions.
8 |
9 | ;examplearea
10 |
11 | Endpoint
12 |
13 | ```bash
14 | GET /v2/cdn/stories/
15 | ```
16 |
17 | Additional Information
18 |
19 | You can load content entries from different spaces by using different access tokens for your requests. Your access tokens decide which space you want to access. With the query parameter `version` you can switch between `draft` and `published`. Checkout [Cache Invalidations](#topics/cache-invalidation) if you want to know more about how you are able to invalidate the cache of your published content.
20 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/tags/retrieve-all-tags.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve All Tags
3 | ---
4 |
5 | Returns an array of tag objects of one space. Use the `version` parameter and the correct token types to receive either `draft` and `published` or only `published` links.
6 |
7 | | Query Parameter | Description |
8 | |---------------------|----------------------|
9 | | `token` (required) | Your public or preview token |
10 | | `starts_with` | Filter by `full_slug`. Can be used to retrieve all tags form a specific folder. Examples: `starts_with=de/beitraege`, `starts_with=en/posts` |
11 | | `version` | Default: `published`. Possible values: `draft`, `published` |
12 |
13 | ;examplearea
14 |
15 | Endpoint
16 |
17 | ```bash
18 | GET /v2/cdn/tags/?starts_with=posts/
19 | ```
20 |
21 | Example Request
22 |
23 |
24 |
25 | Example Response
26 |
27 | ```json
28 | {
29 | "tags": [
30 | {
31 | "name": "red",
32 | "taggings_count": 14
33 | },
34 | {
35 | "name": "spicy",
36 | "taggings_count": 3
37 | }
38 | ]
39 | }
40 | ```
41 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/tags/tags.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Tags
3 | ---
4 |
5 | Each tag is a string value that can be reused accross Stories to create features like word clouds, basic taggings for custom workflows, or similar usecases.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v2/cdn/tags/
13 | ```
14 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/core-resources/tags/the-tag-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Tag Object
3 | ---
4 |
5 | | Property | Description |
6 | |------------------|----------------------|
7 | | `name` | the actual tag (value) |
8 | | `taggings_count` | Count of how many times this tag is currenlty in use accross all stories |
9 |
10 | ;examplearea
11 |
12 | Example Object
13 |
14 | ```json
15 | {
16 | "name": "red",
17 | "taggings_count": 1
18 | }
19 | ```
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/filtering/entries-between-two-numbers.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Entries between two numbers
3 | ---
4 |
5 | A common filter needed for a shop content structure implementation would be a simple price range products filter. In the examples above you already saw how to write one [filter_query](#filter-queries/overview) to receive all products that are greater or lower a specific price tag; In this example we will combine the [gt-float](#filter-queries/operation-gt-float) and [lt-float](#filter-queries/operation-lt-float) filters to get all products between a price range.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | Example Response
14 |
15 | ```json
16 | {
17 | "stories": [
18 | {
19 | "name": "Coat",
20 | "created_at": "2018-12-10T17:50:34.547Z",
21 | "published_at": "2018-12-10T17:50:47.977Z",
22 | "id": 461933,
23 | "uuid": "0186a027-4f04-4750-b743-8855ad4e71d4",
24 | "content": {
25 | "_uid": "baa8057c-a928-4fda-b322-9499a081a9c9",
26 | "name": "Coat",
27 | "image": "//a.storyblok.com/f/44203/5616x3744/8cff02e5d6/coat.jpg",
28 | // filtered on GREATER than 100 and LOWER than 300
29 | "price": "270.50",
30 | "component": "product",
31 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
32 | },
33 | "slug": "coat",
34 | "full_slug": "products/coat",
35 | "lang": "default",
36 | ...
37 | }
38 | ]
39 | }
40 | ```
41 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/filtering/filter-entries-by-boolean-value.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Filter entries by boolean value
3 | ---
4 |
5 | Imagine you want to allow your editors to have featured products with a boolean flag in your content schema. To filter all products to only receive the featured once you can utilize the [filter_query operation in](#filter-queries/operation-in) to check for an exact value.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | Example Response
14 |
15 | ```json
16 | {
17 | "stories": [
18 | {
19 | "name": "Coat",
20 | "created_at": "2018-12-10T17:50:34.547Z",
21 | "published_at": "2018-12-10T17:50:47.977Z",
22 | "id": 461933,
23 | "uuid": "0186a027-4f04-4750-b743-8855ad4e71d4",
24 | "content": {
25 | "_uid": "baa8057c-a928-4fda-b322-9499a081a9c9",
26 | "name": "Coat",
27 | "image": "//a.storyblok.com/f/44203/5616x3744/8cff02e5d6/coat.jpg",
28 | // filtered on GREATER than 100 and LOWER than 300
29 | "price": "270",
30 | "component": "product",
31 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
32 | },
33 | "slug": "coat",
34 | "full_slug": "products/coat",
35 | "lang": "default",
36 | ...
37 | }
38 | ]
39 | }
40 | ```
41 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/filtering/filters.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Filter Examples
3 | ---
4 |
5 | We've provided some common request example that combine multiple and different [filter_query](#filter-queries/overview)s with sorting that you might need during your implementation.
6 |
7 | ;examplearea
8 |
9 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/ordering/order.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Ordering / Sorting
3 | ---
4 |
5 | We've provided some common request examples that make use of the [sort_by](#core-resources/stories/retrieve-multiple-stories) query parameter.
6 |
7 | ;examplearea
8 |
9 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/ordering/sort-by-admin-interface.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sort by admin interface
3 | ---
4 |
5 | Some of you might like to define the order of your entries in Storyblok, utilizing the move functionality. To receive the order just like in Storyblok you can make use of the `position` property.
6 |
7 | **Attention:** *The position property is only sorted within one folder*
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | Example Response
16 |
17 | ```json
18 | {
19 | "stories": [
20 | {
21 | "name": "Paper",
22 | "created_at": "2018-12-10T17:50:54.023Z",
23 | "published_at": "2018-12-10T17:51:18.988Z",
24 | "id": 461934,
25 | "uuid": "7b372086-0c79-4890-9f01-2e6e41098f87",
26 | "content": {
27 | "_uid": "5bbcd6f0-494a-42bd-b135-a1f7216c27ce",
28 | "name": "Paper",
29 | "image": "//a.storyblok.com/f/44203/4032x3024/747174042a/paper.jpg",
30 | "price": "0.00124",
31 | "component": "product",
32 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
33 | },
34 | // sorted by this property
35 | "position": -10,
36 | "slug": "paper",
37 | "full_slug": "products/paper"
38 | },
39 | { ... },
40 | { ... },
41 | ...
42 | ]
43 | }
44 | ```
45 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/ordering/sort-by-content-attribute.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sort by content attribute
3 | ---
4 |
5 | To sort by a field that you have defined in your content schema of your content type, you're able to use the `sort_by` parameter as shown below.
6 |
7 | | Query | Description |
8 | |---|---|
9 | | `sort_by=content.name:asc` | Sort by the content type attribute `name` |
10 |
11 | As you can see it works just like with the default properties of a story object but prepending the context `content.` before the field.
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | Example Response
20 |
21 | ```json
22 | {
23 | "stories": [
24 | {
25 | "name": "Paper",
26 | "created_at": "2018-12-10T17:50:54.023Z",
27 | "published_at": "2018-12-10T17:51:18.988Z",
28 | "id": 461934,
29 | "uuid": "7b372086-0c79-4890-9f01-2e6e41098f87",
30 | "content": {
31 | "_uid": "5bbcd6f0-494a-42bd-b135-a1f7216c27ce",
32 | // sorted by this property
33 | "name": "Paper",
34 | "image": "//a.storyblok.com/f/44203/4032x3024/747174042a/paper.jpg",
35 | "price": "0.00124",
36 | "component": "product",
37 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
38 | },
39 | "slug": "paper",
40 | "full_slug": "products/paper"
41 | },
42 | { ... },
43 | { ... },
44 | ...
45 | ]
46 | }
47 | ```
48 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/ordering/sort-by-story-property.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Sort by story object property
3 | ---
4 |
5 | You can sort your content entries by custom and predefined property using the `sort_by` parameter and `field:asc` or `field:desc` as value.
6 |
7 | | Query | Description |
8 | |---|---|
9 | | `sort_by=name:asc` | Sort by the Story object property `name` |
10 | | `sort_by=position:desc` | Sort by the Story object property `position` (same as in the admin interface) |
11 | | `sort_by=first_published_at:desc` | Sort by the Story object property `first_published_at` |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | Example Response
20 |
21 | ```json
22 | {
23 | "stories": [
24 | {
25 | // sorted by this property
26 | "name": "Paper",
27 | "created_at": "2018-12-10T17:50:54.023Z",
28 | "published_at": "2018-12-10T17:51:18.988Z",
29 | "id": 461934,
30 | "uuid": "7b372086-0c79-4890-9f01-2e6e41098f87",
31 | "content": {
32 | "_uid": "5bbcd6f0-494a-42bd-b135-a1f7216c27ce",
33 | "name": "Paper",
34 | "image": "//a.storyblok.com/f/44203/4032x3024/747174042a/paper.jpg",
35 | "price": "0.00124",
36 | "component": "product",
37 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
38 | },
39 | "slug": "paper",
40 | "full_slug": "products/paper"
41 | },
42 | { ... },
43 | { ... },
44 | ...
45 | ]
46 | }
47 | ```
48 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/starts-with/starts-with.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Starts With Examples
3 | ---
4 |
5 | We've provided some common request example that make use of the [starts_with](#core-resources/stories/retrieve-multiple-stories) query parameter.
6 |
7 | ;examplearea
8 |
9 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/useful/load-draft-version.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Load draft version
3 | ---
4 |
5 | Appending the query paramter `version` with the value `draft` (eg. `version=draft`) and using the preview token as token will allow you to access the draft versions of content entries. You can perform all kind of queries, sorting and filterings with either published or draft versions.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | Example Response
14 |
15 | ```json
16 | {
17 | "stories": [
18 | {
19 | "name": "Paper",
20 | "created_at": "2018-12-10T17:50:54.023Z",
21 | "published_at": "2018-12-10T17:51:18.988Z",
22 | "id": 461934,
23 | "uuid": "7b372086-0c79-4890-9f01-2e6e41098f87",
24 | "content": {
25 | "_uid": "5bbcd6f0-494a-42bd-b135-a1f7216c27ce",
26 | "name": "Paper",
27 | "image": "//a.storyblok.com/f/44203/4032x3024/747174042a/paper.jpg",
28 | "price": "0.00124",
29 | "component": "product",
30 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
31 | },
32 | "slug": "paper",
33 | "full_slug": "products/paper"
34 | },
35 | { ... },
36 | { ... },
37 | ...
38 | ]
39 | }
40 | ```
41 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/useful/load-latest-cache-version-timestamp.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Load latest CV timestamp
3 | ---
4 |
5 | With the cache invalidation provided by Storyblok utilizing the `cv` (cache version) query paramter you're able to always hit the latest version of your content. This can either be a server side generated timestmap that receives an update if our webhook triggers a publish event or you fetch it every time you boot up your application.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | Example Response
14 |
15 | ```json
16 | {
17 | "space": {
18 | "name": "Blog",
19 | "domain": "https://www.storyblok.com/",
20 | // version timestamp to use for further requests
21 | "version": 1544466448
22 | }
23 | }
24 | ```
25 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/useful/load-without-startpage.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Load without startpage
3 | ---
4 |
5 | Appending the query paramter `is_startpage` with the value `false` (eg. `is_startpage=false`) to retrieve only entries of a folder and skipping the startpage you've defined in that folder.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | Example Response
14 |
15 | ```json
16 | {
17 | "stories": [
18 | {
19 | "name": "Paper",
20 | "created_at": "2018-12-10T17:50:54.023Z",
21 | "published_at": "2018-12-10T17:51:18.988Z",
22 | "id": 461934,
23 | "uuid": "7b372086-0c79-4890-9f01-2e6e41098f87",
24 | "content": {
25 | "_uid": "5bbcd6f0-494a-42bd-b135-a1f7216c27ce",
26 | "name": "Paper",
27 | "image": "//a.storyblok.com/f/44203/4032x3024/747174042a/paper.jpg",
28 | "price": "0.00124",
29 | "component": "product",
30 | "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat mauris, faucibus quis pharetra sit amet, pretium ac libero. Etiam vehicula eleifend bibendum."
31 | },
32 | // all stories will have the is_startpage flag set to false
33 | "is_startpage": false,
34 | "slug": "paper",
35 | "full_slug": "products/paper"
36 | },
37 | { ... },
38 | { ... },
39 | ...
40 | ]
41 | }
42 | ```
43 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/examples/useful/useful.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Useful
3 | ---
4 |
5 | Other request examples that might be useful, without specific category like ordering/sorting, starts with or filtering.
6 |
7 | ;examplearea
8 |
9 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/filter-queries/operation-like.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Operation: `like`"
3 | sidebarTitle: "like"
4 | ---
5 |
6 | Filter your entries by checking if your custom attribute (any field inside the `content` field) has a value that is "like" the value provided.
7 |
8 | ## Use-cases: like
9 |
10 | Get all content entries that are containing a specific value.
11 |
12 | You can combine this query with the `starts_with`, [pagination](#topics/pagination), other filter query, and query/sorting options of [Stories](#core-resources/stories/retrieve-multiple-stories) if needed.
13 |
14 | | Filter Query | Description |
15 | |--|--|
16 | | `filter_query[name][like]=john*` | all entries starting with the name "John" |
17 | | `filter_query[name][like]=*john*` | all entries containing the name "John" |
18 | | `filter_query[name][like]=` | all entries with the field `name` with empty value. The entries without the `name` field will not be included |
19 |
20 | ;examplearea
21 |
22 | Example Request
23 |
24 |
25 |
26 | Example Response
27 |
28 | ```json
29 | {
30 | "stories": [
31 | {
32 | "name": "John Mustermann",
33 | "id": 107350,
34 | "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
35 | "content": {
36 | "_uid": "81c6e3c4-4cad-485f-ae35-18958dcf4cd2",
37 | "name": "John Mustermann",
38 | "component": "author"
39 | },
40 | "slug": "john-mustermann",
41 | "full_slug": "authors/john-mustermann",
42 | ...
43 | },
44 | {
45 | ...
46 | }
47 | ]
48 | }
49 | ```
50 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/filter-queries/operation-not-like.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Operation: `not_like`"
3 | sidebarTitle: "not_like"
4 | ---
5 |
6 | Filter your entries by checking if your custom attribute (any field inside the `content` field) has a value that is "not_like" the value provided.
7 |
8 | ## Use-cases: not_like
9 |
10 | Get all content entries that are containing a specific value.
11 |
12 | You can combined this query with the `starts_with`, [pagination](#topics/pagination), other filter query, and query/sorting options of [Stories](#core-resources/stories/retrieve-multiple-stories) if needed.
13 |
14 | | Filter Query | Description |
15 | |--|--|
16 | | `filter_query[name][not_like]=john*` | all entries not starting with the name "John" |
17 | | `filter_query[name][not_like]=*john*` | all entries not containing the name "John" |
18 |
19 | ;examplearea
20 |
21 | Example Request
22 |
23 |
24 |
25 | Example Response
26 |
27 | ```json
28 | {
29 | "stories": [
30 | {
31 | "name": "Mister Master",
32 | "id": 107350,
33 | "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb",
34 | "content": {
35 | "_uid": "81c6e3c4-4cad-485f-ae35-18958dcf4cd2",
36 | "name": "Mister Master",
37 | "component": "author"
38 | },
39 | "slug": "mister-master",
40 | "full_slug": "authors/mister-master",
41 | ...
42 | },
43 | {
44 | ...
45 | }
46 | ]
47 | }
48 | ```
49 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/topics/errors.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Errors
3 | ---
4 |
5 | Storyblok uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the `2xx` range indicate success. Codes in the `4xx` range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, content entry was not published but version requested was set to published, etc.). Codes in the `5xx` range indicate an error with Storyblok's servers (these are rare).
6 |
7 | Some `4xx` errors that could be handled programmatically (e.g., content entry was not found) include an error code that briefly explains the error reported.
8 |
9 | ;examplearea
10 |
11 | Http Status Code Summary
12 |
13 | | Code | Description |
14 | |------|----------------------|
15 | | 200 - OK | Everything worked as expected. |
16 | | 400 - Bad Request | Wrong format was sent (eg. XML instead of JSON). |
17 | | 401 - Unauthorized | No valid API key provided. |
18 | | 404 - Not Found | The requested resource doesn't exist (perhaps due to not yet published content entries). |
19 | | 422 - Unprocessable Entity | The request was unacceptable, often due to missing a required parameter. |
20 | | 429 - Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
21 | | 500, 502, 503, 504 - Server Errors | Something went wrong on Storyblok's end. (These are rare.) |
22 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/topics/pagination.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Pagination
3 | ---
4 |
5 | All top-level API resources have support for bulk fetches via "list" API methods. For instance, you can list `stories` and `datasource_entries`. These list API methods share a common structure, taking these two parameters: `page`, `per_page`.
6 |
7 | The default `per_page` is set to `25` entries per page. You can increase this number to receive up to `100` entries per page. To go through different pages you can utilize the `page` parameter. The `page` parameter is a numeric value and uses `1` as default.
8 |
9 | To allow a calculation of how many pages are available you can access the `Total` response header that you will receive after you made your first request. Access it and divide it with your `per_page` parameter to receive the highest possible page, otherwise you will receive an empty array as result.
10 |
11 | | Query Parameter | Description |
12 | |---------------------|----------------------|
13 | | `page` | Default: `1`. Increase this to receive the next page of content entries |
14 | | `per_page` | Default: `25`, Max for Stories: `100`, Max for Links and Datasource Entries: `1000` . Defines the number of content entries you will receive per page |
15 |
16 | ;examplearea
17 |
18 | Example Request
19 |
20 |
21 |
22 | Example Response
23 |
24 | ```json
25 | {
26 | "stories": [
27 | { ... },
28 | { ... }
29 | ]
30 | }
31 | ```
32 |
33 | Example Response Headers
34 |
35 | ```bash
36 | status: 200
37 | per-page: 2
38 | total: 3
39 | ...
40 | ```
41 |
--------------------------------------------------------------------------------
/content/content-delivery/v2/topics/rate-limit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Rate Limit
3 | ---
4 |
5 | The content delivery api has a rate limit of 50 requests per second for uncached request. The limit decreases if you use a higher page size than 25.
6 |
7 |
8 | ;examplearea
9 |
10 | | Type of request | Rate Limit |
11 | |------|-----------|
12 | | Cached requests from the CDN | > 1000 per second |
13 | | Single content item, datasources, ... | 50 per second |
14 | | Listings with page size below and with 25 | 50 per second |
15 | | Listings with page size between 25 and 50 | 15 per second |
16 | | Listings with page size between 50 and 75 | 10 per second |
17 | | Listings with page size between 75 and 100 | 6 per second |
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/activities/activities.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Activities
3 | ---
4 |
5 | Activities are created on update, create and delete actions in Storyblok for resources like stories, components, spaces, datasources and datasource entries.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/activities/:activity_id
13 | ```
14 |
15 |
16 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/activities/retrieve-multiple-activities.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Activities
3 | ---
4 |
5 | Returns an array of activity objects. Can be filtered on date ranges and is [paged](#topics/pagination).
6 |
7 | | Parameter | Description |
8 | |---|---|
9 | | `created_at_gte` | Activity creation date is greater than `YYYY-MM-DD` |
10 | | `created_at_lte` | Activity creation date is lower than `YYYY-MM-DD` |
11 |
12 | ;examplearea
13 |
14 | Example Request
15 |
16 |
17 |
18 | You will receive an array of [activity objects](#core-resources/activities/the-activity-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/activities/retrieve-one-activity.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Activity
3 | ---
4 |
5 | Returns a single activity object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a fully loaded [activity object](#core-resources/activities/the-activity-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/activities/the-activity-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Activity Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `trackable_id` | Id of reference object that was changes |
9 | | `trackable_type` | Type of the referenced object |
10 | | `owner_id` | Id of User that created the object |
11 | | `owner_type` | Default: "User" |
12 | | `key` | Key defined by type.action (eg: story.create, story.update, component.create) |
13 | | `parameters` | Additional parameter passed; Default: null |
14 | | `recipient_id` | Default: null |
15 | | `recipient_type` | Default: null |
16 | | `created_at` | Creation date (Format: `YYYY-mm-dd HH:MM`) |
17 | | `updated_at` | Latest update date (Format: `YYYY-mm-dd HH:MM`) |
18 | | `space_id` | Space ID reference |
19 |
20 | ;examplearea
21 |
22 | Example Object
23 |
24 | ```json
25 | {
26 | "activity": {
27 | "id": 5405,
28 | "trackable_id": null,
29 | "trackable_type": null,
30 | "owner_id": null,
31 | "owner_type": null,
32 | "key": null,
33 | "parameters": {
34 | },
35 | "recipient_id": null,
36 | "recipient_type": null,
37 | "created_at": "2018-11-10T15:32:58.649Z",
38 | "updated_at": "2018-11-10T15:32:58.649Z",
39 | "space_id": 606
40 | }
41 | }
42 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/approvals.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Approvals
3 | ---
4 |
5 | Triggers an approval message for a specific content entry. It allows you to send an approval request to another collaborator of the space.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/approvals/:approval_id
13 | ```
14 |
15 |
16 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/create-approval.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create Approval
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `story_id` | ID of content entry that should be approved |
8 | | `approver_id` | ID of the User that should be the approver |
9 |
10 | ;examplearea
11 |
12 | Example Request Object
13 |
14 | ```json
15 | {
16 | "approval": {
17 | "story_id": 1066,
18 | "approver_id": 1028
19 | }
20 | }
21 | ```
22 |
23 | Example Request
24 |
25 |
26 |
27 | Example Response Object
28 |
29 | ```json
30 | {
31 | "approval": {
32 | "id": 11,
33 | "status": "pending"
34 | }
35 | }
36 | ```
37 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/create-release-approval.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create Release Approval
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `story_id` | ID of content entry that should be approved |
8 | | `approver_id` | ID of the User that should be the approver |
9 | | `release_id` | ID of the release that should be approved |
10 |
11 | ;examplearea
12 |
13 | Example Request Object
14 |
15 | ```json
16 | {
17 | "approval": {
18 | "story_id": 1067,
19 | "approver_id": 1030
20 | },
21 | "release_id": 16
22 | }
23 | ```
24 |
25 | Example Request
26 |
27 |
28 |
29 | Example Response Object
30 |
31 | ```json
32 | {
33 | "approval": {
34 | "id": 12,
35 | "status": "pending"
36 | }
37 | }
38 | ```
39 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/delete-approval.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete an Approval
3 | ---
4 |
5 | Delete an approval by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/retrieve-multiple-approvals.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Approvals
3 | ---
4 |
5 | Returns an array of approval objects. This endpoint can be filtered on approver and is [paged](#topics/pagination).
6 |
7 | | Parameter | Description |
8 | |---|---|
9 | | `approver` | Numeric Id of the approver |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive an array of [approval objects](#core-resources/approvals/the-approval-object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/retrieve-one-approval.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Approval
3 | ---
4 |
5 | Returns a single approval object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [approval object](#core-resources/approvals/the-approval-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/approvals/the-approval-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Approval Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `status` | Status of approval |
9 | | `story_id` | ID of content entry that should be approved |
10 | | `approver_id` | ID of the User that should be the approver |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "approval": {
19 | "id": 11,
20 | "status": "pending",
21 | "story_id": 1066,
22 | "approver_id": 1028
23 | }
24 | }
25 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/asset-folders.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Asset Folders
3 | ---
4 |
5 | Asset folder allow you to group your assets. Besides the overall root folder you can define nested folder structures.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/asset_folders/:asset_folder_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/create-asset-folder.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create an Asset Folder
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `asset_folder` | Your full [asset folder object](#core-resources/asset-folders/the-asset-object) |
8 | | `asset_folder[name]` | Name is **required** |
9 | | `asset_folder[parent_id]` | The identifier of the parent folder. The `parent_id` parameter is **optional**. If the `parent_id` is omitted or set to null, the folder is created at root level |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive an [asset folder object](#core-resources/asset-folders/the-asset-object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/delete-asset-folder.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete an Asset Folder
3 | ---
4 |
5 | Delete an asset folder by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/retrieve-multiple-asset-folders.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Asset Folders
3 | ---
4 |
5 | Returns an array of asset folder objects.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [asset folder objects](#core-resources/asset-folders/the-asset-folder-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/retrieve-one-asset-folder.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Asset Folder
3 | ---
4 |
5 | Returns a single, asset folder object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a fully loaded [asset folder object](#core-resources/asset-folders/the-asset-folder-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/the-asset-folder-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Asset Folder Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `name` | Display name of your asset folder |
9 | | `parent_id` | Parent asset folder id |
10 |
11 | ;examplearea
12 |
13 | Example Object
14 |
15 | ```json
16 | {
17 | "asset_folder": {
18 | "id": 41,
19 | "name": "Header Images",
20 | "parent_id": null
21 | }
22 | }
23 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/asset-folders/update-asset-folder.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update an Asset Folder
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `asset_folder` | Your full [asset folder object](#core-resources/asset-folders/the-asset-object) |
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | You will receive a status code 204 as response.
16 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/assets.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Assets
3 | ---
4 |
5 | Assets like images, videos and documents are kept in the CDN as long as possible and will rarely hit the origin server. Each asset object references one of those uploaded images, videos and documents.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/assets/:asset_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/delete-asset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete an Asset
3 | ---
4 |
5 | Delete an asset by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/retrieve-multiple-assets.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Assets
3 | ---
4 |
5 | Returns an array of asset objects. This endpoint is [paged](#topics/pagination).
6 |
7 | | Parameter | Description |
8 | |----|----|
9 | | `in_folder` | Provide the numeric id of a folder to filter the assets by a specific folder |
10 | | `sort_by` | Possible values: created_at:asc, created_at:desc, updated_at:asc, updated_at:desc, short_filename:asc, short_filename:desc |
11 | | `search` | Provide a search term to filter a specific file by the filename |
12 | | `is_private` | If "1" it only displays private assets |
13 |
14 | ;examplearea
15 |
16 | Example Request
17 |
18 |
19 |
20 | You will receive an array of [asset objects](#core-resources/assets/the-asset-object) as response.
21 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/retrieve-one-asset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Asset
3 | ---
4 |
5 | Returns a single asset object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an [asset object](#core-resources/assets/the-asset-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/signed-response-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Signed Response Object
3 | ---
4 |
5 | After creating an asset entry using a POST request you will receive a response object with all information needed to finally upload your asset. The second request after the creation of the asset entry will need all information in `fields` appended to your `application/x-www-form-urlencoded` request besides the actual `file` input. See the demo on how to [upload an asset](#core-resources/assets/upload-asset).
6 |
7 | ;examplearea
8 |
9 | Example Object
10 |
11 | ```json
12 | {
13 | "pretty_url": "//a-example.storyblok.com/f/606/e5990a3595/your_file.jpg",
14 | "public_url": "https://s3.amazonaws.com/a-example.storyblok.com/f/606/e5990a3595/your_file.jpg",
15 | "fields": {
16 | "key": "f/606/e5990a3595/your_file.jpg",
17 | "acl": "public-read",
18 | "Expires": "Sun, 10 Nov 2019 15:33:00 GMT",
19 | "Cache-Control": "public; max-age=31536000",
20 | "Content-Type": "image/jpeg",
21 | "policy": "eyJleHBpcmF0aW9uIjoiMjAxOC0xMS0xMFQxNTo...ei1hbGdvcml0aG0iOiJBV1M0LUhNQUM...LWFtei1kYXRlIjoiMjAxODExMTBUMTUzMzAwWiJ9XX0=",
22 | "x-amz-credential": "AKIAIU627EN23A/20181110/s3/aws4_request",
23 | "x-amz-algorithm": "AWS4-HMAC-SHA256",
24 | "x-amz-date": "20181110T153300Z",
25 | "x-amz-signature": "aaedd72b54636662b137b7648b54bdb47ee3b1dd28173313647930e625c8"
26 | },
27 | "post_url": "https://s3.amazonaws.com/a-example.storyblok.com"
28 | }
29 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/assets/the-asset-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Asset Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `filename` | Full path of the asset, including the file name |
9 | | `space_id` | Space ID in which the asset is connected |
10 | | `created_at` | Creation date (Format: `YYYY-mm-dd HH:MM`) |
11 | | `updated_at` | Latest update date (Format: `YYYY-mm-dd HH:MM`) |
12 | | `deleted_at` | Deleted date (Format: `YYYY-mm-dd HH:MM`) |
13 | | `file` | File Object |
14 | | `asset_folder_id` | Id of the folder containing this asset |
15 | | `short_filename` | The file name of the asset |
16 | | `metadata` | Includes custom metadata fields for an asset |
17 | | `content_type` | The MIME type of the asset |
18 | | `content_length` | The content length in bytes |
19 | | `is_private` | Defines if the asset should be inaccessable to the public |
20 |
21 | ;examplearea
22 |
23 | Example Object
24 |
25 | ```json
26 | {
27 | "id": 14,
28 | "filename": "/f/616/SIZE/UNIQUEIDENTIFIER/your_filename.jpg",
29 | "space_id": 616,
30 | "created_at": "2018-11-10T15:33:00.578Z",
31 | "updated_at": "2018-11-10T15:33:00.578Z",
32 | "file": {
33 | "url": null
34 | },
35 | "asset_folder_id": null,
36 | "meta_data": {
37 | "asset_category": "name"
38 | },
39 | "deleted_at": null,
40 | "short_filename": "your_filename.jpg",
41 | "content_type": "image/jpeg",
42 | "content_length": 12303,
43 | "is_private": false
44 | }
45 | ```
46 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/collaborators/add-collaborator.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Add a Collaborator
3 | ---
4 |
5 | You can set some of the fields available in the collaborator object, below we only list the properties in the example and the possible required fields.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `collaborator` | The [collaborator object](#core-resources/collaborators/the-collaborator-object) |
10 | | `email` | Email that will be used in the space interface for collaborator or collaborator SSO ID **required** |
11 | | `role` | the role name of the collaborator. could be admin, editor or set to a role`id`. For custom roles, you need to set `role_id` for the role and set role to `multi` if you have more than one custom role **required** |
12 | | `space_id` | Numeric id of the collaborator space **required** |
13 | | `space_role_id` | Numeric id connected with a role, usually an array of `ids` with more than one role **required** |
14 | | `space_role_ids` | An array of numeric `ids` for multiple roles in a space for a collaborator |
15 | | `permissions` | Permissions for a collaborator, usually is set to `can_subscribe` for a collaborator. |
16 | | `allow_multiple_roles_creation` | Boolean value, if `true` you can create multiple roles for a collaborator |
17 |
18 | ;examplearea
19 |
20 | Example Request
21 |
22 |
23 |
24 | You will receive a fully loaded [collaborator object](#core-resources/collaborators/the-collaborator-object) as response.
25 |
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/collaborators/add-users-with-sso.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Add a user with SSO
3 | ---
4 |
5 | Similar to `add-collaborator`. You can add a user with SSO by using the `sso_id` property. The `sso_id` is the unique identifier of the user in your system. You can use this identifier to identify the user in Storyblok.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `sso_id` | The unique identifier of the user in your system, can be an email **required** |
10 | | `email` | Email that will be used in the space interface for collaborator or collaborator SSO ID **required** |
11 | | `role` | Role name of the collaborator, could be admin, editor or custom roles, which is set to `id` and set to `multi` if you have more than one role **required** |
12 | | `space_role_id` | Numeric id of the space role connected with collaborators, usually `null` with more than one collaborator **required** |
13 |
14 | ;examplearea
15 |
16 | Example Request
17 |
18 |
19 |
20 | Example object
21 |
22 | ```json
23 | {
24 | "collaborator":{
25 | "user":null,
26 | "role":"editor",
27 | "user_id":null,
28 | "permissions":[
29 |
30 | ],
31 | "allowed_path":"",
32 | "field_permissions":"",
33 | "id":110236,
34 | "space_role_id":35053,
35 | "invitation":{
36 | "email":{
37 | "SSO Id"
38 | },
39 | "expires_at":"2022-09-29T00:51:35.074Z"
40 | },
41 | "space_role_ids":[
42 | // ...
43 | ],
44 | "space_id":175323
45 | }
46 | }
47 |
48 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/collaborators/collaborators.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Collaborators
3 | ---
4 |
5 | The collaborators endpoint tells you which collaborators have access to a space. You can use the `collaborators` endpoint to add, remove or update collaborators, including their roles and permissions.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/collaborators
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/collaborators/delete-collaborator.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Collaborator
3 | ---
4 |
5 | Delete a collaborator by using their collaborator `id`. SSO users can be deleted by using their `sso_id`.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/collaborators/update-collaborator.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Collaborator Roles and Permissions
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `collaborator` | The [collaborator object](#core-resources/collaborators/the-collaborator-object) |
8 | | `id` | The collaborator `id` |
9 | | `role` | the role name of the collaborator. Could be admin, editor or set to a role`id`. For custom roles, you need to set `role_id` for the role and set role to `multi` if you have more than one custom role **required** |
10 | | `space_role_id` | Numeric id connected with a role, usually an array of `ids` with more than one role **required** |
11 | | `permissions` | Permissions for a collaborator, usually is set to `can_subscribe` for a collaborator or empty array. |
12 | | `allow_multiple_roles_creation` | Boolean value, if `true` allows for creating multiple roles using `ids` for a collaborator
13 |
14 | ;examplearea
15 |
16 | Example Request
17 |
18 |
19 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Workflow Stage Change
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow_stage_change` | Your [workflow stage change object](#core-resources/workflow-stage-changes/object) |
8 | | `workflow_stage_change[workflow_stage_id]` | Workflow stage id **required** |
9 | | `workflow_stage_change[story_id]` | Story id **required** |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive a [workflow stage change object](#core-resources/workflow-stage-changes/object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/delete.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Workflow Stage Change
3 | ---
4 |
5 | Delete a workflow stage change using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/get-all.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Space Role
3 | ---
4 |
5 | Returns an array of space role objects.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will an array of [space role objects](#core-resources/spaces-roles/the-space-role-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/get-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Space Role
3 | ---
4 |
5 | Returns a single, space role object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [space role object](#core-resources/spaces-roles/the-space-role-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Space Roles
3 | ---
4 |
5 | Space roles are custom permission sets that can be attached to collaborators to define their roles and permissions in a specific space.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/space_roles/:space_role_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Space Role Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `role` | Name used in the interface |
9 | | `access_tasks` | Is allowed to access the Tasks menu item |
10 | | `allowed_paths` | Story ids the user should have access to (acts as whitelist). If no item is selected the user has rights to access all content items. |
11 | | `resolved_allowed_paths` | Resolved allowed_paths for displaying paths |
12 | | `field_permissions` | Hide specific fields for this user with an array of strings with the schema: `"component_name.field_name"` |
13 | | `permissions` | Allow specific actions in interface by adding the permission as array of strings |
14 |
15 | ### Possible Permissions
16 |
17 | | Permission | Description |
18 | |---|---|
19 | | `publish_stories` | **Allow** publishing of content entries |
20 | | `save_stories` | **Allow** editing and saving of content entries |
21 | | `edit_datasources` | **Allow** editing and saving of datasources |
22 | | `access_commerce` | **Allow** access to commerce app |
23 | | `edit_story_slug` | **Deny** the change of slugs of content entries |
24 | | `move_story` | **Deny** moving of content entries |
25 | | `view_composer` | **Deny** access to visual composer |
26 |
27 | ;examplearea
28 |
29 | Example Object
30 |
31 | ```json
32 | {
33 | "space_role": {
34 | "id": 18,
35 | "role": "English User",
36 | "access_tasks": true,
37 | "resolved_allowed_paths": [
38 |
39 | ],
40 | "allowed_paths": [
41 | 12412,
42 | 51122
43 | ],
44 | "field_permissions": [
45 |
46 | ],
47 | "permissions": [
48 |
49 | ]
50 | }
51 | }
52 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/comments/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Space Role
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `space_role` | Your full [component object](#core-resources/space-roles/the-space-role-object) |
8 | | `space_role[name]` | The space role name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a [space role object](#core-resources/space-roles/the-space-role-object) as response.
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/component-groups.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Component Groups
3 | ---
4 |
5 | A component group can be used to group components together. Each component can have only one component group.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/component_groups/:component_group_id
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/create-component-group.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Component Group
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `component_group` | Your full [component group object](#core-resources/component-groups/the-component-group-object) |
8 | | `component_group[name]` | The component group name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a fully loaded [component group object](#core-resources/component-groups/the-component-group-object) as response.
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/delete-component-group.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Component Group
3 | ---
4 |
5 | Delete any component group using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/retrieve-multiple-component-groups.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Component Groups
3 | ---
4 |
5 | Returns an array of component group objects. The response of this endpoint is not paginated and you will retrieve all component groups.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [component group objects](#core-resources/components/the-component-group-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/retrieve-one-component-group.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Component Group
3 | ---
4 |
5 | Returns a single, fully loaded component group object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a fully loaded [component group object](#core-resources/component_groups/the-component-group-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/the-component-group-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Component Group Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `name` | Name of the group |
9 | | `uuid` | Uuid of the group |
10 |
11 | ;examplearea
12 |
13 | Example Object
14 |
15 | ```json
16 | {
17 | "component_group": {
18 | "id": 214123,
19 | "name": "Teasers",
20 | "uuid": "19323-32144-23423-42314"
21 | }
22 | }
23 | ```
24 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/component-groups/update-component-group.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Component group
3 | ---
4 |
5 | ;examplearea
6 |
7 | Example Request
8 |
9 |
10 |
11 | You will receive a fully loaded, updated [component group object](#core-resources/components/the-component-group-object) as response.
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/components.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Components
3 | ---
4 |
5 | A component is a standalone entity that is meaningful in its own right. While components (or bloks) can be nested in each other, semantically they remain equal. Each component is a small piece of your data structure which can be filled with content or nested by your content editor. One component can consist of as many field types as required.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/components/:component_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/create-component.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Component
3 | ---
4 |
5 | You can set most of the fields that are available in the component object, below we only list the properties in the example and possible required fields.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `component` | The [component object](#core-resources/components/the-component-object) |
10 | | `component[name]` | Technical name used for `component` property in entries **required** |
11 | | `component[display_name]` | Name that will be used in the editor interface |
12 | | `component[image]` | URL to the preview image, if uploaded |
13 | | `component[preview]` | Define the field that should be used for preview in the interface |
14 | | `component[is_root]` | Component should be usable as a Content Type |
15 | | `component[is_nestable]` | Component should be insertable in `blocks` field type fields |
16 | | `component[component_group_uuid]` | The component group uuid of the component |
17 | | `component[schema]` | Key value pairs of [component fields](#core-resources/components/the-component-field-object) |
18 |
19 | ;examplearea
20 |
21 | Example Request
22 |
23 |
24 |
25 | You will receive a fully loaded [component object](#core-resources/components/the-component-object) as response.
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/delete-component.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Component
3 | ---
4 |
5 | Delete any component using its numeric id. Already used components will still stay in place but will show up with no schema definition so your inserted values won't be removed. You can use the update stories to migrate your content to other or new components.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/possible-field-types.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Possible field types
3 | ---
4 |
5 | | Field Type | Description |
6 | |---|---|
7 | | `bloks` | Blocks: a field to interleave other components in your current one |
8 | | `text` | Text: a text field |
9 | | `textarea` | Textarea: a text area |
10 | | `markdown` | Markdown: write markdown with a text area and additional formatting options |
11 | | `number` | Number: a number field |
12 | | `datetime` | Date/Time: a date- and time picker |
13 | | `boolean` | Boolean: a checkbox - true/false |
14 | | `options` | Multi-Options: a list of checkboxes |
15 | | `option` | Single-Option: a single dropdown |
16 | | `asset` | Asset: Single asset (images, videos, audio, and documents) |
17 | | `multiasset` | Multi-Assets: (images, videos, audio, and documents) |
18 | | `multilink` | Link: an input field for internal linking to other stories |
19 | | `section` | Group: no input possibility - allows you to group fields in sections |
20 | | `custom` | Plugin: Extend the editor yourself with a color picker or similar - Check out: [Creating a Storyblok field type plugin](https://www.storyblok.com/docs/Guides/Creating-a-field-type-plugin) |
21 | | `image` | Image (old): a upload field for a single image with cropping possibilities |
22 | | `file` | File (old): a upload field for a single file |
23 |
24 | ;examplearea
25 |
26 | Example Object
27 |
28 | ```json
29 | "field_key": {
30 | ...
31 | "type": "text", // <-- field type
32 | ...
33 | }
34 | ```
35 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/retrieve-multiple-components.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Components
3 | ---
4 |
5 | Returns an array of component objects. The response of this endpoint is not paginated and you will retrieve all components.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [component objects](#core-resources/components/the-component-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/retrieve-one-component.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Component
3 | ---
4 |
5 | Returns a single, fully loaded component object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a fully loaded [component object](#core-resources/components/the-component-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/components/update-component.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Component
3 | ---
4 |
5 | Send the component object with updated values to our backend using the PUT method. An update on component will not take over already inserted values, make sure to also update your stories that contain this component.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `component` | Your full [component object](#core-resources/components/the-component-object) |
10 | | `component[name]` | Technical name used for `component` property in entries **required** |
11 | | `component[display_name]` | Name that will be used in the editor interface |
12 | | `component[image]` | URL to the preview image, if uploaded |
13 | | `component[preview]` | Define the field that should be used for preview in the interface |
14 | | `component[is_root]` | Component should be usable as a Content Type |
15 | | `component[is_nestable]` | Component should be insertable in `blocks` field type fields |
16 | | `component[component_group_uuid]` | The component group uuid of the component |
17 | | `component[schema]` | Key value pairs of [component fields](#core-resources/components/the-component-field-object) |
18 |
19 | ;examplearea
20 |
21 | Example Request
22 |
23 |
24 |
25 | You will receive a fully loaded, updated [component object](#core-resources/components/the-component-object) as response.
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/create-datasource-entry.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Datasource Entry
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `datasource_entry` | Your full [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) |
8 | | `datasource_entry[name]` | Name is **required** |
9 | | `datasource_entry[value]` | Value is **required** |
10 | | `datasource_entry[datasource_id]` | Datasource Id is **required** |
11 |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | You will receive a [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) as response.
20 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/datasource-entries.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Datasource Entries
3 | ---
4 |
5 | The actual KEY/VALUE pair object a datasource consists of. One specific datasource entry is a set of two linked data items: a key, which is a unique identifier for the item of data scoped in the data source, and the value, which is the data that is identified.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/datasource_entries/:datasource_entry_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/delete-datasource-entry.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Datasource Entry
3 | ---
4 |
5 | Delete a datasource entry by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/retrieve-multiple-datasource-entries.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Datasource Entries
3 | ---
4 |
5 | Returns an array of datasource entry objects. This endpoint is [paged](#topics/pagination) and can be filtered by a datasource id or slug. The dimension parameter allows you to have the dimension value filled with the according data.
6 |
7 | | Parameter | Description |
8 | |----|----|
9 | | `datasource_id` | Provide the numeric id of a datasource |
10 | | `datasource_slug` | Provide the slug of a datasource |
11 | | `dimension` | Provide dimension to receive the dimension_value filled |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | You will receive an array of [datasource entry objects](#core-resources/datasource-entries/the-datasource-entry-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/retrieve-one-datasource-entry.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Datasource Entry
3 | ---
4 |
5 | Returns a single datasource entry object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/the-datasource-entry-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Datasource Entry Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `name` | The key which will be used to resolve the given value |
9 | | `value` | The actual value for the provided key |
10 | | `datasource_id` | Numeric ID of connected datasource |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "datasource_entry" : {
19 | "id": 52,
20 | "name": "newsletter_text",
21 | "value": "Subscribe to our newsletter to make sure you don’t miss anything.",
22 | "datasource_id": ""
23 | }
24 | }
25 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasource-entries/update-datasource-entry.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Datasource Entry
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `datasource_entry` | Your full [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) |
8 | | `datasource_entry[name]` | Name is **required** |
9 | | `datasource_entry[value]` | Value is **required** |
10 | | `datasource_entry[dimension_value]` | Value of the key in the provided `dimension_id` (optional) |
11 | | `dimension_id` | Numeric dimension id (optional, but required to set a `dimension_value`) |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | You will receive a [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) as response.
20 |
21 | Example Request for setting a value for specific dimension
22 |
23 |
24 |
25 | You will receive a [datasource entry object](#core-resources/datasource-entries/the-datasource-entry-object) as response. The `dimension_id` is available in your [datasource object](#core-resources/datasources/the-datasource-object)
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/create-datasource.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Datasource
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `datasource` | Your full [datasource object](#core-resources/datasources/the-datasource-object) |
8 | | `datasource[name]` | Name is **required** |
9 | | `datasource[slug]` | Slug is **required** |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive a [datasource object](#core-resources/datasources/the-datasource-object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/datasources.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Datasources
3 | ---
4 |
5 | A datasource is a collection of datasource entries with a specific name and slug. Each datasource entry is a collection of key-value pairs (KVP), so called datasource entries. Those key-value pairs can be used for a single choice, multiple choice options and as well directly through our API to use them for multi-language labels, categories, or anything similar.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/datasources/:datasource_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/delete-datasource.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Datasource
3 | ---
4 |
5 | Delete a datasource by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/retrieve-multiple-datasources.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Datasources
3 | ---
4 |
5 | Returns an array of datasource objects. This endpoint is paged and can be filtered by slug.
6 |
7 | | Parameter | Description |
8 | |----|----|
9 | | `search` | Provide a search string |
10 | | `by_ids` | Provide ids |
11 |
12 | ;examplearea
13 |
14 | Example Request
15 |
16 |
17 |
18 | You will receive an array of [datasource objects](#core-resources/datasources/the-datasource-object) as response.
19 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/retrieve-one-datasource.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Datasource
3 | ---
4 |
5 | Returns a single datasource object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [datasource object](#core-resources/datasources/the-datasource-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/the-datasource-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Datasource Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID, used to reference datasource entries |
8 | | `name` | The key which will be used to resolve the given value |
9 | | `slug` | The slug used to request the datasource via API |
10 | | `dimensions` | List of defined dimensions for this datasource |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "datasource": {
19 | "id": 91,
20 | "name": "Labels for Website",
21 | "slug": "labels",
22 | "dimensions": [
23 |
24 | ]
25 | }
26 | }
27 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/datasources/update-datasource.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Datasource
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `datasource` | A [datasource object](#core-resources/datasources/the-datasource-object) |
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | You will receive a [datasource object](#core-resources/datasources/the-datasource-object) as response.
16 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/deployments/branch-list.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple branches
3 | ---
4 |
5 | Returns an array of branches objects. This endpoint is useful for retrieving the branch identifiers. The branch identifier is needed for triggering a deployment.
6 |
7 |
8 | ;examplearea
9 |
10 | Example Request
11 |
12 |
13 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/deployments/branch-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one branch
3 | ---
4 |
5 | Returns the selected branch (or pipeline) objects. This endpoint is useful for retrieving information related to a specific branch.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/deployments/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Branch Deployment
3 | ---
4 |
5 | Once you have set your pipelines (via the Storyblok App or the Management API), you can start to trigger the deployment.
6 | The deployment could be triggered via Storyblok UI in the Content section, by selecting the pipeline in the Pipelines dropdown.
7 |
8 | | Property | Description |
9 | |---|---|
10 | | `branch_id` | The branch id to deploy **required** |
11 | | `release_uuids` | The array of releases (referenced by their respective `uuids` to deploy) |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
21 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/deployments/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Branch deployments
3 | ---
4 |
5 | The endpoint `/v1/spaces/:space_id/deployments` can be used to trigger the deployment process across the branches.
6 |
7 | Stories created via the Management API are created in the default branch (Preview). Subsequently, they can be released to other branches (e.g. Staging, Production) by creating a branch deployment.
8 |
9 | Stories created via the Management API are created in the default branch (Preview). Subsequently, they can be deployed to other branches (e.g. Staging, Production according to the "source of sync" option) by triggering a deployment.
10 |
11 | For using this endpoint, you have to install the Pipelines application.
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/create-field-type.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Field Type
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `field_type` | Your field type object |
8 | | `field_type[name]` | Name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a [field type object](#core-resources/field-types/the-field-type-object) as response.
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/delete-field-type.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Field Type
3 | ---
4 |
5 | Delete a field type by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/field-types.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Field types
3 | ---
4 |
5 |
6 | We built Storyblok with a robust and flexible plugin system to give our customers the power to extend the editor with custom fields like a color picker or a google maps location selector. It’s basically a Vue.js 2.5.2 component extended with a few helpers in the ‘window.Storyblok.plugin’ variable.
7 |
8 | This endpoint lets you push and pull the code of your field type via the management api and can be used to automatically deploy a plugin.
9 |
10 | Read more about [field type development](https://www.storyblok.com/docs/Guides/Creating-a-field-type-plugin).
11 |
12 | ;examplearea
13 |
14 | Endpoint
15 |
16 | ```bash
17 | GET /v1/field_types/:id
18 | ```
19 |
20 |
21 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/retrieve-multiple-field-types.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Field Types
3 | ---
4 |
5 | Returns an array of field type objects. This endpoint is [paged](#topics/pagination).
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [field type object](#core-resources/field-types/the-field-type-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/retrieve-one-field-type.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Field Type
3 | ---
4 |
5 | Returns a single field type object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [field type object](#core-resources/field-types/the-field-type-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/the-field-type-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Field Type Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric ID of your field type |
8 | | `name` | Given name of your field type. Needs to be unique. A personal prefix is recommended (Example: my-geo-selector). |
9 | | `body` | The uncompiled javascript code of the field type. |
10 | | `compiled_body` | Used by the online code editor. Needs to be an empty string if using local plugin development. |
11 | | `space_ids` | Array of space ids where the field type is assigned to. |
12 |
13 |
14 | ;examplearea
15 |
16 | Example Object
17 |
18 | ```json
19 | {
20 | "field_type": {
21 | "id": 124,
22 | "name": "my-geo-selector",
23 | "body": "var Fieldtype = {}",
24 | "compiled_body": "",
25 | "space_ids": []
26 | }
27 | }
28 | ```
29 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/field-types/update-field-type.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Field Type
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `field_type` | Your full field type object. |
8 | | `field_type[body]` | The javascript code of the field type. |
9 | | `field_type[compiled_body]` | Used by the online code editor. Needs to be an empty string if using local plugin development. |
10 | | `field_type[space_ids]` | Array of space ids where the field type is assigned to. |
11 | | `publish` | If this parameter is not empty the field type will be published. |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | You will receive a [field type object](#core-resources/field-types/the-field-type-object) as response.
20 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/create-preset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Preset
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `preset` | Your full [preset object](#core-resources/presets/the-preset-object) |
8 | | `preset[name]` | Name is **required** |
9 | | `preset[component_id]` | Use numeric component id for referencing |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive a fully loaded [preset object](#core-resources/presets/the-preset-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/delete-preset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Preset
3 | ---
4 |
5 | Delete a preset by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/presets.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Presets
3 | ---
4 |
5 | As a developer, you can now define multiple default values for your components. For example, a teaser component can have three styles:
6 | - teaser with a background image
7 | - teaser with text only and solid background color
8 | - teaser with a call to action button.
9 |
10 | To make it easier for the editor to find the necessary configuration of this three styles you can save it as presets and upload a screenshot.
11 |
12 | ;examplearea
13 |
14 | Endpoint
15 |
16 | ```bash
17 | GET /v1/spaces/:space_id/presets/:preset_id
18 | ```
19 |
20 |
21 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/retrieve-multiple-presets.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Presets
3 | ---
4 |
5 | Returns an array of preset objects.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [preset objects](#core-resources/presets/the-preset-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/retrieve-one-preset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Preset
3 | ---
4 |
5 | Returns a single preset object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [preset object](#core-resources/presets/the-preset-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/the-preset-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Preset Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric ID of your preset |
8 | | `name` | Given name of your preset |
9 | | `preset[preset]` | Object with the fields you want to save in the preset |
10 | | `component_id` | ID of the component the preset should be connected |
11 | | `image` | Screenshot or other preview image for your editor; Default: `null` |
12 | | `created_at` | Creation date (Format: `YYYY-mm-dd HH:MM`) |
13 | | `updated_at` | Latest update date (Format: `YYYY-mm-dd HH:MM`) |
14 |
15 | ;examplearea
16 |
17 | Example Object
18 |
19 | ```json
20 | {
21 | "preset": {
22 | "id": 1814,
23 | "name": "Teaser with filled headline",
24 | "preset": {
25 | // fields of the component filled with content
26 | "headline": "This is a default value for the preset!",
27 | ...
28 | },
29 | "component_id": 62,
30 | "space_id": 606,
31 | "image": "//a.storyblok.com/f/606/...",
32 | "created_at": "2018-11-10T15:33:16.726Z",
33 | "updated_at": "2018-11-10T15:33:16.726Z"
34 | }
35 | }
36 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/presets/update-preset.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Preset
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `preset` | Your full [preset object](#core-resources/presets/the-preset-object) |
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | You will receive a fully loaded [preset object](#core-resources/presets/the-preset-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Release
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `release` | Your [release object](#core-resources/releases/object) **required** |
8 | | `release[name]` | Name of the release |
9 | | `release[release_at]` | Date to deploy the release (Format: YYYY-mm-dd HH:MM) |
10 | | `release[branches_to_deploy]` | Ids of pipeline stages (called branches before) to deploy the release to |
11 |
12 | ;examplearea
13 |
14 | Example Request
15 |
16 |
21 |
22 | You will receive a [release object](#core-resources/release/object) as response.
23 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/delete.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Release
3 | ---
4 |
5 | Delete a release using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/filter-by-release.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Filter Stories by Release
3 | ---
4 |
5 | You can filter stories in a release using their unique `ID` and the `in_release` parameter in [Stories object](https://www.storyblok.com/docs/api/management#core-resources/stories/retrieve-multiple-stories).
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/stories?in_release=:release_id
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/get-all.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Releases
3 | ---
4 |
5 | Returns an array of releases.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will get an array of [release objects](#core-resources/releases/object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/get-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Release
3 | ---
4 |
5 | Returns a single release object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [release object](#core-resources/releases/object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Releases
3 | ---
4 |
5 | You can read more about releases [here](https://www.storyblok.com/docs/setup-branches-and-releases#releases).
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/releases
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Release object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `name` | Name of the releases to be deployed |
8 | | `id` | Numeric ID of a release |
9 | | `release_at` | Date to deploy the release (Format: YYYY-mm-dd HH:MM) |
10 | | `released` | Boolean if the release is released |
11 | | `uuid` | Unique ID of the release |
12 | | `timezone` | Timezone of the release |
13 | | `branches_to_deploy` | An array of branches to deploy the release to |
14 | | `created_at` | Date and time the release was created (Format: YYYY-mm-dd HH:MM)
15 | | `owner_id` | Numeric ID of the release owner |
16 |
17 | ;examplearea
18 |
19 | Example Object
20 |
21 | ```json
22 | {
23 | "releases": [
24 | {
25 | "name": "Winter Special Release",
26 | "id": 95629,
27 | "release_at": "2023-04-20T18:30:00.000Z",
28 | "released": false,
29 | "uuid": "b8997523-2837-4f75-8613-05da9e7471af",
30 | "timezone": "Africa/Algiers",
31 | "branches_to_deploy": [9,2],
32 | "created_at": "2023-04-20T17:15:47.646Z",
33 | "owner_id": 99734
34 | }
35 | ]
36 | }
37 | ```
38 |
39 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/releases/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Release
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `release` | Your [release object](#core-resources/releases/object) **required** |
8 | | `release[name]` | Name of the release |
9 | | `release[release_at]` | Date to deploy the release (Format: YYYY-mm-dd HH:MM) |
10 | | `release[branches_to_deploy]` | Ids of branches to deploy the release to |
11 | | `do_release` | If this parameter is included in the request the release will be deployed |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
22 |
23 | You will receive a [release object](#core-resources/releases/object) as response.
24 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/create-space-role.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Space Role
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `space_role` | Your [space role object](#core-resources/space-roles/the-space-role-object) |
8 | | `space_role[role]` | The space role name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a [space role object](#core-resources/space-roles/the-space-role-object) as response.
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/delete-space-role.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Space Role
3 | ---
4 |
5 | Delete a space role using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/retrieve-multiple-spaces-roles.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Space Role
3 | ---
4 |
5 | Returns an array of space role objects.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [space role objects](https://www.storyblok.com/docs/api/management#core-resources/space-roles/the-space-role-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/retrieve-one-space-role.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Space Role
3 | ---
4 |
5 | Returns a single, space role object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [space role object](#core-resources/spaces-roles/the-space-role-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/space-roles.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Space Roles
3 | ---
4 |
5 | Space roles are custom permission sets that can be attached to collaborators to define their roles and permissions in a specific space.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/space_roles/:space_role_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/the-space-role-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Space Role Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `role` | Name used in the interface |
9 | | `access_tasks` | Is allowed to access the Tasks menu item |
10 | | `allowed_paths` | Story ids the user should have access to (acts as whitelist). If no item is selected the user has rights to access all content items. |
11 | | `resolved_allowed_paths` | Resolved allowed_paths for displaying paths |
12 | | `field_permissions` | Hide specific fields for this user with an array of strings with the schema: `"component_name.field_name"` |
13 | | `permissions` | Allow specific actions in interface by adding the permission as array of strings |
14 |
15 | ### Possible Permissions
16 |
17 | | Permission | Description |
18 | |---|---|
19 | | `publish_stories` | **Allow** publishing of content entries |
20 | | `save_stories` | **Allow** editing and saving of content entries |
21 | | `edit_datasources` | **Allow** editing and saving of datasources |
22 | | `access_commerce` | **Allow** access to commerce app |
23 | | `edit_story_slug` | **Deny** the change of slugs of content entries |
24 | | `move_story` | **Deny** moving of content entries |
25 | | `view_composer` | **Deny** access to visual composer |
26 |
27 | ;examplearea
28 |
29 | Example Object
30 |
31 | ```json
32 | {
33 | "space_role": {
34 | "id": 18,
35 | "role": "English User",
36 | "access_tasks": true,
37 | "resolved_allowed_paths": [
38 |
39 | ],
40 | "allowed_paths": [
41 | 12412,
42 | 51122
43 | ],
44 | "field_permissions": [
45 |
46 | ],
47 | "permissions": [
48 |
49 | ]
50 | }
51 | }
52 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/space-roles/update-space-role.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Space Role
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `space_role` | Your full [component object](#core-resources/space-roles/the-space-role-object) |
8 | | `space_role[role]` | The space role name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a [space role object](#core-resources/space-roles/the-space-role-object) as response.
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/backup-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Backup a Space
3 | ---
4 |
5 | Trigger the backup task for your space. Make sure you've configured backups in [your space options](#example-space-options).
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [space object](#core-resources/spaces/the-space-object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/create-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Space
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `space[name]` | Name of your space; **required** |
8 | | `space[domain]` | Domain for your default preview url |
9 | | `space[story_published_hook]` | Published Webhook URL |
10 | | `space[searchblok_id]` | Searchblok id, if available |
11 | | `space[environments]` | Array of `name` and `location` (url) objects |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
18 |
19 | You will receive a [space object](#core-resources/spaces/the-space-object) as response.
20 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/delete-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Space
3 | ---
4 |
5 | Delete a space by its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/duplicate-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Duplicate a Space
3 | ---
4 |
5 | Duplicate a space and all it's content entries and components; Assets will not be duplicated and still will reference the original space.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `space[name]` | Name of your space; **required** |
10 | | `space[domain]` | Domain for your default preview url |
11 | | `space[story_published_hook]` | Published Webhook URL |
12 | | `space[searchblok_id]` | Searchblok id, if available |
13 | | `space[environments]` | Array of `name` and `location` (url) objects |
14 | | `dup_id` | The numeric id of the original space |
15 |
16 | ;examplearea
17 |
18 | Example Request
19 |
20 |
21 |
22 | You will receive a [space object](#core-resources/spaces/the-space-object) as response.
23 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/retrieve-multiple-spaces.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Spaces
3 | ---
4 |
5 | Returns an array of space objects.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [space objects](#core-resources/spaces/the-space-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/retrieve-one-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Space
3 | ---
4 |
5 | Returns a single space object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [space object](#core-resources/spaces/the-space-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/spaces.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Spaces
3 | ---
4 |
5 | A space is a content repository. Think of it as a place to keep all the content related to one project. Each space has its own components, datasources, assets, environments, domains, collaborators, and permissions.
6 |
7 | If you want to launch several websites or apps, the best way to go is to create a separate space for each project.
8 |
9 | If your goal is to deliver the same content to multiple platforms (a common set would be the web, iOS, and an Android app), then you should use one space and create multiple API keys to deliver the content. You can find the API keys in the space dashboard.
10 |
11 | ;examplearea
12 |
13 | Endpoint
14 |
15 | ```bash
16 | GET /v1/spaces/:space_id
17 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/spaces/update-space.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Space
3 | ---
4 |
5 | You're only able to update the following properties of your space.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `space[id]` | Numeric id of your space |
10 | | `space[name]` | Name of your space |
11 | | `space[domain]` | Domain for your default preview url |
12 | | `space[uniq_domain]` | Unique Domain for the Storyblok Rendering Service |
13 | | `space[owner_id]` | Numeric user id of the owner for that space |
14 | | `space[parent_id]` | Space id of a possible parent space |
15 | | `space[duplicatable]` | Is the space globally duplicatable **by all users** |
16 | | `space[default_root]` | Default content type used for this space default: `page` |
17 | | `space[options]` | Options for backup and language configurations |
18 | | `space[routes]` | Routes for the Storyblok Rendering Service |
19 | | `space[story_published_hook]` | Published Webhook URL |
20 | | `space[searchblok_id]` | Searchblok id, if available |
21 | | `space[environments]` | Array of `name`, `location` (url) objects |
22 | | `space[billing_address]` | Billing information used to generate your invoices for this space |
23 |
24 | ;examplearea
25 |
26 | Example Request
27 |
28 |
29 |
30 |
31 | You will receive a [space object](#core-resources/spaces/the-space-object) as response.
32 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/compare-story-version.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Compare a Story Version
3 | ---
4 |
5 | With this endpoint you can compare the changes between two versions of a story in Storyblok. You need to provide the story `ID` and version `ID` in the request to retrieve the comparison results.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/delete-story.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Story
3 | ---
4 |
5 | Delete a content entry by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/get-story-versions.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Get Story Versions
3 | ---
4 |
5 | This allows you to retrieve the versions of a story and the corresponding author information. You can also filter the results based on pagination using the `page` parameter. This can be done with a GET request on the story version you wish to retrieve.
6 |
7 | | Parameter | Description |
8 | |----|----|
9 | | `id` | Numeric id of the story version |
10 | | `event` | The type of version change in story |
11 | | `created_at` | Date and time of of change (Format: YYYY-mm-dd HH:MM) |
12 | | `author_id` | ID of the author |
13 | | `author` | Author of the change in the story |
14 | | `item_id` | The story `ID` |
15 | | `is_draft` | Boolean value, if `false` means story is published |
16 |
17 | ;examplearea
18 |
19 | Example Request
20 |
21 |
22 |
23 | Example Request with Pagination
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/internationalization-for-stories.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Internationalization for Stories
3 | ---
4 |
5 | If you use our field level translations functionality, you can provide the values for the translations/languages within the same content object by appending `__i18n__` followed by the language code. Make sure to have the component field option `translatable` to `true`.
6 |
7 | Get a [full list of our languages codes](https://gist.github.com/DominikAngerer/f685f2c988171faef3fb6c2ffff4c78c) on Github.
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/publish-a-story.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Publish a Story
3 | ---
4 |
5 | Publishing a story besides using the `publish` property via creation, can be done by using a GET request for each story you want to publish.
6 |
7 | | Property | Description |
8 | |---|---|
9 | | `release_id` | Numeric ID of release (optional) |
10 | | `lang` | Language code to publish the story individually (optional, must be enabled in the space settings) |
11 |
12 | ;examplearea
13 |
14 | Example Request
15 |
16 |
17 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/retrieve-one-story.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Story
3 | ---
4 |
5 | Returns a single, fully loaded story object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a fully loaded [story object](#core-resources/stories/the-story-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/stories.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Stories
3 | ---
4 |
5 | The stories endpoint will let you manage all content entries of your Storyblok space. You can use it to import, export or modify content.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/stories/:story_id
13 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/stories/unpublish-a-story.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Unpublish a Story
3 | ---
4 |
5 | Unpublishing a story besides using the `unpublish` action in visual editor or in content viewer, can be done by using a GET request for each story you want to unpublish.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/create-task.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Task
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `task` | Your full [task object](#core-resources/tasks/the-task-object) |
8 | | `task[name]` | Name is **required** |
9 |
10 | ;examplearea
11 |
12 | Example Request
13 |
14 |
15 |
16 | You will receive a fully loaded [task object](#core-resources/tasks/the-task-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/delete-taks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Task
3 | ---
4 |
5 | Delete a task by using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/retrieve-multiple-tasks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Tasks
3 | ---
4 |
5 | Returns an array of task objects. This endpoint is [paged](#topics/pagination).
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive an array of [task objects](#core-resources/tasks/the-task-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/retrieve-one-task.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Task
3 | ---
4 |
5 | Returns a single task object with a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [task object](#core-resources/tasks/the-task-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/tasks.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Tasks
3 | ---
4 |
5 | You can create a Task to send requests to one of your custom endpoints. This lets you trigger a build for production or other common use-cases like product syncs or publishing tasks. Future updates will also bring scheduled and timed tasks so you can handle all your tasks at one place.
6 |
7 | The payload Storyblok will send to your webhook url as POST request:
8 |
9 | ```json
10 | {
11 | "task": {
12 | "id": 214,
13 | "name": "My Task Name"
14 | },
15 | "space_id": 606
16 | }
17 | ```
18 |
19 | ;examplearea
20 |
21 | Endpoint
22 |
23 | ```bash
24 | GET /v1/spaces/:space_id/tasks/:task_id
25 | ```
26 |
27 |
28 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/the-task-object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Task Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric ID of your task |
8 | | `name` | Given name of your task |
9 | | `description` | A brief description of your task for your editors |
10 | | `task_type` | Default: `webhook`; Currently available: `webhook` |
11 | | `last_execution` | Date and time of last execution (Format: `YYYY-mm-dd HH:MM`) |
12 | | `webhook_url` | URL of webhook that should be called when tasks is being executed |
13 | | `last_response` | Last execution response log |
14 | | `lambda_code` | Beta: Lambda function code |
15 |
16 | ;examplearea
17 |
18 | Example Object
19 |
20 | ```json
21 | {
22 | "task": {
23 | "id": 124,
24 | "name": "My Task Name",
25 | "description": null,
26 | "task_type": "webhook",
27 | "last_execution": null,
28 | "lambda_code": null,
29 | "last_response": null,
30 | "webhook_url": "https://www.storyblok.com"
31 | }
32 | }
33 | ```
--------------------------------------------------------------------------------
/content/management/v1/core-resources/tasks/update-task.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Task
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `task` | Your full task object |
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | You will receive a fully loaded [task object](#core-resources/tasks/the-task-object) as response.
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stage-changes/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Workflow Stage Change
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow_stage_change` | Your [workflow stage change object](#core-resources/workflow-stage-changes/object) |
8 | | `workflow_stage_change[workflow_stage_id]` | Workflow stage id **required** |
9 | | `workflow_stage_change[story_id]` | Story id **required** |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will receive a [workflow stage change object](#core-resources/workflow-stage-changes/object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stage-changes/get-all.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Workflow Stage Changes
3 | ---
4 |
5 | Returns an array of workflow stage change objects.
6 |
7 | | Parameter | Description |
8 | |----|----|
9 | | `with_story` | Id of Story |
10 |
11 | ;examplearea
12 |
13 | Example Request
14 |
15 |
16 |
17 | You will get an array of [workflow stage change objects](#core-resources/workflow-stage-changes/object) as response.
18 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stage-changes/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Workflow Stage Changes
3 | ---
4 |
5 | Workflow stage changes are objects that are assigned to a specific content item.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/workflow_stage_changes/:id
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stage-changes/object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Workflow Stage Change Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `user_id` | User id |
9 | | `created_at` | Creation date |
10 | | `workflow_stage_id` | Workflow stage id |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "workflow_stage_change": {
19 | "id": 18,
20 | "workflow_stage_id": 123,
21 | "created_at": "2020-01-01 10:00:00",
22 | "user_id": 123
23 | }
24 | }
25 | ```
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Workflow Stage
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow_stage` | Your [workflow stage object](#core-resources/workflow-stage/object) **required** |
8 | | `workflow_stage[after_publish_id]` | Workflow stage id that gets assigned after publishing |
9 | | `workflow_stage[allow_publish]` | Boolean to allow publishing |
10 | | `workflow_stage[is_default]` | Boolean to set as default |
11 | | `workflow_stage[position]` | Position (Integer) |
12 | | `workflow_stage[allow_all_stages]` | Boolean to allow all stages |
13 | | `workflow_stage[allow_all_users]` | Boolean to allow change to all users |
14 | | `workflow_stage[name]` | Workflow name |
15 | | `workflow_stage[color]` | Workflow color |
16 | | `workflow_stage[user_ids]` | User ids that are allowed to change the stage |
17 | | `workflow_stage[space_role_ids]` | Space role ids that are allowed to change the stage |
18 | | `workflow_stage[workflow_stage_ids]` | Workflow stage ids the user can change the stage to |
19 | | `workflow_stage[workflow_id]` | Workflow `id` (if missing, automatically sets to default workflow) **optional** |
20 |
21 | ;examplearea
22 |
23 | Example Request
24 |
25 |
39 |
40 | You will receive a [workflow stage object](#core-resources/workflow-stage-changes/object) as response.
41 |
42 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/delete.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a Workflow Stage
3 | ---
4 |
5 | Delete a workflow stage using its numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/get-all.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Workflow Stages
3 | ---
4 |
5 | Returns an array of workflow stages.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will an array of [workflow stages](#core-resources/workflow-stage-changes/object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/get-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Workflow Stage
3 | ---
4 |
5 | Returns a single, workflow stage object by providing a specific numeric id.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [workflow stage object](#core-resources/workflow-stage-changes/object) as response.
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Workflow Stage
3 | ---
4 |
5 | Content production in enterprises sometimes requires strict workflows to make sure that every team member gets involved. Storyblok allows you to define workflow stages and rules to control what each user is allowed to do.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/workflow_stages/:id
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Workflow Stage Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric Unique ID |
8 | | `after_publish_id` | Workflow stage id that gets assigned after publishing |
9 | | `allow_publish` | Boolean to allow publishing |
10 | | `is_default` | Boolean to set as default |
11 | | `position` | Position (Integer) |
12 | | `allow_all_stages` | Boolean to allow all stages |
13 | | `allow_all_users` | Boolean to allow change to all users |
14 | | `name` | Workflow name |
15 | | `color` | Workflow color |
16 | | `user_ids` | User ids that are allowed to change the stage |
17 | | `space_role_ids` | Space role ids that are allowed to change the stage |
18 | | `workflow_stage_ids` | Workflow stage ids the user can change the stage to |
19 | | `workflow_id` | Numeric ID of connected workflow |
20 |
21 | ;examplearea
22 |
23 | Example Object
24 |
25 | ```json
26 | {
27 | "workflow_stage": {
28 | "id": 2,
29 | "allow_publish": false,
30 | "is_default": true,
31 | "user_ids": [9,2],
32 | "space_role_ids": [],
33 | "workflow_stage_ids": [3],
34 | "name": "Drafting",
35 | "color": "#babcb6",
36 | "allow_all_stages": false,
37 | "allow_all_users": false,
38 | "position": 1,
39 | "after_publish_id": null,
40 | "workflow_id": 14780
41 | }
42 | }
43 | ```
44 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflow-stages/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Workflow Stage
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow_stage` | Your [workflow stage object](#core-resources/workflow-stage/object) **required** |
8 | | `workflow_stage[after_publish_id]` | Workflow stage id that gets assigned after publishing |
9 | | `workflow_stage[allow_publish]` | Boolean to allow publishing |
10 | | `workflow_stage[is_default]` | Boolean to set as default |
11 | | `workflow_stage[position]` | Position (Integer) |
12 | | `workflow_stage[allow_all_stages]` | Boolean to allow all stages |
13 | | `workflow_stage[allow_all_users]` | Boolean to allow change to all users |
14 | | `workflow_stage[name]` | Workflow name |
15 | | `workflow_stage[color]` | Workflow color |
16 | | `workflow_stage[user_ids]` | User ids that are allowed to change the stage |
17 | | `workflow_stage[space_role_ids]` | Space role ids that are allowed to change the stage |
18 | | `workflow_stage[workflow_stage_ids]` | Workflow stage ids the user can change the stage to |
19 |
20 | ;examplearea
21 |
22 | Example Request
23 |
24 |
37 |
38 | You will receive a [workflow stage object](#core-resources/workflow-stage-changes/object) as response.
39 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/create.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Create a Custom Workflow
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow` | Your full [workflow object]() |
8 | | `workflow[name]` | Name of the workflow **required** |
9 | | `workflow[description]` | Workflow description |
10 | |`workflow[scope]` | Default scope of workflow stage, usually workflow for a custom workflow |
11 | | `workflow[content_type]` | Content-type associated with the workflow |
12 |
13 | ;examplearea
14 |
15 | Example Request
16 |
17 |
23 |
24 | You will receive a [workflows object](#core-resources/workflows/object) as response
25 |
26 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/delete.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Delete a custom workflow
3 | ---
4 |
5 | Delete a custom workflow using the numeric `id`.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/duplicate.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Duplicate a workflow
3 | ---
4 |
5 | Creates a new custom workflow by duplicating an existing workflow using the workflow `id` of the parent workflow.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
17 |
18 | You will receive a [workflows object](#core-resurces/workflows/object) as a response.
19 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/filter.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Filter Workflows by Content-type
3 | ---
4 |
5 | You can filter workflows in a space, using their `content-type` parameter in the [workflow object](#core-resurces/workflows/object).
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/workflows?by_content_type=:content_type
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/get-all.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve multiple Workflows
3 | ---
4 |
5 | Returns an array of all the workflow stages in a space.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/get-one.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Retrieve one Workflow
3 | ---
4 |
5 | Returns a single, workflow object by providing a specific numeric `id`.
6 |
7 | ;examplearea
8 |
9 | Example Request
10 |
11 |
12 |
13 | You will receive a [workflows object](#core-resources/workflows/object) as response.
14 |
15 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/intro.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Custom Workflows
3 | ---
4 |
5 | Custom workflows enable enterprises to create a tailored content production process that can cater to their specific needs. By defining custom workflows, teams can ensure that content creation and approval follow precise stages and guidelines.
6 |
7 | ;examplearea
8 |
9 | Endpoint
10 |
11 | ```bash
12 | GET /v1/spaces/:space_id/workflows
13 | ```
14 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/object.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: The Custom Workflow Object
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `id` | Numeric | Unique ID of the workflow |
8 | | `content_types` | Array of content types associated with this workflow |
9 | | `is_default` | Boolean to set as the default workflow |
10 | | `name` | Workflow name |
11 |
12 | ;examplearea
13 |
14 | Example Object
15 |
16 | ```json
17 | {
18 | "workflow": {
19 | "id": 15268,
20 | "content_types": [
21 | "author"
22 | ],
23 | "is_default": false,
24 | "name": "author"
25 | }
26 | }
27 | ```
28 |
29 |
--------------------------------------------------------------------------------
/content/management/v1/core-resources/workflows/update.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Update a Workflow
3 | ---
4 |
5 | | Property | Description |
6 | |---|---|
7 | | `workflow` | A [workflow object](#core-resources/workflows/object) |
8 |
9 | ;examplearea
10 |
11 | Example Request
12 |
13 |
14 |
15 | You will receive a [workflows object](#core-resources/workflows/object) as response.
16 |
17 | https://app.storyblok.com/v1/spaces/233027/workflows/14830
--------------------------------------------------------------------------------
/content/management/v1/topics/errors.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Errors
3 | ---
4 |
5 | Storyblok uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the `2xx` range indicate success. Codes in the `4xx` range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, content entry was not published but version requested was set to published, etc.). Codes in the `5xx` range indicate an error with Storyblok's servers (these are rare).
6 |
7 | Some `4xx` errors that could be handled programmatically (e.g., content entry was not found) include an error code that briefly explains the error reported.
8 |
9 | ;examplearea
10 |
11 | Http Status Code Summary
12 |
13 | | Code | Description |
14 | |------|----------------------|
15 | | 200 - OK | Everything worked as expected. |
16 | | 400 - Bad Request | Wrong format was sent (eg. XML instead of JSON). |
17 | | 401 - Unauthorized | No valid API key provided. |
18 | | 403 - Forbidden | Insufficient permissions. |
19 | | 404 - Not Found | The requested resource doesn't exist (perhaps due to not yet published content entries). |
20 | | 422 - Unprocessable Entity | The request was unacceptable, often due to missing a required parameter. |
21 | | 429 - Too Many Requests | Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. |
22 | | 500, 502, 503, 504 - Server Errors | Something went wrong on Storyblok's end. (These are rare.) |
23 |
--------------------------------------------------------------------------------
/content/management/v1/topics/introduction.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Management API Reference
3 | sidebarTitle: Introduction
4 | ---
5 |
6 | The Storyblok Management API is organized around REST. Our API has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. We use built-in HTTP features, like HTTP query parameters and HTTP verbs, which are understood by off-the-shelf HTTP clients. We support cross-origin resource sharing, allowing you to interact securely with our API from a client-side web application (though you should never expose your secret API key in any public website's client-side code). JSON is returned by all API responses, including errors, although our API libraries convert responses to appropriate language-specific objects.
7 |
8 | The requests in the right sidebar are designed to work as is. The sample requests can be performed using your own API Authentication Token that you can obtain from your profile [in the Storyblok application](http://app.storyblok.com/#!/me/account).
9 |
10 | ;examplearea
11 |
12 | ## API Libraries
13 |
14 | Official libraries for the Storyblok Management API are [available in several languages](https://www.storyblok.com/getting-started). Community-supported libraries are also available for additional languages.
15 |
16 | Base URL:
17 |
18 | ```bash
19 | https://mapi.storyblok.com
20 | ```
21 | For spaces whose server location is in the United States, please use this URL:
22 | ```bash
23 | https://api-us.storyblok.com
24 | ```
25 |
26 | For spaces whose server location is in China, please use this URL:
27 | ```bash
28 | https://app.storyblokchina.cn
29 | ```
30 |
--------------------------------------------------------------------------------
/content/management/v1/topics/pagination.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Pagination
3 | ---
4 |
5 | All top-level API resources have support for bulk fetches via "list" API methods. For instance, you can list `stories` and `datasource_entries`. These list API methods share a common structure, taking these two parameters: `page`, `per_page`.
6 |
7 | The default `per_page` is set to `25` entries per page. You can increase this number to receive up to `100` entries per page. To go through different pages you can utilize the `page` parameter. The `page` parameter is a numeric value and uses `1` as default.
8 |
9 | To allow a calculation of how many pages are available you can access the `Total` response header that you will receive after you made your first request. Access it and divide it with your `per_page` parameter to receive the highest possible page, otherwise you will receive an empty array as result.
10 |
11 | | Query Parameter | Description |
12 | |---------------------|----------------------|
13 | | `page` | Default: `1`. Increase this to receive the next page of content entries |
14 | | `per_page` | Default: `25`, Max for Stories: `100`, Max for Datasource Entries: `1000` . Defines the number of content entries you will receive per page |
15 |
16 | ;examplearea
17 |
18 | Example Request
19 |
20 | ```bash
21 | https://api.storyblok.com/v1/spaces/(:space_id)/stories/?per_page=2&page=1
22 | ```
23 |
24 | Example Response
25 |
26 | ```json
27 | {
28 | "stories": [
29 | { ... },
30 | { ... }
31 | ]
32 | }
33 | ```
34 |
35 | Example Response Headers
36 |
37 | ```bash
38 | status: 200
39 | per-page: 2
40 | total: 3
41 | ...
42 | ```
--------------------------------------------------------------------------------
/content/management/v1/topics/rate-limit.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Rate Limit
3 | ---
4 |
5 | The management api is rate limited to 3 requests per second for users on the free plan and 6 requests per second for other users.
6 |
7 | ;examplearea
8 |
9 | | Plan | Rate Limit |
10 | |------|-----------|
11 | | Community | 3 per second |
12 | | Entry | 6 per second |
13 | | Business | 6 per second |
14 | | Enterprise | Custom |
15 | | Enterprise Plus | Custom |
--------------------------------------------------------------------------------
/content/management/v1/topics/use-cases.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Use Cases
3 | ---
4 |
5 | The Management API should not be used to consume your information as it does not utilize our global CDN for your requests and can result in higher latencies. Please make sure to use the Content Delivery API instead.
6 |
7 | ;examplearea
8 |
9 | | Use Case |
10 | |---------|
11 | | Migration from your current data storage / CMS |
12 | | Integration with 3rd party applications |
13 | | Import and Export automation |
14 | | Automatic translation workflows |
15 | | Component versioning |
16 | | Whitelabel integrations|
17 |
--------------------------------------------------------------------------------
/deploy/_nuxt/1173880.js:
--------------------------------------------------------------------------------
1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[6],{254:function(e,t,n){"use strict";n.r(t);var o=n(9),r=n(4),c=(n(38),n(39),n(15),n(40),n(185)),l=n.n(c),m=n(206),d=n(208),h=n(207),w={name:"page",head:function(){return{htmlAttrs:{lang:"en"},link:[{rel:"canonical",href:"https://www.storyblok.com".concat(this.$route.path)}]}},components:{Methods:m.a,SidebarNavigation:d.a,TopHeader:h.a},fetch:function(e){return Object(r.a)(regeneratorRuntime.mark((function t(){var n,r,c,m,d,menu,h,base,w,f,v,S;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.store,r=e.params,c=e.payload,m=r.origin,d=r.lang||"v1",menu=null,h=null,!c){t.next=10;break}menu=c.menu,h=c.sections,t.next=19;break;case 10:return base=window.location.origin,t.next=13,Promise.all([l.a.get(base+"/".concat(m,".menu.").concat(d,".json")),l.a.get(base+"/".concat(m,".methods.").concat(d,".json"))]);case 13:w=t.sent,f=Object(o.a)(w,2),v=f[0],S=f[1],menu=v.data,h=S.data;case 19:n.commit("SET_LANG",d),n.commit("SET_ORIGIN",m),n.commit("SET_SECTIONS",h),n.commit("SET_MENU",menu);case 23:case"end":return t.stop()}}),t)})))()}},f=n(12),component=Object(f.a)(w,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("TopHeader"),e._v(" "),n("SidebarNavigation"),e._v(" "),n("main",{staticClass:"main"},[n("Methods")],1)],1)}),[],!1,null,null,null);t.default=component.exports}}]);
--------------------------------------------------------------------------------
/deploy/_nuxt/51481f0.js:
--------------------------------------------------------------------------------
1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[5],{255:function(e,t,n){"use strict";n.r(t);var o=n(9),r=n(4),c=(n(38),n(39),n(15),n(40),n(185)),l=n.n(c),m=n(206),d=n(208),h=n(207),w={name:"page",head:function(){return{htmlAttrs:{lang:"en"},link:[{rel:"canonical",href:"https://www.storyblok.com".concat(this.$route.path)}]}},components:{Methods:m.a,SidebarNavigation:d.a,TopHeader:h.a},fetch:function(e){return Object(r.a)(regeneratorRuntime.mark((function t(){var n,r,c,m,d,menu,h,base,w,f,v,S;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(n=e.store,r=e.params,c=e.payload,m=r.origin,d=r.lang||"v2",menu=null,h=null,!c){t.next=10;break}menu=c.menu,h=c.sections,t.next=19;break;case 10:return base=window.location.origin,t.next=13,Promise.all([l.a.get(base+"/".concat(m,".menu.").concat(d,".json")),l.a.get(base+"/".concat(m,".methods.").concat(d,".json"))]);case 13:w=t.sent,f=Object(o.a)(w,2),v=f[0],S=f[1],menu=v.data,h=S.data;case 19:n.commit("SET_LANG",d),n.commit("SET_ORIGIN",m),n.commit("SET_SECTIONS",h),n.commit("SET_MENU",menu);case 23:case"end":return t.stop()}}),t)})))()}},f=n(12),component=Object(f.a)(w,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("TopHeader"),e._v(" "),n("SidebarNavigation"),e._v(" "),n("main",{staticClass:"main"},[n("Methods")],1)],1)}),[],!1,null,null,null);t.default=component.exports}}]);
--------------------------------------------------------------------------------
/deploy/_nuxt/5dc6c60.js:
--------------------------------------------------------------------------------
1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[7],{204:function(e,t,n){var content=n(249);content.__esModule&&(content=content.default),"string"==typeof content&&(content=[[e.i,content,""]]),content.locals&&(e.exports=content.locals);(0,n(37).default)("3d609dde",content,!0,{sourceMap:!1})},247:function(e){e.exports=JSON.parse('["/docs/api/content-delivery/","/docs/api/content-delivery/v2/","/docs/api/management/"]')},248:function(e,t,n){"use strict";n(204)},249:function(e,t,n){var o=n(36)(!1);o.push([e.i,".main[data-v-7e4cae8c]{margin:0 auto;max-width:800px;padding-top:100px;padding-left:20px}",""]),e.exports=o},256:function(e,t,n){"use strict";n.r(t);var o=n(247),c={name:"page",computed:{availableRoutes:function(){return o}}},l=(n(248),n(12)),component=Object(l.a)(c,(function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("main",{staticClass:"main"},[n("h1",[e._v("Available Preview Routes:")]),e._v(" "),n("ul",e._l(e.availableRoutes,(function(t){return n("li",{key:t},[n("a",{attrs:{href:t}},[e._v(e._s(t))])])})),0)])}),[],!1,null,"7e4cae8c",null);t.default=component.exports}}]);
--------------------------------------------------------------------------------
/deploy/_redirects:
--------------------------------------------------------------------------------
1 | / https://www.storyblok.com/docs
2 | /docs/api/content-delivery/ https://www.storyblok.com/docs/api/content-delivery/
3 | /docs/api/management/ https://www.storyblok.com/docs/api/management/
--------------------------------------------------------------------------------
/dg-config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | defaultLanguage: `v1`,
3 | splitString: ';examplearea',
4 | availableRoutesFile: `${__dirname}/routes.json`,
5 | contentInputFolder: `${__dirname}/content/`,
6 | menuInputFile: `${__dirname}/content/{origin}.{lang}.json`,
7 | sectionsOutputFile: `${__dirname}/static/{origin}.methods.{lang}.json`,
8 | menuOutputFile: `${__dirname}/static/{origin}.menu.{lang}.json`
9 | }
10 |
--------------------------------------------------------------------------------
/layouts/README.md:
--------------------------------------------------------------------------------
1 | # LAYOUTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Application Layouts.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).
8 |
--------------------------------------------------------------------------------
/lib/markedWithPrism.js:
--------------------------------------------------------------------------------
1 | import marked from "marked";
2 | import Prism from "prismjs/components/prism-core";
3 | import "prismjs/components/prism-bash";
4 | import "prismjs/components/prism-json";
5 | import "prismjs/components/prism-clike";
6 | import "prismjs/components/prism-markup";
7 | import "prismjs/components/prism-markup-templating";
8 | import "prismjs/components/prism-php";
9 | import "prismjs/components/prism-java";
10 | import "prismjs/components/prism-csharp";
11 | import "prismjs/components/prism-swift";
12 | import "prismjs/components/prism-javascript";
13 | import "prismjs/components/prism-ruby";
14 | import "prismjs/components/prism-python";
15 |
16 | marked.setOptions({
17 | highlight: (code, lang) => {
18 | return Prism.highlight(code, Prism.languages[lang], lang);
19 | },
20 | });
21 |
22 | export default marked;
23 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [Settings]
2 |
3 | [build]
4 | publish = "deploy"
5 | command = "npm run full"
6 |
7 | [context.deploy-preview]
8 | publish = "dist"
9 | command = "npm run generate"
10 |
11 | [context.branch-deploy]
12 | publish = "dist"
13 | command = "npm run generate"
14 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "storyblok-docs",
3 | "version": "1.0.0",
4 | "description": "Documentation for the Storyblok Content Delivery API and Management API",
5 | "author": "Dominik Angerer ",
6 | "private": true,
7 | "scripts": {
8 | "dev": "node docgen.js watch=true & nuxt",
9 | "build": "nuxt build",
10 | "start": "nuxt start",
11 | "generate": "node docgen.js && nuxt generate",
12 | "netlify": "node docgen.js && nuxt generate && netlify deploy",
13 | "full": "node docgen.js && nuxt generate"
14 | },
15 | "dependencies": {
16 | "axios": "^0.27.2",
17 | "babel-polyfill": "^6.26.0",
18 | "cross-env": "^7.0.3",
19 | "lodash.throttle": "^4.1.1",
20 | "marked": "^3.0.8",
21 | "node-sass": "^8.0.0",
22 | "nuxt": "^2.17.1",
23 | "prismjs": "^1.29.0"
24 | },
25 | "devDependencies": {
26 | "@nuxtjs/style-resources": "^1.2.1",
27 | "front-matter": "^4.0.2",
28 | "fs-extra": "^11.1.1",
29 | "glob": "^7.2.0",
30 | "node-watch": "^0.7.4",
31 | "nodemon": "^3.0.1",
32 | "prismjs-components-loader": "^3.0.1",
33 | "sass-loader": "^10.4.1",
34 | "storyblok-js-client": "^4.5.8",
35 | "webpack": "^4.46.0"
36 | },
37 | "browserslist": [
38 | "last 2 version",
39 | "> 1%",
40 | "not dead"
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/pages/README.md:
--------------------------------------------------------------------------------
1 | # PAGES
2 |
3 | This directory contains your Application Views and Routes.
4 | The framework reads all the `*.vue` files inside this directory and create the router of your application.
5 |
6 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).
7 |
--------------------------------------------------------------------------------
/pages/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |