Logical IDs

Prev Next

This article explains what a logical ID is, how it's generated, and the correct syntax.

Logical ID definition

Quickbase assigns logical IDs to identify objects in QBL.

Logical IDs help make sure Quickbase updates the correct objects. They also help Quickbase understand what objects across apps are meant to be the same.

For example:

  • App A exists in your Quickbase account.

  • You export App A to QBL. Then you make a copy: App B.

    • App A and App B have different app IDs, but they have the same logical ID.

  • You can make changes on App A, then transfer those changes safely to App B with the solution APIs. The update will produce an exact match because the logical IDs are the same.

Representation in QBL

You can easily find the logical ID that an app, table, or field is mapped to in the QBL by looking for the $ symbol:

logical_id_representation.png

In this example, the logical ID for this field is located on row 95, $Field_Project_Name, and the field ID for that field is located on row 97, ID: 16.

How logical IDs are generated

To generate logical IDs for objects in a solution, use the Solution API to export, create, or update the solution. Quickbase generates and assigns logical IDs.

Apps that have never been exported, created, or updated using the Solution API do not have logical IDs.

Updating logical IDs

When Quickbase generates logical IDs, it saves them in the database. You cannot update existing logical IDs, even if you edit the name or label of the object it identifies.

Quickbase automatically updates logical IDs when you change schema. For example, if you delete an object, Quickbase also deletes the logical ID. When you create a new object, Quickbase generates a new logical ID.

Logical ID syntax

Logical IDs consist of:

  • Prefix: Object type

    • Field, Role, etc.

  • Object name or label

    • If an object does not have a name or label, or the name would somehow invalidate the logical ID, it will be excluded

    • If the name or label is excluded, Quickbase includes an additional index

Logical IDs are:

  • Unique within the QBL definition. You can't have 2 fields with the same logical ID.

  • No longer than 30 characters after the prefix.

  • Made up of characters that are not YAML control characters. If YAML control characters are in the name or label of the object, the API call will fail.

Example logical IDs

Object name/label

logical_ID

[asd

$Field_asd_1

[asd_ 

$Field_asd_2

[asd2

$Field_asd2

asd

$Field_asd_3

asd2

$Field_asd2_1

asd_

$Field_asd_4

asd 2

$Field_asd_2_1

1

$Field_1

:

$Field_2

"'"

$Field_3

'

$Field_4

#

$Field_5

#asd

$Field_asd_5

some long name

$Field_some_long

somelongname

$Field_somelong

Upper-case

$Field_Upper_case

яプÑ¿

$Field_яプÑ

Logical IDs in the Solution API

The Solution API allows you to export, create, and update solutions. Here's how logical IDs play a part in each of these requests:

Export

Quickbase creates logical IDs and maps them to each supported object in the solution. See export API documentation.

You can find all logical IDs for supported objects in the QBL YAML file you receive as output.

Create

You use the API to create a new solution that includes apps defined using QBL in a YAML file. See create API documentation

Quickbase saves the solution with a logical ID map that is identical to the map in the original YAML file.

Update

Quickbase updates schema objects with matching logical IDs to the QBL definition. See update API documentation

For example:

Origin QBL object ID

Logical ID of corresponding object in destination app

Update result in destination app

Field_Manager

Field_Manager

(IDs match)

Any changes in the YAML files will be applied to the solution in Quickbase

Field_Manager

None matching

New Field_Manager will be created because it appears as net new field to the system

None matching

Field_Manager

Field_Manager will be deleted because it is not present in the QBL definition

Any data that Field_Manager carried will be deleted

Field_Project_Manager

Field_Manager

(IDs don't match, because labels are different, even though the objects may be logically identical)

New Field_Project_Manager will be created (as it appears as net new field to the system)

Field_Manager will be deleted because it is not present in the QBL definition

Any data that Field_Manager carried will be deleted