{"_id":"@dynatrace-sdk/client-resource-store","_rev":"2-c20ee373828153e0f6d5ca22d981279f","name":"@dynatrace-sdk/client-resource-store","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.0":{"name":"@dynatrace-sdk/client-resource-store","version":"1.0.0","license":"Apache-2.0","_id":"@dynatrace-sdk/client-resource-store@1.0.0","maintainers":[{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"stefan.wolfsteiner.dynatrace","email":"stefan.wolfsteiner@dynatrace.com"},{"name":"wasserb","email":"Stefan.wasserbauer@dynatrace.com"}],"dist":{"shasum":"8fa43bceefa87a378c6657acfd5b5ed05342e386","tarball":"https://registry.npmjs.org/@dynatrace-sdk/client-resource-store/-/client-resource-store-1.0.0.tgz","fileCount":38,"integrity":"sha512-fSD6G2vvQKZ8y+B3S+fDb28YNJTkCxFTXbPYagNsxS/errUviPAOnMYRVA76J3aSvyBand0RXKJBRLbP/tOhGA==","signatures":[{"sig":"MEUCIQCFWh4ywXxFhtzmSFh3HDFY5wmiHX2fB+uljcAk/QGs4wIgaQq/f3presySZfaGtRQe0PRnetaJkp8OQKq80/hsS3g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141413},"main":"./cjs/index.js","_from":"file:dynatrace-sdk-client-resource-store-1.0.0.tgz","types":"./types/index.d.ts","module":"./esm/index.js","_npmUser":{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},"_resolved":"/tmp/npm-publish-@dynatrace-sdk-client-resource-store-1.0.0-zFnioq/dynatrace-sdk-client-resource-store-1.0.0.tgz","_integrity":"sha512-fSD6G2vvQKZ8y+B3S+fDb28YNJTkCxFTXbPYagNsxS/errUviPAOnMYRVA76J3aSvyBand0RXKJBRLbP/tOhGA==","_npmVersion":"10.2.4","description":"[![npm](https://img.shields.io/badge/npm-v1.0.0-blue)](https://www.npmjs.com/package/@dynatrace-sdk/client-resource-store/v/1.0.0) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)","directories":{},"_nodeVersion":"20.11.0","dependencies":{"@dynatrace-sdk/http-client":"^1.4.0","@dynatrace-sdk/shared-errors":"^1.0.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/client-resource-store_1.0.0_1775208255912_0.25955712978562673","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@dynatrace-sdk/client-resource-store","version":"1.1.0","dependencies":{"@dynatrace-sdk/http-client":"^1.5.1","@dynatrace-sdk/shared-errors":"^1.0.2"},"license":"Apache-2.0","main":"./cjs/index.js","module":"./esm/index.js","types":"./types/index.d.ts","_id":"@dynatrace-sdk/client-resource-store@1.1.0","description":"[![npm](https://img.shields.io/badge/npm-v1.1.0-blue)](https://www.npmjs.com/package/@dynatrace-sdk/client-resource-store/v/1.1.0) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)","_integrity":"sha512-c/844kLLs+CS0oIkkt636zyV7H47iLCvL+NWArEwrlPQxImJxqymiXhac7zOVuxsWqe5JLFbELvXY0XrxQVMYA==","_resolved":"/tmp/npm-publish-@dynatrace-sdk-client-resource-store-1.1.0-Xb4ICY/dynatrace-sdk-client-resource-store-1.1.0.tgz","_from":"file:dynatrace-sdk-client-resource-store-1.1.0.tgz","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-c/844kLLs+CS0oIkkt636zyV7H47iLCvL+NWArEwrlPQxImJxqymiXhac7zOVuxsWqe5JLFbELvXY0XrxQVMYA==","shasum":"c6754b6f5253c6bfb7a15aeff80f37d5974d8351","tarball":"https://registry.npmjs.org/@dynatrace-sdk/client-resource-store/-/client-resource-store-1.1.0.tgz","fileCount":8,"unpackedSize":140244,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDdiC/6xrgPjgg8ri5EFE3/lpMai7BAjxryiuJSYVRlmAiAP9iUO1WPmiI53EsLEe0jmI3AdTppfPf0KB3Bza+6fbA=="}]},"_npmUser":{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},"directories":{},"maintainers":[{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"stefan.wolfsteiner.dynatrace","email":"stefan.wolfsteiner@dynatrace.com"},{"name":"wasserb","email":"Stefan.wasserbauer@dynatrace.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/client-resource-store_1.1.0_1788157760542_0.2553904261667086"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T09:24:15.810Z","modified":"2026-08-31T06:29:20.837Z","1.0.0":"2026-04-03T09:24:16.051Z","1.1.0":"2026-08-31T06:29:20.683Z"},"license":"Apache-2.0","description":"[![npm](https://img.shields.io/badge/npm-v1.1.0-blue)](https://www.npmjs.com/package/@dynatrace-sdk/client-resource-store/v/1.1.0) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)","maintainers":[{"name":"dynatrace-nodejs","email":"nodejs@dynatrace.com"},{"name":"stefan.wolfsteiner.dynatrace","email":"stefan.wolfsteiner@dynatrace.com"},{"name":"wasserb","email":"Stefan.wasserbauer@dynatrace.com"}],"readme":"# @dynatrace-sdk/client-resource-store\n\n[![npm](https://img.shields.io/badge/npm-v1.1.0-blue)](https://www.npmjs.com/package/@dynatrace-sdk/client-resource-store/v/1.1.0)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nDocumentation of the Dynatrace Resource Store API for Grail.\nTo read about use cases and examples, see\n[Dynatrace Documentation](https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail)\n\n\n## Installation\n\n```bash\nnpm install @dynatrace-sdk/client-resource-store\n```\n\n\n## Getting help\n\n- Visit [SDK for Typescript](https://developer.dynatrace.com/reference/sdks/) guide in the [Dynatrace Developer](https://developer.dynatrace.com/)\n- Ask a question in the [Dynatrace Community](https://community.dynatrace.com/)\n\n\n## License\n\nThis SDK is distributed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), see LICENSE for more information.\n\n\n# API reference\n\nFull API reference for the latest version of the SDK is also available at the [Dynatrace Developer](https://developer.dynatrace.com/reference/sdks/client-resource-store/).\n\n## lookupDataClient\n\n```js\nimport { lookupDataClient } from '@dynatrace-sdk/client-resource-store';\n```\n\n\n<a name=\"delete\"></a>\n### delete\n\n<div class=\"padding-bottom--md\">\n<strong>lookupDataClient.delete(config): Promise&lt;void&gt;</strong>\n\n<div class=\"padding-left--md\">\n\nDelete file.\n\n# Delete file\n\nDelete a file from the Grail Resource Store.\n\n**ATTENTION - This operation is irreversible.**\n\nThe request body needs to contain the request parameters (see below) in JSON format.\n\n## Request parameters\n\n* `filePath` (**required**) - The fully qualified file path of the file. Example: * /lookups/mydata*.\n\n## Permissions\n\nRequired permissions: `storage:files:delete`\n\n\n\n</div>\n\n\n#### Parameters\n\n| Name | Type |\n| --- | --- |\n|config.body<sup>*required</sup>|<a href=\"#resourcedeleterequest\">ResourceDeleteRequest</a>|\n\n\n\n\n#### Returns\n\n| Return type | Status code | Description |\n|---|---|---|\n|void|204|The requested file has been deleted successfully.|\n\n\n#### Throws\n\n| Error Type | Error Message |\n|---|---|\n|ErrorEnvelopeError|Bad request for deleting the file. &#124; Unauthorized. &#124; Access forbidden. &#124; The file does not exist. &#124; Internal Server Error &#124; Client Error &#124; Server Error|\n\n\n<details>\n<summary>\nCode example\n</summary>\n\n```ts\nimport { lookupDataClient } from \"@dynatrace-sdk/client-resource-store\";\n\nconst data = await lookupDataClient.delete({\n  body: { filePath: \"/lookups/mydata\" },\n});\n```\n\n</details>\n\n\n\n</div>\n\n\n<a name=\"upload\"></a>\n### upload\n\n<div class=\"padding-bottom--md\">\n<strong>lookupDataClient.upload(config): Promise&lt;<a href=\"#resourceuploadresponse\" target=\"_blank\" rel=\"noopener noreferrer\">ResourceUploadResponse</a>&gt;</strong>\n\n<div class=\"padding-left--md\">\n\nUpload lookup data\n\n# Upload lookup data\n\nUpload lookup data and store it as a new tabular file in the Grail Resource Store or replace an existing one.\nThe request body needs to be submitted as `multipart/form-data` with the following parts:\n* request: containing the request parameters (see below) in JSON format\n* content: containing the lookup data in text format\n\nThe uploaded data is parsed using the\n[Dynatrace Pattern Language (DPL)](https://docs.dynatrace.com/docs/discover-dynatrace/references/dynatrace-pattern-language).\nFor examples, see the [Dynatrace Documentation](https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail).\n\n## Request parameters\n\n* `filePath` (**required**)  - The fully qualified file path of the tabular file to store the\nlookup\ndata in Grail. Example: /lookups/mydata. The following constraints apply:\n  * must only contain alphanumeric characters `[a-zA-Z0-9]`, `-`, `_`, `.`, `/`\n  * must start with `/lookups`\n  * must end with `[a-zA-Z0-9]`\n  * must contain at least two `/` characters\n  * between any two consecutive `/` characters there must be at least one `[a-zA-Z0-9]` character\n  * can be up to 500 characters long\n* `overwrite` - If false and the file already exists, the upload fails. Set to true to allow\n    overwriting existing files. Default: false\n* `displayName` - An optional name for the file. The length is limited to 500 characters.\n* `description` - An optional description for the file. The length is limited to 500 characters.\n* `parsePattern` (**required**) - The DPL pattern to parse the uploaded data. Every pattern match\nproduces a record. Example: `LD:id ',' LD:value`.\n* `skippedRecords` - The number of initial records to discard. Can be used to skip header rows.\n  Default: 0\n* `lookupField` (**required**) - The name of the lookup field whose value identifies a record in\n  the lookup data. **The uniqueness of the values is ensured by deduplicating records during\n  upload, if  necessary.**\n* `timezone` - The timezone for parsing time and date fields. The list of valid input values\nmatches that of the IANA Time Zone Database (TZDB). Example: UTC.\n* `locale` - The locale for parsing locale-specific day and month names. The input values take the\n  ISO-639 Language code with an optional ISO-3166 country code appended to it with an underscore.\n  Example: en_US.\n* `autoFlatten` - Set to true to extract nested fields to the root level when the specified DPL\n  pattern results in a single record-type field. Default: true\n* `dt.cost.costcenter` - Can be used to assign usage to a Cost Center.\n* `dt.cost.product` - Can be used to assign usage to a Product or Application Id.\n\n## Permissions\n\nRequired permissions: `storage:files:write`\n\n\n\n</div>\n\n\n#### Parameters\n\n| Name | Type |\n| --- | --- |\n|config.body<sup>*required</sup>|<a href=\"#resourceuploadrequestenvelope\">ResourceUploadRequestEnvelope</a>|\n\n\n\n\n#### Returns\n\n| Return type | Status code | Description |\n|---|---|---|\n|[ResourceUploadResponse](#resourceuploadresponse)|200|The requested table has been saved successfully.|\n\n\n#### Throws\n\n| Error Type | Error Message |\n|---|---|\n|ErrorEnvelopeError|Bad request for uploading the lookup data. &#124; Unauthorized. &#124; Access forbidden. &#124; Conflict because the requested table already exists and <code>override</code> parameter was set to false. &#124; The uploaded file or the JSON request were too large. &#124; Too many concurrent requests. &#124; Internal Server Error &#124; Client Error &#124; Server Error|\n\n\n<details>\n<summary>\nCode example\n</summary>\n\n```ts\nimport { lookupDataClient } from \"@dynatrace-sdk/client-resource-store\";\n\nconst data = await lookupDataClient.upload({\n  body: {\n    content: \"...\",\n    request: {\n      filePath: \"/lookups/mydata\",\n      lookupField: \"id\",\n      parsePattern: \"LD:id ',' LD:value\",\n    },\n  },\n});\n```\n\n</details>\n\n\n\n</div>\n\n\n<a name=\"uploadtotestpattern\"></a>\n### uploadToTestPattern\n\n<div class=\"padding-bottom--md\">\n<strong>lookupDataClient.uploadToTestPattern(config): Promise&lt;<a href=\"#resourcetestpatternresponse\" target=\"_blank\" rel=\"noopener noreferrer\">ResourceTestPatternResponse</a>&gt;</strong>\n\n<div class=\"padding-left--md\">\n\nTest parsing lookup data without storing the result in the Grail Resource Store.\n\n# Test parsing lookup data\n\nTest parsing lookup data without storing the result in the Grail Resource Store.\nThe request body needs to be submitted as `multipart/form-data` with the following parts:\n* request: containing the request parameters (see below) in JSON format\n* content: containing the lookup data in text format\n\nThe uploaded data is parsed using the\n[Dynatrace Pattern Language (DPL)](https://docs.dynatrace.com/docs/discover-dynatrace/references/dynatrace-pattern-language).\nFor examples, see the [Dynatrace Documentation](https://docs.dynatrace.com/docs/discover-dynatrace/platform/grail).\n\n## Request parameters\n\n* `parsePattern` (**required**) - The DPL pattern to parse the uploaded data. Every pattern match\n  produces a record. Example: `LD:id ',' LD:value`.\n* `skippedRecords` - The number of initial records to discard. Can be used to skip header rows.\n  Default: 0\n* `lookupField` - The name of the lookup field whose value identifies a record in\n  the lookup data. The uniqueness of the values is ensured by deduplicating records during\n  upload, if  necessary.\n* `timezone` - The timezone for parsing time and date fields. The list of valid input values\n  matches that of the IANA Time Zone Database (TZDB). Example: UTC.\n* `locale` - The locale for parsing locale-specific day and month names. The input values take the\n  ISO-639 Language code with an optional ISO-3166 country code appended to it with an underscore.\n  Example: en_US.\n* `autoFlatten` - Set to true to extract nested fields to the root level when the specified DPL\n  pattern results in a single record-type field. Default: true\n\n## Permissions\n\nRequired permissions: `storage:files:write`\n\n\n\n</div>\n\n\n#### Parameters\n\n| Name | Type |\n| --- | --- |\n|config.body<sup>*required</sup>|<a href=\"#resourcetestpatternrequestenvelope\">ResourceTestPatternRequestEnvelope</a>|\n\n\n\n\n#### Returns\n\n| Return type | Status code | Description |\n|---|---|---|\n|[ResourceTestPatternResponse](#resourcetestpatternresponse)|200|The result of applying the pattern to the uploaded file. The schema for the `records` and `types` is the same as in the DQL Query API.|\n\n\n#### Throws\n\n| Error Type | Error Message |\n|---|---|\n|ErrorEnvelopeError|Bad request for uploading the lookup data. &#124; Unauthorized. &#124; Access forbidden. &#124; The uploaded file or the JSON request were too large. &#124; Too many concurrent requests. &#124; Internal Server Error &#124; Client Error &#124; Server Error|\n\n\n<details>\n<summary>\nCode example\n</summary>\n\n```ts\nimport { lookupDataClient } from \"@dynatrace-sdk/client-resource-store\";\n\nconst data = await lookupDataClient.uploadToTestPattern({\n  body: {\n    content: \"...\",\n    request: { parsePattern: \"LD:id ',' LD:value\" },\n  },\n});\n```\n\n</details>\n\n\n\n</div>\n\n## Types\n\n### CustomValidationErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### ErrorEnvelope\n\n| Name | Type |\n| --- | --- |\n|error|<a href=\"#exceptionalreturn\" target=\"_blank\" rel=\"noopener noreferrer\">ExceptionalReturn</a>|\n\n### ErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### ExceptionalReturn\n\n| Name | Type |\n| --- | --- |\n|code|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|\n|errorDetails<sup>*required</sup>|Array&lt;<a href=\"#customvalidationerrorinfo\">CustomValidationErrorInfo</a> &#124; <a href=\"#invalidauditeventserrorinfo\" target=\"_blank\" rel=\"noopener noreferrer\">InvalidAuditEventsErrorInfo</a> &#124; <a href=\"#mediatypeerrorinfo\">MediaTypeErrorInfo</a> &#124; <a href=\"#parametererrorinfo\" target=\"_blank\" rel=\"noopener noreferrer\">ParameterErrorInfo</a> &#124; <a href=\"#proxyerrorinfo\">ProxyErrorInfo</a> &#124; <a href=\"#queryfrontendrawerrorinfo\" target=\"_blank\" rel=\"noopener noreferrer\">QueryFrontendRawErrorInfo</a> &#124; <a href=\"#requestbodyerrorinfo\">RequestBodyErrorInfo</a>&gt;|\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### InvalidAuditEventsErrorInfo\n\n| Name | Type |\n| --- | --- |\n|invalidAuditEventIndices<sup>*required</sup>|Array&lt;[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)&gt;|\n|invalidEventIndices|Array&lt;[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)&gt;|\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### MediaTypeErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n|supportedMediaTypes<sup>*required</sup>|Array&lt;[string](https://developer.mozilla.org/en-US/docs/Glossary/String)&gt;|\n\n### ParameterErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n|parameterDescriptor<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### ProxyErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### QueryFrontendRawErrorInfo\n\n| Name | Type |\n| --- | --- |\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n|rawQueryFrontendResponse<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### RequestBodyErrorInfo\n\n| Name | Type |\n| --- | --- |\n|bodyDescriptor<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n|message<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|\n\n### ResourceDeleteRequest\n\nRequest Details\n\n| Name | Type | Description |\n| --- | --- | --- |\n|filePath<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The fully qualified file path of the tabular file to store the lookup data in Grail.<br/><br/><strong>Example:</strong> <code>/lookups/mydata</code>|\n\n### ResourceTestPatternRequest\n\nThe JSON metadata for the test pattern request.\n\n| Name | Type | Description |\n| --- | --- | --- |\n|autoFlatten|[boolean](https://developer.mozilla.org/en-US/docs/Glossary/Boolean)|Set to true to extract nested fields to the root level when the specified DPL pattern results in a single record-type field.<br/><br/><strong>Default:</strong> <code>true</code>|\n|locale|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The locale for parsing locale-specific day and month names. The input values take the ISO-639 Language code with an optional ISO-3166 country code appended to it with an underscore.<br/><br/><strong>Example:</strong> <code>en_US</code>|\n|lookupField|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The name of the lookup field whose value identifies a record in the lookup data.The uniqueness of the values is ensured by deduplicating records during upload, if necessary.<br/><br/><strong>Example:</strong> <code>id</code>|\n|parsePattern<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The DPL pattern to parse the uploaded data. Every pattern match produces a record.<br/><br/><strong>Example:</strong> <code>LD:id &apos;,&apos; LD:value</code>|\n|skippedRecords|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of initial records to discard. Can be used to skip header rows.<br/><br/><strong>Default:</strong> <code>0</code>|\n|timezone|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The timezone for parsing time and date fields. The list of valid input values matches that of the IANA Time Zone Database (TZDB).<br/><br/><strong>Example:</strong> <code>UTC</code>|\n\n### ResourceTestPatternRequestEnvelope\n\nMultipart request containing JSON metadata and file content.\n\n| Name | Type | Description |\n| --- | --- | --- |\n|content<sup>*required</sup>|Binary||\n|request<sup>*required</sup>|<a href=\"#resourcetestpatternrequest\" target=\"_blank\" rel=\"noopener noreferrer\">ResourceTestPatternRequest</a>|The JSON metadata for the test pattern request.|\n\n### ResourceTestPatternResponse\n\nThe result of applying the pattern to the uploaded file.\n\n| Name | Type | Description |\n| --- | --- | --- |\n|numberOfRecords|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The total number of records in the uploaded file that match the provided pattern.<br/><br/><strong>Example:</strong> <code>1000000</code>|\n|records|Array&lt;<a href=\"#resourcetestpatternresponserecordsitem\">ResourceTestPatternResponseRecordsItem</a>&gt;|List of records that result from applying the pattern to the uploaded file. If there are more than 100 records, this list contains only the first 100.|\n|types|Array&lt;<a href=\"#resourcetestpatternresponsetypesitem\" target=\"_blank\" rel=\"noopener noreferrer\">ResourceTestPatternResponseTypesItem</a>&gt;|The data types for the result records.|\n\n### ResourceTestPatternResponseRecordsItem\n\nList of records that result from applying the pattern to the uploaded file. If there are more than 100 records, this list contains only the first 100.\n\n**type**: Record&lt;string, Record&lt;string, any&gt;&gt;\n\n### ResourceTestPatternResponseTypesItem\n\nThe data types for the result records.\n\n**type**: Record&lt;string, Record&lt;string, any&gt;&gt;\n\n### ResourceUploadRequest\n\nThe JSON metadata for the upload request.\n\n| Name | Type | Description |\n| --- | --- | --- |\n|autoFlatten|[boolean](https://developer.mozilla.org/en-US/docs/Glossary/Boolean)|Set to true to extract nested fields to the root level when the specified DPL pattern results in a single record-type field.<br/><br/><strong>Default:</strong> <code>true</code>|\n|description|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|An optional description for the file.<br/><br/><strong>Example:</strong> <code>Description of my lookup data</code>|\n|displayName|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|An optional name for the file.<br/><br/><strong>Example:</strong> <code>My lookup data</code>|\n|dt.cost.costcenter|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|Can be used to assign usage to a Cost Center.|\n|dt.cost.product|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|Can be used to assign usage to a Product or Application Id.|\n|filePath<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The fully qualified file path of the tabular file to store the lookup data in Grail.<br/><br/><strong>Example:</strong> <code>/lookups/mydata</code>|\n|locale|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The locale for parsing locale-specific day and month names. The input values take the ISO-639 Language code with an optional ISO-3166 country code appended to it with an underscore.<br/><br/><strong>Example:</strong> <code>en_US</code>|\n|lookupField<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The name of the lookup field whose value identifies a record in the lookup data.The uniqueness of the values is ensured by deduplicating records during upload, if necessary.<br/><br/><strong>Example:</strong> <code>id</code>|\n|overwrite|[boolean](https://developer.mozilla.org/en-US/docs/Glossary/Boolean)|If false and the file already exists, the upload fails. Set to true to allow overwriting existing files.<br/><br/><strong>Default:</strong> <code>false</code>|\n|parsePattern<sup>*required</sup>|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The DPL pattern to parse the uploaded data. Every pattern match produces a record.<br/><br/><strong>Example:</strong> <code>LD:id &apos;,&apos; LD:value</code>|\n|skippedRecords|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of initial records to discard. Can be used to skip header rows.<br/><br/><strong>Default:</strong> <code>0</code>|\n|timezone|[string](https://developer.mozilla.org/en-US/docs/Glossary/String)|The timezone for parsing time and date fields. The list of valid input values matches that of the IANA Time Zone Database (TZDB).<br/><br/><strong>Example:</strong> <code>UTC</code>|\n\n### ResourceUploadRequestEnvelope\n\nMultipart request containing JSON metadata and file content.\n\n| Name | Type | Description |\n| --- | --- | --- |\n|content<sup>*required</sup>|Binary||\n|request<sup>*required</sup>|<a href=\"#resourceuploadrequest\">ResourceUploadRequest</a>|The JSON metadata for the upload request.|\n\n### ResourceUploadResponse\n\n| Name | Type | Description |\n| --- | --- | --- |\n|discardedDuplicates<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of records that were discarded because their lookup field was not unique.|\n|fileSize<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The size of the tabular file in the resource store, in bytes.|\n|patternMatches<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of records in the uploaded file that match the parse pattern.|\n|records<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of records in the final lookup data.|\n|skippedRecords<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of records that were skipped, based on the skippedRecords parameter in the request.|\n|uploadedBytes<sup>*required</sup>|[number](https://developer.mozilla.org/en-US/docs/Glossary/Number)|The number of bytes that were sent in the request content.|\n\n\n","readmeFilename":"README.md"}