User-defined entities with joins, created via API, for use in Lists app
What are user defined custom entities?
Users have expressed the desire to be able to join different types of data/records within a single list. This functionality provides users the ability to join data across record types, enabling users to turn fragmented data into richer, connected entities. These custom entities (ETs) are created by API and can be utilized in the Lists app UI.
UXPROD-4863: User-defined entities with joins, created via API In Progress
Key features:
API creation to join data:
API to create new ‘Record types’ (aka entity-types) by combining existing entities into a custom entity
Available joins API shows relationships between different pieces of data
Permission based access:
Only authorized users can create, edit, delete custom entities
Access to custom entities follows the same permissions pattern as existing entities (required permissions are inherited from each ‘source’ referenced in the composite entity)
Create a list: Once an entity is created via API, the custom ET appears in the Lists app UI under the ‘Record types’ dropdown, and can be used to create Lists
Persistent entities: These new joined entity types will exist beyond a single query
Available Joins
The Available Joins API is like a guide that tells you which types of records can be connected to each other. Available Joins helps you understand what types of data you have and how that data can be connected, without needing to know how the connections work behind the scenes. When you ask this API for details, it returns a few things:
A list of available record types
Think of these as different types of records (for example: “Instances,” “Orders,” “Users,” etc.)
The API simply tells you which records are available via FQM
A list of allowed combinations
These are the pairs or groups of record types that can be linked together in a meaningful way
For example, it might tell you that “Instances” can be joined with “Orders,” or that “Orders” can be joined with “Users.”
It’s essentially a map showing which record types are related and can be used together.
Available joins API documentation: https://s3.amazonaws.com/foliodocs/api/folio-query-tool-metadata/s/queryTool.html#tag/custom/operation/getAvailableJoins
Create a custom ET
An entity defines the data is available in a given view, also referred to as an entity type (or abbreviated to ET). Entities display as the “Record type” in the Lists app, and are queryable through FQM APIs. The Create custom ET API allows authorized users to combine existing data/record types into custom entities.
Entity properties include:
name - what the entity is called in the Lists app and elsewhere
sources - defines where the data comes from (database, another entity type). note: custom ETs can only use other entity types as sources. The available joins endpoint helps provide info to populate sources
private - determines if the entity appears in the Lists app as a record type. ETs with private: false will appear in the Lists app
shared - determines if other users can access the ET
required permissions - details specific permissions required to access the data. custom ETs inherit required permissions from each source ET, however, additional permissions are required, they can be defined here
Required permissions per action
Action | BE permissions required (permissionName) | permissionDisplayName (Eureka) | resource / action (Eureka) |
|---|---|---|---|
Create a custom ET (POST) /entity-types/custom | fqm.entityTypes.custom.collection.post | FQM - Create custom entity type | Fqm EntityTypes Custom Collectionv / execute |
View a custom ET (GET) /entity-types/custom/{entityTypeId} | fqm.entityTypes.custom.item.get | FQM - Get custom entity type | Fqm EntityTypes Custom Item / view |
Edit a custom ET (PUT) /entity-types/custom/{entityTypeId} | fqm.entityTypes.custom.item.put | FQM - Update custom entity type | Fqm EntityTypes Custom Item / edit |
Delete a custom ET (DELETE) /entity-types/custom/{entityTypeId} | fqm.entityTypes.custom.item.delete | FQM - Delete custom entity type | Fqm EntityTypes Custom Item / delete |
API documentation: https://s3.amazonaws.com/foliodocs/api/folio-query-tool-metadata/s/queryTool.html#tag/custom/operation/createCustomEntityType