Retrieve the App Data Model
It is sometimes necessary to know what the structure is of the data that will be returned by the JourneyApps API. For example, knowing which fields to expect for certain objects.
This API function allows you to retrieve a structured representation of your app's Data Model, exactly as defined in schema.xml within OXIDE.
Relative URL
HTTP Request Method
/api/v4/app-instance-id/datamodel.json
GET

Parameters

This API function does not take any parameters (except for standard ETag functionality — please see below)

Response

The response will contain a list of the object types in the particular app's Data Model, with a list of fields of each object type. Relationships of the object types are also included.
The Data Model is a representation of the fields defined by the developer of the app in the app's Data Model. The JourneyApps API will also return some metadata in addition to these fields.
For example updated_at and id will be returned in JourneyApps API responses (see Retrieving all Objects).
The HTTP headers for the response also include an ETag header which allows you to keep track of versions of the Data Model. Whenever changes are made to the app's Data Model, the hash in the ETag header will change. You can include this ETag hash value with the If-None-Match header in subsequent calls to the datamodel API function. If the Data Model for the app hasn't changed, a "304 Not Modified" response code will be returned.
The response also contains a field datamodel_hash, identifying the current version of the datamodel. This matches the value in the oplog.json call.

Example

http
GET https://run-testing-us.journeyapps.com/api/v4/533bda53027894f69b001055/datamodel.json
curl
curl "https://run-testing-us.journeyapps.com/api/v4/533bda53027894f69b001055/datamodel.json" \
-u "533bda53027894f69b001055:7Ajj5htRY1uzw7b4w23V"
ruby
require 'rest-client'
journey = RestClient::Resource.new "https://run-testing-us.journeyapps.com/api/v4", "533bda53027894f69b001055", "7Ajj5htRY1uzw7b4w23V"
journey["533bda53027894f69b001055/datamodel.json"].get
Response:
json
{
"models": {
"user": {
"name": "user",
"label": "User",
"display": "{name}",
"fields": {
"name": {
"name": "name",
"label": "Name",
"type": "text",
"subtype": "name"
}
},
"belongs_to": {
},
"has_many": {
}
},
"category": {
"name": "category",
"label": "Category",
"display": "{name}",
"fields": {
"name": {
"name": "name",
"label": "Name",
"type": "text"
}
},
"belongs_to": {
},
"has_many": {
"tasks": {
"model": "task",
"name": "tasks",
"inverse_of": "category"
}
}
},
"task": {
"name": "task",
"label": "Task",
"display": "{name}",
"fields": {
"name": {
"name": "name",
"label": "Name",
"type": "text"
},
"instructions": {
"name": "instructions",
"label": "Instructions",
"type": "text"
},
"status": {
"name": "status",
"label": "Status",
"type": "single-choice-integer",
"options": [
{
"key": 0,
"display": "Open"
},
{
"key": 1,
"display": "Closed"
}
]
}
},
"belongs_to": {
"category": {
"model": "category",
"name": "category",
"inverse_of": "tasks"
}
},
"has_many": {
}
}
},
"datamodel_hash": ""
}
Copy link
On this page
Parameters
Response
Example