Overview
Client-mode REST API connector for Autodesk Platform Services (APS): browse Data Management hubs, projects, folders, items and versions to show the latest design or drawing revision as a work instruction, read Model Derivative manifests and properties, subscribe webhooks to new versions, and query Fusion component properties and BOMs through the Manufacturing Data Model GraphQL API, with OAuth 2.0 tokens. This is one of the templates in the Autodesk Platform Services (Data Management, Manufacturing Data Model, Fusion) REST API app (autodesk-platform-services). Deploy it alongside the other connectors of that app when they depend on each other (for example a token connector plus an API connector).
Auth
OAuth 2.0 (APS Authentication v2, POST /authentication/v2/token). Client authentication: Authorization: Basic base64(client_id:client_secret) from payload field authorization. GetToken = client_credentials (2-legged, scopes URL-encoded space-separated, e.g. data:read%20data:create); ExchangeCode = authorization_code (3-legged, after one browser sign-in to /authentication/v2/authorize); RefreshToken = refresh_token (rotates the refresh token). API events take authorization = ‘Bearer <access_token>’. Data Management / Model Derivative / Webhooks accept 2-legged (BIM 360 Docs / ACC after the account admin adds the app as an integration) or 3-legged; Fusion Team / BIM 360 Team / A360 data and all Manufacturing Data Model calls require 3-legged. Auth headers used by the template:Authorization: {value.json.authorization}.
Template parameters
| Placeholder | Type | Description | Required |
|---|---|---|---|
RouteName | string | Name of the Autodesk Platform Services Api connector | no |
BaseUrl | string | Autodesk Platform Services Api base URL without trailing slash (e.g. https://developer.api.autodesk.com) | yes |
BASE_ADDRESS default: https://developer.api.autodesk.com.
Events
| Event | Method | Endpoint | Request topic | Response topic | Payload fields |
|---|---|---|---|---|---|
ListHubs | GET | /project/v1/hubs | mes/autodesk-platform-services/hubs/list | mes/autodesk-platform-services/hubs/list/response | authorization |
ListProjects | GET | /project/v1/hubs/{value.json.hub_id}/projects | mes/autodesk-platform-services/projects/list | mes/autodesk-platform-services/projects/list/response | authorization, hub_id |
GetProject | GET | /project/v1/hubs/{value.json.hub_id}/projects/{value.json.project_id} | mes/autodesk-platform-services/project/get | mes/autodesk-platform-services/project/get/response | authorization, hub_id, project_id |
ListTopFolders | GET | /project/v1/hubs/{value.json.hub_id}/projects/{value.json.project_id}/topFolders | mes/autodesk-platform-services/top-folders/list | mes/autodesk-platform-services/top-folders/list/response | authorization, hub_id, project_id |
ListFolderContents | GET | /data/v1/projects/{value.json.project_id}/folders/{value.json.folder_id}/contents | mes/autodesk-platform-services/folder-contents/list | mes/autodesk-platform-services/folder-contents/list/response | authorization, folder_id, project_id |
SearchFolder | GET | /data/v1/projects/{value.json.project_id}/folders/{value.json.folder_id}/search?{value.json.filter} | mes/autodesk-platform-services/folder/search | mes/autodesk-platform-services/folder/search/response | authorization, filter, folder_id, project_id |
GetItem | GET | /data/v1/projects/{value.json.project_id}/items/{value.json.item_id} | mes/autodesk-platform-services/item/get | mes/autodesk-platform-services/item/get/response | authorization, item_id, project_id |
GetItemTip | GET | /data/v1/projects/{value.json.project_id}/items/{value.json.item_id}/tip | mes/autodesk-platform-services/item-tip/get | mes/autodesk-platform-services/item-tip/get/response | authorization, item_id, project_id |
ListItemVersions | GET | /data/v1/projects/{value.json.project_id}/items/{value.json.item_id}/versions | mes/autodesk-platform-services/item-versions/list | mes/autodesk-platform-services/item-versions/list/response | authorization, item_id, project_id |
GetVersion | GET | /data/v1/projects/{value.json.project_id}/versions/{value.json.version_id} | mes/autodesk-platform-services/version/get | mes/autodesk-platform-services/version/get/response | authorization, project_id, version_id |
ListVersionDownloads | GET | /data/v1/projects/{value.json.project_id}/versions/{value.json.version_id}/downloads | mes/autodesk-platform-services/version-downloads/list | mes/autodesk-platform-services/version-downloads/list/response | authorization, project_id, version_id |
GetManifest | GET | /modelderivative/v2/designdata/{value.json.urn}/manifest | mes/autodesk-platform-services/manifest/get | mes/autodesk-platform-services/manifest/get/response | authorization, region, urn |
ListModelViews | GET | /modelderivative/v2/designdata/{value.json.urn}/metadata | mes/autodesk-platform-services/model-views/list | mes/autodesk-platform-services/model-views/list/response | authorization, region, urn |
GetModelProperties | GET | /modelderivative/v2/designdata/{value.json.urn}/metadata/{value.json.guid}/properties | mes/autodesk-platform-services/model-properties/get | mes/autodesk-platform-services/model-properties/get/response | authorization, guid, region, urn |
CreateWebhook | POST | /webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks?region={value.json.region} | mes/autodesk-platform-services/webhook/create | mes/autodesk-platform-services/webhook/create/response | authorization, event, region, request, system |
ListWebhooks | GET | /webhooks/v1/hooks?region={value.json.region} | mes/autodesk-platform-services/webhooks/list | mes/autodesk-platform-services/webhooks/list/response | authorization, region |
ListAppWebhooks | GET | /webhooks/v1/app/hooks?region={value.json.region} | mes/autodesk-platform-services/app-webhooks/list | mes/autodesk-platform-services/app-webhooks/list/response | authorization, region |
ListEventWebhooks | GET | /webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks?region={value.json.region} | mes/autodesk-platform-services/event-webhooks/list | mes/autodesk-platform-services/event-webhooks/list/response | authorization, event, region, system |
GetWebhook | GET | /webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks/{value.json.hook_id}?region={value.json.region} | mes/autodesk-platform-services/webhook/get | mes/autodesk-platform-services/webhook/get/response | authorization, event, hook_id, region, system |
MdmQuery | POST | /mfg/v3/graphql/public | mes/autodesk-platform-services/mdm/query | mes/autodesk-platform-services/mdm/query/response | authorization, request |
MdmMutation | POST | /mfg/v3/graphql/public | mes/autodesk-platform-services/mdm/mutate | mes/autodesk-platform-services/mdm/mutate/response | authorization, request |
Deploy
Get the template card (JSON withtemplate and metadata) from the broker, then deploy the connector:
mosquitto_pub -t '$SYS/Coreflux/Command' -m "-connectorCode AUTODESK_PLATFORM_SERVICES"
BASE_ADDRESS already filled in:
DEFINE CONNECTOR AutodeskPlatformServicesApi WITH TYPE REST_API
ADD REST_API_CONFIG
WITH BASE_ADDRESS "https://developer.api.autodesk.com"
WITH ENABLE_CLIENT "true"
WITH USE_SSL "true"
WITH REQUEST_TIMEOUT '60'
WITH DEFAULT_CONTENT_TYPE "application/json"
ADD EVENT ListHubs
WITH SOURCE_TOPIC "mes/autodesk-platform-services/hubs/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/hubs/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/project/v1/hubs"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListProjects
WITH SOURCE_TOPIC "mes/autodesk-platform-services/projects/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/projects/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/project/v1/hubs/{value.json.hub_id}/projects"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetProject
WITH SOURCE_TOPIC "mes/autodesk-platform-services/project/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/project/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/project/v1/hubs/{value.json.hub_id}/projects/{value.json.project_id}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListTopFolders
WITH SOURCE_TOPIC "mes/autodesk-platform-services/top-folders/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/top-folders/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/project/v1/hubs/{value.json.hub_id}/projects/{value.json.project_id}/topFolders"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListFolderContents
WITH SOURCE_TOPIC "mes/autodesk-platform-services/folder-contents/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/folder-contents/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/folders/{value.json.folder_id}/contents"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT SearchFolder
WITH SOURCE_TOPIC "mes/autodesk-platform-services/folder/search"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/folder/search/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/folders/{value.json.folder_id}/search?{value.json.filter}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetItem
WITH SOURCE_TOPIC "mes/autodesk-platform-services/item/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/item/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/items/{value.json.item_id}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetItemTip
WITH SOURCE_TOPIC "mes/autodesk-platform-services/item-tip/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/item-tip/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/items/{value.json.item_id}/tip"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListItemVersions
WITH SOURCE_TOPIC "mes/autodesk-platform-services/item-versions/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/item-versions/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/items/{value.json.item_id}/versions"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetVersion
WITH SOURCE_TOPIC "mes/autodesk-platform-services/version/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/version/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/versions/{value.json.version_id}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListVersionDownloads
WITH SOURCE_TOPIC "mes/autodesk-platform-services/version-downloads/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/version-downloads/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/data/v1/projects/{value.json.project_id}/versions/{value.json.version_id}/downloads"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetManifest
WITH SOURCE_TOPIC "mes/autodesk-platform-services/manifest/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/manifest/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/modelderivative/v2/designdata/{value.json.urn}/manifest"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "region" "{value.json.region}"
ADD EVENT ListModelViews
WITH SOURCE_TOPIC "mes/autodesk-platform-services/model-views/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/model-views/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/modelderivative/v2/designdata/{value.json.urn}/metadata"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "region" "{value.json.region}"
ADD EVENT GetModelProperties
WITH SOURCE_TOPIC "mes/autodesk-platform-services/model-properties/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/model-properties/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/modelderivative/v2/designdata/{value.json.urn}/metadata/{value.json.guid}/properties"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "region" "{value.json.region}"
ADD EVENT CreateWebhook
WITH SOURCE_TOPIC "mes/autodesk-platform-services/webhook/create"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/webhook/create/response"
WITH METHOD "POST"
WITH ENDPOINT "/webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks?region={value.json.region}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "Content-Type" "application/json"
WITH BODY "{value.json.request}"
ADD EVENT ListWebhooks
WITH SOURCE_TOPIC "mes/autodesk-platform-services/webhooks/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/webhooks/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/webhooks/v1/hooks?region={value.json.region}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListAppWebhooks
WITH SOURCE_TOPIC "mes/autodesk-platform-services/app-webhooks/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/app-webhooks/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/webhooks/v1/app/hooks?region={value.json.region}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT ListEventWebhooks
WITH SOURCE_TOPIC "mes/autodesk-platform-services/event-webhooks/list"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/event-webhooks/list/response"
WITH METHOD "GET"
WITH ENDPOINT "/webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks?region={value.json.region}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT GetWebhook
WITH SOURCE_TOPIC "mes/autodesk-platform-services/webhook/get"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/webhook/get/response"
WITH METHOD "GET"
WITH ENDPOINT "/webhooks/v1/systems/{value.json.system}/events/{value.json.event}/hooks/{value.json.hook_id}?region={value.json.region}"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD EVENT MdmQuery
WITH SOURCE_TOPIC "mes/autodesk-platform-services/mdm/query"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/mdm/query/response"
WITH METHOD "POST"
WITH ENDPOINT "/mfg/v3/graphql/public"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "Content-Type" "application/json"
WITH BODY "{value.json.request}"
ADD EVENT MdmMutation
WITH SOURCE_TOPIC "mes/autodesk-platform-services/mdm/mutate"
WITH DESTINATION_TOPIC "mes/autodesk-platform-services/mdm/mutate/response"
WITH METHOD "POST"
WITH ENDPOINT "/mfg/v3/graphql/public"
WITH HEADERS
ADD "Accept" "application/json"
ADD "Authorization" "{value.json.authorization}"
ADD "Content-Type" "application/json"
WITH BODY "{value.json.request}"
-addConnector (do not include ADD METADATA).
Usage example
CallListHubs by publishing a JSON payload to its request topic, and read the reply on the response topic:
mosquitto_sub -t 'mes/autodesk-platform-services/hubs/list/response' &
mosquitto_pub -t 'mes/autodesk-platform-services/hubs/list' -m '{"authorization": "<authorization>"}'

