> ## Documentation Index
> Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Data Manager

> Browse, search, and manage all platform data objects; view and configure fields, page layouts, permissions, and raw data for a specific object.

The Data Manager page (`/settings/data-manager`) provides an organisation administrator with a searchable, filterable catalogue of all data objects registered in the platform, including built-in core objects and user-defined custom objects.

## Overview

The page checks `system.organizations.admin` to determine whether admin controls (Create Object, Categories, Discover) are visible. Objects are fetched via `useObjectMetadata` with server-side filtering by search query (debounced), category, object type, and favourites-only. On desktop, objects render in a `ObjectsTable`; on mobile, as `ObjectCard` components. The **Discover** action calls `discoverObjects.mutate()` to refresh the object catalogue. Admins can create new custom objects via `CreateCustomObjectDialog`. Category management navigates to `/settings/data-manager/categories`.

## Who it's for

Access follows your organization's role and module configuration. Admin controls are conditionally shown based on `system.organizations.admin`.

## Before you start

* Admin features (Create, Categories, Discover) require `system.organizations.admin`.
* Objects from module cores appear automatically — no manual registration is required.

## Steps

<Steps>
  <Step title="Open Data Manager">
    Navigate to `/settings/data-manager`. The page loads and displays all registered data objects.
  </Step>

  <Step title="Search and filter">
    Use the search box to filter by name. Use the **Category** selector to narrow by category, and the **All / Core / Custom** tabs to filter by object type. Click the star toggle to show only favourited objects.
  </Step>

  <Step title="Open an object">
    Click any row or card to navigate to the object detail page at `/settings/data-manager/:apiName` (or `/settings/data-manager/custom/:apiName` for custom objects).
  </Step>

  <Step title="Create a custom object (admin)">
    Click **Create Object** to open the creation dialog. Enter a name, API name, and optional category.
  </Step>

  <Step title="Manage categories (admin)">
    Click **Categories** to navigate to `/settings/data-manager/categories`.
  </Step>

  <Step title="Discover new objects (admin)">
    Click **Discover** to trigger object discovery. This refreshes the catalogue of available objects.
  </Step>
</Steps>

## Key concepts

<AccordionGroup>
  <Accordion title="Object types">
    `core` objects are defined by the platform and its modules. `custom` objects are user-created via the Create Object dialog. Both appear in the same catalogue.
  </Accordion>

  <Accordion title="Search debounce">
    The search input is debounced using the value from `pfSettings.search_debounce_ms`, with a fallback of 300 ms.
  </Accordion>
</AccordionGroup>

## Viewing an object

Administrators can view the details of any registered data object at `/settings/data-manager/:apiName`. This route renders `ObjectDetailPage` from `src/platform/data-manager/pages/ObjectDetailPage.tsx`.

The Object Details page displays metadata and configuration for a specific platform object identified by its `apiName` URL parameter. It is organized in tabs: object overview (fields, types), **Page Layouts** (`LayoutsTab`), **Permissions** (`ObjectPermissionsTab`), and **Raw Data** (`RawDataTab`, shown only when `isTableSupported(apiName)` returns true). Object metadata is fetched via `useObjectByApiName()`. Custom field definitions are loaded via `useCustomFieldDefinitions()`. An `EditObjectMetadataDialog` allows editing the object's label and icon. Lineage visualization is provided by `LineageVisualization`. A `FavoriteToggle` allows bookmarking the object for quick access.

1. Navigate to **Settings > Data Manager** and select an object from the list, or go directly to `/settings/data-manager/:apiName`.
2. Browse the object's **Fields** tab to review standard and custom fields.
3. Select the **Page Layouts** tab to manage layouts for this object.
4. Select the **Permissions** tab to review object-level access rules.
5. Select **Raw Data** (if available) to inspect live records in the object's table.

**apiName** — The machine-readable identifier for the object, such as `pf_contact` or `rh_resident`. Used as the URL segment and as the key for field and layout configurations.

**isTableSupported** — A guard function that determines whether raw data browsing is available for a given object.

**Custom fields** — Organizations can extend standard objects with additional fields. Custom field definitions are loaded alongside standard fields from `STANDARD_FIELDS`.

## Related

<Columns cols={2}>
  <Card title="Platform Foundation" icon="layer-group" href="/pf/overview">
    Platform Foundation overview.
  </Card>

  <Card title="Governance & parity" icon="scale-balanced" href="/governance/index">
    Documentation coverage and governance.
  </Card>
</Columns>

<Note>
  This page documents shipped product behavior. It is not medical, legal, or
  billing advice. Verify against your organization's policies and applicable
  regulations before using it for clinical, compliance, or billing decisions.
  Protected health information (PHI) shown in the product is governed by your
  tenant's access controls and is never exposed in this documentation.
</Note>

<Accordion title="Documentation sources">
  * src/routes/platform.tsx
  * src/platform/data-manager/pages/DataManagerPage.tsx
  * src/platform/data-manager/hooks/useObjectMetadata.ts
  * src/platform/data-manager/pages/ObjectDetailPage.tsx
</Accordion>
