Runloop · Arazzo Workflow

Runloop Publish an Object Artifact

Version 1.0.0

Create a storage object, mark its upload complete to make it read-only, then generate a presigned download URL for it.

1 workflow 1 source API 1 provider
View Spec View on GitHub AIAI AgentsCoding AgentsSandboxesDevboxesCode ExecutionEvaluationBenchmarksSWE-BenchMCPSnapshotsmicroVMEnterpriseSOC 2ArazzoWorkflows

Provider

runloop-ai

Workflows

publish-object-artifact
Create an object, complete its upload, and get a download URL.
Creates a storage object, marks its upload complete, and generates a presigned download URL for it.
3 steps inputs: apiToken, contentType, durationSeconds, objectName outputs: downloadUrl, objectId, state
1
createObject
createObject
Create the object; it starts in the UPLOADING state.
2
completeUpload
completeObject
Mark the object upload complete, transitioning it to the read-only state.
3
generateDownloadUrl
generateDownloadUrl
Generate a presigned download URL for the completed object.

Source API Descriptions

Arazzo Workflow Specification

runloop-ai-publish-object-artifact-workflow.yml Raw ↑
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-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