Design Center REST API
Please see The Design Center API for the Design Center API commands that are wrapped by the following Enterprise API commands.
List of sketches
URI: https://hub.cfengine.com/api/dc/sketch
Method: GET
Example response:
{
  "meta": {
    "page": 1,
    "count": 69,
    "total": 69,
    "timestamp": 1383829723
  },
  "data": [
    {
      "Utilities::Staging": {
        "metadata": {
          "authors": [
            "Ted Zlatanov <tzz@lifelogs.com>"
          ],
          "version": 1,
          "name": "Utilities::Staging",
          "license": "MIT",
          "description": "Stage a directory of content to a target directory.",
          "tags": [
            "cfdc",
            "stage",
            "directory",
            "rsync"
          ],
          "depends": {
            "cfengine": {
              "version": "3.5.0"
            },
            "CFEngine::dclib::3.5.0": [],
            "CFEngine::dclib": [],
            "CFEngine::stdlib": {
              "version": 109
            }
          }
        }
      }
    }
  ]
}
Information about specific sketch
URI: https://hub.cfengine.com/api/dc/sketch/:sketchName
Method: GET
Example response:
{
  "meta": {
    "page": 1,
    "count": 1,
    "total": 1,
    "timestamp": 1383831531
  },
  "data": [
    {
      "namespace": "cfdc_staging",
      "manifest": {
        "test.cf": {
          "comment": "Test Policy"
        },
        "params/demo.json": {
          "comment": "Demo parameters."
        },
        "README.md": {
          "documentation": true
        },
        "test.pl": {
          "test": true
        },
        "main.cf": {
          "desc": "main file"
        }
      },
      "interface": [
        "main.cf"
      ],
      "metadata": {
        "authors": [
          "Ted Zlatanov <tzz@lifelogs.com>"
        ],
        "version": 1,
        "name": "Utilities::Staging",
        "license": "MIT",
        "description": "Stage a directory of content to a target directory.",
        "tags": [
          "cfdc",
          "stage",
          "directory",
          "rsync"
        ],
        "depends": {
          "cfengine": {
            "version": "3.5.0"
          },
          "CFEngine::dclib::3.5.0": [],
          "CFEngine::dclib": [],
          "CFEngine::stdlib": {
            "version": 109
          }
        }
      },
      "entry_point": null,
      "api": {
        "stage": [
          {
            "name": "runenv",
            "type": "environment"
          },
          {
            "name": "metadata",
            "type": "metadata"
          },
          {
            "name": "source_dir",
            "validation": "PATH_ABSOLUTE_UNIX_OR_WINDOWS",
            "type": "string",
            "description": "Directory where the content can be found."
          },
          {
            "name": "dest_dir",
            "validation": "PATH_ABSOLUTE_UNIX_OR_WINDOWS",
            "type": "string",
            "description": "Directory where the content will be installed."
          },
          {
            "name": "owner",
            "validation": "USERNAME_UNIX",
            "type": "string",
            "description": "Owner of the dest_dir after staging."
          },
          {
            "name": "group",
            "validation": "USERNAME_UNIX",
            "type": "string",
            "description": "Owner of the dest_dir after staging."
          },
          {
            "name": "dirmode",
            "validation": "DIGITS",
            "type": "string",
            "description": "Directory mode to install."
          },
          {
            "name": "filemode",
            "validation": "DIGITS",
            "type": "string",
            "description": "File mode to install."
          },
          {
            "name": "options",
            "type": "array",
            "default": {
              "precommand": "/bin/echo precommand",
              "postcommand": "/bin/echo postcommand",
              "excluded": [
                ".cvs",
                ".svn",
                ".subversion",
                ".git",
                ".bzr"
              ]
            },
            "description": "Staging options."
          },
          {
            "name": "staged",
            "type": "return"
          },
          {
            "name": "directory",
            "type": "return"
          }
        ]
      }
    }
  ]
}
Install sketch in the system
URI: https://hub.cfengine.com/api/dc/sketch/:sketchName
Method: PUT
Example usage: Sample API call to Install sketch
List of available definitions
URI: https://hub.cfengine.com/api/dc/definition
Method: GET
Example response:
{
  "meta": {
    "page": 1,
    "count": 1,
    "total": 28,
    "timestamp": 1383831645
  },
  "data": [
    {
      "e180fc753487e749056f422f89420d06": {
        "Data::Classes": {
          "url_retriever": "/usr/bin/curl -s",
          "CF_MP_ENTRY_POINT": "bynet",
          "regex": "daas",
          "url": "http://asw.as",
          "classname": "as"
        }
      },
      "efce8022c7a53d3755ded38aa6b64730": {
        "Utilities::abortclasses": {
          "alert_only": "1",
          "trigger_file": "/COWBOY",
          "timeout": {
            "hours": 24,
            "years": 0,
            "minutes": 0,
            "action": "abortclasses_timeout_action_noop",
            "months": 0,
            "enabled": false,
            "days": "144"
          },
          "trigger_context": "any",
          "abortclass": "class"
        }
      }
    }
  ]
}
Create new definition
URI: https://hub.cfengine.com/api/dc/definition/:definitionName
Method: PUT
Example Request Body:
{
  "sketchName": "test",
  "params": {
    "param_1": "value"
  }
}
Example usage: Sample API call to Define sketch parameters
List of available environments
URI: https://hub.cfengine.com/api/dc/environment
Method: GET
Example response:
{
  "meta": {
    "page": 1,
    "count": 1,
    "total": 6,
    "timestamp": 1383831817
  },
  "data": [
    {
      "092b04a40fdd4cb8bfdb685f2c4a0328": {
        "verbose": "",
        "test": "",
        "activated": {
          "include": [
            "cfengine_3"
          ],
          "class_function": [
            {
              "function": "classmatch",
              "args": [
                "cfengine_3"
              ]
            }
          ],
          "exclude": []
        }
      }
    }
  ]
}
Create new environment
URI: https://hub.cfengine.com/api/dc/environment/:name
Method: PUT
Example Request Body:
{
  "environment": [
    "cfengine3"
  ]
}
Example usage: Sample API call to Define environment
List of available activations
URI: https://hub.cfengine.com/api/dc/activation
Method: GET
Parameters:
- sketch Name of the sketch
- details 1 or 0 for extended details
Example response:
{
  "meta": {
    "page": 1,
    "count": 1,
    "total": 9,
    "timestamp": 1383831923
  },
  "data": [
    {
      "Data::Classes": [
        {
          "params": [
            "3603e753b8cb8ecc4d440dc91cd74742"
          ],
          "environment": "092b04a40fdd4cb8bfdb685f2c4a0328",
          "target": "sketches",
          "identifier": "cc",
          "bundle": "byfile",
          "metadata": {
            "identifier": "cc",
            "timestamp": 1379939700
          }
        },
        {
          "params": [
            "e180fc753487e749056f422f89420d06"
          ],
          "environment": "092b04a40fdd4cb8bfdb685f2c4a0328",
          "target": "sketches",
          "identifier": "aaa",
          "bundle": "bynet",
          "metadata": {
            "identifier": "aaa",
            "timestamp": 1380011681
          }
        }
      ],
      "Packages::removed": [
        {
          "params": [
            "8f068e0b3d7c2edc2d113a48b2485f94"
          ],
          "environment": "092b04a40fdd4cb8bfdb685f2c4a0328",
          "target": "sketches",
          "identifier": "12",
          "bundle": "removed",
          "metadata": {
            "identifier": "12",
            "timestamp": 1382366628
          }
        },
        {
          "params": [
            "e3134847d954d98d7419137b437cfd3c"
          ],
          "environment": "092b04a40fdd4cb8bfdb685f2c4a0328",
          "target": "sketches",
          "identifier": "xz",
          "bundle": "removed",
          "metadata": {
            "identifier": "xz",
            "timestamp": 1382367291
          }
        }
      ]
    }
  ]
}
Activation details
URI: https://hub.cfengine.com/api/dc/activation/:activation_id/:sketchName
Method: GET
Parameters:
- sketchName Name of the sketch
- details 1 or 0 for host and other details
Example response:
{
  "meta": {
    "page": 1,
    "count": 1,
    "total": 1,
    "timestamp": 1383832020
  },
  "data": [
    [
      {
        "params": [
          "087b875ad637c6392acc3b78b66910cb"
        ],
        "environment": "092b04a40fdd4cb8bfdb685f2c4a0328",
        "target": "sketches",
        "identifier": "pokemon",
        "bundle": "installed",
        "metadata": {
          "identifier": "pokemon",
          "timestamp": 1383306456
        },
        "details": {
          "params": {
            "CF_MP_ENTRY_POINT": "installed",
            "pkgs_add": [
              "po"
            ]
          },
          "environments": {
            "verbose": "",
            "test": "",
            "activated": {
              "include": [
                "cfengine_3"
              ],
              "class_function": [
                {
                  "function": "classmatch",
                  "args": [
                    "cfengine_3"
                  ]
                }
              ],
              "exclude": []
            }
          },
          "hosts": []
        }
      }
    ]
  ]
}
Create new activation
URI: https://hub.cfengine.com/api/dc/activation/:id
Method: PUT
Example Request Body:
{
  "environmentName": "092b04a40fdd4cb8bfdb685f2c4a0328",
  "paramName": "c53db12b79d5b2b74f319b91caf7e88f",
  "bundleName": "installed"
}
Example usage: Sample API call to Activate sketch
Delete the activation
URI: https://hub.cfengine.com/api/dc/activation/:id
Method: DELETE
List of validations
URI: https://hub.cfengine.com/api/dc/validation
Method: GET
Get validation details
URI: https://hub.cfengine.com/api/dc/validation/:id
Method: GET
Set validation type
URI: https://hub.cfengine.com/api/dc/validate/:validationType
Method: POST
Example Request Body:
{
  "validationData": [
    "asdasd"
  ]
}
Get workspace
URI: https://hub.cfengine.com/api/dc/workspace
Method: GET
Checks for the workspace and returns the path.
Post the commits
URI: https://hub.cfengine.com/api/dc/workspace/commit
Method: POST
Example Request Body:
{
  "message": "some message",
  "userEmail": "email.com"
}
Example usage: Sample API call to Commit changes
Reset the user workspace
URI: https://hub.cfengine.com/api/dc/workspace/reset
Method: POST
List workspace settings
URI: https://hub.cfengine.com/api/dc/workspace/settings
Method: GET
Returns the settings of the workspace (VCS settings), 404 if not found.
Create settings
URI: https://hub.cfengine.com/api/dc/workspace/settings
Method: POST
Content-Type header should be multipart/form-data.
Example Request Body:
{
  "gitServer": "serverurl",
  "gitEmail": "email.com",
  "gitBranch": "gitbranch name",
  "gitAuthor": "author name",
  "gitPrivateKey": "@filepath"
}
curl -F "gitServer=servername" -F "gitEmail=mail" -F "gitPrivateKey=@/home/user1/Desktop/id_rsa" http://server
Delete settings
URI: https://hub.cfengine.com/api/dc/workspace/settings
Method: DELETE
