Skip to main content
Version: 18

$catalog

The catalog describes all the dataclasses and attributes available in the datastore.

Available syntaxes

SyntaxExampleDescription
$catalog/$catalogReturns a list of the dataclasses in your project along with two URIs
$catalog/$all/$catalog/$allReturns information about all of your project's dataclasses and their attributes
$catalog/{dataClass}/$catalog/EmployeeReturns information about a dataclass and its attributes

$catalog

Returns a list of the dataclasses in your project along with two URIs: one to access the information about its structure and one to retrieve the data in the dataclass

Description

When you call $catalog, a list of the dataclasses is returned along with two URIs for each dataclass in your project's datastore.

Only the exposed dataclasses are shown in this list for your project's datastore. For more information, please refer to Exposing tables and fields section.

Here is a description of the properties returned for each dataclass in your project's datastore:

PropertyTypeDescription
nameTextName of the dataclass.
uriTextA URI allowing you to obtain information about the
dataURITextA URI that allows you to view the data in the dataclass.

Example

GET /rest/$catalog

Result:

{
dataClasses: [
{
name: "Company",
uri: "http://127.0.0.1:8081/rest/$catalog/Company",
dataURI: "http://127.0.0.1:8081/rest/Company"
},
{
name: "Employee",
uri: "http://127.0.0.1:8081/rest/$catalog/Employee",
dataURI: "http://127.0.0.1:8081/rest/Employee"
}
]
}

$catalog/$all

Returns information about all of your project's dataclasses and their attributes

Description

Calling $catalog/$all allows you to receive detailed information about the attributes in each of the dataclasses in your project's active model.

For more information about what is returned for each dataclass and its attributes, use $catalog/\{dataClass\}.

Example

GET /rest/$catalog/$all

Result:

{

"dataClasses": [
{
"name": "Company",
"className": "Company",
"collectionName": "CompanySelection",
"tableNumber": 2,
"scope": "public",
"dataURI": "/rest/Company",
"attributes": [
{
"name": "ID",
"kind": "storage",
"fieldPos": 1,
"scope": "public",
"indexed": true,
"type": "long",
"identifying": true
},
{
"name": "name",
"kind": "storage",
"fieldPos": 2,
"scope": "public",
"type": "string"
},
{
"name": "revenues",
"kind": "storage",
"fieldPos": 3,
"scope": "public",
"type": "number"
},
{
"name": "staff",
"kind": "relatedEntities",
"fieldPos": 4,
"scope": "public",
"type": "EmployeeSelection",
"reversePath": true,
"path": "employer"
},
{
"name": "url",
"kind": "storage",
"scope": "public",
"type": "string"
}
],
"key": [
{
"name": "ID"
}
]
},
{
"name": "Employee",
"className": "Employee",
"collectionName": "EmployeeSelection",
"tableNumber": 1,
"scope": "public",
"dataURI": "/rest/Employee",
"attributes": [
{
"name": "ID",
"kind": "storage",
"scope": "public",
"indexed": true,
"type": "long",
"identifying": true
},
{
"name": "firstname",
"kind": "storage",
"scope": "public",
"type": "string"
},
{
"name": "lastname",
"kind": "storage",
"scope": "public",
"type": "string"
},
{
"name": "employer",
"kind": "relatedEntity",
"scope": "public",
"type": "Company",
"path": "Company"
}
],
"key": [
{
"name": "ID"
}
]
}
]
}

$catalog/{dataClass}

Returns information about a dataclass and its attributes

Description

Calling $catalog/\{dataClass\} for a specific dataclass will return the following information about the dataclass and the attributes it contains. If you want to retrieve this information for all the dataclasses in your project's datastore, use $catalog/$all.

The information you retrieve concerns the following:

  • Dataclass
  • Attribute(s)
  • Method(s) if any
  • Primary key

DataClass

The following properties are returned for an exposed dataclass:

PropertyTypeDescription
nameTextName of the dataclass
collectionNameTextName of an entity selection on the dataclass
tableNumberNumberTable number in the 4D database
scopeTextScope for the dataclass (note that only dataclasses whose Scope is public are displayed)
dataURITextA URI to the data in the dataclass

Attribute(s)

Here are the properties for each exposed attribute that are returned:

PropertyTypeDescription
nameTextAttribute name.
kindTextAttribute type (storage or relatedEntity).
fieldPosNumberPosition of the field in the database table).
scopeTextScope of the attribute (only those attributes whose scope is Public will appear).
indexedTextIf any Index Kind was selected, this property will return true. Otherwise, this property does not appear.
typeTextAttribute type (bool, blob, byte, date, duration, image, long, long64, number, string, uuid, or word) or the dataclass for a N->1 relation attribute.
identifyingBooleanThis property returns True if the attribute is the primary key. Otherwise, this property does not appear.
pathTextName of the relation for a relatedEntity or relateEntities attribute.
foreignKeyTextFor a relatedEntity attribute, name of the related attribute.
inverseNameTextName of the opposite relation for a relatedEntity or relateEntities attribute.

Method(s)

Defines the project methods asociated to the dataclass, if any.

Primary Key

The key object returns the name of the attribute defined as the Primary Key for the dataclass.

Example

You can retrieve the information regarding a specific dataclass.

GET /rest/$catalog/Employee

Result:

{
name: "Employee",
className: "Employee",
collectionName: "EmployeeCollection",
scope: "public",
dataURI: "http://127.0.0.1:8081/rest/Employee",
defaultTopSize: 20,
extraProperties: {
panelColor: "#76923C",
__CDATA: "\n\n\t\t\n",
panel: {
isOpen: "true",
pathVisible: "true",
__CDATA: "\n\n\t\t\t\n",
position: {
X: "394",
Y: "42"
}
}
},
attributes: [
{
name: "ID",
kind: "storage",
scope: "public",
indexed: true,
type: "long",
identifying: true
},
{
name: "firstName",
kind: "storage",
scope: "public",
type: "string"
},
{
name: "lastName",
kind: "storage",
scope: "public",
type: "string"
},
{
name: "fullName",
kind: "calculated",
scope: "public",
type: "string",
readOnly: true
},
{
name: "salary",
kind: "storage",
scope: "public",
type: "number",
defaultFormat: {
format: "$###,###.00"
}
},
{
name: "photo",
kind: "storage",
scope: "public",
type: "image"
},
{
name: "employer",
kind: "relatedEntity",
scope: "public",
type: "Company",
path: "Company"
},
{
name: "employerName",
kind: "alias",
scope: "public",

type: "string",
path: "employer.name",
readOnly: true
},
{
name: "description",
kind: "storage",
scope: "public",
type: "string",
multiLine: true
},
],
key: [
{
name: "ID"
}
]
}