Documents
Tandem allows the upload of documents from ACC (Autodesk Construction Cloud). A copy of the document is made within Tandem but a reference is kept so that it can be updated when the original document is modified. Once uploaded, Tandem issues it a URN that can be used in subsequent calls within the API.

Tandem also allows you to make a simple Hyperlink reference and attach it to elements within the Facility. In this case, no copy of the data is made and it is just a simple reference. In order to add this link, we simply use the /mutate
endpoint to change the value of that property like we would any other property. See documentation on the POST mutate endpoint for more information on how this is done.

The above type of simple link can be accomplished with a /mutate
payload that looks like the following:
{
"keys": [
"ricOExIyRIyTke1_49OlKgAD-WQ"
],
"muts": [
[
"i",
"z",
"0Ac",
"https://www.google.com"
]
],
"desc": "Updated from Postman"
}
This same property value can also come from a document that has already been imported into this Facility (but is not assigned to this particular asset). In this case, you must first retrieve the internally stored URN of the document within Tandem. Use the GET twin endpoint to get information about the Facility, which includes a docs
field with the internal document URNs. The following is an example.
{
"links": [
{
"disciplines": null,
"label": "R21 Mill Building - Elec.rvt",
"main": false,
"modelId": "urn:adsk.dtm:fTIXhuewSxuROOMTHC5yUQ",
"on": true,
"accessLevel": "Owner"
},
{
"disciplines": null,
"label": "R21 Mill Building - Mech.rvt",
"main": false,
"modelId": "urn:adsk.dtm:mNn_ajmuR96t-hIQLa47eQ",
"on": true,
"accessLevel": "Owner"
},
{
"disciplines": null,
"label": "R21 Mill Building - Arch.rvt",
"main": true,
"modelId": "urn:adsk.dtm:k5ZZZkIYQ9ixvxFDVBNoTg",
"on": true,
"accessLevel": "Owner"
},
{
"disciplines": null,
"label": "",
"main": false,
"modelId": "urn:adsk.dtm:d5eZt_XtRzqUHT93-vNZxw",
"on": true,
"accessLevel": "Owner"
}
],
"docs": [
{
"id": "urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/e2e63534-4263-4e91-a2b8-6f6418c2c6ef/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w/content?lastupdated=1654016445",
"name": "schlage_warranty.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:Rog3z9MoRmuf80HmcKXWoA",
"accVersion": "urn:adsk.wipprod:fs.file:vf.Rog3z9MoRmuf80HmcKXWoA?version=1"
},
{
"id": "urn:adsk.dtd:HlsYAql5TmSnIzLD4t_3Og",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/1e5b1802-a979-4e64-a723-32c3e2dff73a/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:HlsYAql5TmSnIzLD4t_3Og/content?lastupdated=1654016445",
"name": "301-1070D_KS_8013D-1160.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:BZjAcVQHQKCnAXWWRLXfYQ",
"accVersion": "urn:adsk.wipprod:fs.file:vf.BZjAcVQHQKCnAXWWRLXfYQ?version=1"
},
{
"id": "urn:adsk.dtd:RmcWEt7FTaSCYGkmw8qR2g",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/46671612-dec5-4da4-8260-6926c3ca91da/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:RmcWEt7FTaSCYGkmw8qR2g/content?lastupdated=1654016445",
"name": "300-1.3_KS-SKS_Catalog.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:VQKP5jA0QLaCVWhfZj3GVw",
"accVersion": "urn:adsk.wipprod:fs.file:vf.VQKP5jA0QLaCVWhfZj3GVw?version=1"
},
{
"id": "urn:adsk.dtd:oTu7dvOTT36Qj968fpe20Q",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/a13bbb76-f393-4f7e-908f-debc7e97b6d1/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:oTu7dvOTT36Qj968fpe20Q/content?lastupdated=1654016445",
"name": "Brochure - Fleet&Network.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:ZW_t7DbQR-O1w-KTOYeSEw",
"accVersion": "urn:adsk.wipprod:fs.file:vf.ZW_t7DbQR-O1w-KTOYeSEw?version=1"
},
{
"id": "urn:adsk.dtd:oAY-vZnPSoC6UqjxOrX49w",
"contentType": "image/png",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/a0063ebd-99cf-4a80-ba52-a8f13ab5f8f7/v0",
"lastUpdated": "2023-11-03T17:15:42Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:oAY-vZnPSoC6UqjxOrX49w/content?lastupdated=1699031742",
"name": "Assembly Diagram.PNG",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:MlpPFRxnSW2BNYxubi1h3w",
"accVersion": "urn:adsk.wipprod:fs.file:vf.MlpPFRxnSW2BNYxubi1h3w?version=1"
}
],
"props": {
"Identity Data": {
"Address": "1 Market St #500, San Francisco, CA 94105",
"Building Name": "Mill",
"Owner": "Mr. X",
"Project Name": "Autodesk Samples"
},
"Other": {
"Project Number": ""
}
},
"dateCreated": "2022-05-24T23:45:09Z",
"boundByUpperFloor": false,
"skipRoomBounders": false,
"template": {
"uuid": "yxAF6Ja-St-Hz85F0A4pGA",
"name": "Uniclass - ExternalIDs",
"description": "Used to test Maximo and other integrations",
"classificationId": "uniclass",
"psetIds": [
"yxAF6Ja-St-Hz85F0A4pGA"
]
},
"accessLevel": "Owner",
"accountGroup": "urn:adsk.dtg:ysqziKwTSCejQaUVfqj32Q",
"accountType": "free",
"dateModified": "2023-07-26T07:46:43Z",
"etag": "1690357603997"
}
If you already know the id
of the document you can get that information direclty using GET document which will give a response like the following:
{
"id": "urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/e2e63534-4263-4e91-a2b8-6f6418c2c6ef/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w/content?lastupdated=1654016445",
"name": "schlage_warranty.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:Rog3z9MoRmuf80HmcKXWoA",
"accVersion": "urn:adsk.wipprod:fs.file:vf.Rog3z9MoRmuf80HmcKXWoA?version=1"
}
With a document id
you can then assign that to particular asset with a /mutate
payload such as:
{
"keys": [
"ricOExIyRIyTke1_49OlKgAD-WQ"
],
"muts": [
[
"i",
"z",
"0Ac",
"urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w"
]
],
"desc": "Updated from Postman"
}
If you would like to open the document in another browser tab or window, you can retrieve the value of signedLink
from one of the previous calls.
{
"id": "urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w",
"contentType": "application/pdf",
"s3Path": "d5eZt_XtRzqUHT93-vNZxw/e2e63534-4263-4e91-a2b8-6f6418c2c6ef/v0",
"lastUpdated": "2022-05-31T17:00:45Z",
"signedLink": "https://tandem.autodesk.com/api/v1/twins/urn:adsk.dtt:d5eZt_XtRzqUHT93-vNZxw/documents/urn:adsk.dtd:4uY1NEJjTpGiuG9kGMLG7w/content?lastupdated=1654016445",
"name": "schlage_warranty.pdf",
"accProjectId": "b.510b9020-0be4-4a1e-abae-8da3e438955d",
"accAccountId": "b.485ec674-e1cf-48cf-9aff-022376591171",
"accLineage": "urn:adsk.wipprod:dm.lineage:Rog3z9MoRmuf80HmcKXWoA",
"accVersion": "urn:adsk.wipprod:fs.file:vf.Rog3z9MoRmuf80HmcKXWoA?version=1"
}