{
"error": "Unauthorized",
"error_description": "You are not authorized to use this endpoint."
}
Attributes
Get attributes
Return all attributes.
Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid
bearer token, attributes owned by the caller’s company are returned as AttributeOwnedResponse and
everything else as AttributeSharedResponse. A token that is present but invalid is rejected
rather than falling back to the anonymous view.
When neither page nor per_page is supplied, every record is returned in a single page.
When true (the default), $ref type references are resolved and the referenced attribute's type
definition is returned in their place. When false, the raw $ref node is returned as stored.
Optional minimum relevance score, in the half-open interval (0, 1]. By default no threshold is
applied and all matches are returned, ranked by relevance. Supply min_score to restrict the
results to attributes scoring at or above the given value; below-threshold attributes are then
excluded from both the results and the total count. Can only be supplied together with q;
supplying it without q returns 400.
Required range: x <= 1
Response
OK
One page of attributes. When the request carries no paging parameters, every record is returned in
a single page.
An attribute models a standardized data point available for sale on the Narrative marketplace.
Narrative automatically turns data points from provider datasets into attributes so that buyers can purchase
well-formed, standardized data from any supplier on the marketplace.
The response will be one of two types:
AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)
AttributeSharedResponse: When the requesting company does not own the attribute
Option 1
Option 2
Option 3
Option 4
Option 5
Option 6
Option 7
Option 8
Option 9
Option 10
Option 11
Option 12
Option 13
Option 14
Option 15
Option 16
Option 17
Option 18
Show child attributes
Example:
{ "id": 123456789, "name": "price", "description": "The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes", "display_name": "Price", "type": "object", "company_id": 12345, "collaborators": { "view": { "type": "inclusion", "company_ids": [12345, 67890] }, "map": { "type": "inclusion", "company_ids": [12345] } }, "tags": ["ecommerce", "transaction"] }
The number of the next page, or null on the last page.
Example:
42
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Narrative I/O Knowledge Base","colors":{"primary":"#1438F5","light":"#F4F7FB","dark":"#010A28"},"logo":{"light":"https://mintcdn.com/narrative-07c7a1f7/ia6SQX79O4nc7uYf/logo/banner.png?fit=max\u0026auto=format\u0026n=ia6SQX79O4nc7uYf\u0026q=85\u0026s=99860b25011c79366624a87d1f648861","dark":"https://mintcdn.com/narrative-07c7a1f7/ia6SQX79O4nc7uYf/logo/banner-dark.png?fit=max\u0026auto=format\u0026n=ia6SQX79O4nc7uYf\u0026q=85\u0026s=604f9688855cf1123b9eddfc8a5bf0e5"},"favicon":"https://mintcdn.com/narrative-07c7a1f7/DaYE2y2_p0IkASZU/favicon.svg?fit=max\u0026auto=format\u0026n=DaYE2y2_p0IkASZU\u0026q=85\u0026s=9961047bdb2aaf9298577e1c3e624c24","navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Open Narrative","href":"https://app.narrative.io"}},"footer":{"socials":{"github":"https://github.com/narrative-io","linkedin":"https://linkedin.com/company/narrative-io"}},"seo":{"indexing":"navigable"},"integrations":{"fathom":{"siteId":"WELVPSSZ"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Release Notes","icon":"clock-rotate-left","href":"/release-notes"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"narrative-07c7a1f7","hasAudioNarration":false,"actualSubdomain":"narrative-07c7a1f7","customDomains":["docs.narrative.io"],"gitSource":{"type":"github","owner":"narrative-io","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adfbc2a0ebb9369b64e1802","collectionId":"53051c3e-1a35-408e-ae59-3afa2f8501b5","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adfbc2a0ebb9369b64e1802"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6adfbc2a0ebb9369b64e1802","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Documentation","count":234},{"language":"default","tag":"Reference","count":111},{"language":"default","tag":"Connectors","count":102},{"language":"default","tag":"All connectors","count":100},{"language":"default","tag":"Architecture Reference","count":76},{"language":"default","tag":"Agent Conversations","count":63},{"language":"default","tag":"Concepts","count":62},{"language":"default","tag":"Guides","count":58},{"language":"default","tag":"Errors","count":54},{"language":"default","tag":"NQL","count":36}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"[email protected]","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/attributes/get-attributes","slug":"/api-reference/attributes/get-attributes","pageMetadata":{"title":"Get attributes","description":"Return all attributes.\n\nAuthentication is optional. Anonymous callers get the shared view of every attribute. With a valid\nbearer token, attributes owned by the caller's company are returned as `AttributeOwnedResponse` and\neverything else as `AttributeSharedResponse`. A token that is present but invalid is rejected\nrather than falling back to the anonymous view.\n\nWhen neither `page` nor `per_page` is supplied, every record is returned in a single page.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes","href":"/api-reference/attributes/get-attributes","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Return all attributes.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid\\nbearer token, attributes owned by the caller’s company are returned as \", _jsx(_components.code, {\n children: \"AttributeOwnedResponse\"\n }), \" and\\neverything else as \", _jsx(_components.code, {\n children: \"AttributeSharedResponse\"\n }), \". A token that is present but invalid is rejected\\nrather than falling back to the anonymous view.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When neither \", _jsx(_components.code, {\n children: \"page\"\n }), \" nor \", _jsx(_components.code, {\n children: \"per_page\"\n }), \" is supplied, every record is returned in a single page.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get attributes","description":"Return all attributes.\n\nAuthentication is optional. Anonymous callers get the shared view of every attribute. With a valid\nbearer token, attributes owned by the caller's company are returned as `AttributeOwnedResponse` and\neverything else as `AttributeSharedResponse`. A token that is present but invalid is rejected\nrather than falling back to the anonymous view.\n\nWhen neither `page` nor `per_page` is supplied, every record is returned in a single page.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes","href":"/api-reference/attributes/get-attributes","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Get attributes","description":"Return all attributes.\n\nAuthentication is optional. Anonymous callers get the shared view of every attribute. With a valid\nbearer token, attributes owned by the caller's company are returned as `AttributeOwnedResponse` and\neverything else as `AttributeSharedResponse`. A token that is present but invalid is rejected\nrather than falling back to the anonymous view.\n\nWhen neither `page` nor `per_page` is supplied, every record is returned in a single page.","tags":["Attributes"],"security":["58cf2761-b6c5-4737-944f-e8dddce2b907","22777d21-869f-4508-9c3e-d0306b5eefe0"],"parameters":["39960225-c5e0-46b0-9b81-2ff7b480b158","cd5457a9-5ffa-474f-b25a-e40926bf9ed7","6e127ef1-0e69-4423-95b6-70220422be2e","a6d53a59-9309-4e9f-a001-47d4d6e8d2c9","c9ead852-44ab-4b50-91a2-545672d862d3"],"responses":{"200":"c8557814-c2e4-4e24-851a-1e6549369954","400":"fcee9a73-6cf9-4256-b159-02ebbce7ac33","401":"1713decc-7084-4411-97ff-9c831ca3a6ef","403":"bdd6225a-5572-428d-8a84-1dcd03611018"},"method":"get","type":"path","servers":["190e6995-21fb-418b-bbfe-8c27e30d5b55","1dc6c444-4c87-47b0-b19f-59c81fc72525"],"path":"/attributes","baseUrlOptions":["https://api-dev.narrative.io","https://api.narrative.io"],"title":"Get attributes","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"39960225-c5e0-46b0-9b81-2ff7b480b158":{"in":"query","name":"page","required":false,"description":"Number of page. Stars from the first (1) page.","schema":{"type":"integer","isRequired":false,"description":"Number of page. Stars from the first (1) page.","uniqueKey":"","typeLabel":"integer"}},"cd5457a9-5ffa-474f-b25a-e40926bf9ed7":{"in":"query","name":"per_page","required":false,"description":"Number of records to return.","schema":{"type":"integer","isRequired":false,"description":"Number of records to return.","uniqueKey":"","typeLabel":"integer"}},"6e127ef1-0e69-4423-95b6-70220422be2e":{"in":"query","name":"resolve","required":false,"description":"When `true` (the default), `$ref` type references are resolved and the referenced attribute's type\ndefinition is returned in their place. When `false`, the raw `$ref` node is returned as stored.","schema":{"type":"boolean","isRequired":false,"description":"When `true` (the default), `$ref` type references are resolved and the referenced attribute's type\ndefinition is returned in their place. When `false`, the raw `$ref` node is returned as stored.","uniqueKey":"","typeLabel":"boolean"}},"a6d53a59-9309-4e9f-a001-47d4d6e8d2c9":{"in":"query","name":"q","required":false,"description":"Free-text search term. When provided, attributes are ranked by their relevance to the search term.","schema":{"type":"string","isRequired":false,"description":"Free-text search term. When provided, attributes are ranked by their relevance to the search term.","uniqueKey":"","typeLabel":"string"}},"c9ead852-44ab-4b50-91a2-545672d862d3":{"in":"query","name":"min_score","required":false,"description":"Optional minimum relevance score, in the half-open interval `(0, 1]`. By default no threshold is\napplied and all matches are returned, ranked by relevance. Supply `min_score` to restrict the\nresults to attributes scoring at or above the given value; below-threshold attributes are then\nexcluded from both the results and the `total` count. Can only be supplied together with `q`;\nsupplying it without `q` returns 400.","schema":{"type":"number","format":"double","exclusiveMinimum":0,"maximum":1,"isRequired":false,"description":"Optional minimum relevance score, in the half-open interval `(0, 1]`. By default no threshold is\napplied and all matches are returned, ranked by relevance. Supply `min_score` to restrict the\nresults to attributes scoring at or above the given value; below-threshold attributes are then\nexcluded from both the results and the `total` count. Can only be supplied together with `q`;\nsupplying it without `q` returns 400.","uniqueKey":"","typeLabel":"number\u003cdouble>"}}},"responses":{"c8557814-c2e4-4e24-851a-1e6549369954":{"description":"OK","content":{"application/json":{"schema":{"description":"One page of attributes. When the request carries no paging parameters, every record is returned in\na single page.","type":"object","required":["records","current_page","total_records","total_pages"],"properties":{"records":{"type":"array","items":{"oneOf":[{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","items","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.tags","typeLabel":"string[]"},"type":{"type":"string","description":"An array with elements of any data type.","enum":["array"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.type","typeLabel":"enum\u003cstring>"},"items":{"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Raw binary values, e.g. geospatial geometries.","enum":["binary"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0.type","typeLabel":"enum\u003cstring>"},"format":{"type":"string","description":"What the binary values encode. `geometry` values are native geospatial geometries and `wkb` values are\ngeometries encoded as [well-known binary](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary).\nWhen `format` is absent the values are opaque bytes.","enum":["geometry","wkb"],"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0.format","typeLabel":"enum\u003cstring>"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.0","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"True/false values. Input values must be one of `true` or `false`.","enum":["boolean"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.1.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.1.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.1.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.1","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"64-bit IEEE 754 floating point values.","enum":["double"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"number","format":"double","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.enum.items.[INDEX]","typeLabel":"number\u003cdouble>"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.enum","typeLabel":"number\u003cdouble>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.2","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"64-bit signed integer values.","enum":["long"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"integer","format":"int64","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.enum.items.[INDEX]","typeLabel":"integer\u003cint64>"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.enum","typeLabel":"integer\u003cint64>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","properties"],"properties":{"type":{"description":"A record consisting of named fields of any type.","enum":["object"],"type":"string","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"A map from field names to field types.\n\nField names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","additionalProperties":{"type":"object","properties":{"description":{"type":"string","description":"A description of the named field.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.properties.additionalProperties.description","typeLabel":"string"},"display_name":{"type":"string","description":"A display name of the named field.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.properties.additionalProperties.display_name","typeLabel":"string"},"order":{"type":"integer","description":"The position of the field within the object, starting at 0.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.properties.additionalProperties.order","typeLabel":"integer"}},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.properties.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.properties","typeLabel":"object"},"required":{"description":"An optional array of properties whose values are never missing or null.","type":"array","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4.required","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.4","typeLabel":"object"},{"type":"object","required":["$ref"],"properties":{"description":{"type":"any","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.5.description","typeLabel":"any"},"oneOf":{"oneOf":[{"0":{"type":"integer","format":"int64","description":"The ID of the referenced attribute."},"1":{"type":"string","enum":["$this"],"description":"A self-reference to the schema of the attribute in which it appears."}}],"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.5.\\oneOf","typeLabel":"any"},"type":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.5.type","typeLabel":"any"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.5","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Abitrary-length character sequences encoded with UTF-8.","enum":["string"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.enum.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.enum","typeLabel":"string[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.6","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Timestamp with timezone, stored as microseconds. Input values are expected to be valid [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) strings.","enum":["timestamptz"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.7.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.7.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.7.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.7","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Semi-structured values that can hold any JSON value.","enum":["variant"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.8.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.8.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.8.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items.oneOf.8","typeLabel":"object"}],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.\\items","typeLabel":"object"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.0.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.0.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.0.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.0.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.1.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Raw binary values, e.g. geospatial geometries.","enum":["binary"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.1.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.1.description","typeLabel":"string"},"format":{"type":"string","description":"What the binary values encode. `geometry` values are native geospatial geometries and `wkb` values are\ngeometries encoded as [well-known binary](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary).\nWhen `format` is absent the values are opaque bytes.","enum":["geometry","wkb"],"uniqueKey":"records.items.[INDEX].oneOf.1.format","typeLabel":"enum\u003cstring>"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.1.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.1.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.1.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.1","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.2.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.tags","typeLabel":"string[]"},"type":{"type":"string","description":"True/false values. Input values must be one of `true` or `false`.","enum":["boolean"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.2.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.2.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.2.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.2.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.2","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.3.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.tags","typeLabel":"string[]"},"type":{"type":"string","description":"64-bit IEEE 754 floating point values.","enum":["double"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.3.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.3.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"number","format":"double","uniqueKey":"records.items.[INDEX].oneOf.3.enum.items.[INDEX]","typeLabel":"number\u003cdouble>"},"uniqueKey":"records.items.[INDEX].oneOf.3.enum","typeLabel":"number\u003cdouble>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.3.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.3.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.3.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.3","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.4.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.tags","typeLabel":"string[]"},"type":{"type":"string","description":"64-bit signed integer values.","enum":["long"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.4.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.4.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"integer","format":"int64","uniqueKey":"records.items.[INDEX].oneOf.4.enum.items.[INDEX]","typeLabel":"integer\u003cint64>"},"uniqueKey":"records.items.[INDEX].oneOf.4.enum","typeLabel":"integer\u003cint64>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.4.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.4.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.4.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.4","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","properties","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","properties":{"value":{"order":0,"display_name":"Value","type":"double","validations":["$this.value >= 0.0"]},"iso_4217_currency":{"order":1,"display_name":"Currency","type":"string","enum":["USD","GBP","JPY"]}},"required":["value","iso_4217_currency"],"company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.5.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.tags","typeLabel":"string[]"},"type":{"description":"A record consisting of named fields of any type.","enum":["object"],"type":"string","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"A map from field names to field types.\n\nField names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","additionalProperties":{"type":"object","properties":{"description":{"type":"string","description":"A description of the named field.","uniqueKey":"records.items.[INDEX].oneOf.5.properties.additionalProperties.description","typeLabel":"string"},"display_name":{"type":"string","description":"A display name of the named field.","uniqueKey":"records.items.[INDEX].oneOf.5.properties.additionalProperties.display_name","typeLabel":"string"},"order":{"type":"integer","description":"The position of the field within the object, starting at 0.","uniqueKey":"records.items.[INDEX].oneOf.5.properties.additionalProperties.order","typeLabel":"integer"}},"uniqueKey":"records.items.[INDEX].oneOf.5.properties.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.properties","typeLabel":"object"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.5.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.5.description","typeLabel":"string"},"required":{"description":"An optional array of properties whose values are never missing or null.","type":"array","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.5.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.5.required","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.5","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.6.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Abitrary-length character sequences encoded with UTF-8.","enum":["string"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.6.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.6.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.6.enum.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.6.enum","typeLabel":"string[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.6.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.6.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.6.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.6","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.7.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Timestamp with timezone, stored as microseconds. Input values are expected to be valid [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) strings.","enum":["timestamptz"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.7.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.7.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.7.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.7.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.7","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["company_id","collaborators","type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","company_id":12345,"collaborators":{"view":{"type":"inclusion","company_ids":[12345,67890]},"map":{"type":"inclusion","company_ids":[12345]}},"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.8.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Semi-structured values that can hold any JSON value.","enum":["variant"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.type","typeLabel":"enum\u003cstring>"},"company_id":{"type":"integer","description":"The ID of the company that owns this attribute","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.company_id","typeLabel":"integer"},"collaborators":{"type":"object","description":"Defines which companies have access to view and map this attribute","properties":{"view":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.view","typeLabel":"object"},"map":{"oneOf":[{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["none"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.0.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.0","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["inclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.1.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.1.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.1.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.1","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type","company_ids"],"properties":{"type":{"type":"string","enum":["exclusion"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.2.type","typeLabel":"enum\u003cstring>"},"company_ids":{"type":"array","minItems":1,"items":{"type":"integer","description":"Company ID","uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.2.company_ids.items.[INDEX]","typeLabel":"integer"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.2.company_ids","typeLabel":"integer[]"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.2","typeLabel":"object"},{"type":"object","description":"Defines which companies can participate in viewing or mapping attributes.","required":["type"],"properties":{"type":{"type":"string","enum":["all"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.3.type","typeLabel":"enum\u003cstring>"}},"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map.oneOf.3","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators.map","typeLabel":"object"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.8.collaborators","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.8.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.8.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.8.validations","typeLabel":"string[]"}},"uniqueKey":"records.items.[INDEX].oneOf.8","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","items","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.tags","typeLabel":"string[]"},"type":{"type":"string","description":"An array with elements of any data type.","enum":["array"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.type","typeLabel":"enum\u003cstring>"},"items":{"oneOf":[{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Raw binary values, e.g. geospatial geometries.","enum":["binary"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0.type","typeLabel":"enum\u003cstring>"},"format":{"type":"string","description":"What the binary values encode. `geometry` values are native geospatial geometries and `wkb` values are\ngeometries encoded as [well-known binary](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary).\nWhen `format` is absent the values are opaque bytes.","enum":["geometry","wkb"],"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0.format","typeLabel":"enum\u003cstring>"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.0","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"True/false values. Input values must be one of `true` or `false`.","enum":["boolean"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.1.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.1.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.1.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.1","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"64-bit IEEE 754 floating point values.","enum":["double"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"number","format":"double","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.enum.items.[INDEX]","typeLabel":"number\u003cdouble>"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.enum","typeLabel":"number\u003cdouble>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.2","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"64-bit signed integer values.","enum":["long"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"integer","format":"int64","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.enum.items.[INDEX]","typeLabel":"integer\u003cint64>"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.enum","typeLabel":"integer\u003cint64>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.3","typeLabel":"object"},{"type":"object","required":["type","properties"],"properties":{"type":{"description":"A record consisting of named fields of any type.","enum":["object"],"type":"string","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"A map from field names to field types.\n\nField names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","additionalProperties":{"type":"object","properties":{"description":{"type":"string","description":"A description of the named field.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.properties.additionalProperties.description","typeLabel":"string"},"display_name":{"type":"string","description":"A display name of the named field.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.properties.additionalProperties.display_name","typeLabel":"string"},"order":{"type":"integer","description":"The position of the field within the object, starting at 0.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.properties.additionalProperties.order","typeLabel":"integer"}},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.properties.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.properties","typeLabel":"object"},"required":{"description":"An optional array of properties whose values are never missing or null.","type":"array","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4.required","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.4","typeLabel":"object"},{"type":"object","required":["$ref"],"properties":{"description":{"type":"any","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.5.description","typeLabel":"any"},"oneOf":{"oneOf":[{"0":{"type":"integer","format":"int64","description":"The ID of the referenced attribute."},"1":{"type":"string","enum":["$this"],"description":"A self-reference to the schema of the attribute in which it appears."}}],"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.5.\\oneOf","typeLabel":"any"},"type":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.5.type","typeLabel":"any"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.5","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Abitrary-length character sequences encoded with UTF-8.","enum":["string"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.type","typeLabel":"enum\u003cstring>"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.enum.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.enum","typeLabel":"string[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.6","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Timestamp with timezone, stored as microseconds. Input values are expected to be valid [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) strings.","enum":["timestamptz"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.7.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.7.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.7.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.7","typeLabel":"object"},{"type":"object","required":["type"],"properties":{"type":{"type":"string","description":"Semi-structured values that can hold any JSON value.","enum":["variant"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.8.type","typeLabel":"enum\u003cstring>"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.8.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.8.validations","typeLabel":"string[]"}},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items.oneOf.8","typeLabel":"object"}],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.9.\\items","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.9.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.9.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.9.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.9.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.9.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.9","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.10.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.10.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.10.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.10.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.10.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Raw binary values, e.g. geospatial geometries.","enum":["binary"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.10.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.10.description","typeLabel":"string"},"format":{"type":"string","description":"What the binary values encode. `geometry` values are native geospatial geometries and `wkb` values are\ngeometries encoded as [well-known binary](https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary).\nWhen `format` is absent the values are opaque bytes.","enum":["geometry","wkb"],"uniqueKey":"records.items.[INDEX].oneOf.10.format","typeLabel":"enum\u003cstring>"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.10.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.10.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.10.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.10.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.10.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.10","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.11.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.11.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.11.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.11.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.11.tags","typeLabel":"string[]"},"type":{"type":"string","description":"True/false values. Input values must be one of `true` or `false`.","enum":["boolean"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.11.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.11.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.11.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.11.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.11.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.11.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.11","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.12.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.12.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.12.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.12.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.12.tags","typeLabel":"string[]"},"type":{"type":"string","description":"64-bit IEEE 754 floating point values.","enum":["double"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.12.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.12.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"number","format":"double","uniqueKey":"records.items.[INDEX].oneOf.12.enum.items.[INDEX]","typeLabel":"number\u003cdouble>"},"uniqueKey":"records.items.[INDEX].oneOf.12.enum","typeLabel":"number\u003cdouble>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.12.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.12.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.12.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.12.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.12.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.12","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.13.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.13.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.13.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.13.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.13.tags","typeLabel":"string[]"},"type":{"type":"string","description":"64-bit signed integer values.","enum":["long"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.13.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.13.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"integer","format":"int64","uniqueKey":"records.items.[INDEX].oneOf.13.enum.items.[INDEX]","typeLabel":"integer\u003cint64>"},"uniqueKey":"records.items.[INDEX].oneOf.13.enum","typeLabel":"integer\u003cint64>[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.13.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.13.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.13.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.13.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.13.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.13","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","properties","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","properties":{"value":{"order":0,"display_name":"Value","type":"double","validations":["$this.value >= 0.0"]},"iso_4217_currency":{"order":1,"display_name":"Currency","type":"string","enum":["USD","GBP","JPY"]}},"required":["value","iso_4217_currency"],"tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.14.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.tags","typeLabel":"string[]"},"type":{"description":"A record consisting of named fields of any type.","enum":["object"],"type":"string","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.type","typeLabel":"enum\u003cstring>"},"properties":{"type":"object","description":"A map from field names to field types.\n\nField names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","additionalProperties":{"type":"object","properties":{"description":{"type":"string","description":"A description of the named field.","uniqueKey":"records.items.[INDEX].oneOf.14.properties.additionalProperties.description","typeLabel":"string"},"display_name":{"type":"string","description":"A display name of the named field.","uniqueKey":"records.items.[INDEX].oneOf.14.properties.additionalProperties.display_name","typeLabel":"string"},"order":{"type":"integer","description":"The position of the field within the object, starting at 0.","uniqueKey":"records.items.[INDEX].oneOf.14.properties.additionalProperties.order","typeLabel":"integer"}},"uniqueKey":"records.items.[INDEX].oneOf.14.properties.additionalProperties","typeLabel":"object"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.14.properties","typeLabel":"object"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.14.description","typeLabel":"string"},"required":{"description":"An optional array of properties whose values are never missing or null.","type":"array","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.14.required.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.14.required","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.14.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.14.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.14","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.15.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.15.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.15.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.15.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.15.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Abitrary-length character sequences encoded with UTF-8.","enum":["string"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.15.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.15.description","typeLabel":"string"},"enum":{"type":"array","description":"An optional set of possible values for the field.","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.15.enum.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.15.enum","typeLabel":"string[]"},"is_join_key":{"type":"boolean","description":"Whether the field is a join key. Join key values identify an entity, so they can be used to join or\nsample against other datasets. Omitted when `false`.","uniqueKey":"records.items.[INDEX].oneOf.15.is_join_key","typeLabel":"boolean"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.15.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.15.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.15.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.15.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.15","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.16.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.16.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.16.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.16.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.16.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Timestamp with timezone, stored as microseconds. Input values are expected to be valid [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) strings.","enum":["timestamptz"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.16.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.16.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.16.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.16.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.16.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.16.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.16","typeLabel":"object"},{"type":"object","description":"An attribute models a standardized data point available for sale on the Narrative marketplace.\n\nNarrative automatically turns data points from provider datasets into attributes so that buyers can purchase\nwell-formed, standardized data from any supplier on the marketplace.\n\nThe response will be one of two types:\n- AttributeOwnedResponse: When the requesting company owns the attribute (includes company_id and collaborators)\n- AttributeSharedResponse: When the requesting company does not own the attribute","required":["type","id","display_name","name","tags"],"example":{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","tags":["ecommerce","transaction"]},"properties":{"id":{"type":"integer","description":"Unique identifier for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.17.id","typeLabel":"integer"},"display_name":{"type":"string","description":"A public-facing descriptive name for the attribute.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.17.display_name","typeLabel":"string"},"name":{"type":"string","description":"An short identifier for the attribute to be used when it is referenced in validations.\n\nAttribute names must consist of only alphanumeric characters or underscores and be \u003c 255 characters long.","isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.17.name","typeLabel":"string"},"tags":{"type":"array","description":"List of tags associated with the attribute","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.17.tags.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.17.tags","typeLabel":"string[]"},"type":{"type":"string","description":"Semi-structured values that can hold any JSON value.","enum":["variant"],"isRequired":true,"uniqueKey":"records.items.[INDEX].oneOf.17.type","typeLabel":"enum\u003cstring>"},"description":{"type":"string","description":"A description of the type of data the attribute represents, including collection methodology, assumptions, etc.","uniqueKey":"records.items.[INDEX].oneOf.17.description","typeLabel":"string"},"validations":{"type":"array","description":"A raw Spark SQL expression determining whether a value for the given column is valid or not.\n\nIf more than one validation is specified then _all_ the validation must evaluate to `true` for the column value to be considered valid.\n\nIf `validations` is not specified or empty then all rows will match the access rule.\n\nE.g. for an attribute with the following definition:\n\n```\n{\n \"name\": \"unique_id\",\n \"type\": \"object\",\n \"properties\": {\n \"identifier_value\": {\n \"type\": \"string\"\n },\n \"identifier_type\": {\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"type\": \"timestamptz\"\n }\n },\n \"required\": [\n \"value\"\n ]\n}\n```\n\nValid validations include:\n\n- Is the ID type lowercased?\n\n```sql\n\"identifier_type\": {\n \"type\": \"string\",\n \"validations\": [\n \"lower($this.identifier_type) = $this.identifier_type\"\n ]\n}\n```\n- Was the row collected within the last 90 days?\n\n```sql\n\"timestamp\": {\n \"type\": \"timestamptz\",\n \"validations\": [\n \"$this.timestamp > date_sub(current_date(), 90)\"\n ]\n}\n```","items":{"type":"string","uniqueKey":"records.items.[INDEX].oneOf.17.validations.items.[INDEX]","typeLabel":"string"},"uniqueKey":"records.items.[INDEX].oneOf.17.validations","typeLabel":"string[]"},"company_id":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.17.company_id","typeLabel":"any"},"collaborators":{"oneOf":[{}],"uniqueKey":"records.items.[INDEX].oneOf.17.collaborators","typeLabel":"any"}},"uniqueKey":"records.items.[INDEX].oneOf.17","typeLabel":"object"}],"uniqueKey":"records.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"records","typeLabel":"object[]"},"current_page":{"type":"integer","format":"int64","description":"The number of requested page.","example":1,"isRequired":true,"uniqueKey":"current_page","typeLabel":"integer\u003cint64>"},"total_records":{"type":"integer","format":"int64","description":"Total amount of accessible Access Rules","example":15000,"isRequired":true,"uniqueKey":"total_records","typeLabel":"integer\u003cint64>"},"total_pages":{"type":"integer","format":"int64","description":"Total amount of pages.","example":10,"isRequired":true,"uniqueKey":"total_pages","typeLabel":"integer\u003cint64>"},"prev_page":{"oneOf":[{"type":"integer","format":"int64","description":"The number of the previous page, or null on the first page. Can also refer to the latest existing\npage if a page beyond the last one was requested.","example":1,"uniqueKey":"prev_page.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"The number of the previous page, or null on the first page. Can also refer to the latest existing\npage if a page beyond the last one was requested.","example":1,"uniqueKey":"prev_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"prev_page","typeLabel":"integer\u003cint64> | null"},"next_page":{"oneOf":[{"type":"integer","format":"int64","description":"The number of the next page, or null on the last page.","example":42,"uniqueKey":"next_page.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"The number of the next page, or null on the last page.","example":42,"uniqueKey":"next_page.oneOf.1","typeLabel":"null"}],"uniqueKey":"next_page","typeLabel":"integer\u003cint64> | null"}},"example":{"prev_page":null,"current_page":1,"next_page":null,"total_records":1,"total_pages":1,"records":[{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","properties":{"value":{"order":0,"display_name":"Value","type":"double","validations":["$this.value >= 0.0"]},"iso_4217_currency":{"order":1,"display_name":"Currency","type":"string","enum":["USD","GBP","JPY"]}},"tags":["ecommerce","transaction"],"required":["value","iso_4217_currency"]}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"prev_page":null,"current_page":1,"next_page":null,"total_records":1,"total_pages":1,"records":[{"id":123456789,"name":"price","description":"The price of an order, product, or a price component. Currency field accepts ISO 4217 currency codes","display_name":"Price","type":"object","properties":{"value":{"order":0,"display_name":"Value","type":"double","validations":["$this.value >= 0.0"]},"iso_4217_currency":{"order":1,"display_name":"Currency","type":"string","enum":["USD","GBP","JPY"]}},"tags":["ecommerce","transaction"],"required":["value","iso_4217_currency"]}]}}},"exampleType":"generated"}},"exampleType":"generated"},"fcee9a73-6cf9-4256-b159-02ebbce7ac33":{"description":"`min_score` was supplied without `q` or falls outside `(0, 1]`.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"1713decc-7084-4411-97ff-9c831ca3a6ef":{"description":"The bearer token is expired or does not grant read access to attributes.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"bdd6225a-5572-428d-8a84-1dcd03611018":{"description":"The request is not allowed with the token sent, or no valid token was sent.","content":{"application/json":{"schema":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","example":"Unauthorized","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"error_description":{"type":"string","example":"You are not authorized to use this endpoint.","isRequired":true,"uniqueKey":"error_description","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"Unauthorized","error_description":"You are not authorized to use this endpoint."}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"58cf2761-b6c5-4737-944f-e8dddce2b907":{},"22777d21-869f-4508-9c3e-d0306b5eefe0":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"190e6995-21fb-418b-bbfe-8c27e30d5b55":{"url":"https://api-dev.narrative.io"},"1dc6c444-4c87-47b0-b19f-59c81fc72525":{"url":"https://api.narrative.io"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"https://docs-cdn.narrative.io/api-reference/main/openapi.json"},"subdomain":"narrative-07c7a1f7","siteName":"Narrative I/O Knowledge Base","title":"Get attributes - Narrative I/O Knowledge Base","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T20:47:06.376Z","originalFileLocation":"api-reference/attributes/get-attributes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Return all attributes. Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid bearer token, attributes owned by the caller\u0026#x27;s company are returned as AttributeOwnedResponse and everything else as AttributeSharedResponse. A token that is present but invalid is rejected rather than falling back to the anonymous view. When neither page nor per_page is supplied, every record is returned in a single page.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Narrative I/O Knowledge Base\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get attributes - Narrative I/O Knowledge Base\">\u003cmeta data-mint-head property=\"og:description\" content=\"Return all attributes. Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid bearer token, attributes owned by the caller\u0026#x27;s company are returned as AttributeOwnedResponse and everything else as AttributeSharedResponse. A token that is present but invalid is rejected rather than falling back to the anonymous view. When neither page nor per_page is supplied, every record is returned in a single page.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Narrative I/O Knowledge Base\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.narrative.io/api-reference/attributes/get-attributes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://narrative-07c7a1f7.mintlify.app/_mintlify/api/og/v2?division=Attributes\u0026amp;title=Get+attributes\u0026amp;description=Return+all+attributes.%0A%0AAuthentication+is+optional.+Anonymous+callers+get+the+shared+view+of+every+attribute.+With+a+valid%0Abearer+token%2C+attributes+owned+by+the\u0026amp;theme=ee973f81a9436b7406ccdb45\u0026amp;signature=0c24fa577c794e0bbfe5e1fdf9441685eacde1a065edb2d95e6f5b1c16868084\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get attributes - Narrative I/O Knowledge Base\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Return all attributes. Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid bearer token, attributes owned by the caller\u0026#x27;s company are returned as AttributeOwnedResponse and everything else as AttributeSharedResponse. A token that is present but invalid is rejected rather than falling back to the anonymous view. When neither page nor per_page is supplied, every record is returned in a single page.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://narrative-07c7a1f7.mintlify.app/_mintlify/api/og/v2?division=Attributes\u0026amp;title=Get+attributes\u0026amp;description=Return+all+attributes.%0A%0AAuthentication+is+optional.+Anonymous+callers+get+the+shared+view+of+every+attribute.+With+a+valid%0Abearer+token%2C+attributes+owned+by+the\u0026amp;theme=ee973f81a9436b7406ccdb45\u0026amp;signature=0c24fa577c794e0bbfe5e1fdf9441685eacde1a065edb2d95e6f5b1c16868084\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/narrative-07c7a1f7/OOk68seBU2ePTAv6/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Narrative I/O Knowledge Base\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1438F5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.narrative.io/api-reference/attributes/get-attributes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/attributes/get-attributes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.narrative.io/#organization\",\"name\":\"Narrative I/O Knowledge Base\",\"url\":\"https://docs.narrative.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/narrative-07c7a1f7/ia6SQX79O4nc7uYf/logo/banner.png?fit=max\u0026auto=format\u0026n=ia6SQX79O4nc7uYf\u0026q=85\u0026s=99860b25011c79366624a87d1f648861\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.narrative.io#website\",\"name\":\"Narrative I/O Knowledge Base\",\"url\":\"https://docs.narrative.io\",\"publisher\":{\"@id\":\"https://docs.narrative.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.narrative.io/api-reference/attributes/get-attributes#webpage\",\"url\":\"https://docs.narrative.io/api-reference/attributes/get-attributes\",\"name\":\"Get attributes\",\"description\":\"Return all attributes. Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid bearer token, attributes owned by the caller's company are returned as AttributeOwnedResponse and everything else as AttributeSharedResponse. A token that is present but invalid is rejected rather than falling back to the anonymous view. When neither page nor per_page is supplied, every record is returned in a single page.\",\"dateModified\":\"2026-10-26T20:47:06.376Z\",\"isPartOf\":{\"@id\":\"https://docs.narrative.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.narrative.io/api-reference/attributes/get-attributes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.narrative.io/api-reference/attributes/get-attributes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Narrative I/O Knowledge Base\",\"item\":\"https://docs.narrative.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get attributes\",\"item\":\"https://docs.narrative.io/api-reference/attributes/get-attributes\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.narrative.io/api-reference/attributes/get-attributes#apireference\",\"headline\":\"Get attributes\",\"name\":\"Get attributes\",\"description\":\"Return all attributes. Authentication is optional. Anonymous callers get the shared view of every attribute. With a valid bearer token, attributes owned by the caller's company are returned as AttributeOwnedResponse and everything else as AttributeSharedResponse. A token that is present but invalid is rejected rather than falling back to the anonymous view. When neither page nor per_page is supplied, every record is returned in a single page.\",\"url\":\"https://docs.narrative.io/api-reference/attributes/get-attributes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.narrative.io/api-reference/attributes/get-attributes#webpage\"},\"dateModified\":\"2026-10-26T20:47:06.376Z\",\"publisher\":{\"@id\":\"https://docs.narrative.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.narrative.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Narrative I/O Knowledge Base\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Narrative I/O Knowledge Base","nav":{"global":{"anchors":[{"anchor":"Release Notes","icon":"clock-rotate-left","href":"/release-notes"}]},"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":"/getting-started/create-account"}]},{"tab":"Concepts","pages":[{"title":"Concepts","href":"/concepts"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"Cookbooks","pages":[{"title":"Cookbooks","href":"/cookbooks"}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference"}]},{"tab":"Connectors","pages":[{"title":"Connectors","href":"/reference/connectors"}]},{"tab":"NQL","pages":[{"title":"NQL","href":"/nql"}]},{"tab":"API Documentation","groups":[{"group":"Access Rules","pages":[{"title":"Get an Access Rule by id (V2)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/access-rules/{access_rule_id}","href":"/api-reference/access-rules/get-an-access-rule-by-id-v2"},{"title":"Update an Access Rule by id (V2)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /v2/access-rules/{access_rule_id}","href":"/api-reference/access-rules/update-an-access-rule-by-id-v2"},{"title":"Delete an access rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/access-rules/{access_rule_id}","href":"/api-reference/access-rules/delete-an-access-rule"},{"title":"Get the query policy of an Access Rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/access-rules/{access_rule_id}/query-policy","href":"/api-reference/access-rules/get-the-query-policy-of-an-access-rule"},{"title":"Set the query policy of an Access Rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /v2/access-rules/{access_rule_id}/query-policy","href":"/api-reference/access-rules/set-the-query-policy-of-an-access-rule"},{"title":"Remove the query policy of an Access Rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/access-rules/{access_rule_id}/query-policy","href":"/api-reference/access-rules/remove-the-query-policy-of-an-access-rule"},{"title":"Get an Access Rule by name (V2)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/access-rules/{company_slug}/{access_rule_name}","href":"/api-reference/access-rules/get-an-access-rule-by-name-v2"},{"title":"Get all accessible Access Rules (V2)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/access-rules","href":"/api-reference/access-rules/get-all-accessible-access-rules-v2"},{"title":"Create a new Access Rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/access-rules","href":"/api-reference/access-rules/create-a-new-access-rule"}]},{"group":"Access Tokens","pages":[{"title":"List System Access Tokens","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /access-tokens/tokens","href":"/api-reference/access-tokens/list-system-access-tokens"},{"title":"Create a System Access Token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /access-tokens/tokens","href":"/api-reference/access-tokens/create-a-system-access-token"},{"title":"Get a System Access Token by id","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /access-tokens/tokens/{access_token_id}","href":"/api-reference/access-tokens/get-a-system-access-token-by-id"},{"title":"Update a System Access Token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /access-tokens/tokens/{access_token_id}","href":"/api-reference/access-tokens/update-a-system-access-token"},{"title":"Delete a System Access Token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /access-tokens/tokens/{access_token_id}","href":"/api-reference/access-tokens/delete-a-system-access-token"}]},{"group":"Agent Conversations","pages":[{"title":"List the calling user's agent conversations","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /agents/conversations","href":"/api-reference/agent-conversations/list-the-calling-users-agent-conversations"},{"title":"Create an agent conversation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /agents/conversations","href":"/api-reference/agent-conversations/create-an-agent-conversation"},{"title":"Get an agent conversation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /agents/conversations/{id}","href":"/api-reference/agent-conversations/get-an-agent-conversation"},{"title":"List conversation messages (delta read by version cursor)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /agents/conversations/{id}/messages","href":"/api-reference/agent-conversations/list-conversation-messages-delta-read-by-version-cursor"},{"title":"Start a new run on the conversation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /agents/conversations/{id}/runs","href":"/api-reference/agent-conversations/start-a-new-run-on-the-conversation"},{"title":"Stop waiting on a handle","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /agents/conversations/{id}/waitables/{handle}/cancel","href":"/api-reference/agent-conversations/stop-waiting-on-a-handle"},{"title":"Get a run's current state","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /agents/runs/{id}","href":"/api-reference/agent-conversations/get-a-runs-current-state"}]},{"group":"App API","pages":[{"title":"Delivery Commands","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v1/app/commands/delivery","href":"/api-reference/app-api/delivery-commands"},{"title":"Delivery Files","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v1/app/commands/delivery/{delivery_id}/files","href":"/api-reference/app-api/delivery-files"},{"title":"Download file","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v1/app/commands/delivery/{delivery_id}/download/{filename}","href":"/api-reference/app-api/download-file"}]},{"group":"App Invites","pages":[{"title":"List App Invites","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /app-invites","href":"/api-reference/app-invites/list-app-invites"},{"title":"Create App Invite","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /app-invites","href":"/api-reference/app-invites/create-app-invite"},{"title":"Get App Invite","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /app-invites/{id}","href":"/api-reference/app-invites/get-app-invite"},{"title":"Archive App Invite","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /app-invites/{id}","href":"/api-reference/app-invites/archive-app-invite"},{"title":"Activate App Invite","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /app-invites/{id}/activate","href":"/api-reference/app-invites/activate-app-invite"},{"title":"Get App Invite By Code","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /app-invites/codes/{code}","href":"/api-reference/app-invites/get-app-invite-by-code"}]},{"group":"Apps","pages":[{"title":"Lists apps","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps","href":"/api-reference/apps/lists-apps"},{"title":"Publish app event","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /apps/events","href":"/api-reference/apps/publish-app-event"},{"title":"List installed app interfaces","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps/installed/interfaces","href":"/api-reference/apps/list-installed-app-interfaces"},{"title":"List app interfaces","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps/{app_id}/interfaces","href":"/api-reference/apps/list-app-interfaces"},{"title":"Get an app interface","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps/{app_id}/interfaces/{interface_id}","href":"/api-reference/apps/get-an-app-interface"},{"title":"Lists profiles","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps/{app_slug}/profiles","href":"/api-reference/apps/lists-profiles"},{"title":"Get an app's v1 manifest","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /apps/{app_slug}/manifest","href":"/api-reference/apps/get-an-apps-v1-manifest"},{"title":"List Apps","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/apps","href":"/api-reference/apps/list-apps"},{"title":"Create App","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/apps","href":"/api-reference/apps/create-app"},{"title":"Get App","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/apps/{slug}","href":"/api-reference/apps/get-app"},{"title":"Archive App","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/apps/{slug}","href":"/api-reference/apps/archive-app"},{"title":"Replace App Manifest","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /v2/apps/{slug}/manifest","href":"/api-reference/apps/replace-app-manifest"},{"title":"Patch App Manifest","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json patch /v2/apps/{slug}/manifest","href":"/api-reference/apps/patch-app-manifest"},{"title":"Generate App Credentials","description":"Generates a new client id and secret and retires the previous pair. The secret is only ever returned here, and\nthe response is marked no-store.\n","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/apps/{slug}/credentials/generate","href":"/api-reference/apps/generate-app-credentials"}]},{"group":"Attributes","pages":[{"title":"Get attributes","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes","href":"/api-reference/attributes/get-attributes"},{"title":"Create an attribute","description":"Create a new attribute.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /attributes","href":"/api-reference/attributes/create-an-attribute"},{"title":"Get an attribute","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes/{attribute_name_or_id}","href":"/api-reference/attributes/get-an-attribute"},{"title":"Update an attribute","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /attributes/{attribute_name_or_id}","href":"/api-reference/attributes/update-an-attribute"},{"title":"Delete an attribute","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /attributes/{attribute_name_or_id}","href":"/api-reference/attributes/delete-an-attribute"},{"title":"Get attribute references.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes/{attribute_name_or_id}/references","href":"/api-reference/attributes/get-attribute-references"},{"title":"Get the derivation graph around an attribute.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /attributes/{attribute_name_or_id}/derivation-graph","href":"/api-reference/attributes/get-the-derivation-graph-around-an-attribute"}]},{"group":"Auth","pages":[{"title":"Request or refresh an OAuth token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /oauth/token","href":"/api-reference/auth/request-or-refresh-an-oauth-token"}]},{"group":"Authentication","pages":[{"title":"Sign in with a Stytch B2B session token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/b2b/login","href":"/api-reference/authentication/sign-in-with-a-stytch-b2b-session-token"},{"title":"Register with a Stytch B2B session token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/b2b/register","href":"/api-reference/authentication/register-with-a-stytch-b2b-session-token"},{"title":"Check whether a Stytch B2B member is registered on Narrative","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/b2b/registration-status","href":"/api-reference/authentication/check-whether-a-stytch-b2b-member-is-registered-on-narrative"},{"title":"Exchange a user token for one scoped to another company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/exchange-token","href":"/api-reference/authentication/exchange-a-user-token-for-one-scoped-to-another-company"},{"title":"Sign in with a Stytch session token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/login","href":"/api-reference/authentication/sign-in-with-a-stytch-session-token"},{"title":"Register with a Stytch session token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/register","href":"/api-reference/authentication/register-with-a-stytch-session-token"},{"title":"Check whether a Stytch Magic Links or OAuth user is registered on Narrative","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /authentication/registration-status","href":"/api-reference/authentication/check-whether-a-stytch-magic-links-or-oauth-user-is-registered-on-narrative"}]},{"group":"Billings","pages":[{"title":"Get dataset storage billing","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /admin/billings/dataset-storage-billing","href":"/api-reference/billings/get-dataset-storage-billing"},{"title":"Get dataset storage billing for company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /billings/dataset-storage-billing","href":"/api-reference/billings/get-dataset-storage-billing-for-company"}]},{"group":"Companies","pages":[{"title":"Lists Company Domains","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /companies/{company_id}/domains","href":"/api-reference/companies/lists-company-domains"},{"title":"Get a presigned URL to upload company logo","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /admin/companies/logo-upload-url","href":"/api-reference/companies/get-a-presigned-url-to-upload-company-logo"}]},{"group":"Company","pages":[{"title":"Get a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /companies/{company_id}","href":"/api-reference/company/get-a-company"},{"title":"Get a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /company/{company_id}","href":"/api-reference/company/get-a-company-1"},{"title":"Update a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /company/{company_id}","href":"/api-reference/company/update-a-company"},{"title":"Delete (archive) a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /company/{company_id}","href":"/api-reference/company/delete-archive-a-company"},{"title":"Clear the company's default compute pool for a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /company/{company_id}/data-planes/{data_plane_id}/default-compute-pool","href":"/api-reference/company/clear-the-companys-default-compute-pool-for-a-data-plane"},{"title":"Set the company's default compute pool for a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /company/{company_id}/data-planes/{data_plane_id}/default-compute-pool/{compute_pool_id}","href":"/api-reference/company/set-the-companys-default-compute-pool-for-a-data-plane"},{"title":"Update a user","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /users/{user_id}","href":"/api-reference/company/update-a-user"}]},{"group":"Company Marketing Information","pages":[{"title":"Returns the company and user associated with the token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /company-info/whoami","href":"/api-reference/company-marketing-information/returns-the-company-and-user-associated-with-the-token"},{"title":"Get marketing details on a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /company-info/{company_id}","href":"/api-reference/company-marketing-information/get-marketing-details-on-a-company"}]},{"group":"Compute Pools","pages":[{"title":"List compute pools","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /data-planes/{data_plane_id}/compute-pools","href":"/api-reference/compute-pools/list-compute-pools"},{"title":"Create a compute pool","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /data-planes/{data_plane_id}/compute-pools","href":"/api-reference/compute-pools/create-a-compute-pool"},{"title":"Get a compute pool by ID","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /data-planes/{data_plane_id}/compute-pools/{compute_pool_id}","href":"/api-reference/compute-pools/get-a-compute-pool-by-id"},{"title":"Update a compute pool","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /data-planes/{data_plane_id}/compute-pools/{compute_pool_id}","href":"/api-reference/compute-pools/update-a-compute-pool"},{"title":"Archive a compute pool","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /data-planes/{data_plane_id}/compute-pools/{compute_pool_id}","href":"/api-reference/compute-pools/archive-a-compute-pool"}]},{"group":"Connections","pages":[{"title":"List connections","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/connections","href":"/api-reference/connections/list-connections"},{"title":"Create a connection","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/connections","href":"/api-reference/connections/create-a-connection"},{"title":"Get a connection","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/connections/{connection_id}","href":"/api-reference/connections/get-a-connection"},{"title":"Archive a connection","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/connections/{connection_id}","href":"/api-reference/connections/archive-a-connection"}]},{"group":"Data Planes","pages":[{"title":"List data planes","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /data-planes","href":"/api-reference/data-planes/list-data-planes"},{"title":"Create a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /data-planes","href":"/api-reference/data-planes/create-a-data-plane"},{"title":"Get a data plane by ID","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /data-planes/{data_plane_id}","href":"/api-reference/data-planes/get-a-data-plane-by-id"},{"title":"Archive a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /data-planes/{data_plane_id}","href":"/api-reference/data-planes/archive-a-data-plane"},{"title":"Update a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json patch /data-planes/{data_plane_id}","href":"/api-reference/data-planes/update-a-data-plane"},{"title":"Data plane heartbeat","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /data-planes/{data_plane_id}/heartbeat","href":"/api-reference/data-planes/data-plane-heartbeat"},{"title":"Trigger a health check","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /data-planes/{data_plane_id}/health-check","href":"/api-reference/data-planes/trigger-a-health-check"},{"title":"Replace the collaborators on a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /data-planes/{data_plane_id}/collaborators","href":"/api-reference/data-planes/replace-the-collaborators-on-a-data-plane"},{"title":"Add a collaborator to a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /data-planes/{data_plane_id}/collaborators/{collaborator_company_id}","href":"/api-reference/data-planes/add-a-collaborator-to-a-data-plane"},{"title":"Remove a collaborator from a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /data-planes/{data_plane_id}/collaborators/{collaborator_company_id}","href":"/api-reference/data-planes/remove-a-collaborator-from-a-data-plane"},{"title":"Set the default compute pool for a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /data-planes/{data_plane_id}/default-compute-pool/{compute_pool_id}","href":"/api-reference/data-planes/set-the-default-compute-pool-for-a-data-plane"},{"title":"Clear the default compute pool for a data plane","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /data-planes/{data_plane_id}/default-compute-pool","href":"/api-reference/data-planes/clear-the-default-compute-pool-for-a-data-plane"}]},{"group":"Dataset Configuration","pages":[{"title":"Preview snapshot expirations","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/retention-policy/preview","href":"/api-reference/dataset-configuration/preview-snapshot-expirations"},{"title":"Upsert retention policies for a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/retention-policy","href":"/api-reference/dataset-configuration/upsert-retention-policies-for-a-dataset"}]},{"group":"Dataset Files","pages":[{"title":"Files added","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/snapshots/{snapshot_id}/files-added","href":"/api-reference/dataset-files/files-added"},{"title":"Find snapshots","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/find-snapshots","href":"/api-reference/dataset-files/find-snapshots"},{"title":"Find files","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/find-files","href":"/api-reference/dataset-files/find-files"},{"title":"Issue file download url","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/snapshots/{snapshot_id}/files-added/{file_id}/download","href":"/api-reference/dataset-files/issue-file-download-url"}]},{"group":"Dataset Refresh","pages":[{"title":"Update the materialized view refresh configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/refresh-schedule","href":"/api-reference/dataset-refresh/update-the-materialized-view-refresh-configuration"},{"title":"Create a refresh schedule for an existing materialized view","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/refresh-schedule","href":"/api-reference/dataset-refresh/create-a-refresh-schedule-for-an-existing-materialized-view"},{"title":"Archive the materialized view refresh configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}/refresh-schedule","href":"/api-reference/dataset-refresh/archive-the-materialized-view-refresh-configuration"},{"title":"Run a materialized view refresh now","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/refresh-materialized-view","href":"/api-reference/dataset-refresh/run-a-materialized-view-refresh-now"}]},{"group":"Dataset Samples","pages":[{"title":"Sample a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/sample","href":"/api-reference/dataset-samples/sample-a-dataset"},{"title":"Upload a sample","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/sample","href":"/api-reference/dataset-samples/upload-a-sample"},{"title":"Delete a sample","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}/sample","href":"/api-reference/dataset-samples/delete-a-sample"},{"title":"Sample a dataset (Admin)","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/admin/sample","href":"/api-reference/dataset-samples/sample-a-dataset-admin"},{"title":"Request Dataset Sample","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/request-sample","href":"/api-reference/dataset-samples/request-dataset-sample"},{"title":"Sample a dataset and redact the sample","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/datasets/{dataset_id}/request-sample","href":"/api-reference/dataset-samples/sample-a-dataset-and-redact-the-sample"},{"title":"Get a dataset's sample redaction","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/redaction","href":"/api-reference/dataset-samples/get-a-datasets-sample-redaction"},{"title":"Upload a dataset's sample redaction","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/redaction","href":"/api-reference/dataset-samples/upload-a-datasets-sample-redaction"},{"title":"Delete a dataset's sample redaction","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}/redaction","href":"/api-reference/dataset-samples/delete-a-datasets-sample-redaction"},{"title":"Sample a dataset with its redaction applied","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/sample/redacted","href":"/api-reference/dataset-samples/sample-a-dataset-with-its-redaction-applied"},{"title":"Sampled Mappings","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/sample/mappings","href":"/api-reference/dataset-samples/sampled-mappings"}]},{"group":"Dataset Statistics","pages":[{"title":"Get Statistics Configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/statistics-configuration","href":"/api-reference/dataset-statistics/get-statistics-configuration"},{"title":"Put Statistics Configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/statistics-configuration","href":"/api-reference/dataset-statistics/put-statistics-configuration"},{"title":"Disable Statistics Configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}/statistics-configuration","href":"/api-reference/dataset-statistics/disable-statistics-configuration"}]},{"group":"Datasets","pages":[{"title":"Get datasets","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets","href":"/api-reference/datasets/get-datasets"},{"title":"Create a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets","href":"/api-reference/datasets/create-a-dataset"},{"title":"Get a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}","href":"/api-reference/datasets/get-a-dataset"},{"title":"Update a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}","href":"/api-reference/datasets/update-a-dataset"},{"title":"Delete a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}","href":"/api-reference/datasets/delete-a-dataset"},{"title":"Activate a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/activate","href":"/api-reference/datasets/activate-a-dataset"},{"title":"Activate a dataset","deprecated":true,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/activate","href":"/api-reference/datasets/activate-a-dataset-1"},{"title":"Truncate a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/truncate","href":"/api-reference/datasets/truncate-a-dataset"},{"title":"Get admin info for a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/admin","href":"/api-reference/datasets/get-admin-info-for-a-dataset"},{"title":"Update a dataset's partition spec","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/admin/partition-spec","href":"/api-reference/datasets/update-a-datasets-partition-spec"},{"title":"Get dataset statistics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/stats","href":"/api-reference/datasets/get-dataset-statistics"},{"title":"Get detailed statistics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/column-stats","href":"/api-reference/datasets/get-detailed-statistics"},{"title":"Create or Update detailed statistics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/column-stats","href":"/api-reference/datasets/create-or-update-detailed-statistics"},{"title":"Submit recalculation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/column-stats/recalculate","href":"/api-reference/datasets/submit-recalculation"},{"title":"Get detailed statistics for a snapshot","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/column-stats/{snapshot_id}","href":"/api-reference/datasets/get-detailed-statistics-for-a-snapshot"},{"title":"Combine snapshot metrics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/combine","href":"/api-reference/datasets/combine-snapshot-metrics"},{"title":"Ingest a file","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/upload","href":"/api-reference/datasets/ingest-a-file"},{"title":"Issue an ingestion token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/upload/token","href":"/api-reference/datasets/issue-an-ingestion-token"},{"title":"Metrics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/metrics","href":"/api-reference/datasets/metrics"},{"title":"Metrics","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/snapshots/{snapshot_id}/column-stats","href":"/api-reference/datasets/metrics-1"},{"title":"Get Metrics Configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/stats-config","href":"/api-reference/datasets/get-metrics-configuration"},{"title":"Put Metrics Configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/stats-config","href":"/api-reference/datasets/put-metrics-configuration"},{"title":"Disable configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /datasets/{dataset_id}/stats-config","href":"/api-reference/datasets/disable-configuration"},{"title":"Derive the configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /datasets/{dataset_id}/derive-stats-config","href":"/api-reference/datasets/derive-the-configuration"},{"title":"Enable configuration","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /datasets/{dataset_id}/enable-stats-config","href":"/api-reference/datasets/enable-configuration"},{"title":"List connector interfaces compatible with a dataset","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /datasets/{dataset_id}/interfaces","href":"/api-reference/datasets/list-connector-interfaces-compatible-with-a-dataset"}]},{"group":"Derivations","pages":[{"title":"Get derivation rules","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /derivations","href":"/api-reference/derivations/get-derivation-rules"},{"title":"Create a derivation rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /derivations","href":"/api-reference/derivations/create-a-derivation-rule"},{"title":"Get a derivation rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /derivations/{derivation_id}","href":"/api-reference/derivations/get-a-derivation-rule"},{"title":"Delete a derivation rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /derivations/{derivation_id}","href":"/api-reference/derivations/delete-a-derivation-rule"},{"title":"Update a derivation rule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json patch /derivations/{derivation_id}","href":"/api-reference/derivations/update-a-derivation-rule"}]},{"group":"Encryption Materials","pages":[{"title":"List encryption materials","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /encryption-materials","href":"/api-reference/encryption-materials/list-encryption-materials"},{"title":"Create an encryption material","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /encryption-materials","href":"/api-reference/encryption-materials/create-an-encryption-material"},{"title":"List decrypted encryption materials","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /encryption-materials/decrypted","href":"/api-reference/encryption-materials/list-decrypted-encryption-materials"},{"title":"Get an encryption material","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /encryption-materials/{encryption_material_id}","href":"/api-reference/encryption-materials/get-an-encryption-material"},{"title":"Update an encryption material","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /encryption-materials/{encryption_material_id}","href":"/api-reference/encryption-materials/update-an-encryption-material"},{"title":"Archive an encryption material","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /encryption-materials/{encryption_material_id}","href":"/api-reference/encryption-materials/archive-an-encryption-material"}]},{"group":"Installations","pages":[{"title":"List Installations","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /installations","href":"/api-reference/installations/list-installations"},{"title":"Create Installation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations","href":"/api-reference/installations/create-installation"},{"title":"Whoami Installation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /installations/whoami","href":"/api-reference/installations/whoami-installation"},{"title":"Get Installation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /installations/{id}","href":"/api-reference/installations/get-installation"},{"title":"Delete Installation","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /installations/{id}","href":"/api-reference/installations/delete-installation"},{"title":"Create Installation Token","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations/{id}/token","href":"/api-reference/installations/create-installation-token"}]},{"group":"Jobs","pages":[{"title":"Get jobs","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /jobs","href":"/api-reference/jobs/get-jobs"},{"title":"Get a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /jobs/{job_id}","href":"/api-reference/jobs/get-a-job"},{"title":"Run a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/run","href":"/api-reference/jobs/run-a-job"},{"title":"Schedule a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/schedule","href":"/api-reference/jobs/schedule-a-job"},{"title":"Complete a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/complete","href":"/api-reference/jobs/complete-a-job"},{"title":"Fail a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/fail","href":"/api-reference/jobs/fail-a-job"},{"title":"Request cancellation of a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/request-cancellation","href":"/api-reference/jobs/request-cancellation-of-a-job"},{"title":"Cancel a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/cancel","href":"/api-reference/jobs/cancel-a-job"},{"title":"Reschedule a job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /jobs/{job_id}/reschedule","href":"/api-reference/jobs/reschedule-a-job"}]},{"group":"Mappings","pages":[{"title":"Get mappings","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mappings","href":"/api-reference/mappings/get-mappings"},{"title":"Get mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mappings/{mapping_id}","href":"/api-reference/mappings/get-mapping"},{"title":"Update a mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /mappings/{mapping_id}","href":"/api-reference/mappings/update-a-mapping"},{"title":"Delete a mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /mappings/{mapping_id}","href":"/api-reference/mappings/delete-a-mapping"},{"title":"Accept a mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /mappings/{mapping_id}/accept","href":"/api-reference/mappings/accept-a-mapping"},{"title":"Get mappings for a company","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mappings/companies/{company_id}","href":"/api-reference/mappings/get-mappings-for-a-company"},{"title":"Create a mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /mappings/companies/{company_id}","href":"/api-reference/mappings/create-a-mapping"},{"title":"Get mapping preview","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mappings/{mapping_id}/sample","href":"/api-reference/mappings/get-mapping-preview"},{"title":"Test Mapping","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /mappings/test","href":"/api-reference/mappings/test-mapping"}]},{"group":"MCP Connections","pages":[{"title":"List the calling user's external MCP connections","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mcp-connections","href":"/api-reference/mcp-connections/list-the-calling-users-external-mcp-connections"},{"title":"Begin connecting an external MCP server","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /mcp-connections","href":"/api-reference/mcp-connections/begin-connecting-an-external-mcp-server"},{"title":"OAuth redirect target that receives the authorization code","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mcp-connections/callback","href":"/api-reference/mcp-connections/oauth-redirect-target-that-receives-the-authorization-code"},{"title":"Finish connecting an external MCP server","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /mcp-connections/complete","href":"/api-reference/mcp-connections/finish-connecting-an-external-mcp-server"},{"title":"Get one of the calling user's MCP connections","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /mcp-connections/{id}","href":"/api-reference/mcp-connections/get-one-of-the-calling-users-mcp-connections"},{"title":"Delete one of the calling user's MCP connections","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /mcp-connections/{id}","href":"/api-reference/mcp-connections/delete-one-of-the-calling-users-mcp-connections"}]},{"group":"Model Inference","pages":[{"title":"Run model inference","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /model-inference/run","href":"/api-reference/model-inference/run-model-inference"}]},{"group":"Model Training","pages":[{"title":"Fine-tune a model","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /model-training/run","href":"/api-reference/model-training/fine-tune-a-model"},{"title":"Train a classifier","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v1/model-training/train-classifier","href":"/api-reference/model-training/train-a-classifier"}]},{"group":"Models","pages":[{"title":"Get models","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /models","href":"/api-reference/models/get-models"},{"title":"Get a model","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /models/{model_id}","href":"/api-reference/models/get-a-model"},{"title":"Update a model","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /models/{model_id}","href":"/api-reference/models/update-a-model"},{"title":"Archive a model","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /models/{model_id}","href":"/api-reference/models/archive-a-model"}]},{"group":"NQL","pages":[{"title":"Validate an NQL statement","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /nql/validate","href":"/api-reference/nql/validate-an-nql-statement"},{"title":"Parse an NQL statement","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /nql/parse","href":"/api-reference/nql/parse-an-nql-statement"},{"title":"Execute an NQL statement","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v1/nql/execute","href":"/api-reference/nql/execute-an-nql-statement"},{"title":"Get a forecast job","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /nql/{job_id}","href":"/api-reference/nql/get-a-forecast-job"}]},{"group":"Permissions","pages":[{"title":"Create a permission","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /admin/permissions","href":"/api-reference/permissions/create-a-permission"}]},{"group":"Profiles","pages":[{"title":"Returns app profiles","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /installations/{installation_id}/profiles","href":"/api-reference/profiles/returns-app-profiles"},{"title":"Creates an app profile","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations/{installation_id}/profiles","href":"/api-reference/profiles/creates-an-app-profile"},{"title":"Returns profile with {profile_id}","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /installations/{installation_id}/profiles/{app_profile_id}","href":"/api-reference/profiles/returns-profile-with-"},{"title":"Updates an existing app profile","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /installations/{installation_id}/profiles/{app_profile_id}","href":"/api-reference/profiles/updates-an-existing-app-profile"},{"title":"Enables a profile","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations/{installation_id}/profiles/{app_profile_id}/enable","href":"/api-reference/profiles/enables-a-profile"},{"title":"Disables a profile","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations/{installation_id}/profiles/{app_profile_id}/disable","href":"/api-reference/profiles/disables-a-profile"},{"title":"Archives a profile","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /installations/{installation_id}/profiles/{app_profile_id}/archive","href":"/api-reference/profiles/archives-a-profile"}]},{"group":"Queries","pages":[{"title":"Get a query by id","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/queries/{query_id}","href":"/api-reference/queries/get-a-query-by-id"},{"title":"Deletes a query","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/queries/{query_id}","href":"/api-reference/queries/deletes-a-query"},{"title":"Get accessible queries","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/queries","href":"/api-reference/queries/get-accessible-queries"},{"title":"Create a query","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/queries","href":"/api-reference/queries/create-a-query"}]},{"group":"Resources","pages":[{"title":"Get buckets","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /resources/buckets","href":"/api-reference/resources/get-buckets"},{"title":"Create bucket","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /resources/buckets","href":"/api-reference/resources/create-bucket"},{"title":"Update access type","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /resources/update-access","href":"/api-reference/resources/update-access-type"}]},{"group":"Schema Inference","pages":[{"title":"Infer the dataset schema of a file passed by multipart file.","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/inference","href":"/api-reference/schema-inference/infer-the-dataset-schema-of-a-file-passed-by-multipart-file"}]},{"group":"Uploads","pages":[{"title":"Upload a file","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /uploads/{upload_path}","href":"/api-reference/uploads/upload-a-file"}]},{"group":"Usage","pages":[{"title":"Create a usage event","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /usage","href":"/api-reference/usage/create-a-usage-event"}]},{"group":"Views","pages":[{"title":"Get a view by id","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/views/{view_id}","href":"/api-reference/views/get-a-view-by-id"},{"title":"Updates a view","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json put /v2/views/{view_id}","href":"/api-reference/views/updates-a-view"},{"title":"Archives a view","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /v2/views/{view_id}","href":"/api-reference/views/archives-a-view"},{"title":"Get accessible views","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /v2/views","href":"/api-reference/views/get-accessible-views"},{"title":"Create a view","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /v2/views","href":"/api-reference/views/create-a-view"}]},{"group":"Webhooks","pages":[{"title":"List webhook subscriptions","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /webhooks","href":"/api-reference/webhooks/list-webhook-subscriptions"},{"title":"Create a webhook subscription","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /webhooks","href":"/api-reference/webhooks/create-a-webhook-subscription"},{"title":"Get a webhook subscription by ID","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /webhooks/{webhook_subscription_id}","href":"/api-reference/webhooks/get-a-webhook-subscription-by-id"},{"title":"Archive a webhook subscription","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /webhooks/{webhook_subscription_id}","href":"/api-reference/webhooks/archive-a-webhook-subscription"},{"title":"Event delivery","version":null,"deprecated":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json webhook webhookDelivery","href":"/api-reference/webhooks/event-delivery"}]},{"group":"Whoami","pages":[{"title":"Get a current user","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /whoami","href":"/api-reference/whoami/get-a-current-user"}]},{"group":"Workflows","pages":[{"title":"List workflows","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /workflows","href":"/api-reference/workflows/list-workflows"},{"title":"Create a workflow","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /workflows","href":"/api-reference/workflows/create-a-workflow"},{"title":"Get a workflow","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /workflows/{workflow_id}","href":"/api-reference/workflows/get-a-workflow"},{"title":"Archive a workflow","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /workflows/{workflow_id}","href":"/api-reference/workflows/archive-a-workflow"},{"title":"Trigger a workflow","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /workflows/{workflow_id}/trigger","href":"/api-reference/workflows/trigger-a-workflow"},{"title":"Schedule a workflow","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /workflows/{workflow_id}/schedule","href":"/api-reference/workflows/schedule-a-workflow"},{"title":"Remove a workflow schedule","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json delete /workflows/{workflow_id}/schedule","href":"/api-reference/workflows/remove-a-workflow-schedule"},{"title":"Cancel a workflow execution","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /workflows/{workflow_id}/cancel","href":"/api-reference/workflows/cancel-a-workflow-execution"},{"title":"List workflow runs","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json get /workflows/{workflow_id}/runs","href":"/api-reference/workflows/list-workflow-runs"},{"title":"Cancel a specific workflow run","deprecated":null,"version":null,"openapi":"https://docs-cdn.narrative.io/api-reference/main/openapi.json post /workflows/{workflow_id}/runs/{run_id}/cancel","href":"/api-reference/workflows/cancel-a-specific-workflow-run"}]}]}]},"title":"Get attributes - Narrative I/O Knowledge Base","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}