# (NEW!) Get Metadata Cascade Retrieve a single metadata cascade by its ID. This is the one place in the cascades API where everything is always returned unconditionally — no include option, no summary/lightweight mode. The user submitting the request must have the Metadata Template Management admin privilege. Endpoint: GET /metadata/cascades/{id} Version: 1.5 Security: ApiKeyAuth, BasicAuth ## Header parameters: - `Authorization` (string, required) Provided by Authentication Token creation operation. ## Path parameters: - `id` (string, required) The unique ID of the cascade to retrieve. Example: "b7e41f2a-6c9d-4a17-8f3b-2d5c8a0e3f61" ## Response 200 fields (application/json): - `id` (string) Unique ID of the cascade. Example: "b7e41f2a-6c9d-4a17-8f3b-2d5c8a0e3f61" - `name` (string) Display name of the cascade. Example: "Region Cascade" - `searchField` (string) System-generated slug. Permanent once created. Example: "region_cascade" - `levels` (array) Ordered levels, fixed at creation. Always present here — unconditional, unlike the list endpoint where it's only included via ?include=levels. - `levels.attributeId` (string) Id of the controlled-vocabulary attribute backing this level's dropdown values. Example: "a29f3e1c-7b4d-4f8a-9c2e-5d1b8f6a3c70" - `levels.attributeName` (string) Denormalized display name of the backing attribute. Example: "Continent" - `levels.order` (integer) Zero-based level position; kept as an explicit field rather than implied by array order, since asset metadata can store level references out of order. - `nameVisible` (boolean) Whether the cascade name is visible when rendered on an asset. Example: true - `featured` (boolean,null) System-assigned. null if never set. Blocks deletion when true. - `createdBy` (string) User-profile id of the cascade's creator. Example: "8f2a5c91-4e6d-4b83-9a17-6c0d3e8b2f45" - `createdEpoch` (integer) Unix timestamp (ms) of creation. Example: 1770714900000 - `createdDate` (string) ISO 8601 creation date. Example: "2026-02-10T09:15:00Z" - `lastUpdatedBy` (string) User-profile id of the last user to update the cascade. Example: "8f2a5c91-4e6d-4b83-9a17-6c0d3e8b2f45" - `lastUpdatedEpoch` (integer) Unix timestamp (ms) of the last update. Example: 1771432800000 - `lastUpdatedDate` (string) ISO 8601 last-updated date. Example: "2026-02-18T16:40:00Z" - `usedIn` (object) Where the cascade is currently referenced. A cascade's only direct relationship is being used as a column inside a Table. metadataGroups is a derived, transitive rollup of every group reached through that table's own group membership (Table → group). metadataTemplates is a further derived, transitive rollup of every template reached through that group's own template membership (group → template). - `usedIn.metadataTables` (array) Tables that directly use this cascade as a column. - `usedIn.metadataTables.id` (string) Example: "e91a4c7d-3f8b-4e26-9a1d-7c5b0e9f2a83" - `usedIn.metadataTables.name` (string) Example: "Store Locations Table" - `usedIn.metadataGroups` (array) Groups that transitively reach this cascade through a table that uses it. - `usedIn.metadataTemplates` (array) Templates that transitively reach this cascade through a table that uses it. - `values` (array) Full nested value tree, returned untruncated — always present here (unconditional, same as levels; the list endpoint only includes it via ?include=values). Depth is bounded at 4 levels, but breadth is not — a level with hundreds of sibling values can still make this a large payload. - `values.id` (string) Value node id. Example: "f3a8c1e5-9d24-4b7a-8e6f-1c3a9d5e2b74" - `values.name` (string) Display value. Example: "North America" - `values.source` (string,null) Present only when this level's attribute is a Dynamic Controlled Vocabulary (a CV composed from other CVs) — holds the search field of the underlying source CV this value was copied from. null for a value sourced from an ordinary controlled vocabulary. System-computed only; never client-supplied. - `values.children` (array) Nested child values at the next level. Empty array for a leaf node. ## Response 400 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 401 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 403 fields (application/json): - `status` (string) Example: "error" - `message` (string) ## Response 404 fields (application/json): - `status` (string) Example: "error" - `message` (string)