[
  {
    "cmd": "begin",
    "description": "Guide to Getting Started",
    "custom": true,
    "customScript": "begin",
    "options": [ ]
  },
  {
    "cmd": "login",
    "description": "",
    "requiresToken": false,
    "custom": true,
    "customScript": "login",
    "options": [ ]
  },
  {
    "cmd": "which-user",
    "description": "outputs the email of the current user",
    "requiresToken": false,
    "custom": true,
    "customScript": "whichUser",
    "options": [ ]
  },
  {
    "cmd": "which-bucket",
    "description": "outputs the slug of the current Bucket",
    "requiresToken": false,
    "custom": true,
    "customScript": "whichBucket",
    "options": [ ]
  },
  {
    "cmd": "get-buckets",
    "description": "shows Buckets available to user",
    "requiresToken": false,
    "custom": true,
    "customScript": "getBuckets",
    "options": [
      {
        "param": "json",
        "flags": "-j, --json",
        "description": "show Bucket info in JSON format"
      }
    ]
  },
  {
    "cmd": "get-projects",
    "description": "shows Projects available to user",
    "requiresToken": false,
    "custom": true,
    "customScript": "getProjects",
    "options": [
      {
        "param": "json",
        "flags": "-j, --json",
        "description": "show Projects info in JSON format"
      }
    ]
  },
  {
    "cmd": "init [name]",
    "description": "installs a starter app to your machine",
    "requiresToken": false,
    "custom": true,
    "customScript": "installStarter",
    "options": [
      {
        "param": "folder",
        "flags": "-f, --folder [value]",
        "description": "indicate folder to install starter"
      }
    ]
  },
  {
    "cmd": "develop",
    "description": "starts a starter app on your machine in development mode",
    "requiresToken": false,
    "custom": true,
    "customScript": "developCommand",
    "options": [ ]
  },
  {
    "cmd": "start",
    "description": "starts a starter app on your machine",
    "requiresToken": false,
    "custom": true,
    "customScript": "startCommand",
    "options": [ ]
  },
  {
    "cmd": "use-bucket [slug]",
    "description": "",
    "requiresToken": false,
    "custom": true,
    "customScript": "useBucket",
    "options": [
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "bucket slug"
      },
      {
        "param": "read_key",
        "flags": "-k, --read_key [value]",
        "description": "read key"
      },
      {
        "param": "write_key",
        "flags": "-w, --write_key [value]",
        "description": "write key"
      }
    ]
  },
  {
    "cmd": "add-bucket",
    "description": "",
    "requiresToken": true,
    "custom": true,
    "customScript": "addBucket",
    "options": [
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "bucket slug"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "bucket title"
      },
      {
        "param": "cluster",
        "flags": "-c, --cluster [value]",
        "description": "Add this Bucket to a Cluster. ID of existing Cluster"
      }
    ]
  },
  {
    "cmd": "delete-bucket",
    "description": "",
    "requiresToken": true,
    "cosmicMethod": {
      "useBucket": false,
      "method": "deleteBucket"
    },
    "options": [
      {
        "param": "slug",
        "flags": "--slug [value]",
        "description": "The Bucket slug found as 'slug'"
      }
    ]
  },
  {
    "cmd": "get-objects",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "getObjects"
    },
    "options": [
      {
        "param": "query",
        "cosmicParamName": "query",
        "flags": "-q, --query [value]",
        "description": "[optional] json value that limits fetch to a specific query properties",
        "switchToCommandIfPresent": {
          "method": "getObjects",
          "useBucket": true
        },
        "isJsonString": true
      },
      {
        "param": "limit",
        "flags": "-l, --limit [value]",
        "description": "[optional] limit on number of objects to return"
      },
      {
        "param": "skip",
        "flags": "-s, --skip [value]",
        "description": "[optional] # objects to skip"
      },
      {
        "param": "props",
        "flags": "-p, --props [value]",
        "description": "[optional] limit on properties returned from the response"
      },
      {
        "param": "locale",
        "flags": "--locale [value]",
        "description": "[optional] specify locale filter"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "[optional] specify locale filter"
      }
    ]
  },
  {
    "cmd": "get-merge-request-objects",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "getMergeRequestObjects"
    },
    "options": [
      {
        "param": "id",
        "flags": "-id, --id [value]",
        "description": "Merge Request id"
      },
      {
        "param": "query",
        "cosmicParamName": "query",
        "flags": "-q, --query [value]",
        "description": "[optional] json value that limits fetch to a specific query properties",
        "switchToCommandIfPresent": {
          "method": "getMergeRequestObjects",
          "useBucket": true
        },
        "isJsonString": true
      },
      {
        "param": "limit",
        "flags": "-l, --limit [value]",
        "description": "[optional] limit on number of objects to return"
      },
      {
        "param": "skip",
        "flags": "-s, --skip [value]",
        "description": "[optional] # objects to skip"
      },
      {
        "param": "props",
        "flags": "-p, --props [value]",
        "description": "[optional] limit on properties returned from the response"
      },
      {
        "param": "locale",
        "flags": "--locale [value]",
        "description": "[optional] specify locale filter"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "[optional] specify locale filter"
      }
    ]
  },
  {
    "cmd": "get-object",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "getObject"
    },
    "options": [
      {
        "param": "id",
        "flags": "-id, --id [value]",
        "description": "Object id"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "[optional] specify status filter"
      },
      {
        "param": "props",
        "flags": "-p, --props [value]",
        "description": "[optional] limit on properties returned from the response"
      }
    ]
  },
  {
    "cmd": "get-object-types",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "getObjectTypes"
    },
    "options": [
    ]
  },
  {
    "cmd": "add-object-type",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "addObjectType"
    },
    "options": [
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "Object Type slug"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "plural title of your Object Type"
      },
      {
        "param": "singular",
        "flags": "--singular [value]",
        "description": "singular title of your Object Type"
      },
      {
        "param": "metafields",
        "flags": "-m, --metafields [value]",
        "description": "Default Metafields for each Object in this type",
        "isJsonString": true
      },
      {
        "param": "json",
        "flags": "-j, --json [value]",
        "description": "JSON string with specifications for the new Object Type. Ex: '[{\"slug\":\"my-slug\", \"title\": \"My awesome title\", \"metafields\": {...}}]'",
        "isJsonString": true,
        "isWrapperParameter": true
      }
    ]
  },
  {
    "cmd": "edit-object-type",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "editObjectType"
    },
    "options": [
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "Object Type slug"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "your Object Type title"
      },
      {
        "param": "singular",
        "flags": "--singular [value]",
        "description": "singular title of your Object Type"
      },
      {
        "param": "metafields",
        "flags": "-m, --metafields [value]",
        "description": "Default Metafields for each Object in this type",
        "isJsonString": true
      },
      {
        "param": "json",
        "flags": "-j, --json [value]",
        "description": "JSON string with specifications for the edits to the Object Type. Ex: '[{\"slug\":\"my-slug\", \"metafields\": {...}}]'",
        "isJsonString": true,
        "isWrapperParameter": true
      }
    ]
  },
  {
    "cmd": "delete-object-type",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "deleteObjectType"
    },
    "options": [
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "Object Type slug to delete"
      }
    ]
  },
  {
    "cmd": "add-object",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "addObject"
    },
    "options": [
      {
        "param": "type",
        "flags": "-type, --type [value]",
        "description": "Object Type slug"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "your Object title"
      },
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "Object slug"
      },
      {
        "param": "content",
        "flags": "-c, --content [value]",
        "description": "add content to your Object"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "draft, published, defaults to published"
      },
      {
        "param": "locale",
        "flags": "--locale [value]",
        "description": "add localization to the Object"
      },
      {
        "param": "metafields",
        "flags": "-m, --metafields [value]",
        "description": "Default Metafields for each Object in this type",
        "isJsonString": true
      },
      {
        "param": "json",
        "flags": "-j, --json [value]",
        "description": "JSON string with specifications for the new Object. Ex: '[{\"type_slug\":\"my-obj-type\", \"slug\":\"my-slug\", \"title\": \"My new obj\"}]'",
        "isJsonString": true,
        "isWrapperParameter": true
      }
    ]
  },
  {
    "cmd": "add-object-revision",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "addObjectRevision"
    },
    "options": [
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "your Object title"
      },
      {
        "param": "id",
        "flags": "-id, --id [value]",
        "description": "Object id"
      },
      {
        "param": "slug",
        "flags": "-s, --slug [value]",
        "description": "Object slug"
      },
      {
        "param": "content",
        "flags": "-c, --content [value]",
        "description": "add content to your Object"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "draft, published, defaults to published"
      },
      {
        "param": "locale",
        "flags": "--locale [value]",
        "description": "add localization to the Object"
      },
      {
        "param": "metafields",
        "flags": "-m, --metafields [value]",
        "description": "Default Metafields for each Object in this type",
        "isJsonString": true
      },
      {
        "param": "json",
        "flags": "-j, --json [value]",
        "description": "JSON string with specifications for the new Object. Ex: '[{\"type_slug\":\"my-obj-type\", \"slug\":\"my-slug\", \"title\": \"My new obj\"}]'",
        "isJsonString": true,
        "isWrapperParameter": true
      }
    ]
  },
  {
    "cmd": "edit-object",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "editObject"
    },
    "options": [
      {
        "param": "id",
        "flags": "-id, --id [value]",
        "description": "Object id"
      },
      {
        "param": "type",
        "flags": "-o, --type [value]",
        "description": "add Object to Object Type"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "your Object title"
      },
      {
        "param": "content",
        "flags": "-c, --content [value]",
        "description": "add content to your Object"
      },
      {
        "param": "status",
        "flags": "--status [value]",
        "description": "draft, published, defaults to published"
      },
      {
        "param": "locale",
        "flags": "--locale [value]",
        "description": "add localization to the Object"
      },
      {
        "param": "metafields",
        "flags": "-m, --metafields [value]",
        "description": "Default Metafields for each Object in this type",
        "isJsonString": true
      },
      {
        "param": "json",
        "flags": "-j, --json [value]",
        "description": "JSON string with specifications for the Object edits. Ex: '[{\"slug\":\"my-slug\", \"title\": \"Altered Title\"}]'",
        "isJsonString": true,
        "isWrapperParameter": true
      }
    ]
  },
  {
    "cmd": "delete-object",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "deleteObject"
    },
    "options": [
      {
        "param": "id",
        "flags": "-id, --id [value]",
        "description": "Object id to delete"
      }
    ]
  },
  {
    "cmd": "add-media",
    "description": "",
    "requiresToken": false,
    "custom": true,
    "customScript": "addMedia",
    "options": [
      {
        "param": "file",
        "flags": "-f, --file [value]",
        "description": "path to file of media"
      },
      {
        "param": "title",
        "flags": "-t, --title [value]",
        "description": "title to save media file under"
      },
      {
        "param": "folder",
        "flags": "--folder [value]",
        "description": "media folder slug"
      }
    ]
  },
  {
    "cmd": "get-media",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "getMedia"
    },
    "options": [
      {
        "param": "limit",
        "flags": "-l, --limit [value]",
        "description": "[optional] limit on number of media objects to return"
      },
      {
        "param": "skip",
        "flags": "-s, --skip [value]",
        "description": "[optional] # media objects to skip"
      },
      {
        "param": "props",
        "flags": "-p, --props [value]",
        "description": "[optional] limit on properties returned from the response"
      },
      {
        "param": "query",
        "cosmicParamName": "query",
        "flags": "-q, --query [value]",
        "description": "[optional] json value that limits fetch to a specific query properties",
        "switchToCommandIfPresent": {
          "method": "getMedia",
          "useBucket": true
        },
        "isJsonString": true
      }
    ]
  },
  {
    "cmd": "delete-media",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "deleteMedia"
    },
    "options": [
      {
        "param": "id",
        "flags": "--id [value]",
        "description": "id of media to delete"
      }
    ]
  },
  {
    "cmd": "add-user",
    "description": "",
    "requiresToken": false,
    "cosmicMethod": {
      "useBucket": true,
      "method": "addUser"
    },
    "options": [
      {
        "param": "email",
        "flags": "-e , --email [value]",
        "description": "The new user's email"
      },
      {
        "param": "role",
        "flags": "-r, --role [value]",
        "description": "admin, developer, editor or contributor"
      },
      {
        "param": "first_name",
        "flags": "--first_name [value]",
        "description": "The new user's first name"
      },
      {
        "param": "last_name",
        "flags": "--last_name [value]",
        "description": "The new user's last name"
      }
    ]
  }
]
