code: function APIData(endpointSettings){
    var apidata = cloneAndInvoke(endpointSettings.data);
    var instructions = parseData(apidata)
    var templates = prepareTemplates(endpointSettings.templates);
  
    createResponseData(instructions, templates);
  
    function getJSONString(){
      return JSON.stringify(apidata);
    }
  
    return {
      getJSONString: getJSONString
    };
  }
docs: /*
  APIData constructor
  Generates dataset based on templates.
  On initialize, it will...
  - Make a deep copy of data object in endpointSettings (apidata)
  - Parse api to find instructions for data generation (instructions)
  - Prepare templates to include valueGenerator functions
  - Manipulate contents of apidata based on instructions and templates
  
  Arguments:
  - config (Object): object with info about the endpoint
  
  Return: Object with access to methods
  - getJSONString(): return stringified version of apidata