Manifest.json reference
Properties
Root
App ID - It should be prefixed with appx_
for private apps and app_
for public apps. It should be unique across all apps. Your app ID can only contain letters & numbers. Example: appx_myapp123
.
App name - The name of your app. Example: My App
.
Homepage - The URL of your app’s homepage of your own documentation. Example: https://myapp.com
.
Author - The name of the author of the app. Example: ACME Organization
.
Icon URL - The URL of the icon of your app. Example: https://myapp.com/icon.png
.
Short description - A short description of your app. Example: My App is a great app that does great things
.
Description - A detailed description of your app. Example: My App is a great app that does great things. It's the best app ever!
.
Version - The version of your app. Example: 1.0.0
.
UI endpoint - The URL of your app’s UI that will be embedded as an iframe
in the Ridiam Console. Example: https://myapp.com
.
Webhook endpoint - The URL of your app’s webhook endpoint. Example: https://myapp.com/api/webhooks
.
Tasks - An array of tasks that your app can perform. See Task properties for more details.
Data hooks - An array of data hooks that your app can listen to.See Data hook properties for more details.
SQL access - An object containing your app’s SQL access. See SQL access properties for more details.
Extra columns - An array of extra columns that your app can add to the user table. See Extra column properties for more details.
App tables - An array of extra tables that your app can add to the database. See App table properties for more details.
Cube schemas - A object containing your app tables Cube schemas. See Cube schemas properties for more details.
Task
Task ID - The ID of the task, prefixed by your app ID. Example: appx_myapp123_task_1
.
Task name - The name of the task. Example: Task 1
.
Task description - A description of the task. Example: Example of task
.
Is cron - Whether the task is a periodic cron job. Example: true
.
Minutes interval - The interval in minutes for the cron job. Example: 720
.
On multiple exec - What to do when the task is executed multiple times concurently. Values: allow
, discard_new
, retry_later
, abort_existing
.
Data hook
Data hook ID - The ID of the data hook, prefixed by your app ID. Example: appx_myapp123_on_create_user
.
Data hook name - The name of the data hook. Example: On create
.
On - When the data hook should be triggered. Values: on_validation
, on_success
.
For - The kind of data and actions that the data hook should listen to. See Data hook for for more details.
Data hook for
Data kind - The kind of data that the data hook should listen to. Values: user
, segment
, order
, order_item
, cart
, cart_item
, session
, custom_event
, pageview
, appx_myapp_custom_table
…
Action - Only for on_success
hooks. The action that the data hook should listen to. Values: create
, update
. For kind == segment
values are exit
, enter
.
SQL access
Predefined queries - An array of predefined SQL queries that your app can perform. See SQL query properties for more details.
Tables permissions - An array of tables that your app can access. See SQL tables permissions for more details.
SQL predefined-query
SQL query ID - The ID of the SQL query, prefixed by your app ID. Example: appx_myapp123_sql_query_1
.
SQL query type - The type of the SQL query. Values: select
.
SQL query name - The name of the SQL query. Example: SQL query 1
.
SQL query description - A description of the SQL query. Example: Example of predefined SQL query
.
SQL query - Use *
to get full access or provide the specific query like SELECT * FROM `user` WHERE external_id = ?
.
Test arguments - An array of test arguments for the SQL query. Example: ["user_123"]
.
SQL tables permissions
Table - The name of the table. Values: user
, segment
, order
, order_item
, cart
, cart_item
, session
, custom_event
, pageview
, appx_myapp_custom_table
…
Read - Whether the app can read the table. Example: true
.
Write - Whether the app can write to the table. Example: true
.
Extra column
Kind - The kind of data that the extra column should be added to. Example: user
, order
, order_item
, session
, pageview
, custom_event
, cart
, cart_item
.
Columns - An array of columns that should be added to the kind. See Column properties for more details.
App table
Table name - The name of the table prefixed by your app ID. Example: appx_myapp123_table_1
.
Table description - A description of the table. Example: Example of extra table
.
Shard key - An array of columns that should be used as the shard key. Example: ["user_id"]
.
Unique key - An array of columns that should be used as the unique key. The unique_key
should at least contain all columns defined in shard_key
. Example: ["id", "user_id"]
.
Sort key - An array of columns that should be used to store the data in a specific order in the database. Example: ["created_at"]
.
Columns - An array of columns that should be added to the table. See Column properties for more details.
Indexes - An array of indexes that should be added to the table. See Index properties for more details.
Table column
Column name - The name of the column. For extra columns, it should be prefixed by your app ID. Example: appx_myapp123_column_a
.
Column type - The type of the column. Values: boolean
, number
, date
, datetime
, timestamp
, varchar
, longtext
, json
.
Column size - The size of the column. Required for varchar
types. Example: 128
.
Is required - Whether the column is required when inserting records. Example: true
.
Column description - A description of the column. Example: Example of extra column
.
Default boolean - The default value for the column. Example: true
.
Default number - The default value for the column. Example: 123
.
Default date - The default value for the column. Example: 2022-01-01
.
Default datetime - The default value for the column. Example: 2022-01-01T00:00:00Z
.
Default timestamp - The default value for the column. Example: CURRENT_TIMESTAMP
.
Default text - The default value for the column. Example: Hello world
.
Default JSON - The default value for the column. Example: {"key": "value"}
.
Extra definition - The extra definition for the column. Example: ON UPDATE CURRENT_TIMESTAMP
.
Hide in analytics - Whether the column should be hidden in analytics. Example: true
.
Table index
Index name - The name of the index. Example: index_column_varchar
.
Columns - An array of columns that should be used for the index. Example: ["column_varchar"]
.
Cube schemas
Please refer to the Cube schemas documentation for more details.
Full example
{
"id": "appx_default",
"name": "Default Rimdian app template",
"homepage": "https://yourwebsite.com",
"author": "Your Organization",
"icon_url": "https://eu.rimdian.com/images/apps/custom_app.png",
"short_description": "Default Rimdian app template.",
"description": "Default Rimdian app template.",
"version": "1.0.0",
"ui_endpoint": "https://localhost:3000",
"webhook_endpoint": "https://localhost:3000/api/webhooks",
"tasks": [
{
"id": "appx_default_task_1",
"name": "Task 1",
"description": "Example of manual task",
"is_cron": false,
"on_multiple_exec": "abort_existing"
},
{
"id": "appx_default_task_2",
"name": "Task 2",
"description": "Example of cron task",
"is_cron": true,
"minutes_interval": 720,
"on_multiple_exec": "discard_new"
}
],
"data_hooks": [
{
"id": "appx_default_on_create_user",
"name": "On create",
"on": "on_success",
"for": [
{
"kind": "user",
"action": "create"
}
]
},
{
"id": "appx_default_on_update_user",
"name": "On update",
"on": "on_success",
"for": [
{
"kind": "user",
"action": "update"
}
]
},
{
"id": "appx_default_on_exit_segment",
"name": "On exit segment",
"on": "on_success",
"for": [
{
"kind": "segment",
"action": "exit"
}
]
}
],
"sql_access": {
"predefined_queries": [
{
"id": "appx_default_sql_query_1",
"type": "select",
"name": "SQL query 1",
"description": "Example of predefined SQL query. For security reasons, use predefined queries to just fetch the data you needs",
"query": "SELECT * FROM `user` WHERE external_id = ?",
"test_args": ["auth-54-22"]
}
],
"tables_permissions": [
{
"table": "user",
"read": true,
"write": false
},
{
"table": "session",
"read": true,
"write": false
}
]
},
"extra_columns": [
{
"kind": "user",
"columns": [
{
"name": "appx_default_column_1",
"type": "varchar",
"size": 128,
"is_required": false,
"description": "Example of extra column"
}
]
}
],
"app_tables": [
{
"name": "appx_default_table_1",
"description": "Example of extra table",
"shard_key": ["id"],
"unique_key": ["id"],
"sort_key": ["created_at"],
"indexes": [
{
"name": "index_column_varchar",
"columns": ["column_varchar"]
}
],
"columns": [
{
"name": "id",
"type": "varchar",
"size": 64,
"description": "id",
"is_required": true
},
{
"name": "external_id",
"type": "varchar",
"size": 256,
"description": "external_id",
"is_required": true
},
{
"name": "created_at",
"type": "datetime",
"description": "created_at",
"is_required": true
},
{
"name": "updated_at",
"type": "datetime",
"description": "updated_at",
"is_required": false,
"hide_in_analytics": true
},
{
"name": "user_id",
"type": "varchar",
"size": 64,
"description": "user_id",
"is_required": true,
"hide_in_analytics": true
},
{
"name": "merged_from_user_id",
"type": "varchar",
"size": 64,
"description": "merged_from_user_id",
"is_required": false,
"hide_in_analytics": true
},
{
"name": "fields_timestamp",
"type": "json",
"description": "fields_timestamp",
"is_required": true,
"hide_in_analytics": true
},
{
"name": "db_created_at",
"type": "timestamp",
"size": 6,
"default_timestamp": "CURRENT_TIMESTAMP(6)",
"description": "db_created_at",
"is_required": true,
"hide_in_analytics": true
},
{
"name": "db_updated_at",
"type": "timestamp",
"size": 6,
"default_timestamp": "CURRENT_TIMESTAMP(6)",
"extra_definition": "ON UPDATE CURRENT_TIMESTAMP",
"description": "db_created_at",
"is_required": true,
"hide_in_analytics": true
},
{
"name": "column_varchar",
"type": "varchar",
"size": 128,
"description": "Example of varchar column",
"is_required": false
},
{
"name": "column_number",
"type": "number",
"description": "Example of number column",
"is_required": false
},
{
"name": "column_boolean",
"type": "boolean",
"description": "Example of boolean column",
"is_required": false
},
{
"name": "column_datetime",
"type": "datetime",
"description": "Example of datetime column",
"is_required": false
},
{
"name": "column_json",
"type": "json",
"description": "Example of json column",
"is_required": false
}
]
}
],
"cube_schemas": {
"Appx_default_table_1": {
"sql": "SELECT * FROM appx_default_table_1",
"title": "App table 1",
"description": "App table 1 description",
"joins": {
"Appx_myapp_table_2": {
"relationship": "one_to_many",
"sql": "${CUBE}.external_id = ${Appx_myapp_table_2}.table1_external_id"
}
},
"measures": {
"count": {
"title": "Count",
"type": "count",
"sql": "id",
"description": "The number of lines"
}
},
"dimensions": {
"id": {
"title": "ID",
"type": "string",
"sql": "id",
"primaryKey": true,
"description": "ID (sha1 of external_id)"
},
"external_id": {
"title": "External ID",
"type": "string",
"sql": "external_id",
"description": "External ID"
},
"created_at": {
"title": "Created at",
"type": "datetime",
"sql": "created_at",
"description": "Created at"
},
...
}
},
"Appx_default_table_2": {
...
}
}
}