Unpublish a story and optionally delete it, with a branch on hard delete.
Reads a story, removes it from public delivery by unpublishing, and either permanently deletes it or leaves the draft intact based on the hardDelete input.
arazzo: 1.0.1
info:
title: Storyblok Retire Story
summary: Read a story, unpublish it to pull it from delivery, then optionally delete it from the space.
description: >-
The decommissioning path for a story that approximates an editorial
workflow stage transition from live to retired. The story is read to
confirm its current state, unpublished so it is removed from public
delivery, and then branches: when the caller requests permanent removal the
story is deleted, otherwise the flow ends leaving the draft intact for later
republishing. Storyblok has no discrete workflow-stage write endpoint, so
publish state transitions stand in for stage changes here. Every step spells
out its request inline so the flow can be read and executed without opening
the underlying OpenAPI description.
version: 1.0.0
sourceDescriptions:
- name: storiesApi
url: ../openapi/storyblok-stories-api-openapi.yml
type: openapi
workflows:
- workflowId: retire-story
summary: Unpublish a story and optionally delete it, with a branch on hard delete.
description: >-
Reads a story, removes it from public delivery by unpublishing, and either
permanently deletes it or leaves the draft intact based on the hardDelete
input.
inputs:
type: object
required:
- space_id
- story_id
- hardDelete
properties:
space_id:
type: integer
description: Numeric ID of the Storyblok space.
story_id:
type: integer
description: Numeric ID of the story to retire.
hardDelete:
type: boolean
description: Set to true to permanently delete the story after unpublishing.
steps:
- stepId: getStory
description: Read the story to confirm its current state before retiring it.
operationId: getManagementStory
parameters:
- name: space_id
in: path
value: $inputs.space_id
- name: story_id
in: path
value: $inputs.story_id
successCriteria:
- condition: $statusCode == 200
outputs:
storyName: $response.body#/story/name
- stepId: unpublishStory
description: >-
Unpublish the story, removing it from public access while preserving its
draft content.
operationId: unpublishStory
parameters:
- name: space_id
in: path
value: $inputs.space_id
- name: story_id
in: path
value: $inputs.story_id
successCriteria:
- condition: $statusCode == 200
outputs:
unpublishedStoryId: $response.body#/story/id
onSuccess:
- name: deleteRequested
type: goto
stepId: deleteStory
criteria:
- condition: $inputs.hardDelete == true
- name: keepDraft
type: end
criteria:
- condition: $inputs.hardDelete == false
- stepId: deleteStory
description: Permanently delete the story from the space.
operationId: deleteStory
parameters:
- name: space_id
in: path
value: $inputs.space_id
- name: story_id
in: path
value: $inputs.story_id
successCriteria:
- condition: $statusCode == 200
outputs:
deletedStatus: $statusCode
outputs:
unpublishedStoryId: $steps.unpublishStory.outputs.unpublishedStoryId
deletedStatus: $steps.deleteStory.outputs.deletedStatus
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.