{
  "swagger": "2.0",
  "info": {
    "description": "A lifecycle is about measuring the flow of a process upon specific entities and group of entities. It also allows for separate versions in order to evolve a process from simple to mature or as experimentation such as A-B testing.\n\nAll kinds of examples can be applied to lifecycles. Customer, Order, Claim are just a few examples.",
    "version": "1.0",
    "title": "Lifecycle",
    "contact": {}
  },
  "host": "v393vcq.restletmocks.net",
  "schemes": [
    "https"
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/lifecycles": {
      "get": {
        "tags": [
          "Lifecycle Definitions"
        ],
        "summary": "Returns a list of all lifecycles (optionally filtered)",
        "description": "roles: tenant-owner, developer",
        "operationId": "lifecycles-get-list",
        "parameters": [
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of pages away from the first one. The first one is zero (0).",
            "default": 0,
            "x-example": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of items per page",
            "default": 0,
            "x-example": 5
          },
          {
            "name": "tags[]",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "Optional parameter to filter by one or more tags using the tagId",
            "items": {
              "type": "string"
            },
            "x-example": "tags[]=123e4567-e89b-12d3-a456-426655440000&tags[]=123e4567-e89b-12d3-a456-426655440001"
          },
          {
            "name": "fromDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created after the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "toDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created before the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "sortBy",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by specified field name"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by ascending or descending order",
            "default": "asc",
            "enum": [
              "asc",
              "desc"
            ]
          },
          {
            "name": "searchText",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to limit search results containing specified text"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Lifecycle"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Definitions"
        ],
        "summary": "Create a new lifecycle",
        "description": "May contain many versions of the same lifecycle each with many entities that depend on a lifecycle. Examples of lifecycle are Customer, Order, Resource, Claim.\n\nroles: tenant-owner, developer",
        "operationId": "lifecycles-create",
        "consumes": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Lifecycle"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/Lifecycle"
            }
          }
        }
      }
    },
    "/lifecycles/{lifecycleId}": {
      "get": {
        "tags": [
          "Lifecycle Definitions"
        ],
        "summary": "Get a lifecycle",
        "operationId": "lifecycles-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/Lifecycle"
            }
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Definitions"
        ],
        "summary": "Update a lifecycle",
        "description": "The response is the reflection of lifecycle after the update has been saved.",
        "operationId": "lifecycles-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Lifecycle"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/Lifecycle"
            }
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Definitions"
        ],
        "summary": "Deletes a lifecycle CAUTION",
        "description": "Deletes a lifecycle CAUTION",
        "operationId": "lifecycles-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/steps": {
      "get": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Get step dictionary for lifecycle",
        "description": "Get step dictionary for lifecycle",
        "operationId": "lifecycle-step-dictionary",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleStep"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Create a step definition",
        "description": "Create a step definition that may be referenced by one or more lifecycle versions",
        "operationId": "lifecycle-step-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleStep"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleStep"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Update all steps in dictionary",
        "description": "Update all steps in dictionary",
        "operationId": "lifecycle-update-all-steps",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleStep"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleStep"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/steps/{stepId}": {
      "get": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Get a specific step definition",
        "description": "Get a specific step definition",
        "operationId": "lifecycle-step-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleStep"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Update a step definition",
        "description": "Update a step definition",
        "operationId": "lifecycle-step-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleStep"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleStep"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Step Dictionary"
        ],
        "summary": "Delete a specific step definition",
        "description": "Delete a specific step definition ONLY if it is not referenced by any lifecycle version (archived or not). Published entities are unlikely able or practical to be deleted.",
        "operationId": "lifecycle-step-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "stepId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/update-all-steps": {
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions": {
      "get": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Get versions of a lifecycle",
        "operationId": "lifecycles-versions-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleVersion"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Create a lifecycle version",
        "operationId": "lifecycles-versions-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/{versionNo}": {
      "get": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Get a version of a lifecycle",
        "operationId": "lifecycles-versions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Update a version of a lifecycle",
        "description": "The versionName, Step names, WIP limits and cycle times may be updated any time (even after publish and entity dependancy).\n\n The versionNo, however, cannot be altered once created.\n\nThe response is the reflection of lifecycle version after the update has been saved.\n\nSee #lifecycles-versions-update-name if you just want to update the name as a convenience. Also, keep in mind that lifecycle step definitions may be updated (#lifecycle-step-update) apart from the lifecycle version(s) that reference it.\n\nSteps cannot be removed and Pathways (nextSteps) cannot be changed once the Lifecycle Version has been published or has dependancies. These attributes can be updated if it matches the following criteria:\n\n* Has not yet been published\n* Has no entity dependencies\n\n",
        "operationId": "lifecycles-versions-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Deletes a version of a lifecycle CAUTION",
        "description": "A version can be deleted if it matches the following criteria:\n* Has not yet been published\n* Has no entity dependancies",
        "operationId": "lifecycles-versions-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          },
          "404": {
            "description": "Status 404"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "versionNo",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/latest": {
      "get": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Get latest version of lifecycle",
        "description": "Get latest version of lifecycle",
        "operationId": "lifecycles-versions-latest",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleVersion"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/{versionNo}/update-name": {
      "put": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Update just a versions name",
        "description": "Update just a versions name\n\nUpdates to the name only even when published or has depenencies\n",
        "operationId": "lifecycles-versions-update-name",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleVersionName"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleVersionName"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "versionNo",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/{versionNo}/duplicate": {
      "post": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Duplicate a version",
        "description": "Make a copy of the selected version which makes a new version.\n\nThe newVersionNo and newVersionName may be optionally filled in and the resulting Lifecycle Version will contain those values (if they do not already exist). The versionName may be changed at any time but the versionNo cannot be altered once created.\n\nIf the newVersionNo is omitted then the server will generate one that is next in the sequence for the given Lifecycle. If the latest version is 8 and a copy of version 4 is made, then the copy will become version 9.\n\nUse the resulting response to get the new Lifecycle Version.\n",
        "operationId": "lifecycle-versions-duplicate",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleDuplicateVersion"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleDuplicateVersion"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "versionNo",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/{versionNo}/publish": {
      "post": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Publish version to one or more App Spaces",
        "description": "If the version is already published to a given space, it will be silently ignored.",
        "operationId": "lifecycle-versions-publish",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleVersionPublication"
              }
            },
            "x-examples": {
              "application/json": "[\"123e4567-e89b-12d3-a456-426655440000\"]"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleVersionPublication"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "versionNo",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles": {
      "get": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Get all the entities being tracked CAUTION",
        "description": "If you are tracking a lot of things, you will get a big list.\n\nYou should always figure out a way to filter your list and pass that criteria as parameters.",
        "operationId": "entitylifecycles-get-list",
        "parameters": [
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "number",
            "description": "Optional parameter to support paginiation",
            "default": 0,
            "x-example": 5
          },
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "number",
            "description": "Optional parameter to support pagination",
            "default": 0,
            "x-example": 5
          },
          {
            "name": "sortBy",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by specified field name"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by ascending or descending order",
            "default": "asc",
            "enum": [
              "asc",
              "desc"
            ]
          },
          {
            "name": "fromDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created after the specified date-time",
            "x-example": "2018-06-26T00:00:00.000Z"
          },
          {
            "name": "toDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created before the specified date-time",
            "x-example": "2018-06-26T00:00:00.000Z"
          },
          {
            "name": "searchText",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to limit search results containing specified text"
          },
          {
            "name": "customerId",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "List"
          },
          {
            "name": "entityLifecycleIds",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "entityLifecycleIds[]"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EntityLifecycle"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Start tracking an entity",
        "operationId": "entitylifecycles-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EntityLifecycle"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EntityLifecycle"
            }
          }
        }
      }
    },
    "/entitylifecycles/{entitylifecycleId}": {
      "get": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Get an entity's current situation and metadata",
        "operationId": "entitylifecycles-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EntityLifecycle"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Update an entity's situation and metadata",
        "description": "You can change what step it is on.\n\nYou can add/remove/change metadata.\n\nTo change what version it is on, use the migrate method. In other words, you cannot change an entity's lifecycle version directly. Also, you cannot change an entity's lifecycle type (like changing an apple into an orange).\n\nThe response is the reflection of entity after the update has been saved.",
        "operationId": "entitylifecycles-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EntityLifecycle"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EntityLifecycle"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Stop tracking an entity and delete history CAUTION",
        "description": "Are you sure you want to do this? It will probably affect history and analysis negatively.",
        "operationId": "entitylifecycles-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "entitylifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles/{entityLifecycleId}/history": {
      "get": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "History of the entity lifecycle",
        "description": "History of the entity lifecycle",
        "operationId": "entitylifecycle-history-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Create or log a history record for the entity lifecycle",
        "description": "Create or log a history record for the entity lifecycle",
        "operationId": "entitylifecycle-history-log",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "entityLifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles/{entityLifecycleId}/history/{entityLifecycleHistoryId}": {
      "get": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Get a history record for the entity lifecycle",
        "description": "Get a history record for the entity lifecycle",
        "operationId": "entitylifecycle-history-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Update a history record for the entity lifecycle",
        "description": "Update a history record for the entity lifecycle",
        "operationId": "entitylifecycle-history-update",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Delete a history record for the entity lifecycle",
        "description": "Delete a history record for the entity lifecycle",
        "operationId": "entitylifecycle-history-delete",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "entityLifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "entityLifecycleHistoryId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles/{entitylifecycleId}/getnextsteps": {
      "get": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Get possible next steps for entity",
        "description": "Return the next possible steps for an entity at its current step.",
        "operationId": "entitylifecycles-getnextsteps",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/StepIdName"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "entitylifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles/{entitylifecycleId}/change-step": {
      "put": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Change entity lifecycle's current step",
        "description": "Change entity lifecycle's current step",
        "operationId": "entitylifecycle-change-step",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EntityLifecycleChangeStep"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EntityLifecycleChangeStep"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "entitylifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/entitylifecycles/{entitylifecycleId}/migrateversion": {
      "post": {
        "tags": [
          "Lifecycle Operations"
        ],
        "summary": "Migrate an entity lifecycle to a different published lifecycle version",
        "description": "The migration must be within the same lifecycle (not between different lifecycles).\n\nThe mapping reflects how steps are concidered during the migration. Alternatively, you can also explicitly declare the target step that is found in the target version.",
        "operationId": "entitylifecycles-migrateversion",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MigrationStrategy"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200"
          }
        }
      },
      "parameters": [
        {
          "name": "entitylifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/versions/{versionNo}/migrateversion": {
      "post": {
        "tags": [
          "Lifecycle Versions"
        ],
        "summary": "Migrate entities of a published version to another",
        "description": "Returns a summary of changes",
        "operationId": "lifecycles-versions-migrate",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/MigrationStrategy"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/MigrationStrategy"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "versionNo",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/event-definitions": {
      "get": {
        "tags": [
          "Lifecycle Process Event Definitions"
        ],
        "summary": "Get lifecycle event definitions list",
        "description": "Get lifecycle event definitions (filterable)",
        "operationId": "lifecycles-event-definitions-get-list",
        "parameters": [
          {
            "name": "eventTypes[]",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "Array of eventTypes to be filtered",
            "items": {
              "type": "string",
              "description": "Event type enum",
              "enum": [
                "Pre_Step_Event",
                "Post_Step_Event",
                "Step_WIP_Limit",
                "Step_Cycle_Time",
                "WIP_Definition_Limit",
                "WIP_Definition_Cycle_Time",
                "WIP_Limit_Alert",
                "WIP_Cycle_Time_Alert"
              ]
            },
            "x-example": "eventTypes[]=Pre_Step_Event&eventTypes[]=Step_WIP_Limit"
          },
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of pages away from the first one. The first one is zero (0).",
            "x-example": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of items per page",
            "x-example": 5
          },
          {
            "name": "fromDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created after the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "toDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created before the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "sortBy",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by specified field name"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by ascending or descending order",
            "default": "asc",
            "enum": [
              "asc",
              "desc"
            ]
          },
          {
            "name": "searchText",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to limit search results containing specified text"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleEventDefinition"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Process Event Definitions"
        ],
        "summary": "Create a lifecycle event definition",
        "description": "Create a lifecycle event",
        "operationId": "lifecycles-event-definition-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventDefinition"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventDefinition"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/event-definitions/{lifecycleEventDefinitionId}": {
      "get": {
        "tags": [
          "Lifecycle Process Event Definitions"
        ],
        "summary": "Get a lifecycle event definition",
        "description": "Get a lifecycle event definition",
        "operationId": "lifecycle-event-definitions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventDefinition"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Process Event Definitions"
        ],
        "summary": "Update a lifecycle event definition",
        "description": "Update a lifecycle event definition",
        "operationId": "lifecycle-event-definition-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventDefinition"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventDefinition"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Process Event Definitions"
        ],
        "summary": "Delete a lifecycle event definition",
        "description": "Delete a lifecycle event definition",
        "operationId": "lifecycle-event-definitions-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "lifecycleEventDefinitionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/event-subscriptions": {
      "get": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Get all lifecycle event subscriptions",
        "description": "Get all lifecycle event subscriptions",
        "operationId": "lifecycle-event-subscriptions-get-list",
        "parameters": [
          {
            "name": "eventTypes[]",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "Array of eventTypes to be filtered",
            "items": {
              "type": "string",
              "description": "Event type enum",
              "enum": [
                "Pre_Step_Event",
                "Post_Step_Event",
                "Step_WIP_Limit",
                "Step_Cycle_Time",
                "WIP_Definition_Limit",
                "WIP_Definition_Cycle_Time",
                "WIP_Limit_Alert",
                "WIP_Cycle_Time_Alert"
              ]
            },
            "x-example": "eventTypes[]=Pre_Step_Event&eventTypes[]=Step_WIP_Limit"
          },
          {
            "name": "pageOffset",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of pages away from the first one. The first one is zero (0).",
            "x-example": 3
          },
          {
            "name": "pageSize",
            "in": "query",
            "required": false,
            "type": "integer",
            "description": "Number of items per page",
            "x-example": 5
          },
          {
            "name": "fromDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created after the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "toDatetime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "description": "Optional parameter to limit search results for records created before the specified date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "sortBy",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by specified field name"
          },
          {
            "name": "sortOrder",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to sort by ascending or descending order",
            "default": "asc",
            "x-example": "asc"
          },
          {
            "name": "searchText",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Optional parameter to limit search results containing specified text"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleEventDefinition"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Create lifecycle event subscription",
        "description": "Create lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-subscribe",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/event-subscriptions/{lifecycleEventSubscriptionId}": {
      "get": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Get a lifecycle event subscription",
        "description": "Get a lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Update lifecycle event subscription",
        "description": "Update lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Delete event subscription (unsubscribe)",
        "description": "Delete event subscription (unsubscribe)",
        "operationId": "lifecycle-event-subscriptions-unsubscribe",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "lifecycleEventSubscriptionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/managed-event-definitions": {
      "get": {
        "tags": [
          "Lifecycle Managed Event Definitions"
        ],
        "summary": "Get managed event definitions (filterable)",
        "description": "Get managed event definitions (filterable)",
        "operationId": "managed-event-definitions-get-list",
        "parameters": [
          {
            "name": "eventTypeFilter",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "List of eventTypes to filter for",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ManagedEventDefinition"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Managed Event Definitions"
        ],
        "summary": "Create a managed event definition",
        "description": "Create a managed event definition",
        "operationId": "managed-event-definitions-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ManagedEventDefinition"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ManagedEventDefinition"
            }
          }
        }
      }
    },
    "/managed-event-definitions/{managedEventDefinitionId}": {
      "get": {
        "tags": [
          "Lifecycle Managed Event Definitions"
        ],
        "summary": "Get a managed event definition",
        "description": "Get a managed event definition",
        "operationId": "managed-event-definitions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ManagedEventDefinition"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Managed Event Definitions"
        ],
        "summary": "Update a managed event definition",
        "description": "Update a managed event definition",
        "operationId": "managed-event-definitions-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ManagedEventDefinition"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ManagedEventDefinition"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Managed Event Definitions"
        ],
        "summary": "Delete a managed event definition",
        "description": "Delete a managed event definition",
        "operationId": "managed-event-definitions-delete",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "managedEventDefinitionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/managed-event-subscriptions": {
      "get": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Get all lifecycle event subscriptions",
        "description": "Get all lifecycle event subscriptions",
        "operationId": "lifecycle-event-subscriptions-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleEventDefinition"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Create lifecycle event subscription",
        "description": "Create lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-subscribe",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      }
    },
    "/managed-event-subscriptions/{lifecycleEventSubscriptionId}": {
      "get": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Get a lifecycle event subscription",
        "description": "Get a lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Update lifecycle event subscription",
        "description": "Update lifecycle event subscription",
        "operationId": "lifecycle-event-subscriptions-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleEventSubscription"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Process Event Subscriptions"
        ],
        "summary": "Delete event subscription (unsubscribe)",
        "description": "Delete event subscription (unsubscribe)",
        "operationId": "lifecycle-event-subscriptions-unsubscribe",
        "parameters": [],
        "responses": {
          "204": {
            "description": "Status 204"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleEventSubscriptionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/metrics/cycle-times": {
      "get": {
        "tags": [
          "Lifecycle Metrics"
        ],
        "summary": "Get lifecyle metric cycle times",
        "operationId": "lifecycle-metrics-cycle-times-get",
        "parameters": [
          {
            "name": "versionTarget",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Omit for all versions"
          },
          {
            "name": "startStep",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "endStep",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "appSpaceId",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "reportingStartTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "reportingEndTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleCycleTimeMetricsResults"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/metrics/top-pathways": {
      "get": {
        "tags": [
          "Lifecycle Metrics"
        ],
        "summary": "Get lifecycle metric top pathways",
        "operationId": "lifecycle-metrics-top-pathways-get",
        "parameters": [
          {
            "name": "versionTarget",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Omit for all versions"
          },
          {
            "name": "startStep",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "endStep",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "appSpaceId",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "reportingStartTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "reportingEndTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "goalPurpose",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Intent for cycle time (short for quickly as possible or long for retention)",
            "default": "Short",
            "enum": [
              "Short",
              "Long"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleTopPathwaysMetricsResults"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/metrics/trends": {
      "get": {
        "tags": [
          "Lifecycle Metrics"
        ],
        "summary": "Get Lifecycle Trend Metrics",
        "description": "Get Lifecycle Trend Metrics",
        "operationId": "lifecycle-metrics-trends-get",
        "parameters": [
          {
            "name": "appSpaceId",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "reportingStartTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "reportingEndTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleTrendMetricsResults"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/metrics/cumulative-flow": {
      "get": {
        "tags": [
          "Lifecycle Metrics"
        ],
        "summary": "Get Lifecycle Cumulative Flow",
        "description": "Get Lifecycle Cumulative Flow",
        "operationId": "lifecycle-metrics-cumulative-flow-get",
        "parameters": [
          {
            "name": "appSpaceId",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "123e4567-e89b-12d3-a456-426655440000"
          },
          {
            "name": "reportingStartTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "reportingEndTime",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleCumulativeFlowMetricsResults"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/events": {
      "get": {
        "tags": [
          "Event Definitions"
        ],
        "summary": "List all Event Definitions",
        "description": "List all Event Definitions specific to Lifecycle APIs. For example: 'New Lifecycle Created', 'Lifecycle Version Published'\n\nExcludes Lifecycle Events and WIP Definition Events.",
        "operationId": "events-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EventDefinition"
              }
            },
            "examples": {
              "application/json": "[{\"eventDefinitionId\": \"123e4567-e89b-a456-426655440000\",\"eventName\": \"Payment failed\"},{\"eventDefinitionId\": \"223t4616-b81j-a456-426117836246\",\"eventName\": \"Subscription renewed\"},{\"eventDefinitionId\": \"323e4567-e89b-a456-426655440000\",\"eventName\": \"User added\"},{\"eventDefinitionId\": \"423e4567-e89b-a456-426655440000\",\"eventName\": \"Lifecycle Updated\"}]"
            }
          }
        }
      }
    },
    "/event-subscriptions": {
      "get": {
        "tags": [
          "Event Subscriptions"
        ],
        "summary": "Get all subscriptions to events",
        "description": "Get all subscriptions to events.\n\nUse the WIP definition endpoints for events defined there.",
        "operationId": "event-subscriptions-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EventSubscription"
              }
            },
            "examples": {
              "application/json": "[{\"eventSubscriptionId\": \"AE13-DWG1-KPHLR8\",\"eventDefinitionId\": \"123e4567-e89b-a456-426655440000\",\"subscriptionDate\": \"2018-01-15T16:41:41.090Z\",\"webhookEnabled\": true,\"webhookUrl\": \"www.chassi.com\",\"eventMessagingEnabled\": false,\"eventMessagingAddress\": \"\",\"eventName\": \"Payment failed\"},{\"eventSubscriptionId\": \"AEDA-DWEB-LE31R8\",\"eventDefinitionId\": \"223t4616-b81j-a456-426117836246\",\"subscriptionDate\": \"2018-01-15T16:41:41.090Z\",\"webhookEnabled\": false,\"webhookUrl\": \"\",\"eventMessagingEnabled\": true,\"eventMessagingAddress\": \"path/to/topic\",\"eventName\": \"Subscription renewed\"},{\"eventSubscriptionId\": \"ALEO-31K9-CKQ8GG\",\"eventDefinitionId\": \"323e4567-e89b-a456-426655440000\",\"subscriptionDate\": \"2018-01-15T16:41:41.090Z\",\"webhookEnabled\": true,\"webhookUrl\": \"www.chassi.com\",\"eventMessagingEnabled\": true,\"eventMessagingAddress\": \"yet/another/path/name\",\"eventName\": \"User added\"},{\"eventSubscriptionId\": \"J3GG-WA59-H38LAM\",\"eventDefinitionId\": \"423e4567-e89b-a456-426655440000\",\"subscriptionDate\": \"2018-01-15T16:41:41.090Z\",\"webhookEnabled\": false,\"webhookUrl\": \"\",\"eventMessagingEnabled\": true,\"eventMessagingAddress\": \"another/path/to/a/message\",\"eventName\": \"Lifecycle Updated\"}]"
            }
          }
        }
      },
      "post": {
        "tags": [
          "Event Subscriptions"
        ],
        "summary": "Subscribe to event",
        "description": "Use the WIP definition endpoints to subcribe to events defined there.\n",
        "operationId": "event-subscriptions-subscribe",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          }
        }
      }
    },
    "/event-subscriptions/{eventSubscriptionId}": {
      "get": {
        "tags": [
          "Event Subscriptions"
        ],
        "summary": "Get an event subscription",
        "description": "Get an event subscription.\n\nUse the WIP definition endpoints for events defined there.",
        "operationId": "event-subscriptions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            },
            "examples": {
              "application/json": "{\"eventSubscriptionId\": \"AE13-DWG1-KPHLR8\",\"eventDefinitionId\": \"123e4567-e89b-a456-426655440000\",\"subscriptionDate\": \"2018-01-15T16:41:41.090Z\",\"webhookEnabled\": true,\"webhookUrl\": \"www.chassi.com\",\"eventMessagingEnabled\": false,\"eventMessagingAddress\": \"\",\"eventName\": \"Payment failed\"}"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Event Subscriptions"
        ],
        "summary": "Update event subscription",
        "description": "Use the WIP definition endpoints to update subscriptions defined there.",
        "operationId": "event-subscriptions-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/EventSubscription"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Event Subscriptions"
        ],
        "summary": "Unsubscribe to an event",
        "description": "Use the WIP definition endpoints to unsubcribe to events defined there.",
        "operationId": "event-subscriptions-unsubscribe",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200"
          }
        }
      },
      "parameters": [
        {
          "name": "eventSubscriptionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/utilization": {
      "post": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Log a utilization event (or list of events) and return a Resource Utilization Aggregation.",
        "operationId": "lifecycles-utilization-logevent",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ResourceUtilizationAggregate"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ResourceUtilizationAggregate"
              }
            }
          }
        }
      }
    },
    "/utilization/search": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Get a Lifecycle Resource Utilization summary using a search filter",
        "operationId": "lifecycles-utilization-search",
        "parameters": [
          {
            "name": "toDate",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "search to this date"
          },
          {
            "name": "fromDate",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "search from this date"
          },
          {
            "name": "dataSeriesArray",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "URL encoded array to select dataSeries API, Webhook, Queue",
            "items": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/utilization/last-7-days": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Utilization last 7 days",
        "description": "Interval is daily",
        "operationId": "lifecycles-utilization-get-last-7-days",
        "parameters": [
          {
            "name": "uom",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-example": "Webhook Calls"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/utilization/this-month": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Utilization this month",
        "description": "Interval is daily",
        "operationId": "lifecycles-utilization-get-this-month",
        "parameters": [
          {
            "name": "uom",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-example": "Webhook Calls"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/utilization/previous-month": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Utilization previous month",
        "description": "Interval is daily",
        "operationId": "lifecycles-utilization-get-previous-month",
        "parameters": [
          {
            "name": "uom",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-example": "Webhook Calls"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/utilization/previous-3-months": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Utilization previous 3 months",
        "description": "Utilization previous 3 months. Interval is weekly.",
        "operationId": "lifecycles-utilization-get-previous-3-months",
        "parameters": [
          {
            "name": "uom",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-example": "Webhook Calls"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/utilization/this-year": {
      "get": {
        "tags": [
          "Lifecycle Utilization"
        ],
        "summary": "Utilization this year (YTD)",
        "description": "Utilization this year (YTD). Interval is monthly.",
        "operationId": "lifecycles-utilization-get-this-year",
        "parameters": [
          {
            "name": "uom",
            "in": "query",
            "required": false,
            "type": "array",
            "items": {
              "type": "string"
            },
            "x-example": "Webhook Calls"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/ResourceUtilizationAggregate"
            }
          }
        }
      }
    },
    "/exceptions": {
      "post": {
        "tags": [
          "Lifecycle Exceptions"
        ],
        "summary": "Log an Exception",
        "operationId": "lifecycles-exceptions-logexception",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LogMessage"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LogMessage"
              }
            }
          }
        }
      }
    },
    "/exceptions/logstreams": {
      "get": {
        "tags": [
          "Lifecycle Exceptions"
        ],
        "summary": "Available log streams",
        "operationId": "lifecycles-exceptions-logstreams-get-list",
        "produces": [
          "application/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "examples": {
              "application/json": "[\"All\", \"API\", \"Webhook\", \"Queue\"]"
            }
          }
        }
      }
    },
    "/exceptions/search": {
      "get": {
        "tags": [
          "Lifecycle Exceptions"
        ],
        "summary": "Search / filter exceptions",
        "description": "Search for list of paginated exceptions. Date range, log stream(s), and target terms to filter and fulltext search.",
        "operationId": "lifecycles-exceptions-search",
        "parameters": [
          {
            "name": "term",
            "in": "query",
            "required": false,
            "type": "string",
            "x-example": "foobar"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "type": "integer",
            "minimum": 1,
            "x-example": 1
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "type": "integer",
            "x-example": 10
          },
          {
            "name": "fromDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date-time",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "toDate",
            "in": "query",
            "required": false,
            "type": "string",
            "format": "date",
            "x-example": "2016-02-28T16:41:41.090Z"
          },
          {
            "name": "logStreams",
            "in": "query",
            "required": false,
            "type": "array",
            "description": "Url encoded array of log streams",
            "items": {
              "type": "string"
            },
            "x-example": "logStreams[]=api&logStreams[]=webhook&logStreams[]=queue"
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LogMessage"
              }
            },
            "examples": {
              "application/json": "[{\"appSpaceId\":\"admin\",\"errorCode\":\"404\",\"errorDetail\":\"The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.\",\"errorMessage\":\"Not Found\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-15T16:41:41.090Z\"},{\"appSpaceId\":\"sandbox\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-01T16:41:41.090Z\"},{\"appSpaceId\":\"admin\",\"errorCode\":\"400\",\"errorDetail\":\"The server cannot or will not process the request due to an apparent client error\",\"errorMessage\":\"Bad Request\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-12T16:41:41.090Z\"},{\"appSpaceId\":\"admin\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-11T16:41:41.090Z\"},{\"appSpaceId\":\"sandbox\",\"errorCode\":\"400\",\"errorDetail\":\"The server cannot or will not process the request due to an apparent client error\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-12-21T16:41:41.090Z\"},{\"appSpaceId\":\"sandbox\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-11-28T16:41:41.090Z\"},{\"appSpaceId\":\"development\",\"errorCode\":\"404\",\"errorDetail\":\"The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.\",\"errorMessage\":\"Not Found\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-10T16:41:41.090Z\"},{\"appSpaceId\":\"development\",\"errorCode\":\"400\",\"errorDetail\":\"The server cannot or will not process the request due to an apparent client error\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2018-01-02T16:41:41.090Z\"},{\"appSpaceId\":\"sandbox\",\"errorCode\":\"404\",\"errorDetail\":\"The requested resource could not be found but may be available in the future. Subsequent requests by the client are permissible.\",\"errorMessage\":\"Not Found\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-12-18T16:41:41.090Z\"},{\"appSpaceId\":\"sandbox\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-10-14T16:41:41.090Z\"},{\"appSpaceId\":\"admin\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-12-28T16:41:41.090Z\"},{\"appSpaceId\":\"admin\",\"errorCode\":\"401\",\"errorDetail\":\"The request requires user authentication.\",\"errorMessage\":\"Unauthorized\",\"errorType\":\"HTTP\",\"logIdentifier\":\"123e4567-e89b-12d3-a456-426655440001\",\"logStream\":\"lifecycle-definition\",\"timestamp\":\"2017-10-28T16:41:41.090Z\"}]"
            }
          }
        }
      }
    },
    "/exceptions/{exceptionId}": {
      "get": {
        "tags": [
          "Lifecycle Exceptions"
        ],
        "summary": "Get an exception",
        "operationId": "lifecycles-exceptions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LogMessage"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "exceptionId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/step-event-functions": {
      "get": {
        "tags": [
          "Lifecycle Process Event Functions"
        ],
        "summary": "Get list of step event functions",
        "description": "Get list of step event functions:\n\nPre_Step_Event, Post_Step_Event, Step_WIP_Limit, Step_Cycle_Time",
        "operationId": "lifecycle-step-event-functions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleManagedEventFunction"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/wip-definition-event-functions": {
      "get": {
        "tags": [
          "Lifecycle Process Event Functions"
        ],
        "summary": "Get list of WIP definition event functions",
        "description": "Get list of WIP definition event functions:\n\nWIP_Definition_Limit, WIP_Definition_Cycle_Time, WIP_Limit_Alert, WIP_Cycle_Time_Alert",
        "operationId": "lifecycle-wip-definition-functions-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleManagedEventFunction"
              }
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/managed-events": {
      "get": {
        "tags": [
          "Lifecycle Managed Process Event"
        ],
        "summary": "Get all managed events",
        "operationId": "lifecycle-managed-event-get-list",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/LifecycleManagedEvent"
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Lifecycle Managed Process Event"
        ],
        "summary": "Create Lifecycle Event",
        "operationId": "lifecycle-managed-event-create",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleManagedEvent"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleManagedEvent"
            }
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    },
    "/lifecycles/{lifecycleId}/managed-events/{managedEventId}": {
      "get": {
        "tags": [
          "Lifecycle Managed Process Event"
        ],
        "summary": "Get a managed event",
        "operationId": "lifecycle-managed-event-get",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleManagedEvent"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Lifecycle Managed Process Event"
        ],
        "summary": "Update a managed event",
        "operationId": "lifecycle-managed-event-update",
        "consumes": [],
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LifecycleManagedEvent"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Status 200",
            "schema": {
              "$ref": "#/definitions/LifecycleManagedEvent"
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Lifecycle Managed Process Event"
        ],
        "summary": "Delete a managed event",
        "operationId": "lifecycle-managed-event-delete",
        "parameters": [],
        "responses": {
          "200": {
            "description": "Status 200"
          }
        }
      },
      "parameters": [
        {
          "name": "lifecycleId",
          "in": "path",
          "required": true,
          "type": "string"
        },
        {
          "name": "managedEventId",
          "in": "path",
          "required": true,
          "type": "string"
        }
      ]
    }
  },
  "definitions": {
    "Lifecycle": {
      "type": "object",
      "properties": {
        "lifecycleId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "lifecycleName": {
          "type": "string",
          "example": "Customer Lifecycle"
        },
        "lifecycleDescription": {
          "type": "string"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "description": "2016-02-28T16:41:41.090Z"
        },
        "stepDictionary": {
          "type": "array",
          "description": "Unique list of all steps, edited or published, throughout all versions of the same lifecycle definition.\n\nCompare to the steps being edited within a lifecycle version's process map.",
          "items": {
            "$ref": "#/definitions/LifecycleStep"
          }
        },
        "lifecycleVersions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LifecycleVersion"
          }
        },
        "lifecycleTagList": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LifecycleTag"
          }
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "ableToDelete": {
          "type": "boolean",
          "description": "Returns true if lifecycle has no published versions and can safely be deleted."
        }
      }
    },
    "TagIdentifier": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "tagName": {
          "type": "string",
          "example": "Sales Dept"
        }
      }
    },
    "LifecycleTag": {
      "type": "object",
      "properties": {
        "lifecycleTagId": {
          "type": "string"
        },
        "lifecycleId": {
          "type": "string"
        },
        "tagId": {
          "type": "string"
        },
        "tagName": {
          "type": "string"
        }
      }
    },
    "StepIdentifier": {
      "type": "string",
      "description": "Unique (per Lifecycle) name for a step.",
      "example": "123e4567-e89b-12d3-a456-426655440000"
    },
    "LifecycleStep": {
      "type": "object",
      "required": [
        "stepId",
        "stepName"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "stepName": {
          "type": "string",
          "description": "Logical and display name and has a unique constraint rule on it within a Lifecycle definition.\n\nUpdates to the lifecycle step definition.",
          "example": "New User"
        },
        "stepDescription": {
          "type": "string",
          "description": "Explanation detail about the step.\n\nUpdates to the lifecycle step definition.",
          "example": "The Not Started step is the point in the process where setup and editing takes place."
        },
        "stepWIPLimit": {
          "type": "integer",
          "description": "Maximum number of entities (e.g. Customers, Orders) before a WIP limit exceeded warning event is triggered.\n\nUpdates to the lifecycle step definition."
        },
        "cycletimeLimit": {
          "type": "integer",
          "description": "Amount of time (expressed in units) that an entity can remain in a step before the CycleTimeLimitExceeded warning event is triggered. cycletimeUnitType defines the unit of time that it is measured.\n\nUpdates to the lifecycle step definition.",
          "example": 90
        },
        "cycletimeUnitType": {
          "type": "string",
          "description": "Time unit for cycle time"
        },
        "stepOwner": {
          "type": "string",
          "description": "Organization, team, or department that is responsible for the step.\n\nUpdates to the lifecycle step definition."
        },
        "stepTags": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/TagIdentifier"
          }
        },
        "metadata": {
          "type": "array",
          "description": "Metadata about the step.\n\nUpdates to the lifecycle step definition.",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        }
      }
    },
    "StepIdName": {
      "type": "object",
      "properties": {
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "stepName": {
          "type": "string",
          "example": "Start Step"
        }
      }
    },
    "LifecycleVersion": {
      "type": "object",
      "required": [
        "startingStepId",
        "steps",
        "versionNo"
      ],
      "properties": {
        "versionNo": {
          "type": "integer",
          "example": 2
        },
        "lifecycleVersionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "versionName": {
          "type": "string",
          "example": "Initial"
        },
        "startingStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "steps": {
          "type": "array",
          "description": "Unordered list of steps as a subset dictionary referencing lifecycle dictionary.",
          "items": {
            "$ref": "#/definitions/LifecycleVersionStep"
          }
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time"
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        },
        "published": {
          "type": "boolean",
          "description": "Flag to indicate publication",
          "example": true
        },
        "publicationDate": {
          "type": "string",
          "format": "date-time",
          "description": "First publication date which made the version read-only (can only publish to additional app spaces and change names).",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "publishedAppSpacesList": {
          "type": "array",
          "description": "Arrary of LifecycleVersionPublications containing the App Space and the date of publication",
          "items": {
            "$ref": "#/definitions/LifecycleVersionPublication"
          }
        },
        "hasDependencies": {
          "type": "boolean",
          "description": "1 or more entity lifecycles in at least one app space are attached or have history",
          "example": true
        }
      }
    },
    "LifecycleVersionName": {
      "type": "object",
      "properties": {
        "lifecycleId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "versionNo": {
          "type": "integer",
          "example": 2
        },
        "versionName": {
          "type": "string",
          "example": "March Madness Edition"
        }
      }
    },
    "LifecycleVersionPath": {
      "type": "object",
      "properties": {
        "fromStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "toStepId": {
          "$ref": "#/definitions/StepIdentifier"
        }
      },
      "description": "Connecting pathway from one step to another."
    },
    "LifecycleVersionStep": {
      "type": "object",
      "required": [
        "displayXPos",
        "displayYPos"
      ],
      "properties": {
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "stepName": {
          "type": "string",
          "description": "Updates Step Name in Dictionary (last published step name in wins)"
        },
        "stepType": {
          "type": "string",
          "description": "Designates the nature of a step in a process and realized in a particular lifecycle version.",
          "enum": [
            "Not_Started",
            "In_Progress",
            "Done"
          ],
          "example": "In_Progress"
        },
        "nextSteps": {
          "type": "array",
          "description": "The next steps (as stepIds not stepNames) define the prescribed immediate pathways that an entity may navigate to other steps within a version of a lifecycle.\n\nDoes NOT update to the lifecycle step definition.",
          "items": {
            "$ref": "#/definitions/StepIdentifier"
          }
        },
        "displayXPos": {
          "type": "integer",
          "description": "Does NOT update to the lifecycle step definition.",
          "example": 2
        },
        "displayYPos": {
          "type": "integer",
          "description": "Does NOT update to the lifecycle step definition.",
          "example": 1
        }
      }
    },
    "LifecycleVersionPublication": {
      "type": "object",
      "properties": {
        "appSpaceId": {
          "type": "string",
          "description": "App Space identifier",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "appSpace": {
          "type": "string",
          "example": "Sandbox"
        },
        "publicationDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "inflightEntityLifecycleCount": {
          "type": "integer",
          "description": "Number of entity lifecycles not in a 'Done' step",
          "example": 0
        },
        "totalEntityLifecycleCount": {
          "type": "integer",
          "description": "Total number of entity lifecycles (inflight or done)",
          "example": 1000
        }
      },
      "description": "A LifecycleVersionPublication contains the App Space (user not admin spaces only) and the date of publication."
    },
    "LifecycleDuplicateVersion": {
      "type": "object",
      "required": [
        "lifecycleId",
        "oldVersionNo"
      ],
      "properties": {
        "lifecycleId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "oldVersionNo": {
          "type": "integer",
          "example": 1
        },
        "newVersionNo": {
          "type": "integer",
          "example": 3
        },
        "newVersionName": {
          "type": "string",
          "example": "V3 - Copy of Version 1"
        }
      }
    },
    "EntityLifecycle": {
      "type": "object",
      "required": [
        "currentStepId",
        "lifecycleId"
      ],
      "properties": {
        "entityLifecycleId": {
          "type": "string",
          "description": "Unique identifier (per Lifecycle) for an entity being tracked.",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time"
        },
        "lifecycleId": {
          "type": "string",
          "description": "Lifecycle identifier",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "lifecycleName": {
          "type": "string",
          "description": "Name of Lifecycle"
        },
        "versionNo": {
          "type": "integer",
          "description": "Version of Lifecycle (LifecycleVersion)",
          "example": 1
        },
        "currentCycleNo": {
          "type": "integer",
          "description": "Current cycle that the entity is on. The number is incremented each time the entity transitions from a 'Done' stepType to a non-'Done' stepType. This is interpreted as a restart or at least a new cycle. See also cycleStartCycleDatetime.",
          "example": 1
        },
        "cycleStartCycleDatetime": {
          "type": "string",
          "format": "date-time",
          "description": "Start datetime of the journey. Note that this is reset if the entity completes but starts over or is reset from a Done step. Calculate difference from now to determine the age/duration. See also currentCycleNo.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "stepStartCycleDatetime": {
          "type": "string",
          "format": "date-time",
          "description": "Start datetime of the step. Calculate difference from now to determine the age/duration.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "currentStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "currentStepName": {
          "type": "string",
          "description": "Logical / display name (copied from LifecycleStep)",
          "example": "Customer Onboarding"
        },
        "currentStepType": {
          "type": "string",
          "description": "Not_Started, In_Progress, or Done type of Step within the Lifecycle (copied from LifecycleVersionStep)",
          "enum": [
            "Not_Started",
            "In_Progress",
            "Done"
          ]
        },
        "customerId": {
          "type": "string",
          "description": "Customer identifier",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "entityLifecycleTags": {
          "type": "array",
          "description": "Array of entityLifecycleTags",
          "items": {
            "$ref": "#/definitions/TagIdentifier"
          }
        },
        "metadata": {
          "type": "array",
          "description": "Most recent set of metadata for an entity",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        }
      }
    },
    "EntityLifecycleChangeStep": {
      "type": "object",
      "properties": {
        "entityLifecycleId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "stepId": {
          "type": "string",
          "description": "Step identifier to change the entity's current step to",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "stepName": {
          "type": "string",
          "description": "Populated by the server as a convenience"
        },
        "stepType": {
          "type": "string",
          "description": "Populated by the server as a convenience"
        },
        "metadata": {
          "type": "array",
          "description": "Omit if unchanged or fully populate if there are changes to the metadata",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        }
      }
    },
    "EntityLifecycleHistory": {
      "type": "object",
      "properties": {
        "entityLifecycleHistoryId": {
          "type": "string",
          "description": "Object identifier of history record"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time"
        },
        "historyTimestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Timestamp of the history event",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "stepName": {
          "type": "string",
          "description": "Copied from LifecycleStep at the time of the historyTimestamp",
          "example": "Start"
        },
        "stepType": {
          "type": "string",
          "description": "Copied from LifecycleStepVersion at the time of the historyTimestamp",
          "enum": [
            "Not_Started",
            "In_Progress",
            "Done"
          ],
          "example": "In_Progress"
        },
        "currentCycleNo": {
          "type": "integer",
          "description": "Cycle no"
        },
        "stepStartCycleDatetime": {
          "type": "string",
          "format": "date-time",
          "example": "stepStartCycleDatetime"
        },
        "cycleStartCycleDatetime": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "cycleTraveledStepNamePath": {
          "type": "string",
          "description": "Concatenated step path (step names)"
        },
        "cycleTraveledStepIdPath": {
          "type": "string",
          "description": "Concatenated step path (step IDs)"
        },
        "customerId": {
          "type": "string"
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetadataElement"
          }
        }
      }
    },
    "MetadataElement": {
      "type": "object",
      "required": [
        "key"
      ],
      "properties": {
        "metadataTag": {
          "$ref": "#/definitions/TagIdentifier"
        },
        "key": {
          "type": "string",
          "description": "Attribute name of metadata",
          "example": "Hair Color"
        },
        "displayLabel": {
          "type": "string",
          "description": "Used to display the field label for the value",
          "example": "Hair Color"
        },
        "value": {
          "type": "string",
          "description": "Data of metadata",
          "example": "Brown"
        },
        "valueFormat": {
          "type": "string",
          "description": "Controlled enumerated types that realize value",
          "enum": [
            "String",
            "Text",
            "Number",
            "Date",
            "Time",
            "Datetime",
            "Boolean"
          ],
          "example": "String"
        }
      }
    },
    "MigrateStepMap": {
      "type": "object",
      "required": [
        "fromStepId",
        "toStepId"
      ],
      "properties": {
        "fromStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "toStepId": {
          "$ref": "#/definitions/StepIdentifier"
        }
      }
    },
    "MigrationStrategy": {
      "type": "object",
      "properties": {
        "directStepIdentifierStrategy": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "migrationMappingStrategy": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MigrateStepMap"
          }
        }
      }
    },
    "MigrationChangeSummary": {
      "type": "object",
      "properties": {
        "recordCount": {
          "type": "integer",
          "description": "Number of records in migration"
        }
      }
    },
    "LifecycleEventDefinitionId": {
      "type": "string",
      "example": "123e4567-e89b-12d3-a456-426655440000"
    },
    "LifecycleEventDefinition": {
      "type": "object",
      "properties": {
        "lifecycleEventDefinitionId": {
          "$ref": "#/definitions/LifecycleEventDefinitionId"
        },
        "lifecycleEventType": {
          "type": "string",
          "description": "Type of lifecycle-specific event",
          "enum": [
            "Pre_Step_Event",
            "Post_Step_Event",
            "Step_WIP_Limit",
            "Step_Cycle_Time",
            "WIP_Definition_Limit",
            "WIP_Definition_Cycle_Time",
            "WIP_Limit_Alert",
            "WIP_Cycle_Time_Alert"
          ],
          "example": "Pre_Step_Event"
        },
        "eventName": {
          "type": "string"
        },
        "eventDescription": {
          "type": "string",
          "description": "Description of the event goes here",
          "example": "Post step event"
        },
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "fromStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "toStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "wipLimit": {
          "type": "integer",
          "description": "Maximum number of entities not in a Done state. Leave empty or exclude if not applicable.",
          "example": 5
        },
        "cycleTimeThreshold": {
          "type": "number",
          "description": "Count of cycleTimeUnits (e.g. 6 Days where 6 is the cycletimeThreshold)",
          "example": 6
        },
        "cycleTimeUnit": {
          "type": "string",
          "description": "Time period unit of measure",
          "enum": [
            "Years",
            "Months",
            "Weeks",
            "Days",
            "Hours"
          ],
          "example": "Days"
        },
        "hasSubscribers": {
          "type": "boolean",
          "description": "Boolean flag",
          "example": false
        },
        "dateCreated": {
          "type": "string",
          "format": "date"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "LifecycleEventSubscription": {
      "type": "object",
      "properties": {
        "lifecycleEventSubscriptionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "subscriptionLabel": {
          "type": "string",
          "description": "Name given to title the event subscription"
        },
        "lifecycleEventSubscriptionType": {
          "type": "string",
          "description": "Type of lifecycle event subscription (different than API  Events)",
          "enum": [
            "Pre_Step_Event",
            "Post_Step_Event",
            "Step_WIP_Limit",
            "Step_Cycle_Time",
            "WIP_Definition_Limit",
            "WIP_Definition_Cycle_Time",
            "WIP_Limit_Alert",
            "WIP_Cycle_Time_Alert"
          ]
        },
        "publishAppSpaceId": {
          "type": "string",
          "description": "Target App Space for the subscription"
        },
        "publishAppSpaceName": {
          "type": "string",
          "description": "App Space"
        },
        "lifecycleEventList": {
          "type": "array",
          "description": "LifecycleEventDefinition identifiers filtered by lifecycleEventSubscriptionType",
          "items": {
            "$ref": "#/definitions/LifecycleEventDefinitionId"
          }
        },
        "stepEventList": {
          "type": "array",
          "description": "Step identifiers filtered by lifecycleEventSubscriptionType",
          "items": {
            "$ref": "#/definitions/StepIdentifier"
          }
        },
        "webhookEnabled": {
          "type": "boolean",
          "description": "Webhook active flag",
          "example": true
        },
        "webhookURL": {
          "type": "string",
          "description": "URL for webhook",
          "example": "https://somegreatservice.dev.chassi.com"
        },
        "messagingEnabled": {
          "type": "boolean",
          "description": "Messaging topic / queue active flag (disabling will not queue)",
          "example": true
        },
        "messagingChannelAddress": {
          "type": "string",
          "description": "Address for message channel (provided by server)",
          "example": "channel.address.operation-id"
        },
        "dateCreated": {
          "type": "string",
          "format": "date"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "ManagedEventDefinition": {
      "type": "object",
      "properties": {
        "managedEventDefinitionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "lifecycleEventType": {
          "type": "string",
          "description": "Type of lifecycle-specific event",
          "enum": [
            "Pre_Step_Event",
            "Post_Step_Event",
            "Step_WIP_Limit",
            "Step_Cycle_Time",
            "WIP_Definition_Limit",
            "WIP_Definition_Cycle_Time",
            "WIP_Limit_Alert",
            "WIP_Cycle_Time_Alert"
          ],
          "example": "Pre_Step_Event"
        },
        "eventName": {
          "type": "string"
        },
        "eventDescription": {
          "type": "string",
          "description": "Description of the event goes here",
          "example": "Post step event"
        },
        "stepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "fromStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "toStepId": {
          "$ref": "#/definitions/StepIdentifier"
        },
        "wipLimit": {
          "type": "integer",
          "description": "Maximum number of entities not in a Done state. Leave empty or exclude if not applicable.",
          "example": 5
        },
        "cycleTimeThreshold": {
          "type": "number",
          "description": "Count of cycleTimeUnits (e.g. 6 Days where 6 is the cycletimeThreshold)",
          "example": 6
        },
        "cycleTimeUnit": {
          "type": "string",
          "description": "Time period unit of measure",
          "enum": [
            "Years",
            "Months",
            "Weeks",
            "Days",
            "Hours"
          ],
          "example": "Days"
        },
        "hasSubscribers": {
          "type": "boolean",
          "description": "Boolean flag",
          "example": false
        },
        "dateCreated": {
          "type": "string",
          "format": "date"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "LifecycleMetricResults": {
      "type": "object",
      "properties": {
        "reportingStartDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.000Z"
        },
        "reportingEndDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.000Z"
        },
        "dataSeries": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DataSeries"
          }
        },
        "dataSummary": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DataSummary"
          }
        }
      }
    },
    "LifecycleCycleTimeMetricsResults": {
      "type": "object",
      "properties": {
        "pathMetrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LifecyclePathMetrics"
          }
        },
        "pathMetricsSummary": {
          "$ref": "#/definitions/LifecyclePathMetricsSummary"
        },
        "wipDataSeries": {
          "type": "array",
          "description": "Data series for Work in Process",
          "items": {
            "$ref": "#/definitions/LifecycleMetricResults"
          }
        },
        "cyclesDataSeries": {
          "type": "array",
          "description": "Data series for Cycle Time",
          "items": {
            "$ref": "#/definitions/LifecycleMetricResults"
          }
        }
      }
    },
    "LifecyclePathMetrics": {
      "type": "object",
      "properties": {
        "pathLabel": {
          "type": "string",
          "description": "Various sequences of steps (based on data)",
          "example": "Path A"
        },
        "steps": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/StepIdName"
          }
        },
        "wipMin": {
          "type": "number",
          "example": 21
        },
        "wipAvg": {
          "type": "number",
          "example": 47.5
        },
        "wipMax": {
          "type": "number",
          "example": 121
        },
        "cyclesMin": {
          "type": "number",
          "example": 7
        },
        "cyclesAvg": {
          "type": "number",
          "example": 14.5
        },
        "cyclesMax": {
          "type": "number",
          "example": 27
        }
      }
    },
    "LifecyclePathMetricsSummary": {
      "type": "object",
      "properties": {
        "pathLabel": {
          "type": "string"
        },
        "steps": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "wipMin": {
          "type": "number"
        },
        "wipAvg": {
          "type": "number"
        },
        "wipMax": {
          "type": "number"
        },
        "cyclesMin": {
          "type": "number"
        },
        "cyclesAvg": {
          "type": "number"
        },
        "cyclesMax": {
          "type": "number"
        }
      }
    },
    "LifecycleTopPathwaysMetricsResults": {
      "type": "object",
      "properties": {
        "totalPathsReportedCount": {
          "type": "number"
        },
        "pathMetricsSummary": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/LifecyclePathMetricsSummary"
          }
        }
      }
    },
    "LifecycleTrendMetricsResults": {
      "type": "object",
      "properties": {
        "totalOpenCount": {
          "$ref": "#/definitions/CountAndCarryOver"
        },
        "totalClosedCount": {
          "$ref": "#/definitions/CountAndCarryOver"
        },
        "openVsClosedDataSeries": {
          "$ref": "#/definitions/LifecycleMetricResults"
        }
      }
    },
    "CountAndCarryOver": {
      "type": "object",
      "properties": {
        "unitCount": {
          "type": "number"
        },
        "unitsCarriedOver": {
          "type": "number"
        }
      }
    },
    "LifecycleCumulativeFlowMetricsResults": {
      "type": "object",
      "properties": {
        "workItemsOpened": {
          "$ref": "#/definitions/CountAndCarryOver"
        },
        "workItemsClosed": {
          "$ref": "#/definitions/CountAndCarryOver"
        },
        "workItemsReopened": {
          "$ref": "#/definitions/CountAndCarryOver"
        },
        "cumulativeFlowSeries": {
          "$ref": "#/definitions/LifecycleMetricResults"
        }
      }
    },
    "ManagedEventSubscription": {
      "type": "object",
      "properties": {
        "ManagedEventSubscriptionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "subscriptionLabel": {
          "type": "string",
          "description": "Name given to title the event subscription"
        },
        "eventSubscriptionType": {
          "type": "string",
          "description": "Type of lifecycle event subscription (different than API  Events)",
          "enum": [
            "Pre_Step_Event",
            "Post_Step_Event",
            "Step_WIP_Limit",
            "Step_Cycle_Time",
            "WIP_Definition_Limit",
            "WIP_Definition_Cycle_Time",
            "WIP_Limit_Alert",
            "WIP_Cycle_Time_Alert"
          ]
        },
        "publishAppSpaceId": {
          "type": "string",
          "description": "Target App Space for the subscription"
        },
        "publishAppSpaceName": {
          "type": "string",
          "description": "App Space"
        },
        "lifecycleEventList": {
          "type": "array",
          "description": "LifecycleEventDefinition identifiers filtered by lifecycleEventSubscriptionType",
          "items": {
            "$ref": "#/definitions/LifecycleEventDefinitionId"
          }
        },
        "stepEventList": {
          "type": "array",
          "description": "Step identifiers filtered by lifecycleEventSubscriptionType",
          "items": {
            "$ref": "#/definitions/StepIdentifier"
          }
        },
        "webhookEnabled": {
          "type": "boolean",
          "description": "Webhook active flag",
          "example": true
        },
        "webhookURL": {
          "type": "string",
          "description": "URL for webhook",
          "example": "https://somegreatservice.dev.chassi.com"
        },
        "messagingEnabled": {
          "type": "boolean",
          "description": "Messaging topic / queue active flag (disabling will not queue)",
          "example": true
        },
        "messagingChannelAddress": {
          "type": "string",
          "description": "Address for message channel (provided by server)",
          "example": "channel.address.operation-id"
        },
        "dateCreated": {
          "type": "string",
          "format": "date"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date"
        }
      }
    },
    "EventDefinition": {
      "type": "object",
      "properties": {
        "eventDefinitionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "eventName": {
          "type": "string",
          "example": "Product Added"
        }
      }
    },
    "EventSubscription": {
      "type": "object",
      "properties": {
        "eventSubscriptionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "eventDefinitionId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        },
        "subscriptionDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "webhookEnabled": {
          "type": "boolean",
          "description": "Flad indicating webhook enablement"
        },
        "webhookUrl": {
          "type": "string",
          "description": "Web endpoint to receive event",
          "example": "https://dev.myapiserver.com/path"
        },
        "eventMessagingEnabled": {
          "type": "boolean",
          "description": "Flad indicating event messaging enablement"
        },
        "eventMessagingAddress": {
          "type": "string",
          "description": "Address to message queue/topic channel (read-only, set by the server)"
        },
        "eventName": {
          "type": "string",
          "description": "Name of event (read-only, set by the server from EventDefinition)",
          "example": "Product Added"
        }
      }
    },
    "MetricValue": {
      "type": "object",
      "properties": {
        "uom": {
          "type": "string",
          "description": "Unit of measurement",
          "example": "total"
        },
        "value": {
          "type": "number",
          "example": 1300000
        },
        "fromDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.000Z"
        },
        "toDate": {
          "type": "string",
          "format": "date-time",
          "example": "2016-03-28T16:41:41.000Z"
        }
      },
      "description": "A data point of a benchmark measurement."
    },
    "DataSample": {
      "type": "object",
      "properties": {
        "fromDate": {
          "type": "string",
          "format": "date-time",
          "example": "2018-01-01 00:00:00.000Z"
        },
        "toDate": {
          "type": "string",
          "format": "date-time",
          "example": "2018-01-01 23:59:59.000Z"
        },
        "value": {
          "type": "number",
          "example": 123
        }
      },
      "description": "A point of data for either a single instance or an aggregate."
    },
    "DataSeries": {
      "type": "object",
      "properties": {
        "series": {
          "type": "string",
          "example": "Webhooks"
        },
        "dataPoints": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DataSample"
          }
        },
        "seriesId": {
          "type": "string",
          "description": "Object ID (as applicable) relating to the series",
          "example": "123e4567-e89b-12d3-a456-426655440000"
        }
      }
    },
    "DataSummary": {
      "type": "object",
      "properties": {
        "series": {
          "type": "string",
          "example": "Webhooks"
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetricValue"
          }
        }
      }
    },
    "ResourceUtilizationAggregate": {
      "type": "object",
      "properties": {
        "reportingStartDate": {
          "type": "string",
          "format": "date-time",
          "description": "Starting timeframe of reporting block"
        },
        "reportingEndDate": {
          "type": "string",
          "format": "date-time",
          "description": "Ending timeframe of reporting block",
          "example": "2016-03-28T16:41:41.000Z"
        },
        "dataSeries": {
          "type": "array",
          "description": "Array of one or more data point series",
          "items": {
            "$ref": "#/definitions/DataSeries"
          }
        },
        "dataSummary": {
          "type": "array",
          "description": "Array of summary metrics",
          "items": {
            "$ref": "#/definitions/DataSummary"
          }
        }
      }
    },
    "LogMessage": {
      "type": "object",
      "required": [
        "appSpaceId",
        "logStream"
      ],
      "properties": {
        "logStream": {
          "type": "string",
          "description": "Which log stream the error originated",
          "example": "lifecycle-definition"
        },
        "appSpaceId": {
          "type": "string",
          "example": "admin"
        },
        "logIdentifier": {
          "type": "string",
          "description": "Unique identifier for message",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "Moment when the event occured (maybe a few ms after). If empty, system will populate.",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "errorType": {
          "type": "string",
          "description": "HTTP, API, etc",
          "example": "HTTP"
        },
        "errorCode": {
          "type": "string",
          "description": "404, etc",
          "example": "401"
        },
        "errorMessage": {
          "type": "string",
          "description": "Message description",
          "example": "Unauthorized"
        },
        "errorDetail": {
          "type": "string",
          "description": "Data details of error",
          "example": "abc"
        }
      }
    },
    "LifecycleManagedEventFunctionId": {
      "type": "string",
      "example": "123e4567-e89b-12d3-a456-426655440001"
    },
    "LifecycleManagedEventFunction": {
      "type": "object",
      "properties": {
        "eventFunctionId": {
          "$ref": "#/definitions/LifecycleManagedEventFunctionId"
        },
        "eventFunctionName": {
          "type": "string",
          "enum": [
            "Pre_Step_Event",
            "Post_Step_Event",
            "Step_WIP_Limit",
            "Step_Cycle_Time",
            "WIP_Definition_Limit",
            "WIP_Definition_Cycle_Time",
            "WIP_Limit_Alert",
            "WIP_Cycle_Time_Alert"
          ],
          "example": "Pre_Step_Event"
        }
      }
    },
    "LifecycleManagedEvent": {
      "type": "object",
      "properties": {
        "lifecycleManagedEventId": {
          "type": "string",
          "description": "Managed event identifier",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "lifecycleManagedEventType": {
          "type": "string",
          "enum": [
            "Process_Map_Event",
            "WIP_Definition_Event"
          ],
          "example": "Process_Map_Event"
        },
        "eventLabel": {
          "type": "string",
          "description": "Label to describe the data stream subscription",
          "example": "New Customer Onboarding Events"
        },
        "enabledFunctions": {
          "type": "array",
          "description": "List of enabled function identifiers to apply to either steps or wip definitions (as applicable)",
          "items": {
            "type": "string"
          }
        },
        "stepList": {
          "type": "array",
          "description": "List of step identifiers",
          "items": {
            "type": "string",
            "example": "123e4567-e89b-12d3-a456-426655440001"
          }
        },
        "wipDefinitionList": {
          "type": "array",
          "description": "List of wip definition identifiers",
          "items": {
            "type": "string",
            "example": "123e4567-e89b-12d3-a456-426655440001"
          }
        },
        "enableWebhookFlag": {
          "type": "string",
          "example": "true"
        },
        "webhookURL": {
          "type": "string",
          "example": "https://somegreatsvc.dev.chassi.com"
        },
        "enableMessageQueueFlag": {
          "type": "string",
          "example": "true"
        },
        "eventAppSpaceId": {
          "type": "string",
          "example": "123e4567-e89b-12d3-a456-426655440001"
        },
        "dateCreated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "lastUpdated": {
          "type": "string",
          "format": "date-time",
          "example": "2016-02-28T16:41:41.090Z"
        },
        "messagingChannelAddress": {
          "type": "string"
        }
      }
    }
  }
}