{
  "opencollection": "1.0.0",
  "info": {
    "name": "Cognite 3D Asset Mapping API",
    "version": "v1"
  },
  "request": {
    "auth": {
      "type": "bearer",
      "token": "{{bearerToken}}"
    }
  },
  "items": [
    {
      "info": {
        "name": "3D Asset Mapping",
        "type": "folder"
      },
      "items": [
        {
          "info": {
            "name": "List 3D asset mappings",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/models/:modelId/revisions/:revisionId/mappings",
            "params": [
              {
                "name": "modelId",
                "value": "",
                "type": "path",
                "description": "Model ID."
              },
              {
                "name": "revisionId",
                "value": "",
                "type": "path",
                "description": "Revision ID."
              },
              {
                "name": "cursor",
                "value": "",
                "type": "query",
                "description": "Cursor for paging through results. In general, if a response contains a `nextCursor`\nproperty, it means that there may be more results, and you should pass that value as the\n`cursor` parameter in the next request.\n\nNote that the cursor may or may not be encrypted, but either way, it is not intended to be\ndecoded. Its internal structure is not a part of the public API, and may change without\nnotice. You should treat it as an opaque string and not attempt to craft your own cursors.\n"
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Limits the number of results to be returned. The maximum results returned by the server is 1000 even if you specify a higher limit."
              },
              {
                "name": "nodeId",
                "value": "",
                "type": "query"
              },
              {
                "name": "assetId",
                "value": "",
                "type": "query"
              },
              {
                "name": "intersectsBoundingBox",
                "value": "",
                "type": "query",
                "description": "Example: `{\"min\":[0.0, 0.0, 0.0], \"max\":[1.0, 1.0, 1.0]}`\n\nIf given, only return asset mappings for assets whose bounding box\nintersects the given bounding box.\n\nMust be a JSON object with `min`, `max` arrays of coordinates.\n"
              },
              {
                "name": "getDmsInstances",
                "value": "",
                "type": "query",
                "description": "If true, the response will include any `assetInstanceId` instances for the mappings.\n"
              }
            ]
          },
          "docs": "\n\n> **Required capabilities:** `threedAcl:READ`\n\nLists 3D assets mappings that match the ID for the specified filter query parameter type. Only one type of filter can be specified for each request, either `assetId`, `nodeId` or `intersectsBoundingBox`.\n\nIn Hybrid CDF projects: The nodeId and assetId mappings are returned by default.\nTo instead see any assetInstanceId mappings (for CoreDM based contextualization),\nset the `getDmsInstances` query parameter to `true`.\n\nIn DataModelingOnly CDF proje"
        },
        {
          "info": {
            "name": "Create 3D asset mappings",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/models/:modelId/revisions/:revisionId/mappings",
            "params": [
              {
                "name": "modelId",
                "value": "",
                "type": "path",
                "description": "Model ID."
              },
              {
                "name": "revisionId",
                "value": "",
                "type": "path",
                "description": "Revision ID."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "\n\n> **Required capabilities:** `threedAcl:UPDATE`\n\nCreate asset mappings\n\nAsset mappings allows connections to be made between assets and 3D nodes. This can be used to contextualize 3D models.\n\nIn Hybrid CDF projects: Asset IDs obtained from a mapping may be invalid, and not point to real asset IDs.\nThe assetId existence is not checked by any means by the 3D API.\nThe mappings will be stored until an `assetId` and `nodeId` pair is removed through the mappings delete endpoint.\n\nIn DataModelingOnly"
        },
        {
          "info": {
            "name": "Delete 3D asset mappings",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/models/:modelId/revisions/:revisionId/mappings/delete",
            "params": [
              {
                "name": "modelId",
                "value": "",
                "type": "path",
                "description": "Model ID."
              },
              {
                "name": "revisionId",
                "value": "",
                "type": "path",
                "description": "Revision ID."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "\n\n> **Required capabilities:** `threedAcl:DELETE`\n\nDelete a list of asset mappings.\n\nIn Hybrid CDF projects: The delete request items requires a `nodeId`, and either an `assetId` or an `assetInstanceId`.\n\nIn DataModelingOnly CDF projects: The delete request items requires a `nodeId` and an `assetInstanceId` (with space and externalId)."
        },
        {
          "info": {
            "name": "Filter 3D asset mappings",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/models/:modelId/revisions/:revisionId/mappings/list",
            "params": [
              {
                "name": "modelId",
                "value": "",
                "type": "path",
                "description": "Model ID."
              },
              {
                "name": "revisionId",
                "value": "",
                "type": "path",
                "description": "Revision ID."
              }
            ],
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "\n\n> **Required capabilities:** `threedAcl:READ`\n\nLists 3D assets mappings that match the specified filter parameter.\nOnly one type of filter can be specified for each request, either `assetIds`, `nodeIds` or `treeIndexes`.\n\nIn Hybrid CDF projects: The nodeId and assetId mappings are returned by default.\nTo instead see only any `assetInstanceId` mappings (for CoreDM based contextualization),\nset the `getDmsInstances` property to `true`, in the request body.\n\nIn DataModelingOnly CDF projects: This"
        },
        {
          "info": {
            "name": "List mappings for one assetID across all 3D models",
            "type": "http"
          },
          "http": {
            "method": "GET",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/mappings/:assetId/modelnodes",
            "params": [
              {
                "name": "assetId",
                "value": "",
                "type": "path",
                "description": "Asset ID."
              },
              {
                "name": "cursor",
                "value": "",
                "type": "query",
                "description": "Cursor for paging through results. In general, if a response contains a `nextCursor`\nproperty, it means that there may be more results, and you should pass that value as the\n`cursor` parameter in the next request.\n\nNote that the cursor may or may not be encrypted, but either way, it is not intended to be\ndecoded. Its internal structure is not a part of the public API, and may change without\nnotice. You should treat it as an opaque string and not attempt to craft your own cursors.\n"
              },
              {
                "name": "limit",
                "value": "",
                "type": "query",
                "description": "Limits the number of results to be returned. The maximum results returned by the server is 1000 even if you specify a higher limit."
              }
            ]
          },
          "docs": "\n\n> **Required capabilities:** `threedAcl:READ`\n\nRetrieves a list of `node IDs` from the hierarchy of all available 3D models which are mapped to the supplied `asset ID`.\nIf a `nodeId` is mapped to an `assetId` but is invalid or does not exist anymore, it will be omitted from the results.\nAn asset referenced in an asset mapping is not guaranteed to exist."
        },
        {
          "info": {
            "name": "Filter which nodes are within a boundingbox for a revision.",
            "type": "http"
          },
          "http": {
            "method": "POST",
            "url": "https://{cluster}.cognitedata.com/api/v1/projects/{project}/3d/nodes/list",
            "body": {
              "type": "json",
              "data": "{}"
            }
          },
          "docs": "This endpoint is only supported in dm-only projects.\nThe nodeIds can be found as part of a CogniteCadNode in the field `cadNodeReference`.\nSimilar functionality is supported in classic through:\n- list 3D asset mappings endpoint + intersectsBoundingBox"
        }
      ]
    }
  ],
  "bundled": true
}