# Manifest

The component manifest provides information about a component (such as name, icon, author, description and properties) in a JSON text file. The manifest file must be named **component.json**.

Example manifest file:

```
{
    "name": "appmixer.utils.controls.OnStart",
    "author": "Martin Krčmář <martin@client.io>",
    "label": "On Flow Start",
    "description": "This trigger fires once and only once the flow starts.",
    "icon": "data:image/svg+xml;base64,PD94bWwgdmV...",
    "outPorts": [
        {
            "name": "out",
            "schema": {
                "properties": {
                    "started": {
                        "type": "string",
                        "format": "date-time"
                    }
                },
                "required": [ "started" ]
            },
            "options": [
                { "label": "Start time", "value": "started" }
            ]
        }
    ]
}
```

## Members

* [name](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/name)

  Name of the component.
* label

  Label that will be used instead of `name.`
* [icon](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/icon)

  Component icon.
* [marker](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/marker)\
  Component badge icon giving users extra context.
* [author](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/author)

  Author.
* [description](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/description)

  Description.
* [auth](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/auth)

  Authentication mechanism if the component requires authentication.
* [quota](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/quota)

  Parameters for the quota module used in the component (to conform with API usage limits).
* [properties](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/properties)

  Properties of the component.
* [inPorts](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/inports)

  Definition of the input of the component and how data transforms before it is processed by the component.
* [outPorts](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/outports)

  Definition of the output of the component and variables that other connected components can use in their input.
* [firePatterns](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/firepatterns)

  Requirements for the component input messages to decide whether the component is ready to fire.
* [tick](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/tick)

  Enable polling mechanism on the component.
* [private](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/private)\
  Make component private to hide it from the user.
* [webhook](https://docs.appmixer.com/6.0/v4.1/component-definition/manifest/webhook)\
  Make component "webhook"-type meaning it can receive HTTP requests.
* [state](https://docs.appmixer.com/appmixer/v/v3/component-definition/manifest/state)\
  Controls whether component's internal state is preserved across flow restarts.
