main.json
  • 22 Jul 2022
  • 1 Minute to read
  • Contributors
  • Dark
    Light
  • PDF

main.json

  • Dark
    Light
  • PDF

Article summary

The main file is a single text file, formatted as a JSON object, that instructs the data product to register protocols as apps, how to test them, and how to arrange them into categories. It also helps the data product define some initial overall metadata, like a description and a thumbnail image.

naming convention

The main file is typically named main.json and located in the Data Product directory path ./main.json.

overall schema

There are three primary attributes in the main file schema: the data_product_definition object, the protocols array, and the tests array. There are some other optional attributes as well, like data_dictionary.

Here's the simplest version of a main file.

{
  "data_product_definition": {
    "name": "fc-foo"
  },
  "protocols": [
    ...
  ]
}

data_product_definition

usage: required - datatype: object

The data_product_definition is an object to define the name and front end visualization components of the data product.

"data_product_definition": {
  "name": "the_unique_name_of_the_data_product",
  "title": "The Name of the Data Product for the User",
  "asset": "data-product-node-icon.jpg",
  "description": "A concise description of what the data product is for",
  "entity_name_singular": "entity",
  "entity_name_plural": "entities"
},

protocols

usage: required - datatype: array

The protocols array lists the protocols to make available at the launch of the data product.

If no protocols are registered, then the embedded protocols will be used.

"protocols": [
  "protocols/download_protocol.json",
  "protocols/summary_protocol.json",
  "protocols/r_markdown_protocol.json",
  ...
]

tests

usage: optional - datatype: array

The tests array is used to point to the test scripts to execute upon launch of the data product.

"tests": [
  "tests/download_test.json",
  "tests/summary_test.json",
  "tests/r_markdown_test.json",
  ...
]

data_dictionary

usage: optional - datatype: string, object

Produces a table of all variables within the data product.

"data_dictionary": "data_dictionary.tsv"
"data_dictionary": {
  "file": "_data_dictionary/data_dictionary.tsv",
  "variable_limit": 5
}

categories

usage: optional - datatype: string, object

The categories object is a series of key: value relationships to create like groupings of protocols within the data product.

protocols not assigned to a category will be given a default value.

"categories": {
  "Standard Apps": [
    "protocols/protocol_download.json",
    "protocols/protocol_summary.json"
  ],
  "R Plugin Apps": [
    "protocols/protocol_r_markdown.json"
  ]
}

groups

usage: optional - datatype: string, object

The groups object is a series of key: value relationships to specify access to groupings of protocols within the data product.

"groups": {
  "all_users": [
    "protocols/protocol_download.json",
    "protocols/protocol_summary.json"
  ],
  "advanced_users": [
    "protocols/protocol_r_markdown.json"
  ]
}

Was this article helpful?

What's Next