JSON Hierarchy

It is (a turtle called) JSON all the way down.

Everything is JSON

** All configuration is stored as validated JSON in a CouchDB.**

Validated = meets a JSONschema as a minimum, ideally has been validated by the config infrastructure.

Document Types

  1. Schema - jsonschema compatible schema for validating document types
  2. Vocabulary - jsonschema compliant vocabulary extension to support BaziCloud JSON docs overrides1. Template Extension - a partial template doc which inclues the name of a complete template to begin with, then override.
  3. Configuration - a document built a template/ template extension.
  4. Source - a document defining where a list of values to populate an enum can be found
graph LR
    subgraph Document Template Sources
       global((BaziCloud Template)) -- extends --> modified(Customer Template Extension)
       global -- replaces --> override(Customer Template)
    end    

    subgraph Templates
        std{Standard JSON <br> Vanilla JSONschema} --> config(BaziCloud Config <br> see below)
        std --> bc["Must include 1 instance of  <br> **bazicloud** data"]
        bc --> cust(Defines customer shortcode and key paramters)
        bc --> doc(Any valid JSON info for apps)
        std --> temp{Template}
        temp --> conf(Config - adds fields to support JSONform )
    end

    subgraph Key
        diamond{Diamond <br> never used} --> cirlce((Cirlce <br> Admin Only))
        diamond --> rb(Rounded Box <br> template used by docs)
        diamond --> rect[Rectangle <br> document using named template type]
    end