> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreflux.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Autodesk Platform Services Api

> 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

Technical Preview

## 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).

> [!NOTE]
>
> Not yet verified against the live vendor API: No APS app credentials on the factory box (APS\_CLIENT\_ID / APS\_CLIENT\_SECRET unset) and no hub provisioned for such an app; the ready gate needs an authenticated live call (GetToken + ListHubs, or a broker MQTT round trip). Mock-server checks and unauthenticated probes of developer.api.autodesk.com (OIDC 200, JWKS 200, token 403 without client, every API path 401 without a token) do not clear the gate.

## 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](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 with `template` and `metadata`) from the broker, then deploy the connector:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_pub -t '$SYS/Coreflux/Command' -m "-routeCode AUTODESK_PLATFORM_SERVICES"
```

The deployable connector from the REST API app, with `BASE_ADDRESS` already filled in:

```lot theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
DEFINE ROUTE 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}"
```

Deploy it with `-addRoute` (do not include `ADD METADATA`).

## Usage example

Call `ListHubs` by publishing a JSON payload to its request topic, and read the reply on the response topic:

```bash theme={"theme":"css-variables","languages":{"custom":["/languages/lot.json"]}}
mosquitto_sub -t 'mes/autodesk-platform-services/hubs/list/response' &
mosquitto_pub -t 'mes/autodesk-platform-services/hubs/list' -m '{"authorization": "<authorization>"}'
```

## Related

* [REST API Connectors](/latest/lot-language/routes/rest-api-routes)
* [REST API Apps catalog](/latest/lot-language/routes/rest-api-apps)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.