Data structure for manifest file generated by `docfx build`
===========================

After `docfx build`, `docfx` generates a manifest file in JSON format in the root output folder, listing some basic information about the set of files that `docfx build` handles.

Before *DocFX* version 1.7, the manifest file is an Array of items. Then *DocFX* realizes that there are also global properties manifest file consumers care about, for example, the list of TOC files that *DocFX* processed. However, it is hard to add properties to an Array model. So since version 1.8, *DocFX* introduces a new Object model for the manifest file.

For backward compatibility, in version 1.8, *DocFX* generates both Array model to-be-obsoleted and the new Object model. 

In version 1.9, manifest file in Array model will be **removed**.

Below table shows the difference between manifest file in Array model and manifest file in Object model.

| | File Name | Data Model
|-|-|-|
|Old Array Model | `.manifest` | [Array model](#the-obsoleted-array-model)
|New Object Model | `.manifest.json` | [Object model](#the-new-object-model)

The obsoleted Array model
-------------------------
Array model contains a list of [Manifest Item](#manifest-item-model)s.

The new Object model
-----------------------
Current supported properties for the Object model is listed as below:

Property Name | Type              | Description
------------- | ----------------- | ---------------------------
*files*       | Array of *Manifest Item* | Array of [*Manifest Item* model](#-manifest-item-model)
*homepages*   | Array of *Homepage* | Array of [*Homepage* model](#-homepage-model)

*Manifest Item* model
-----------------------

Property Name | Type              | Description
------------- | ----------------- | ---------------------------
*type*        | string            | The `documentType` is generated by plugins or specified to each file using [Yaml Header](docfx_flavored_markdown.md#yaml-header). Currently by default *DocFX* generates following *document type*s: `ManagedReference`, `Conceptual`, `RestApi`, `Resource`, `toc`.
*original*    | string            | Specifies the input file path to the root folder of the *Git* repository. It is the absolute file path if the file is not inside a *Git* repository. 
*outputFiles* | Dictionary&lt;string,string&gt; | For each output file, the **key** is the extension of the transformed file, the extension is determined by the template it applies to. And the **value** is the output file path relative to the manifest file.


*Homepage* model
-----------------------

Property Name | Type              | Description
------------- | ----------------- | ---------------------------
*tocPath*     | string            | Specifies the output TOC file path relative to the manifest file.
*homepage*    | string            | Specifies the homepage for current TOC with file path relative to the manifest file.
Add doc for manifest file generated by docfx build
Add doc for manifest file generated by docfx build
