Service items

All the services consist of a set of items.

The item’s attributes

A service’s item is an object which inherits from the abstract service’s item.

interface AbstractServiceItem {
    /** The application's key **/
    appKey: string
    /** The name **/
    name: string
    /** The multilingual description **/
    description: Map< String, String >
    /** The content mode which specifies what a standard/non-developer user can do with the content of this item when it's packaged **/
    contentMode: "NONE" | "READ" | "EDIT"
    /** The email of the user who made the last modification **/
    lastModifiedBy: string
    /** The date and time of the last modification **/
    lastModifiedDate: Date
    /** The revision's identifier at the time it was loaded from the store **/
    revisionId: string
}

An item’s identifier consists of the application key and the name: application_key.name.

The item’s rules

Any service’s item must validate the following rules.

The application name

The application key cannot be null.

It cannot contain a dot since the application key/name separator is a dot.

The name

The item’s name cannot be null or empty.

Each peer application_key.name must be unique. A service cannot have two items with the same application key and the same name, but it can have two items with the same name but different application key.

It cannot contain a dot since the application key/name separator is a dot.

For some services (eg: Service Tables), it cannot contain other special characters. Please refer to each service’s user guide for more information.

The description

The description is a multi-language field, but it must at least has an English description.

The item’s facade

The facade of a service’s item is an object containing the item’s public attributes and additional data. It is only retrieved by the server and can not be created through the client.

interface ServiceItemFacade {
    /** The application's key **/
    appKey: string
    /** The name **/
    name: string
    /** The description in the user's language **/
    description: string
    /** The calculated content mode based on the item's content mode and whether the associated application publisher profile is installed or not **/
    calculatedContentMode: "HIDDEN" | "READABLE" | "EDITABLE"
    /** The application's description **/
    appInfo: string
    /** The email of the user who made the last modification **/
    lastModifiedBy: string
    /** The date and time of the last modification **/
    lastModifiedDate: Date
    /** The revision's identifier at the time it was loaded from the store **/
    revisionId: string
}