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

# Import Asset Template

> This API call is designed to support CREATE and UPDATE operations to the indicated Environment. An **import** operation occurs when a *new* `templateId` is used. An **update** operation occurs if the `templateId` *already exists*.
<br> <br>
<h2>Notice</h2>Accessing the API call is through a dedicated domain/URL, according to your PlainID Tenant Location<li><b>United States (US)</b> - `https://api.us1.plainid.io`</li><li><b>Canada (CA)</b> - `https://api.ca1.plainid.io`</li><li><b>Europe (EU)</b> - `https://api.eu1.plainid.io`</li> <br> <h2>Using HTML Encoded Special Characters</h2> <p>Use HTML encoded patterns when working with values that contain special characters like spaces, dashes, etc. Refer to this <a href="https://www.w3schools.com/tags/ref_urlencode.ASP" target="_blank">HTML URL Encoding Reference</a> for a full list.</p> <br>

<h2>Important note about headers</h2> <p>Refer to the headers below to modify your cURL sample. Check if the following headers are in the sample, if not, ensure you add it to your cURL sample before pasting into your API tool. </p> <h3>Headers</h3> *Required <table><thead> <tr> <th>Header</th> <th>Value</th> <th>cURL Line</th> </tr></thead> <tbody> <tr> <td>Accept</td> <td>`application/json`</td> <td> `-H "Accept:application/json"`</td> </tr> <tr> <td>Content-Type</td> <td>`application/json`</td> <td> `-H "Content-Type:application/json"`</td> </tr> </tbody> </table> <br> <h3>cURL Sample Guidelines</h3> <p>In order for the relevant parameters to appear in the cURL sample, you can input the values in the interactive API console on the right in the Try It or Code Sample tabs. You can then copy the cURL sample from the Code Sample tab in the correct format.</p>

## OpenAPI

````json POST /api/1.0/asset-templates/{envId}
{
  "openapi": "3.0.3",
  "info": {
    "title": "Management APIs",
    "version": "1.0.0",
    "contact": {
      "name": "PlainID",
      "url": "https://plainid.com",
      "email": "contact@plainid.com"
    },
    "license": {
      "name": "Commercial",
      "url": "https://plainid.com/license"
    },
    "termsOfService": "https://www.plainid.com/terms/",
    "description": "<h3>The PlainID Authorization Platform provides Management capabilities through the APIs below.</h3><h4> To access the Management APIs, make sure to enter your dedicated domain according to your PlainID Tenant Location:<table><thead><tr><th>Region</th><th>Base URL</th></tr></thead><tbody><tr><td>United States (US)</td><td>https://api.us1.plainid.io</td></tr><tr><td>Canada (CA)</td><td>https://api.ca1.plainid.io</td></tr><tr><td>Europe (EU)</td><td>https://api.eu1.plainid.io</td></tr><tr><td>Local PAA</td><td>https://api.plainid.local</td></tr></tbody></table>"
  },
  "servers": [
    {
      "description": "United States",
      "url": "https://api.us1.plainid.io"
    },
    {
      "description": "Europe",
      "url": "https://api.eu1.plainid.io"
    },
    {
      "description": "Canada",
      "url": "https://api.ca1.plainid.io"
    },
    {
      "description": "Local PAA",
      "url": "https://api.plainid.local"
    }
  ],
  "paths": {
    "/api/1.0/asset-templates/{envId}": {
      "post": {
        "summary": "Import Asset Template",
        "operationId": "importAssetTemplate",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "description": "This API call is designed to support CREATE and UPDATE operations to the indicated Environment. An **import** operation occurs when a *new* `templateId` is used. An **update** operation occurs if the `templateId` *already exists*.\n<br> <br>\n<h2>Notice</h2>Accessing the API call is through a dedicated domain/URL, according to your PlainID Tenant Location<li><b>United States (US)</b> - `https://api.us1.plainid.io`</li><li><b>Canada (CA)</b> - `https://api.ca1.plainid.io`</li><li><b>Europe (EU)</b> - `https://api.eu1.plainid.io`</li> <br> <h2>Using HTML Encoded Special Characters</h2> <p>Use HTML encoded patterns when working with values that contain special characters like spaces, dashes, etc. Refer to this <a href=\"https://www.w3schools.com/tags/ref_urlencode.ASP\" target=\"_blank\">HTML URL Encoding Reference</a> for a full list.</p> <br>\n\n<h2>Important note about headers</h2> <p>Refer to the headers below to modify your cURL sample. Check if the following headers are in the sample, if not, ensure you add it to your cURL sample before pasting into your API tool. </p> <h3>Headers</h3> *Required <table><thead> <tr> <th>Header</th> <th>Value</th> <th>cURL Line</th> </tr></thead> <tbody> <tr> <td>Accept</td> <td>`application/json`</td> <td> `-H \"Accept:application/json\"`</td> </tr> <tr> <td>Content-Type</td> <td>`application/json`</td> <td> `-H \"Content-Type:application/json\"`</td> </tr> </tbody> </table> <br> <h3>cURL Sample Guidelines</h3> <p>In order for the relevant parameters to appear in the cURL sample, you can input the values in the interactive API console on the right in the Try It or Code Sample tabs. You can then copy the cURL sample from the Code Sample tab in the correct format.</p>",
        "tags": [
          "Asset Template"
        ],
        "parameters": [
          {
            "name": "authWsId",
            "in": "query",
            "required": "true",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Authorization Workspace ID. This can be found in your Authorization Workspace Settings under Workspace ID."
          },
          {
            "name": "envId",
            "in": "path",
            "required": "true",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "description": "The Environment ID can be found under the Details Tab in the Environment Settings."
          }
        ],
        "requestBody": {
          "description": "Fields to update in the Asset Template",
          "required": "true",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AssetTemplate"
              },
              "examples": {
                "example": {
                  "value": {
                    "templateId": "Bank Accounts",
                    "displayName": "Bank Accounts",
                    "description": "This Asset Template describes the bank accounts",
                    "logoUrl": "url",
                    "source": "EXTERNAL",
                    "paaGroupId": "my_paa_group",
                    "viewName": "accounts",
                    "isAttributeSentInRequest": "false",
                    "isUsedForFiltering": "false",
                    "attributes": [
                      {
                        "attributeId": "accountnum",
                        "displayName": "accountNum",
                        "type": "STRING",
                        "maxLength": "21",
                        "isRequired": "false",
                        "isMultiValue": "false",
                        "canBeUpdated": "ONLY_ON_CREATE",
                        "isAvailableForPolicies": "true",
                        "nameForRequest": "accountNum",
                        "sourceAttribute": "accountNumber"
                      },
                      {
                        "attributeId": "accounttype",
                        "displayName": "accountType",
                        "type": "STRING",
                        "maxLength": "21",
                        "isRequired": "false",
                        "isMultiValue": "true",
                        "canBeUpdated": "ALWAYS",
                        "isAvailableForPolicies": "true",
                        "nameForRequest": "accountType",
                        "sourceAttribute": "accountType"
                      }
                    ],
                    "actions": [
                      {
                        "actionId": "Approve",
                        "value": "Approve"
                      },
                      {
                        "actionId": "Update",
                        "value": "Update123"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful operation",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetTemplateResponse"
                },
                "examples": {
                  "example": {
                    "value": {
                      "data": {
                        "templateId": "Bank Accounts",
                        "displayName": "Bank Accounts",
                        "description": "This Asset Template describes the bank accounts",
                        "logoUrl": "url",
                        "source": "EXTERNAL",
                        "paaGroupId": "my_paa_group",
                        "viewName": "accounts",
                        "isAttributeSentInRequest": "false",
                        "isUsedForFiltering": "false",
                        "attributes": [
                          {
                            "attributeId": "accountnum",
                            "displayName": "accountNum",
                            "type": "STRING",
                            "maxLength": "21",
                            "isRequired": "false",
                            "isMultiValue": "true",
                            "canBeUpdated": "ONLY_ON_CREATE",
                            "isAvailableForPolicies": "true",
                            "nameForRequest": "accountNum",
                            "sourceAttribute": "accountNumber"
                          },
                          {
                            "attributeId": "accounttype",
                            "displayName": "accountType",
                            "type": "STRING",
                            "maxLength": "21",
                            "isRequired": "false",
                            "isMultiValue": "false",
                            "canBeUpdated": "ALWAYS",
                            "isAvailableForPolicies": "true",
                            "nameForRequest": "accountType",
                            "sourceAttribute": "accountType"
                          }
                        ],
                        "actions": [
                          {
                            "actionId": "Approve",
                            "value": "Approve"
                          },
                          {
                            "actionId": "Update",
                            "value": "Update123"
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Validation Error",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "validationError": {
                    "$ref": "#/components/examples/missingNameValidation"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            }
          },
          "404": {
            "description": "Object not found",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            }
          },
          "422": {
            "description": "Payload Validation Error",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string",
                  "format": "uuid"
                },
                "description": "The ID of the request"
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AssetTemplate": {
        "type": "object",
        "description": "Asset Type",
        "required": [
          "templateId",
          "displayName",
          "source"
        ],
        "properties": {
          "displayName": {
            "type": "string",
            "maxLength": "100",
            "minLength": "1",
            "description": "A display name that acts as a label for your Asset Template."
          },
          "templateId": {
            "type": "string",
            "maxLength": "128",
            "minLength": "1",
            "description": "A unique string for the Asset Template."
          },
          "description": {
            "type": "string",
            "description": "A description for your Asset Template."
          },
          "logoUrl": {
            "type": "string",
            "description": "Logo URL for the Asset Template."
          },
          "source": {
            "type": "string",
            "enum": [
              "EXTERNAL",
              "PLAINID",
              "REQUEST"
            ],
            "description": "Repository type. This parameter refers to the location of your Assets.<br> **Note that some parameters are required based on the repository type.**"
          },
          "isAttributeSentInRequest": {
            "type": "boolean",
            "description": "**Required if using `\"source\": \"EXTERNAL\"` or `\"source\": \"PLAINID\"`* <br> Indicates if Asset Attributes in the request can override the source."
          },
          "isUsedForFiltering": {
            "type": "boolean",
            "description": "Indicates if the Asset Template is used for data filtering."
          },
          "paaGroupId": {
            "type": "string",
            "maxLength": "128",
            "description": "**Required if using `\"source\": \"EXTERNAL\"`.* <br> PAA Group ID. PAA Groups at the Tenant level have a suffix of `_GLOBAL`"
          },
          "viewName": {
            "type": "string",
            "description": "**Required if using `\"source\": \"EXTERNAL\"`.* <br> Asset Template View name. The View Name that supports the External Asset as predefined in the PIP Settings"
          },
          "attributes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Attribute"
            }
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            }
          }
        }
      },
      "AssetTemplateResponse": {
        "type": "object",
        "description": "Asset Type",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AssetTemplate"
          }
        }
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "details": {
            "type": "string"
          }
        }
      },
      "Attribute": {
        "type": "object",
        "description": "Attribute",
        "required": [
          "attributeId",
          "displayName",
          "type",
          "nameForRequest"
        ],
        "properties": {
          "displayName": {
            "type": "string",
            "minLength": "1",
            "maxLength": "100",
            "description": "A display name that acts as a label for your Attribute."
          },
          "attributeId": {
            "type": "string",
            "maxLength": "128",
            "minLength": "1",
            "description": "A unique string for the Attribute."
          },
          "type": {
            "type": "string",
            "enum": [
              "STRING",
              "NUMERIC"
            ],
            "description": "Attribute Data Type"
          },
          "isCalculated": {
            "type": "boolean",
            "description": "Set whether the Attribute is calculated."
          },
          "calculationFunction": {
            "type": "string",
            "description": "Calculated Attribute calculation function. See [Working with Calculated Attributes](/apidocs/working-with-calculated-attributes){target=`_blank`} for more information."
          },
          "sourceAttribute": {
            "type": "string",
            "description": "**Required if using `\"source\": \"EXTERNAL\"`.* <br> Source Attribute name for the Attribute as defined in the View."
          },
          "isAvailableForPolicies": {
            "type": "boolean",
            "description": "Indicates if the Attribute is allowed for Policies."
          },
          "nameForRequest": {
            "type": "string",
            "minLength": "1",
            "description": "The name of the Attribute as it should appear in an Authorization Request."
          },
          "isMultiValue": {
            "type": "boolean",
            "description": "**Required if using `\"source\": \"EXTERNAL\"` or `\"source\": \"PLAINID\"`.* <br> Indicates if the Attribute accepts either a single or multi value. If set to `false`, the Attribute accepts a single value. If set to `true`, the Attribute accepts a multivalue."
          },
          "defaultValue": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "description": "**Required if using `\"source\": \"PLAINID\"`.* <br>  Default Values for the Attribute."
          },
          "maxLength": {
            "type": "integer",
            "minimum": "1",
            "maximum": "9999",
            "description": "**Required if using `\"source\": \"PLAINID\"`.* <br> Attribute maximum length"
          },
          "isRequired": {
            "type": "boolean",
            "description": "**Required if using `\"source\": \"PLAINID\"`.* <br> Indicates if the Attribute is required."
          },
          "canBeUpdated": {
            "type": "string",
            "enum": [
              "false",
              "ONLY_ON_CREATE",
              "ALWAYS"
            ],
            "description": "**Required if using `\"source\": \"PLAINID\"`.* <br> Indicates if the PlainID Attribute can be updated."
          }
        }
      },
      "Action": {
        "type": "object",
        "description": "Action",
        "required": [
          "actionId",
          "value"
        ],
        "properties": {
          "actionId": {
            "type": "string",
            "maxLength": "100",
            "minLength": "1",
            "description": "Action ID"
          },
          "value": {
            "type": "string",
            "maxLength": "1000",
            "description": "Action Value"
          },
          "type": {
            "type": "string",
            "description": "Action Type. This parameter is *only relevant for Orchestration Asset Templates.*"
          }
        }
      }
    },
    "examples": {
      "missingNameValidation": {
        "value": {
          "errors": [
            {
              "code": "ATV-015",
              "args": {
                "0": "non_existing_paa_name_Global",
                "path": "$.paaGroupId"
              },
              "id": "EBS8Z6",
              "status": "400",
              "name": "AssetTemplatePaaGroupDoesNotExistError",
              "message": "Asset Template global PAA Group ID: [$.paaGroupId] does not exist"
            }
          ]
        }
      }
    }
  }
}
````

