Autodesk · Arazzo Workflow

Autodesk Distribute an OSS Object via Signed URL

Version 1.0.0

Confirm a bucket, locate an object, read its details, and mint a time-limited signed download URL.

1 workflow 1 source API 1 provider
View Spec View on GitHub Fortune 10003D ModelingArchitectureBIMCADConstructionDesignDigital TwinsEngineeringManufacturingMedia and EntertainmentSustainabilityArazzoWorkflows

Provider

autodesk

Workflows

distribute-object-signed-url
Produce an expiring, credential-free download link for a stored object.
Reads bucket details, lists objects matching a key prefix, retrieves the object's metadata, and signs a read-access URL with an explicit expiry.
4 steps inputs: bucketKey, minutesExpiration, objectKeyPrefix outputs: expiration, objectId, sha1, signedUrl
1
confirmBucket
getBucketDetails
Read the bucket details to confirm it exists and to surface its retention policy, which determines how long objects in it survive.
2
locateObject
getObjects
List the objects in the bucket whose key begins with the supplied prefix and take the first match.
3
readObjectDetails
getObjectDetails
Read the object's metadata. The sha1 and size let the recipient verify the file after downloading it through the signed URL.
4
signDownloadUrl
createSignedUrl
Create a read-only signed URL for the object. The URL carries its own authorization, so the recipient needs no APS token, and it stops working when the expiry passes.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Autodesk Distribute an OSS Object via Signed URL
  summary: Confirm a bucket, locate an object, read its details, and mint a time-limited signed download URL.
  description: >-
    How you hand an Autodesk-hosted file to someone who has no APS credentials. The
    workflow confirms the bucket and its retention policy, finds the object by key
    prefix, reads its size and checksum so the recipient can verify the download, and
    creates a read-only signed URL that expires. 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: dataManagementApi
  url: ../openapi/autodesk-data-management-openapi.yml
  type: openapi
workflows:
- workflowId: distribute-object-signed-url
  summary: Produce an expiring, credential-free download link for a stored object.
  description: >-
    Reads bucket details, lists objects matching a key prefix, retrieves the object's
    metadata, and signs a read-access URL with an explicit expiry.
  inputs:
    type: object
    required:
    - bucketKey
    - objectKeyPrefix
    properties:
      bucketKey:
        type: string
        description: The OSS bucket holding the object.
      objectKeyPrefix:
        type: string
        description: >-
          Key prefix used to locate the object within the bucket (e.g. "renders/").
      minutesExpiration:
        type: integer
        description: How long the signed URL stays valid, in minutes.
        default: 60
  steps:
  - stepId: confirmBucket
    description: >-
      Read the bucket details to confirm it exists and to surface its retention
      policy, which determines how long objects in it survive.
    operationId: getBucketDetails
    parameters:
    - name: bucketKey
      in: path
      value: $inputs.bucketKey
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      bucketKey: $response.body#/bucketKey
      bucketOwner: $response.body#/bucketOwner
      policyKey: $response.body#/policyKey
  - stepId: locateObject
    description: >-
      List the objects in the bucket whose key begins with the supplied prefix and
      take the first match.
    operationId: getObjects
    parameters:
    - name: bucketKey
      in: path
      value: $steps.confirmBucket.outputs.bucketKey
    - name: beginsWith
      in: query
      value: $inputs.objectKeyPrefix
    - name: limit
      in: query
      value: 50
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      objectKey: $response.body#/items/0/objectKey
      objects: $response.body#/items
  - stepId: readObjectDetails
    description: >-
      Read the object's metadata. The sha1 and size let the recipient verify the file
      after downloading it through the signed URL.
    operationId: getObjectDetails
    parameters:
    - name: bucketKey
      in: path
      value: $steps.confirmBucket.outputs.bucketKey
    - name: objectKey
      in: path
      value: $steps.locateObject.outputs.objectKey
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      objectId: $response.body#/objectId
      size: $response.body#/size
      sha1: $response.body#/sha1
      contentType: $response.body#/contentType
  - stepId: signDownloadUrl
    description: >-
      Create a read-only signed URL for the object. The URL carries its own
      authorization, so the recipient needs no APS token, and it stops working when
      the expiry passes.
    operationId: createSignedUrl
    parameters:
    - name: bucketKey
      in: path
      value: $steps.confirmBucket.outputs.bucketKey
    - name: objectKey
      in: path
      value: $steps.locateObject.outputs.objectKey
    - name: access
      in: query
      value: read
    requestBody:
      contentType: application/json
      payload:
        minutesExpiration: $inputs.minutesExpiration
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      signedUrl: $response.body#/signedUrl
      expiration: $response.body#/expiration
  outputs:
    signedUrl: $steps.signDownloadUrl.outputs.signedUrl
    expiration: $steps.signDownloadUrl.outputs.expiration
    objectId: $steps.readObjectDetails.outputs.objectId
    sha1: $steps.readObjectDetails.outputs.sha1