# 2026-04-13: Schema Service - custom instance scopes, owner, and type-scoped access

## Overview

{% hint style="info" %}
This functionality is still under development and not yet fully complete. Updates to the Management Dashboard for this area are currently in progress.
{% endhint %}

The Schema Service now exposes finer-grained access for custom instances, returns ownership metadata on custom instances, and automatically provisions type-specific scopes when a custom entity type is created.

When a new custom schema type is created the platform provisions scopes for that type so clients can read and manage custom instances of that type using the `custom.{lowerCaseType}_*` pattern.

Custom instance APIs accept **one** of several scopes:

* **Read**:
  * `schema.custominstance_read`
  * `custom.{lowerCaseType}_read`
  * `custom.{lowerCaseType}_read_own`
* **Manage**:
  * `schema.custominstance_manage`
  * `custom.{lowerCaseType}_manage`
  * `custom.{lowerCaseType}_manage_own`

Tenant-wide scopes apply to all custom types, while type-specific scopes restrict access to a single custom entity type.

Custom instance responses include a read-only `owner` object indicating who created the instance: `type` (`EMPLOYEE`, `CUSTOMER`, or `SERVICE`), `userId`, and for customer owners an optional `legalEntityId`.

## Updated Endpoints

| Endpoint                                                                                                                                                                                          | Description                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
| [Creating a custom schema type](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-schema-type#post-schema-tenant-custom-entities)                      | Creating a new type provisions scopes for reading and managing custom instances of that type.               |
| [Upserting a custom schema type](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-schema-type#put-schema-tenant-custom-entities-id)                   | When the upsert creates a new type, scopes are provisioned for that type’s custom instances.                |
| [Retrieving all custom instances](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#get-schema-tenant-custom-entities-type-instances)         | Authorization now accepts type-specific `read` / `read_own` scopes; each item includes an `owner` property. |
| [Retrieving a custom instance](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#get-schema-tenant-custom-entities-type-instances-id)         | Authorization now accepts type-specific `read` / `read_own` scopes; each item includes an `owner` property. |
| [Searching for custom instances](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#post-schema-tenant-custom-entities-type-instances-search)  | Authorization now accepts type-specific `read` / `read_own` scopes; each item includes an `owner` property. |
| [Creating a custom instance](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#post-schema-tenant-custom-entities-type-instances)             | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Upserting a custom instance](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#put-schema-tenant-custom-entities-type-instances-id)          | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Patching a custom instance](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#patch-schema-tenant-custom-entities-type-instances-id)         | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Deleting a custom instance](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#delete-schema-tenant-custom-entities-type-instances-id)        | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Creating custom instances in bulk](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#post-schema-tenant-custom-entities-type-instances-bulk) | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Upserting custom instances in bulk](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/custom-instance#put-schema-tenant-custom-entities-type-instances-bulk) | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |
| [Deleting custom instances in bulk](https://developer.emporix.io/api-references/api-guides/utilities/schema/api-reference/schema#delete-schema-tenant-custom-entities-type-instances-bulk)        | Authorization now accepts type-specific `manage` / `manage_own` scopes.                                     |

## Known problems

There are no known problems.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.emporix.io/changelog/2026/2026-04-13-schema.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
