├── .editorconfig ├── .gitignore ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── assets ├── README.md └── _variables.scss ├── components ├── BrandLogo.vue ├── MainNavigation.vue ├── MethodArea.vue ├── MethodContent.vue ├── MethodExample.vue ├── Methods.vue ├── README.md ├── RequestExample.vue ├── SidebarNavigation.vue ├── SkipMain.vue ├── SvgIcon.vue ├── SvgSprite.vue ├── TechnologyNavigation.vue ├── TopHeader.vue └── requests │ ├── BashRequest.vue │ ├── CsharpRequest.vue │ ├── JavaRequest.vue │ ├── JavaScriptRequest.vue │ ├── PhpRequest.vue │ ├── PythonRequest.vue │ ├── RequestMixin.vue │ ├── RubyRequest.vue │ └── SwiftRequest.vue ├── content ├── content-delivery.v1.json ├── content-delivery.v2.json ├── content-delivery │ ├── v1 │ │ ├── core-resources │ │ │ ├── datasource-entries │ │ │ │ ├── datasource-entries.md │ │ │ │ ├── retrieve-multiple-datasource-entries.md │ │ │ │ └── the-datasource-entry-object.md │ │ │ ├── datasources │ │ │ │ ├── datasources.md │ │ │ │ ├── retrieve-multiple-datasources.md │ │ │ │ └── the-datasource-object.md │ │ │ ├── links │ │ │ │ ├── links.md │ │ │ │ ├── retrieve-multiple-links.md │ │ │ │ ├── the-link-object.md │ │ │ │ └── the-links-object.md │ │ │ ├── spaces │ │ │ │ ├── retrieve-current-space.md │ │ │ │ ├── spaces.md │ │ │ │ └── the-space-object.md │ │ │ ├── stories │ │ │ │ ├── retrieve-multiple-stories.md │ │ │ │ ├── retrieve-one-story.md │ │ │ │ ├── stories.md │ │ │ │ └── the-story-object.md │ │ │ └── tags │ │ │ │ ├── retrieve-all-tags.md │ │ │ │ ├── tags.md │ │ │ │ └── the-tag-object.md │ │ ├── examples │ │ │ ├── filtering │ │ │ │ ├── entries-between-two-numbers.md │ │ │ │ ├── filter-entries-by-boolean-value.md │ │ │ │ └── filters.md │ │ │ ├── ordering │ │ │ │ ├── order.md │ │ │ │ ├── sort-by-admin-interface.md │ │ │ │ ├── sort-by-content-attribute.md │ │ │ │ └── sort-by-story-property.md │ │ │ ├── starts-with │ │ │ │ ├── draft-entries-in-folder.md │ │ │ │ ├── entries-in-folder.md │ │ │ │ ├── entries-of-language-xx.md │ │ │ │ └── starts-with.md │ │ │ └── useful │ │ │ │ ├── load-draft-version.md │ │ │ │ ├── load-latest-cache-version-timestamp.md │ │ │ │ ├── load-without-startpage.md │ │ │ │ ├── localized-by-uuid.md │ │ │ │ ├── resolve-relationships.md │ │ │ │ └── useful.md │ │ ├── filter-queries │ │ │ ├── operation-all-in-array.md │ │ │ ├── operation-gt-date.md │ │ │ ├── operation-gt-float.md │ │ │ ├── operation-gt-int.md │ │ │ ├── operation-in-array.md │ │ │ ├── operation-in.md │ │ │ ├── operation-is.md │ │ │ ├── operation-like.md │ │ │ ├── operation-lt-date.md │ │ │ ├── operation-lt-float.md │ │ │ ├── operation-lt-int.md │ │ │ ├── operation-not-in.md │ │ │ ├── operation-not-like.md │ │ │ └── overview.md │ │ └── topics │ │ │ ├── authentication.md │ │ │ ├── cache-invalidation.md │ │ │ ├── errors.md │ │ │ ├── introduction.md │ │ │ ├── pagination.md │ │ │ └── rate-limit.md │ └── v2 │ │ ├── core-resources │ │ ├── datasource-entries │ │ │ ├── datasource-entries.md │ │ │ ├── retrieve-multiple-datasource-entries.md │ │ │ └── the-datasource-entry-object.md │ │ ├── datasources │ │ │ ├── datasources.md │ │ │ ├── retrieve-multiple-datasources.md │ │ │ └── the-datasource-object.md │ │ ├── links │ │ │ ├── links.md │ │ │ ├── retrieve-multiple-links.md │ │ │ ├── the-link-object.md │ │ │ └── the-links-object.md │ │ ├── spaces │ │ │ ├── retrieve-current-space.md │ │ │ ├── spaces.md │ │ │ └── the-space-object.md │ │ ├── stories │ │ │ ├── retrieve-multiple-stories.md │ │ │ ├── retrieve-one-story.md │ │ │ ├── stories.md │ │ │ └── the-story-object.md │ │ └── tags │ │ │ ├── retrieve-all-tags.md │ │ │ ├── tags.md │ │ │ └── the-tag-object.md │ │ ├── examples │ │ ├── filtering │ │ │ ├── entries-between-two-numbers.md │ │ │ ├── filter-entries-by-boolean-value.md │ │ │ └── filters.md │ │ ├── ordering │ │ │ ├── order.md │ │ │ ├── sort-by-admin-interface.md │ │ │ ├── sort-by-content-attribute.md │ │ │ └── sort-by-story-property.md │ │ ├── starts-with │ │ │ ├── draft-entries-in-folder.md │ │ │ ├── entries-in-folder.md │ │ │ ├── entries-of-language-xx.md │ │ │ └── starts-with.md │ │ └── useful │ │ │ ├── load-draft-version.md │ │ │ ├── load-latest-cache-version-timestamp.md │ │ │ ├── load-without-startpage.md │ │ │ ├── localized-by-uuid.md │ │ │ ├── resolve-relationships.md │ │ │ └── useful.md │ │ ├── filter-queries │ │ ├── operation-all-in-array.md │ │ ├── operation-any-in-array.md │ │ ├── operation-gt-date.md │ │ ├── operation-gt-float.md │ │ ├── operation-gt-int.md │ │ ├── operation-in.md │ │ ├── operation-is.md │ │ ├── operation-like.md │ │ ├── operation-lt-date.md │ │ ├── operation-lt-float.md │ │ ├── operation-lt-int.md │ │ ├── operation-not-in.md │ │ ├── operation-not-like.md │ │ └── overview.md │ │ └── topics │ │ ├── authentication.md │ │ ├── cache-invalidation.md │ │ ├── errors.md │ │ ├── introduction.md │ │ ├── pagination.md │ │ └── rate-limit.md ├── management.v1.json └── management │ └── v1 │ ├── core-resources │ ├── activities │ │ ├── activities.md │ │ ├── retrieve-multiple-activities.md │ │ ├── retrieve-one-activity.md │ │ └── the-activity-object.md │ ├── approvals │ │ ├── approvals.md │ │ ├── create-approval.md │ │ ├── create-release-approval.md │ │ ├── delete-approval.md │ │ ├── retrieve-multiple-approvals.md │ │ ├── retrieve-one-approval.md │ │ └── the-approval-object.md │ ├── asset-folders │ │ ├── asset-folders.md │ │ ├── create-asset-folder.md │ │ ├── delete-asset-folder.md │ │ ├── retrieve-multiple-asset-folders.md │ │ ├── retrieve-one-asset-folder.md │ │ ├── the-asset-folder-object.md │ │ └── update-asset-folder.md │ ├── assets │ │ ├── assets.md │ │ ├── delete-asset.md │ │ ├── retrieve-multiple-assets.md │ │ ├── retrieve-one-asset.md │ │ ├── signed-response-object.md │ │ ├── the-asset-object.md │ │ ├── update-asset.md │ │ └── upload-asset.md │ ├── collaborators │ │ ├── add-collaborator.md │ │ ├── add-users-with-sso.md │ │ ├── collaborators.md │ │ ├── delete-collaborator.md │ │ ├── the-collaborator-object.md │ │ └── update-collaborator.md │ ├── comments │ │ ├── create.md │ │ ├── delete.md │ │ ├── get-all.md │ │ ├── get-one.md │ │ ├── intro.md │ │ ├── object.md │ │ └── update.md │ ├── component-groups │ │ ├── component-groups.md │ │ ├── create-component-group.md │ │ ├── delete-component-group.md │ │ ├── retrieve-multiple-component-groups.md │ │ ├── retrieve-one-component-group.md │ │ ├── the-component-group-object.md │ │ └── update-component-group.md │ ├── components │ │ ├── components.md │ │ ├── create-component.md │ │ ├── delete-component.md │ │ ├── possible-field-types.md │ │ ├── retrieve-multiple-components.md │ │ ├── retrieve-one-component.md │ │ ├── the-component-field-object.md │ │ ├── the-component-object.md │ │ └── update-component.md │ ├── datasource-entries │ │ ├── create-datasource-entry.md │ │ ├── datasource-entries.md │ │ ├── delete-datasource-entry.md │ │ ├── retrieve-multiple-datasource-entries.md │ │ ├── retrieve-one-datasource-entry.md │ │ ├── the-datasource-entry-object.md │ │ └── update-datasource-entry.md │ ├── datasources │ │ ├── create-datasource.md │ │ ├── datasources.md │ │ ├── delete-datasource.md │ │ ├── retrieve-multiple-datasources.md │ │ ├── retrieve-one-datasource.md │ │ ├── the-datasource-object.md │ │ └── update-datasource.md │ ├── deployments │ │ ├── branch-list.md │ │ ├── branch-one.md │ │ ├── create.md │ │ └── intro.md │ ├── field-types │ │ ├── create-field-type.md │ │ ├── delete-field-type.md │ │ ├── field-types.md │ │ ├── retrieve-multiple-field-types.md │ │ ├── retrieve-one-field-type.md │ │ ├── the-field-type-object.md │ │ └── update-field-type.md │ ├── presets │ │ ├── create-preset.md │ │ ├── delete-preset.md │ │ ├── presets.md │ │ ├── retrieve-multiple-presets.md │ │ ├── retrieve-one-preset.md │ │ ├── the-preset-object.md │ │ └── update-preset.md │ ├── releases │ │ ├── create.md │ │ ├── delete.md │ │ ├── filter-by-release.md │ │ ├── get-all.md │ │ ├── get-one.md │ │ ├── intro.md │ │ ├── object.md │ │ └── update.md │ ├── space-roles │ │ ├── create-space-role.md │ │ ├── delete-space-role.md │ │ ├── retrieve-multiple-spaces-roles.md │ │ ├── retrieve-one-space-role.md │ │ ├── space-roles.md │ │ ├── the-space-role-object.md │ │ └── update-space-role.md │ ├── spaces │ │ ├── backup-space.md │ │ ├── create-space.md │ │ ├── delete-space.md │ │ ├── duplicate-space.md │ │ ├── retrieve-multiple-spaces.md │ │ ├── retrieve-one-space.md │ │ ├── spaces.md │ │ ├── the-space-object.md │ │ └── update-space.md │ ├── stories │ │ ├── compare-story-version.md │ │ ├── create-story.md │ │ ├── delete-story.md │ │ ├── get-story-versions.md │ │ ├── internationalization-for-stories.md │ │ ├── publish-a-story.md │ │ ├── retrieve-multiple-stories.md │ │ ├── retrieve-one-story.md │ │ ├── stories.md │ │ ├── the-story-object.md │ │ ├── unpublish-a-story.md │ │ └── update-story.md │ ├── tasks │ │ ├── create-task.md │ │ ├── delete-taks.md │ │ ├── retrieve-multiple-tasks.md │ │ ├── retrieve-one-task.md │ │ ├── tasks.md │ │ ├── the-task-object.md │ │ └── update-task.md │ ├── workflow-stage-changes │ │ ├── create.md │ │ ├── get-all.md │ │ ├── intro.md │ │ └── object.md │ ├── workflow-stages │ │ ├── create.md │ │ ├── delete.md │ │ ├── get-all.md │ │ ├── get-one.md │ │ ├── intro.md │ │ ├── object.md │ │ └── update.md │ └── workflows │ │ ├── create.md │ │ ├── delete.md │ │ ├── duplicate.md │ │ ├── filter.md │ │ ├── get-all.md │ │ ├── get-one.md │ │ ├── intro.md │ │ ├── object.md │ │ └── update.md │ └── topics │ ├── authentication.md │ ├── errors.md │ ├── introduction.md │ ├── organization.md │ ├── pagination.md │ ├── rate-limit.md │ └── use-cases.md ├── deploy ├── _nuxt │ ├── 051ef07.js │ ├── 08a81cf.js │ ├── 1173880.js │ ├── 1173c55.js │ ├── 1cf88a6.js │ ├── 2dd2d92.js │ ├── 435af36.js │ ├── 51481f0.js │ ├── 5d5165d.js │ ├── 5dc6c60.js │ ├── 61679c4.js │ ├── 89561ed.js │ ├── a082f80.js │ ├── b23367a.js │ ├── bd5a375.js │ ├── c005ae1.js │ ├── cf56dc4.js │ └── fceb815.js └── _redirects ├── dg-config.js ├── docgen.js ├── layouts ├── README.md └── default.vue ├── lib └── markedWithPrism.js ├── netlify.toml ├── nuxt.config.js ├── package-lock.json ├── package.json ├── pages ├── README.md ├── docs │ └── api │ │ └── _origin │ │ ├── _lang.vue │ │ └── index.vue └── index.vue ├── rendering-service.js ├── routes.json ├── rs-config.js ├── sdks ├── php │ └── methods.js └── ruby │ └── methods.js ├── static ├── content-delivery.methods.v1.json ├── content-delivery.methods.v2.json └── management.methods.v1.json ├── store ├── README.md └── index.js └── vercel.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Node template 3 | # Logs 4 | logs 5 | *.log 6 | npm-debug.log* 7 | yarn-debug.log* 8 | yarn-error.log* 9 | 10 | # Runtime data 11 | pids 12 | *.pid 13 | *.seed 14 | *.pid.lock 15 | 16 | # Directory for instrumented libs generated by jscoverage/JSCover 17 | lib-cov 18 | 19 | # Coverage directory used by tools like istanbul 20 | coverage 21 | 22 | # nyc test coverage 23 | .nyc_output 24 | 25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 26 | .grunt 27 | 28 | # Bower dependency directory (https://bower.io/) 29 | bower_components 30 | 31 | # node-waf configuration 32 | .lock-wscript 33 | 34 | # Compiled binary addons (https://nodejs.org/api/addons.html) 35 | build/Release 36 | 37 | # Dependency directories 38 | node_modules/ 39 | jspm_packages/ 40 | 41 | # TypeScript v1 declaration files 42 | typings/ 43 | 44 | # Optional npm cache directory 45 | .npm 46 | 47 | # Optional eslint cache 48 | .eslintcache 49 | 50 | # Optional REPL history 51 | .node_repl_history 52 | 53 | # Output of 'npm pack' 54 | *.tgz 55 | 56 | # Yarn Integrity file 57 | .yarn-integrity 58 | 59 | # dotenv environment variables file 60 | .env 61 | 62 | # parcel-bundler cache (https://parceljs.org/) 63 | .cache 64 | 65 | # next.js build output 66 | .next 67 | 68 | # nuxt.js build output 69 | .nuxt 70 | 71 | # Nuxt generate 72 | dist 73 | 74 | # vuepress build output 75 | .vuepress/dist 76 | 77 | # Serverless directories 78 | .serverless 79 | 80 | # IDE 81 | .idea 82 | 83 | # nuxt pwa 84 | sw.* 85 | 86 | # Netlify 87 | .netlify 88 | 89 | # content 90 | /static/*.ordered.* 91 | /static/*.menu.* 92 | routes.json 93 | .DS_Store 94 | /deploy/views -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "githubPullRequests.ignoredPullRequestBranches": [ 3 | "master" 4 | ] 5 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ⛔️ DEPRECATED: Storyblok API Documentation 2 | 3 | [![No Maintenance Intended](http://unmaintained.tech/badge.svg)](http://unmaintained.tech/) 4 | 5 | This project has been deprecated in favor of the new and improved [Storyblok Documentation Hub](https://www.storyblok.com/docs/home/introduction) built with Astro, Algolia, and Storyblok itself. 6 | 7 | If you have any questions about Storyblok's APIs or if you want to report a mistake in Storyblok's documentation, please reach out to the [Storyblok Helpdesk](https://support.storyblok.com) or [Storyblok's Discord Community](https://discord.com/invite/jKrbAMz). 8 | 9 | ## License 10 | 11 | ``` 12 | Copyright 2019 Storyblok GmbH 13 | 14 | Licensed under the Apache License, Version 2.0 (the "License"); 15 | you may not use this file except in compliance with the License. 16 | You may obtain a copy of the License at 17 | 18 | http://www.apache.org/licenses/LICENSE-2.0 19 | 20 | Unless required by applicable law or agreed to in writing, software 21 | distributed under the License is distributed on an "AS IS" BASIS, 22 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 23 | See the License for the specific language governing permissions and 24 | limitations under the License. 25 | ``` 26 | -------------------------------------------------------------------------------- /assets/README.md: -------------------------------------------------------------------------------- 1 | # ASSETS 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 un-compiled assets such as LESS, SASS, or JavaScript. 6 | 7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked). 8 | -------------------------------------------------------------------------------- /assets/_variables.scss: -------------------------------------------------------------------------------- 1 | $brand-highlight: #09b3af; 2 | $brand-background: lighten(#192540, 4%); 3 | $brand-background-dark: #192540; 4 | $brand-background-light: #f5f6f7; 5 | $brand-font: 'Raleway', Helvetica, sans-serif; 6 | 7 | $link-color: #1f2d4f; 8 | 9 | $content-background: #ffffff; 10 | $content-background-secondary: $brand-background-light; 11 | $content-link-color: $link-color; 12 | $content-text-color: #4c555a; 13 | 14 | $example-background: $brand-background; 15 | $example-background-secondary: $brand-background-dark; 16 | $example-link-color: $brand-highlight; 17 | $example-text-color: #dde4e8; 18 | 19 | $sidebar-background: $brand-background-light; 20 | $sidebar-link-color: $link-color; 21 | $sidebar-text-color: $content-text-color; 22 | $sidebar-border-color: #efefef; 23 | 24 | $side-bar-width: 220px; 25 | $top-header-height: 60px; 26 | 27 | -------------------------------------------------------------------------------- /components/MethodArea.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 23 | 24 | 68 | 69 | -------------------------------------------------------------------------------- /components/MethodExample.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 32 | 33 | 64 | -------------------------------------------------------------------------------- /components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | The components directory contains your Vue.js Components. 6 | 7 | _Nuxt.js doesn't supercharge these components._ 8 | -------------------------------------------------------------------------------- /components/SkipMain.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 32 | -------------------------------------------------------------------------------- /components/SvgIcon.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 22 | -------------------------------------------------------------------------------- /components/requests/BashRequest.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 50 | -------------------------------------------------------------------------------- /components/requests/JavaRequest.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /components/requests/JavaScriptRequest.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 51 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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 /v1/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/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 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 /v1/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/v1/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/v1/core-resources/datasources/datasources.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Datasources 3 | --- 4 | 5 | A data source 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 /v1/cdn/datasources/ 13 | ``` 14 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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 /v1/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/v1/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/v1/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 | ;examplearea 8 | 9 | Endpoint 10 | 11 | ```bash 12 | GET /v1/cdn/links/ 13 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/core-resources/links/the-link-object.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: The Link Object 3 | --- 4 | 5 | You can access a draft or published version of your links by providing the `version` parameter and the correct token type (eg. preview for draft, public for published). 6 | 7 | | Property | Description | 8 | |---------------------|----------------------| 9 | | `id` | Numeric id of the referenced content entry | 10 | | `slug` | The `full_slug` of the content entry | 11 | | `name` | Given name of the content entry | 12 | | `is_folder` | Is this content entry a folder (true/false) | 13 | | `parent_id` | Parent folder numeric id | 14 | | `published` | Is this story published (true/false) | 15 | | `position` | Numeric position value of the content entry | 16 | | `uuid` | The `uuid` of the content entry | 17 | | `is_startpage` | IS this story a startpage (true/false) | 18 | 19 | ;examplearea 20 | 21 | Example Object 22 | 23 | ```json 24 | ... 25 | { 26 | "id": 107350, 27 | "slug": "posts/my-third-post", 28 | "name": "My third post", 29 | "is_folder": false, 30 | "parent_id": 107348, 31 | "published": true, 32 | "position": -20, 33 | "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb", 34 | "is_startpage": false 35 | } 36 | ... 37 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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 /v1/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/v1/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](#topics/cache-invalidation) 10 | 11 | ;examplearea 12 | 13 | Endpoint 14 | 15 | ```bash 16 | GET /v1/cdn/spaces/me/ 17 | ``` 18 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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 /v1/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. -------------------------------------------------------------------------------- /content/content-delivery/v1/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 /v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/core-resources/tags/tags.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Tags 3 | --- 4 | 5 | Each tag is a string value that can be reused across Stories to create features like word clouds, basic taggings for custom workflows, or similar use-cases. 6 | 7 | ;examplearea 8 | 9 | Endpoint 10 | 11 | ```bash 12 | GET /v1/cdn/tags/ 13 | ``` 14 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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/v1/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 | "price": "270", 29 | // filtered if featured is TRUE 30 | "featured": true 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 | "slug": "coat", 35 | "full_slug": "products/coat", 36 | "lang": "default", 37 | ... 38 | } 39 | ] 40 | } 41 | ``` 42 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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 | ``` -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/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 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][like]=john*` | all entries starting with the name "John" | 17 | | `filter_query[name][like]=*john*` | all entries 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": "John Mustermann", 32 | "id": 107350, 33 | "uuid": "ac0d2ed0-e323-43ca-ae59-5cd7d38683cb", 34 | "content": { 35 | "_uid": "81c6e3c4-4cad-485f-ae35-18958dcf4cd2", 36 | "name": "John Mustermann", 37 | "component": "author" 38 | }, 39 | "slug": "john-mustermann", 40 | "full_slug": "authors/john-mustermann", 41 | ... 42 | }, 43 | { 44 | ... 45 | } 46 | ] 47 | } 48 | ``` 49 | 50 | -------------------------------------------------------------------------------- /content/content-delivery/v1/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/v1/topics/authentication.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Authentication 3 | --- 4 | 5 | Authenticate your account by including your access token in API requests. You can manage your API tokens in the Dashboard of each space. In your Space Dashboard at app.storyblok.com you will be able to generate two types of tokens 6 | 7 | - Public: Allows access to your published content entries: `version=published` 8 | - Preview: Allows access to the draft and published content entries: `version=draft` and `version=published` 9 | 10 | **Public** and **Preview** tokens are **read only** and do not allow you or others to write or delete entries in your space. The public token can be published. All tokens can be revoked at any point of time, you are able to create multiple tokens of the same type to grant access for specific use-cases. For CRUD operations you can have a look at the Management API documentation. 11 | 12 | If you're using the Content Staging (eg. Release and Schedule) feature you can also create Public and Preview tokens for each staging environment. 13 | 14 | ;examplearea 15 | 16 | Example Request 17 | 18 |
19 | 20 | ```javascript 21 | // npm install storyblok-js-client 22 | const StoryblokClient = require('storyblok-js-client') 23 | 24 | // init with access token 25 | const Storyblok = new StoryblokClient({ 26 | accessToken: 'wANpEQEsMYGOwLxwXQ76Ggtt', 27 | cache: { 28 | clear: 'auto', 29 | type: 'memory' 30 | } 31 | }) 32 | ``` 33 | 34 | or use directly as parameter 35 | 36 |
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 | 11 | 12 | 24 | 25 | 33 | -------------------------------------------------------------------------------- /routes.json: -------------------------------------------------------------------------------- 1 | ["/docs/api/content-delivery/","/docs/api/content-delivery/v1/","/docs/api/content-delivery/v2/","/docs/api/management/","/docs/api/management/v1/"] -------------------------------------------------------------------------------- /rs-config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | assetInputFolder: `${__dirname}/dist/_nuxt`, 3 | contentInputFolder: `${__dirname}/dist/`, 4 | assetOutputFolder:`${__dirname}/deploy/_nuxt`, 5 | contentOutputFolder: `${__dirname}/deploy/views/components/gnd/`, 6 | routerFile: `${__dirname}/deploy/views/docs-router.liquid`, 7 | spaceId: 88751 8 | } 9 | -------------------------------------------------------------------------------- /store/README.md: -------------------------------------------------------------------------------- 1 | # STORE 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 Vuex Store files. 6 | Vuex Store option is implemented in the Nuxt.js framework. 7 | 8 | Creating a file in this directory activate the option in the framework automatically. 9 | 10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store). 11 | -------------------------------------------------------------------------------- /store/index.js: -------------------------------------------------------------------------------- 1 | import Vuex from 'vuex' 2 | 3 | const createStore = () => { 4 | return new Vuex.Store({ 5 | state: { 6 | activeMenuPath: 'topics/introduction', 7 | technology: 'bash', 8 | lang: 'v1', 9 | origin: 'content-delivery', 10 | sections: {}, 11 | menu: [], 12 | flattened: [] 13 | }, 14 | getters: { 15 | originLanguagePath: state => { 16 | return `${state.origin}/${state.lang}/` 17 | } 18 | }, 19 | mutations: { 20 | SET_MENU(state, menu) { 21 | if (!menu) { 22 | return 23 | } 24 | state.menu = menu 25 | let flattened = [] 26 | menu.forEach((category) => { 27 | category.items.forEach(item => { 28 | flattened.push(item) 29 | if(typeof item.children !== 'undefined') { 30 | item.children.forEach((child) => { 31 | flattened.push(child) 32 | }) 33 | } 34 | }) 35 | }) 36 | state.flattened = flattened 37 | }, 38 | SET_SECTIONS(state, sections) { 39 | state.sections = sections 40 | }, 41 | SET_LANG(state, lang) { 42 | state.lang = lang 43 | }, 44 | SET_ORIGIN(state, origin) { 45 | state.origin = origin 46 | }, 47 | SET_TECHNOLOGY(state, technology) { 48 | state.technology = technology 49 | if (process.client) { 50 | window.localStorage.technology = technology 51 | } 52 | }, 53 | SET_ACTIVE_MENU_PATH(state, activeMenuPath) { 54 | state.activeMenuPath = activeMenuPath 55 | } 56 | } 57 | }) 58 | } 59 | 60 | export default createStore 61 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingSlash": false, 3 | "redirects": [ 4 | { 5 | "source": "/docs/api/content-delivery", 6 | "destination": "/docs/api/content-delivery/v2", 7 | "statusCode": 302 8 | } 9 | ] 10 | } 11 | --------------------------------------------------------------------------------