Skip to content

Application manifest

Application Manifest

A manifest is a JSON file that describes the application. Every imperum application should have a manifest file in the root directory. Manifest file should be named as manifest.json. Imperum uses this file to understand the application and utilizes it in the system accordingly.

Field Description
name Name of the application
description Description of the application
vendor Name of the vendor. This field is optional
app_logo Logo of the application. See Logo Definition
file_name Designates the entry point of the application. This field is required.
category Category of the application. See Application Categories
actions List of actions that application can perform. See Action Definition
configurations List of configurations that application needs. See Configuration Definition
draft If this field is true, application will not be visible in the application list. This field is boolean
is_pinned If this field is true, the application will be pinned on the Playbook page. This field is boolean. If this field is false, the application can be pinned from the application configuration drawer later

Logo Definition

An app logo definition should have 2 fields. Logos can be in svg or png format. You can point to same file for both light and dark backgrounds.

Field Description
app_logo_light Logo of the application for light backgrounds
app_logo_dark Logo of the application for dark backgrounds

Action Definition

An action definition should have 4 fields.

Field Description
name Name of the action
display_name Human readable name of the action
input_params List of input parameters that action needs. See Input Parameter
output_params List of output parameters that action returns. See Output Parameter

Configuration Definition

Imperum uses configuration definitions to render a form in the application configuration drawer.

Configuration can not be used by other applications, you can store sensitive data in configurations by setting type field to password.

Definition of a configuration is the extends of Input Parameter with 1 additional field.

Field Description
default Default value of the configuration.

Input Parameter

Field Description
name Name of the input parameter
description Description of the input parameter
placeholder Placeholder of the input.
type Type of the input parameter in HTML input type format.
order Order of the input in the form. This field is number. Starts from 0.
required If this field is true, user has to fill this input.

Output Parameter

This outputs are rendered in nested selectors in Imperum Playbook to guide user to select the correct output.

Field Description
name Name of the output parameter. This field will be used to extract the value from the response and should be in JSON path format.
type Type of the output parameter. Can be string or object.

Connectors Definition

Imperum uses connectors definition to create connector meta objects in database. The item of the connectors list field is following.

Field Description
name Name of connector meta
input_params The input of the connector function. Its type is Input
raw_event_fields Raw event fields name. This is particularly needed for mapping
Fields are json path as some third party may send event as nested structure.
artifact_entity_fields_mapping The default mapping, event fields mapping objects are created
based on this field when a event comes from an connector for
the first time.
event_types_mapping The default mapping for each event type of a connector.
settings Currently settings contain type mapping in order to build full mapping object.

Sample Manifest

{
  "name": "Sample App",
  "description": "This is a sample app",
  "vendor": "Imperum",
  "app_logo": {
    "app_logo_light": "logo_light.svg",
    "app_logo_dark": "logo_dark.svg"
  },
  "file_name": "sample_app.py",
  "category": "SANDBOX",
  "actions": [
    {
      "name": "sample_action",
      "display_name": "Sample Action",
      "input_params": [
        {
          "name": "sample_input",
          "description": "This is a sample input",
          "placeholder": "Sample Input",
          "type": "text",
          "order": 0,
          "required": true
        }
      ],
      "output_params": [
        {
          "name": "sample_output.string",
          "type": "string"
        },
        {
          "name": "sample_output.object",
          "type": "object"
        }
      ]
    }
  ],
  "configurations": [
    {
      "name": "sample_config",
      "description": "This is a sample config",
      "placeholder": "Sample Config",
      "type": "text",
      "order": 0,
      "required": true,
      "default": "sample"
    }
  ],
  "draft": false
}

Application Categories

You can use one of the following categories for your application.

DEVOPS = "Devops"
DIRECTORY_SERVICE = "Directory Service"
EMAIL = "Email"
ENDPOINT = "Endpoint"
FIREWALL = "Firewall"
GENERIC = "Generic"
IDENTITY_MANAGEMENT = "Identity Management"
INFORMATION = "Information"
NETWORK_ACCESS_CONTROL = "Network Access Aontrol"
NETWORK_DEVICE = "Network Device"
NETWORK_SECURITY = "Network Security"
SANDBOX = "Sandbox"
SIEM = "SIEM"
THREAT_INTELLINGENCE = "Threat Intelligence"
TICKETING = "Ticketing"
VIRTUALIZATION = "Virtualization"
PAM = "PAM"
XDR = "XDR"
EDR = "EDR"
NDR = "NDR"
NGFW = "NGFW"
CLOUD = "Cloud"
IAM = "IAM"
OPENSOURCE = "Open Source"
FREE = "Free"
ITSM = "ITSM"
LOGMANAGEMENT = "Log Management"
DATABASE = "Database"
WAF = "WAF"
PROXY = "Proxy"
VULNERABILITYMANAGEMENT = "Vulnerability Management"
DEVELOPMENTTOOLS = "Development Tools"
COMMUNICATION = "Communication"
DNSSECURITY = "DNS Security"
MFA = "MFA"
IOT = "OT/IOT"
RISKMANAGEMENT = "Risk Management"
ATTACKSIMULATION = "Attack Simulation"