Search, bookmark the top result, then remove the bookmark.
Chains the recent-search endpoint into the create-bookmark endpoint and then the delete-bookmark endpoint, branching to a no-op end when no post matches.
arazzo: 1.0.1
info:
title: X Search, Bookmark a Post, Then Remove the Bookmark
summary: Find a post by search, bookmark it, then delete that bookmark.
description: >-
Walks the bookmark lifecycle on the X API. The workflow searches recent
posts for a query, bookmarks the first matching post for the authenticated
user, and then removes that bookmark. The bookmark step inlines its tweet_id
body and the removal step inlines the tweet_id path parameter so the chain
reads and executes without opening the underlying OpenAPI description.
version: 1.0.0
sourceDescriptions:
- name: bookmarksApi
url: ../openapi/twitter-bookmarks-api-openapi.yml
type: openapi
- name: tweetsApi
url: ../openapi/twitter-tweets-api-openapi.yml
type: openapi
workflows:
- workflowId: bookmark-and-remove
summary: Search, bookmark the top result, then remove the bookmark.
description: >-
Chains the recent-search endpoint into the create-bookmark endpoint and then
the delete-bookmark endpoint, branching to a no-op end when no post matches.
inputs:
type: object
required:
- authUserId
- query
properties:
authUserId:
type: string
description: The numeric id of the authenticated user who owns the bookmarks.
query:
type: string
description: The search query used to find a post to bookmark.
authorization:
type: string
description: OAuth2 user token to authorize the requests (e.g. "Bearer xxx").
steps:
- stepId: findPost
description: Search recent posts and capture the id of the first match.
operationId: searchPostsRecent
parameters:
- name: query
in: query
value: $inputs.query
- name: max_results
in: query
value: 10
- name: tweet.fields
in: query
value: id,text,author_id
- name: Authorization
in: header
value: $inputs.authorization
successCriteria:
- condition: $statusCode == 200
outputs:
postId: $response.body#/data/0/id
onSuccess:
- name: hasResults
type: goto
stepId: bookmark
criteria:
- context: $response.body
condition: $.data.length > 0
type: jsonpath
- name: noResults
type: end
criteria:
- context: $response.body
condition: $.data.length == 0
type: jsonpath
- stepId: bookmark
description: Bookmark the first matching post for the authenticated user.
operationId: createUsersBookmark
parameters:
- name: id
in: path
value: $inputs.authUserId
- name: Authorization
in: header
value: $inputs.authorization
requestBody:
contentType: application/json
payload:
tweet_id: $steps.findPost.outputs.postId
successCriteria:
- condition: $statusCode == 200
outputs:
bookmarked: $response.body#/data/bookmarked
- stepId: removeBookmark
description: Remove the bookmark to restore the original state.
operationId: deleteUsersBookmark
parameters:
- name: id
in: path
value: $inputs.authUserId
- name: tweet_id
in: path
value: $steps.findPost.outputs.postId
- name: Authorization
in: header
value: $inputs.authorization
successCriteria:
- condition: $statusCode == 200
outputs:
bookmarked: $response.body#/data/bookmarked
outputs:
postId: $steps.findPost.outputs.postId
bookmarked: $steps.bookmark.outputs.bookmarked
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.