arazzo: 1.0.1
info:
title: Runloop Publish an Object Artifact
summary: Create a storage object, mark its upload complete to make it read-only, then generate a presigned download URL for it.
description: >-
Objects are Runloop's stored data artifacts. This workflow creates an object
with a name and content type, completes its upload to transition it from the
UPLOADING state into the read-only state, and then generates a time limited
presigned download URL so the artifact can be retrieved. 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: objectsApi
url: ../openapi/runloop-ai-objects-api-openapi.yml
type: openapi
workflows:
- workflowId: publish-object-artifact
summary: Create an object, complete its upload, and get a download URL.
description: >-
Creates a storage object, marks its upload complete, and generates a
presigned download URL for it.
inputs:
type: object
required:
- apiToken
- objectName
- contentType
properties:
apiToken:
type: string
description: Runloop API bearer token.
objectName:
type: string
description: The name of the object to create.
contentType:
type: string
description: The content type of the object (one of unspecified, text, binary, gzip, tar, tgz).
durationSeconds:
type: integer
description: Validity window in seconds for the generated download URL.
steps:
- stepId: createObject
description: Create the object; it starts in the UPLOADING state.
operationId: createObject
parameters:
- name: Authorization
in: header
value: Bearer $inputs.apiToken
requestBody:
contentType: application/json
payload:
name: $inputs.objectName
content_type: $inputs.contentType
successCriteria:
- condition: $statusCode == 200
outputs:
objectId: $response.body#/id
state: $response.body#/state
- stepId: completeUpload
description: Mark the object upload complete, transitioning it to the read-only state.
operationId: completeObject
parameters:
- name: Authorization
in: header
value: Bearer $inputs.apiToken
- name: id
in: path
value: $steps.createObject.outputs.objectId
requestBody:
contentType: application/json
payload: {}
successCriteria:
- condition: $statusCode == 200
outputs:
state: $response.body#/state
- stepId: generateDownloadUrl
description: Generate a presigned download URL for the completed object.
operationId: generateDownloadUrl
parameters:
- name: Authorization
in: header
value: Bearer $inputs.apiToken
- name: id
in: path
value: $steps.createObject.outputs.objectId
- name: duration_seconds
in: query
value: $inputs.durationSeconds
successCriteria:
- condition: $statusCode == 200
outputs:
downloadUrl: $response.body#/download_url
outputs:
objectId: $steps.createObject.outputs.objectId
state: $steps.completeUpload.outputs.state
downloadUrl: $steps.generateDownloadUrl.outputs.downloadUrl
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.