Autodesk · Arazzo Workflow

Autodesk Define a Shared Parameter in a Collection

Version 1.0.0

Resolve valid specs, create a collection and group, define a parameter, and read it back.

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

Provider

autodesk

Workflows

define-shared-parameter
Create a parameter collection, group, and parameter definition.
Lists the available spec types, creates a collection, creates a group inside it, defines a parameter against a spec and group, and reads the parameter back to confirm its GUID.
5 steps inputs: accountId, categories, collectionDescription, collectionName, disciplines, groupDescription, groupName, parameterDescription, parameterName, specId outputs: collectionId, groupId, guid, parameterId
1
listSpecs
getSpecs
List the available spec types. A parameter's spec is an id, not a friendly name like "length", so it has to be resolved before a definition can be created.
2
createParameterCollection
createCollection
Create the collection that scopes this set of parameters. Collections are the unit products subscribe to, so one per standard rather than one per project.
3
createParameterGroup
createGroup
Create a group within the collection. Groups are how a large standard stays navigable once it holds hundreds of parameters.
4
defineParameter
createParameter
Define the parameter against the resolved spec and group, bound to the categories and disciplines it applies to. Instance parameters vary per placed element; type parameters vary per family type.
5
confirmParameter
getParameter
Read the parameter back to confirm the definition and capture its GUID, which is the identifier that follows the parameter into every model that consumes the collection.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Autodesk Define a Shared Parameter in a Collection
  summary: Resolve valid specs, create a collection and group, define a parameter, and read it back.
  description: >-
    Standing up a standards library that stays synchronized across Autodesk products
    instead of living in a shared parameters text file that every office copies and
    drifts from. The workflow resolves the valid spec types, creates the collection
    that scopes the standard, adds a group to organize it, defines a parameter bound
    to categories and disciplines, and reads it back to capture the GUID that
    identifies it everywhere it is used. The spec is resolved first because it is an id
    and cannot be guessed from a friendly type name. 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: parametersApi
  url: ../openapi/autodesk-parameters-openapi.yml
  type: openapi
workflows:
- workflowId: define-shared-parameter
  summary: Create a parameter collection, group, and parameter definition.
  description: >-
    Lists the available spec types, creates a collection, creates a group inside it,
    defines a parameter against a spec and group, and reads the parameter back to
    confirm its GUID.
  inputs:
    type: object
    required:
    - accountId
    - collectionName
    - groupName
    - parameterName
    - specId
    properties:
      accountId:
        type: string
        description: >-
          The Autodesk account id (the hub id without the "b." prefix).
      collectionName:
        type: string
        description: Name of the parameter collection to create.
      collectionDescription:
        type: string
        description: What standard this collection represents.
      groupName:
        type: string
        description: Name of the group organizing the parameters.
      groupDescription:
        type: string
        description: What the group covers.
      parameterName:
        type: string
        description: Name of the parameter being defined.
      parameterDescription:
        type: string
        description: What the parameter records.
      specId:
        type: string
        description: >-
          The spec (data type) id the parameter uses, taken from the resolved spec
          list (e.g. a length, area, or text spec).
      categories:
        type: array
        description: Revit category ids the parameter binds to.
        items:
          type: string
      disciplines:
        type: array
        description: Discipline ids the parameter is classified under.
        items:
          type: string
  steps:
  - stepId: listSpecs
    description: >-
      List the available spec types. A parameter's spec is an id, not a friendly name
      like "length", so it has to be resolved before a definition can be created.
    operationId: getSpecs
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      specs: $response.body#/results
      firstSpecId: $response.body#/results/0/id
  - stepId: createParameterCollection
    description: >-
      Create the collection that scopes this set of parameters. Collections are the
      unit products subscribe to, so one per standard rather than one per project.
    operationId: createCollection
    parameters:
    - name: accountId
      in: path
      value: $inputs.accountId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.collectionName
        description: $inputs.collectionDescription
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      collectionId: $response.body#/id
      collectionName: $response.body#/name
      createdAt: $response.body#/createdAt
  - stepId: createParameterGroup
    description: >-
      Create a group within the collection. Groups are how a large standard stays
      navigable once it holds hundreds of parameters.
    operationId: createGroup
    parameters:
    - name: accountId
      in: path
      value: $inputs.accountId
    - name: collectionId
      in: path
      value: $steps.createParameterCollection.outputs.collectionId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.groupName
        description: $inputs.groupDescription
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      groupId: $response.body#/id
      groupName: $response.body#/name
  - stepId: defineParameter
    description: >-
      Define the parameter against the resolved spec and group, bound to the
      categories and disciplines it applies to. Instance parameters vary per placed
      element; type parameters vary per family type.
    operationId: createParameter
    parameters:
    - name: accountId
      in: path
      value: $inputs.accountId
    - name: collectionId
      in: path
      value: $steps.createParameterCollection.outputs.collectionId
    requestBody:
      contentType: application/json
      payload:
        name: $inputs.parameterName
        description: $inputs.parameterDescription
        specId: $inputs.specId
        groupId: $steps.createParameterGroup.outputs.groupId
        isInstance: true
        categories: $inputs.categories
        disciplines: $inputs.disciplines
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      parameterId: $response.body#/id
      guid: $response.body#/guid
      specId: $response.body#/specId
  - stepId: confirmParameter
    description: >-
      Read the parameter back to confirm the definition and capture its GUID, which is
      the identifier that follows the parameter into every model that consumes the
      collection.
    operationId: getParameter
    parameters:
    - name: accountId
      in: path
      value: $inputs.accountId
    - name: collectionId
      in: path
      value: $steps.createParameterCollection.outputs.collectionId
    - name: parameterId
      in: path
      value: $steps.defineParameter.outputs.parameterId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      parameterId: $response.body#/id
      name: $response.body#/name
      guid: $response.body#/guid
      specId: $response.body#/specId
      isInstance: $response.body#/isInstance
      categories: $response.body#/categories
  outputs:
    collectionId: $steps.createParameterCollection.outputs.collectionId
    groupId: $steps.createParameterGroup.outputs.groupId
    parameterId: $steps.confirmParameter.outputs.parameterId
    guid: $steps.confirmParameter.outputs.guid