{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"Provision Resources","description":"Learn how to provision Iceberg catalog resources for your Treasure AI account using the Resource Provisioning API.","siteUrl":"https://docs.treasure.ai","lang":"en-US","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.treasure.ai/","name":"Treasure AI","url":"https://www.treasure.ai/","logo":"https://www.treasure.ai/hubfs/assets/images/logos/primary-logo.svg"},{"@type":"WebSite","@id":"https://docs.treasure.ai/#website","name":"Treasure AI Documentation","url":"https://docs.treasure.ai/","inLanguage":["en","ja"],"publisher":{"@id":"https://www.treasure.ai/"}}]},"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"provision-resources","__idx":0},"children":["Provision Resources"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This feature is not enabled on accounts by default. Contact Technical Support or your Customer Success representative to enable it."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide explains how to provision Iceberg catalog resources for your Treasure AI account using the Resource Provisioning API."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before you can use the Iceberg catalog (create tables, grant permissions, etc.), your account must have its underlying AWS resources provisioned. This includes:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An S3 bucket for storing Iceberg table data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A default Glue database for the Iceberg catalog metadata"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["An IAM role for reading table data from external services (e.g., Databricks, Snowflake)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Provisioning is a one-time operation per account. Once resources are active, you can create databases, manage permissions, and start writing Iceberg tables."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Only ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["admin users"]}," can provision and manage resources."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication","__idx":2},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For authentication details and API endpoints by site, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/customer-data-platform/composable-publish/use-iceberg-catalog-api"},"children":["Use Iceberg Catalog Management API"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resource-status","__idx":3},"children":["Resource Status"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Provisioned resources go through the following statuses:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["creating"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resource provisioning is in progress"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resources are ready to use"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updating"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A configuration update (e.g., trust policy) is in progress"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provisioning failed (can be retried)"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"api-endpoints","__idx":4},"children":["API Endpoints"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"provision-resources-1","__idx":5},"children":["Provision Resources"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"POST /v1/iceberg/catalog/resources\nAuthorization: TD1 <admin_api_key>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Initiates resource provisioning for your account. This is an asynchronous operation — the response returns immediately with an initial ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["creating"]}," status."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"curl-example","__idx":6},"children":["curl Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"curl -X POST \"https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources\" \\\n  -H \"Authorization: TD1 <admin_api_key>\" \\\n  -H \"Accept: application/json\"\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"response-201-created","__idx":7},"children":["Response (201 Created)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"status\": \"creating\",\n  \"aws_region\": \"us-east-1\",\n  \"aws_account_id\": \"123456789012\",\n  \"iam_role_arn\": \"arn:aws:iam::123456789012:role/zcpo-hms-tenant-us01_td10000\",\n  \"external_location_url\": \"s3://zcp-us01-td10000-a1b2c3d4/iceberg\",\n  \"db_name\": \"td10000_us01_export\",\n  \"db_count\": 0,\n  \"updated_at\": 1719216000\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Current provisioning status"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aws_region"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AWS region where resources are provisioned"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aws_account_id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["AWS account ID hosting the resources"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["iam_role_arn"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ARN of the table reader IAM role for external access"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["external_location_url"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["S3 location where Iceberg table data is stored"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["db_name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Default Glue database name"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["db_count"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Number of user-created databases (excludes the default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["export"]},")"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["updated_at"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Unix timestamp (seconds) of the last status update"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"error-responses","__idx":8},"children":["Error Responses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Condition"},"children":["Condition"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Non-admin user, or write-only API key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["409"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resources are already provisioned for the account"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["500"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Provisioning failed (transient error, can retry)"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"get-resource-status","__idx":9},"children":["Get Resource Status"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"GET /v1/iceberg/catalog/resources\nAuthorization: TD1 <admin_api_key>\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Returns the current state of provisioned resources, including the live provisioning status."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"curl-example-1","__idx":10},"children":["curl Example"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"curl \"https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources\" \\\n  -H \"Authorization: TD1 <admin_api_key>\" \\\n  -H \"Accept: application/json\"\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"response-200-ok","__idx":11},"children":["Response (200 OK)"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"status\": \"active\",\n  \"aws_region\": \"us-east-1\",\n  \"aws_account_id\": \"123456789012\",\n  \"iam_role_arn\": \"arn:aws:iam::123456789012:role/zcpo-hms-tenant-us01_td10000\",\n  \"external_location_url\": \"s3://zcp-us01-td10000-a1b2c3d4/iceberg\",\n  \"db_name\": \"td10000_us01_export\",\n  \"db_count\": 0,\n  \"updated_at\": 1719216060\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"error-responses-1","__idx":12},"children":["Error Responses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Condition"},"children":["Condition"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Non-admin user, or write-only API key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resources are not provisioned for the account"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"common-tasks","__idx":13},"children":["Common Tasks"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"provision-resources-and-verify-they-are-active","__idx":14},"children":["Provision resources and verify they are active"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Start provisioning:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"curl -X POST \"https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources\" \\\n  -H \"Authorization: TD1 <admin_api_key>\" \\\n  -H \"Accept: application/json\"\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":2},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Poll until the status becomes ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]}," (typically takes 1–2 minutes):"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sh","header":{"controls":{"copy":{}}},"source":"curl \"https://api-iceberg-mng.us01.treasuredata.com/v1/iceberg/catalog/resources\" \\\n  -H \"Authorization: TD1 <admin_api_key>\" \\\n  -H \"Accept: application/json\"\n","lang":"sh"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Once the status is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},", you can proceed to grant permissions and create tables."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"retry-after-a-failed-provisioning","__idx":15},"children":["Retry after a failed provisioning"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If provisioning fails (status ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["failed"]},"), you can retry by calling the POST endpoint again."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The system will re-attempt resource creation. If the failure persists, contact Treasure AI support."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"important-notes","__idx":16},"children":["Important Notes"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provisioning is a one-time operation. Once resources are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["active"]},", calling the provision endpoint again returns a 409 Conflict."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The reader IAM role ARN and S3 location are stable after provisioning — they do not change across trust policy updates."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The default ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["export"]}," database is provisioned automatically and cannot be deleted. Additional databases can be created using the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/customer-data-platform/composable-publish/database-management"},"children":["Database Management API"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["After provisioning, grant users access to databases via the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/customer-data-platform/composable-publish/permission-management"},"children":["Permission Management API"]}," before they can query from Data Workbench."]}]}]},"headings":[{"value":"Provision Resources","id":"provision-resources","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"Authentication","id":"authentication","depth":2},{"value":"Resource Status","id":"resource-status","depth":2},{"value":"API Endpoints","id":"api-endpoints","depth":2},{"value":"Provision Resources","id":"provision-resources-1","depth":3},{"value":"curl Example","id":"curl-example","depth":4},{"value":"Response (201 Created)","id":"response-201-created","depth":4},{"value":"Error Responses","id":"error-responses","depth":4},{"value":"Get Resource Status","id":"get-resource-status","depth":3},{"value":"curl Example","id":"curl-example-1","depth":4},{"value":"Response (200 OK)","id":"response-200-ok","depth":4},{"value":"Error Responses","id":"error-responses-1","depth":4},{"value":"Common Tasks","id":"common-tasks","depth":2},{"value":"Provision resources and verify they are active","id":"provision-resources-and-verify-they-are-active","depth":3},{"value":"Retry after a failed provisioning","id":"retry-after-a-failed-provisioning","depth":3},{"value":"Important Notes","id":"important-notes","depth":2}],"frontmatter":{"seo":{"title":"Provision Resources","description":"Learn how to provision Iceberg catalog resources for your Treasure AI account using the Resource Provisioning API."}},"lastModified":"2026-06-25T01:09:40.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/customer-data-platform/composable-publish/resource-provisioning","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}