Create new assets.
Request
Request headers
| Key | Required | Type | Description |
|---|---|---|---|
| x-batch | No | boolean |
Required only for batch processing. Set this key to true to enable asynchronous batch processing. When true, queues the operation for background execution and returns immediately with 202 Accepted. Use for bulk operations (>100 items) or when immediate response is not required. Batch jobs are processed via BullMQ with retry logic. Set this to true for asynchronous processing of more than 250 assets, or set x-force-batch to true for smaller loads. |
| x-batch-size | No | integer |
Number of items to process per batch chunk. Controls memory usage and throughput. Larger batches (1000-5000) improve throughput but increase memory usage. Smaller batches (100-500) reduce memory footprint but take longer. Maximum: 5000. |
| x-batch-callback-url | No | string | Webhook URL to receive batch completion notification. Server sends POST request with execution results when batch finishes. Useful for long-running operations where client needs async notification. Must be publicly accessible HTTPS endpoint. |
| externalExecutionId | No | string | Client-provided unique identifier for tracking external batch operations. Allows correlation between client systems and data catalog batch jobs. Useful for audit trails and reconciliation. Must be unique per batch operation. |
Request body properties
The request body contains an array of oobjects that define new assets.
| Ancestors | Property | Required | Type | Description |
|---|---|---|---|---|
| parentId | No | string |
The parent ID is required when the assetType defines a parent, for example when the schema requires a database parent, or a table requires a schema parent.
Omit the parent ID when the assetType has no parent type, such as occurs for root-level assets like a database or business term. |
|
| assetTypeId | Yes | string |
|
|
| xref | No | array |
An array of cross-reference identifiers used for idempotent upserts.
This array is auto generated if omitted as a random 6-byte hex string (such as, |
|
| scoresValues | No |
Data quality/governance scores (0–1 range). Keys are |
||
| scoresUpdated | No |
ISO timestamps for when each score was last calculated. Keys much match the entries in scoresValues. |
||
| counter | No | object |
Numeric counter for aggregate statistics (row count, file size, and so forth). |
|
| counter | value | Yes | number |
Numeric value. Maximum value is 2,147,483,647. |
| counter | valueWithPrefix | No | string |
A human readable string, such as |
| color | No | string | ||
| properties | No | array |
|
|
| tags | No | array | ||
| semanticType | No | object | ||
| semanticType | qualifier | Yes | string | |
| triggersWorkflow | No | boolean |
This property may be set to |
A single asset demonstrating selected fields.
[
{
"parentId": "4efeaCfe9FC55abcCB5Da0fb",
"assetTypeId": "d3AbCeBE2a1F760f22FCc78F",
"counter": {
"value": 32630529.364159733,
"valueWithPrefix": "exercitation"
},
"color": "Sample color",
"properties": [
{
"name": "Name",
"value": "Test_2"
}
],
"xref": [
"ON4Hr2P9gsV0R6akRx2Hsw=="
],
"tags": []
}
]A single asset demonstrating every available field.
[
{
// Required
"assetTypeId": "653b82b54264fef0f9a52a06",
// Conditional (required if assetType has a parent type)
"parentId": "64fc3a2a1b9e4c0012d34abc",
// Optional — cross-reference identifiers for idempotent upserts
"xref": [
"salesforce:Account:001Dn000007gMEn",
"crm::customers::v2"
],
// Optional — property values
"properties": [
{ "name": "Name", "value": "Customers" },
{ "name": "Description", "value": "Master customer entity" },
{ "name": "Owner", "value": "Data Engineering" }
],
// Optional — tag assignments
"tags": [
{ "tagTypeId": "7b3f210a9c4e5d8b1f2a3c6e", "value": "PII" },
{ "tagTypeId": "9c4d321b8e5f6a9c2b3d4e7f", "value": "Certified" }
],
// Optional — semantic type qualifier
"semanticType": {
"qualifier": "PersonName"
},
// Optional — quality/governance scores (0-1 range)
"scoresValues": {
"Quality": 0.94,
"Governance": 0.78,
"Trust": 0.89
},
// Optional — score calculation timestamps
"scoresUpdated": {
"Quality": "2026-03-06T02:00:00.000Z",
"Governance": "2026-02-20T14:30:00.000Z",
"Trust": "2026-02-28T09:15:00.000Z"
},
// Optional — aggregate counter (row count, file size, etc)
"counter": {
"value": 4250000,
"valueWithPrefix": "4.25M rows"
},
// Optional — UI color
"color": "#3A86FF",
// Optional — whether to trigger workflows (defaults to true)
"triggersWorkflow": true
}
]The Database assetType has no parent type, so the parentId is omitted. Set the x-batch key in the request header to true.
[
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"properties": [
{ "name": "Name", "value": "Production Database" }
]
// xref omitted — backend will auto-generate a random hex string
// Not recommended for recurring ingestion (will create duplicates)
},
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"properties": [
{ "name": "Name", "value": "Staging Database" }
]
}
]Three table assets with stable xrefs. Resubmitting this payload will update the existing assets instead of creating duplicates. Set the x-batch key in the request header to true.
[
{
"assetTypeId": "653b82b54264fef0f9a52a06",
// xref: SHA-256 hash or namespace-based stable identifier for idempotent upsert
"xref": ["snowflake::PROD_DB::PUBLIC::CUSTOMERS"],
"properties": [
{ "name": "Name", "value": "CUSTOMERS" },
{ "name": "Description", "value": "Master customer table" }
]
},
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"xref": ["snowflake::PROD_DB::PUBLIC::ORDERS"],
"properties": [
{ "name": "Name", "value": "ORDERS" },
{ "name": "Description", "value": "Transactional orders" }
]
},
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"xref": ["snowflake::PROD_DB::PUBLIC::PRODUCTS"],
"properties": [
{ "name": "Name", "value": "PRODUCTS" },
{ "name": "Description", "value": "Product catalogue" }
]
}
]One Database (root) followed by two Schema children. Schema assetType defines the database as its parent type, so parentId is required and points to the parent database asset. Set the x-batch key in the request header to true.
id from the response, then use that id as parentId in the child payload.[
{
// Parent asset (Database) — no parentId because Database has no parent type
"assetTypeId": "653b82b54264fef0f9a52a06",
"xref": ["prod-db"],
"properties": [
{ "name": "Name", "value": "Production DB" }
]
},
{
// Child asset (Schema) — parentId REQUIRED because Schema assetType has a parent
"assetTypeId": "7a4c91e03b72dfa1c8b03d14",
"parentId": "64fc3a2a1b9e4c0012d34abc", // ObjectId of the parent Database asset
"xref": ["prod-db::public"],
"properties": [
{ "name": "Name", "value": "public" }
]
},
{
"assetTypeId": "7a4c91e03b72dfa1c8b03d14",
"parentId": "64fc3a2a1b9e4c0012d34abc", // Same parent Database
"xref": ["prod-db::audit"],
"properties": [
{ "name": "Name", "value": "audit" }
]
}
]Add assets from an automated quality/profiling job that computes scores and row counts. Set the x-batch key in the request header to true.
[
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"xref": ["dbt::prod::customers"],
"properties": [
{ "name": "Name", "value": "customers" },
{ "name": "Schema", "value": "public" }
],
// scoresValues: Data quality/governance scores (0-1 range)
"scoresValues": {
"Quality": 0.96, // 96% quality score
"Governance": 0.82, // 82% governance compliance
"Trust": 0.91 // 91% trust/confidence
},
// scoresUpdated: When each score was last calculated
"scoresUpdated": {
"Quality": "2026-03-06T02:00:00.000Z",
"Governance": "2026-03-05T18:00:00.000Z",
"Trust": "2026-03-06T02:00:00.000Z"
},
// counter: Row count or other aggregate metric
"counter": {
"value": 4250000, // Raw count
"valueWithPrefix": "4.25M rows" // Human-readable display string
}
},
{
"assetTypeId": "653b82b54264fef0f9a52a06",
"xref": ["dbt::prod::orders"],
"properties": [
{ "name": "Name", "value": "orders" }
],
"scoresValues": {
"Quality": 0.88,
"Governance": 0.70,
"Trust": 0.83
},
"scoresUpdated": {
"Quality": "2026-03-06T02:00:00.000Z",
"Governance": "2026-03-05T18:00:00.000Z",
"Trust": "2026-03-06T02:00:00.000Z"
},
"counter": {
"value": 18920000,
"valueWithPrefix": "18.9M rows"
}
}
]Response
The result for this method is returned in the response body.
Response body properties
| Ancestors | Property | Required | Type | Description |
|---|---|---|---|---|
| data | array(object) | Data envelope for response. | ||
| data | id | No | string |
|
| data | parentId | No | string |
|
| data | assetTypeId | No | string |
|
| data | xref | No | array | |
| data | scoresValues | No | ||
| data | scoresUpdated | No | ||
| data | counter | No | object | |
| data/counter | value | Yes | number | |
| data/counter | valueWithPrefix | No | string | |
| data | color | No | string | |
| data | class | No | string |
This property is an enumerated string type (enum) set to one of these values:
|
| data | properties | No | array | |
| data | tags | No | array | |
| data | displayValue | No | string |
|
| data | assetTypeName | No | string | |
| data | path | No | array | |
| data | assetGroups | No | array | |
| data | semanticType | No | object | |
| data/semanticType | qualifier | Yes | string | |
| data/semanticType | overridden | No | boolean |
This property may be set to |
| data/semanticType | updatedAt | No | string |
|
| data | createdBy | No | string | |
| data | createdAt | No | string |
|
| data | updatedBy | No | string | |
| data | updatedAt | No | string |
|
| data | metrics | No | array | |
| data | assetTypeXrefs | No | array | |
| data | isPlaceholder | No | boolean |
This property may be set to |
| data | keyPath | No | string | |
| data | level | No | number | |
| data | displayPath | No | string | |
| data | location | No | string | |
| data | isLeaf | No | boolean |
This property may be set to |
Response body examples
Example status code responses for this method are shown here. To view the response schemas, you can download the Data Catalog APIs Open API Specification from the Precisely Developer Portal..
{
"data": [
{
"id": "fEdE078426900844f0944Ecc",
"assetTypeId": "d3AbCeBE2a1F760f22FCc78F",
"class": "Technical",
"createdBy": "nostrud",
"createdAt": "1999-03-25T00:16:12.949Z",
"updatedBy": "Sample User",
"updatedAt": "1979-04-22T15:43:26.664Z",
"parentId": "4efeaCfe9FC55abcCB5Da0fb",
"xref": [
Sample xref
]
"color": "Sample color",
"counter": {
"value": "32630529.364159733",
"valueWithPrefix": "exercitation"
}
"metrics": [
{
"metricTypeId": "870DDB0EbaCFfC4cca56DbBe",
"value": "98854747.6530267",
"lastUpdatedOn": "1974-02-21T23:02:09.797Z"
}
]
"assetTypeXrefs": "Sample assetTypeXref 1",
"assetTypeXrefs": "Sample assetTypeXref 2",
"isPlaceholder": "false",
"keyPath": "Sample keyPath",
"level": "-54930120.069365576"
}
]
"links": {
"self": "https://api.cloud.precisely.com/assets"
}
}
{
"statusCode": 400,
"error": "Bad Request",
"message": "Bad Request"
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Authentication required"
}{
"statusCode": 404,
"error": "Not Found",
"message": "Resource not found"
}{
"statusCode": 429,
"error": "Too Many Requests",
"message": "Rate limit exceeded"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An unexpected error occurred"
}{
"statusCode": 503,
"error": "Service Unavailable",
"message": "Service temporarily unavailable"
}{
"statusCode": 504,
"error": "Gateway Timeout",
"message": "Request timeout"
}