{
  "Title": "Modules",
  "Description": "Compose module definitions",
  "Interface": "Module",
  "Struct": [
    {
      "imports": [
        "sqlxTypes github.com/jmoiron/sqlx/types",
        "github.com/cortezaproject/corteza-server/compose/types",
        "time"
      ]
    }
  ],
  "Parameters": {
    "path": [
      {
        "name": "namespaceID",
        "required": true,
        "title": "Namespace ID",
        "type": "uint64"
      }
    ]
  },
  "Protocol": "",
  "Authentication": [],
  "Path": "/namespace/{namespaceID}/module",
  "APIs": [
    {
      "Name": "list",
      "Method": "GET",
      "Title": "List modules",
      "Path": "/",
      "Parameters": {
        "get": [
          {
            "name": "query",
            "required": false,
            "title": "Search query",
            "type": "string"
          },
          {
            "name": "name",
            "required": false,
            "title": "Search by name",
            "type": "string"
          },
          {
            "name": "handle",
            "required": false,
            "title": "Search by handle",
            "type": "string"
          },
          {
            "name": "limit",
            "title": "Limit",
            "type": "uint"
          },
          {
            "name": "offset",
            "title": "Offset",
            "type": "uint"
          },
          {
            "name": "page",
            "title": "Page number (1-based)",
            "type": "uint"
          },
          {
            "name": "perPage",
            "title": "Returned items per page (default 50)",
            "type": "uint"
          },
          {
            "name": "sort",
            "title": "Sort items",
            "type": "string"
          }
        ]
      }
    },
    {
      "Name": "create",
      "Method": "POST",
      "Title": "Create module",
      "Path": "/",
      "Parameters": {
        "post": [
          {
            "name": "name",
            "required": true,
            "title": "Module Name",
            "type": "string"
          },
          {
            "name": "handle",
            "required": false,
            "title": "Module handle",
            "type": "string"
          },
          {
            "name": "fields",
            "required": true,
            "title": "Fields JSON",
            "type": "types.ModuleFieldSet"
          },
          {
            "name": "meta",
            "required": true,
            "title": "Module meta data",
            "type": "sqlxTypes.JSONText"
          }
        ]
      }
    },
    {
      "Name": "read",
      "Method": "GET",
      "Title": "Read module",
      "Path": "/{moduleID}",
      "Parameters": {
        "path": [
          {
            "name": "moduleID",
            "required": true,
            "title": "Module ID",
            "type": "uint64"
          }
        ]
      }
    },
    {
      "Name": "update",
      "Method": "POST",
      "Title": "Update module",
      "Path": "/{moduleID}",
      "Parameters": {
        "path": [
          {
            "name": "moduleID",
            "required": true,
            "title": "Module ID",
            "type": "uint64"
          }
        ],
        "post": [
          {
            "name": "name",
            "required": true,
            "title": "Module Name",
            "type": "string"
          },
          {
            "name": "handle",
            "required": false,
            "title": "Module Handle",
            "type": "string"
          },
          {
            "name": "fields",
            "required": true,
            "title": "Fields JSON",
            "type": "types.ModuleFieldSet"
          },
          {
            "name": "meta",
            "required": true,
            "title": "Module meta data",
            "type": "sqlxTypes.JSONText"
          },
          {
            "name": "updatedAt",
            "required": false,
            "title": "Last update (or creation) date",
            "type": "*time.Time"
          }
        ]
      }
    },
    {
      "Name": "delete",
      "Method": "DELETE",
      "Title": "Delete module",
      "Path": "/{moduleID}",
      "Parameters": {
        "path": [
          {
            "name": "moduleID",
            "required": true,
            "title": "Module ID",
            "type": "uint64"
          }
        ]
      }
    },
    {
      "Name": "triggerScript",
      "Method": "POST",
      "Title": "Fire compose:module trigger",
      "Path": "/{moduleID}/trigger",
      "Parameters": {
        "path": [
          {
            "name": "moduleID",
            "required": true,
            "title": "ID",
            "type": "uint64"
          }
        ],
        "post": [
          {
            "name": "script",
            "required": true,
            "title": "Script to execute",
            "type": "string"
          }
        ]
      }
    }
  ]
}