User-defined entities with joins, created via API, for use in Lists app

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:

  1. A list of available record types

    1. Think of these as different types of records (for example: “Instances,” “Orders,” “Users,” etc.)

    2. The API simply tells you which records are available via FQM

  2. A list of allowed combinations

    1. These are the pairs or groups of record types that can be linked together in a meaningful way

    2. For example, it might tell you that “Instances” can be joined with “Orders,” or that “Orders” can be joined with “Users.”

    3. 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

Available joins API.mp4
Recording of available joins API

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)

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

Custom ET APIs.mp4
Recording of creating a custom ET