{
    "flow.get": {
        "method": "GET",
        "uri": "/flows/{{flowId}}"
    },
    "flow.logsQuery": {
        "description": "Make query to elastic search. See more about query language: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax",
        "method": "GET",
        "uri": "/logs"
    },
    "flow.logsAggregation": {
        "description": "Make query to elastic search with aggregation payload. See more about query language: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html#query-string-syntax",
        "method": "POST",
        "json": true,
        "uri": "/logs?query={{query}}&size={{size}}&from={{from}}&sort={{sort}}"
    },
    "flow.log": {
        "method": "GET",
        "uri": "/logs/{{index}}/{{id}}"
    },
    "flow.createOrUpdate": {
        "method": "PUT",
        "uri": "/flows/{{flowId}}",
        "json": true
    },
    "flow.create": {
        "method": "POST",
        "uri": "/flows",
        "json": true
    },
    "flow.coordinator": {
        "method": "POST",
        "uri": "/flows/{{flowId}}/coordinator",
        "json": true
    },
    "flow.remove": {
        "method": "DELETE",
        "uri": "/flows/{{flowId}}"
    },
    "flow.message": {
        "method": "POST",
        "uri": "/flows/{{flowId}}",
        "json": true
    },
    "flow.send": {
        "method": "POST",
        "uri": "/flows/{{flowId}}/send",
        "json": true
    },
    "flows.all": {
        "method": "GET",
        "uri": "/flows"
    },
    "flows.count": {
        "method": "GET",
        "uri": "/flows/count"
    },
    "flow.setLog": {
        "method": "PUT",
        "uri": "/flows/{{flowId}}/logger",
        "json": true
    },
    "flow.trigger": {
        "method": "POST",
        "uri": "/flows/{{flowId}}/components/{{triggerId}}"
    },
    "flow.clone": {
        "method": "POST",
        "uri": "/flows/{{flowId}}/clone",
        "json": true
    },
    "flow.validate": {
        "method": "GET",
        "uri": "/flows/{{flowId}}/validate"
    },
    "variables.get": {
        "method": "POST",
        "uri": "/variables/{{flowId}}/fetch",
        "json": true
    },
    "components.all": {
        "method": "GET",
        "uri": "/components"
    },
    "component.get": {
        "method": "GET",
        "uri": "/components/{{selector}}"
    },
    "component.create": {
        "method": "POST",
        "uri": "/components",
        "headers": {
            "content-type": "application/octet-stream"
        }
    },
    "component.remove": {
        "method": "DELETE",
        "uri": "/components/{{selector}}"
    },
    "component.getUploadStatus": {
        "method": "GET",
        "uri": "/components/uploader/{{ticket}}"
    },
    "component.input": {
        "description": "Creates static component, calls it's input with data provided in json.messages object.",
        "method": "POST",
        "uri": "/component/{{vendor}}/{{service}}/{{domain}}/{{functionName}}?outPort={{outPort}}"
    },
    "auth.status": {
        "description": "Get the authentication status for a service. done(err, status) is called back with the status information.",
        "method": "GET",
        "uri": "/auth/{{service}}"
    },
    "auth.landingPageUrl": {
        "description": "Landing page, when the user is redirected by service (twitter, fb, ...) after successful authorization.",
        "method": "GET",
        "uri": "/auth/{{service}}/callback"
    },
    "auth.getAuthStatus": {
        "description": "Get the authentication status for a service.",
        "method": "GET",
        "uri": "/auth/status/{{ticket}}"
    },
    "auth.url": {
        "description": "Get url where the user should be redirected to authorize the service.",
        "method": "GET",
        "uri": "/auth/{{service}}/auth-url/{{ticket}}"
    },
    "auth.generateSessionTicket": {
        "description": "Get a session ticket.",
        "method": "POST",
        "uri": "/auth/ticket"
    },
    "auth.revokeComponent": {
        "description": "Revoke access for the component, unassign from account.",
        "method": "DELETE",
        "uri": "/auth/component/{{componentId}}"
    },
    "auth.assign": {
        "description": "Assign component to account.",
        "method": "PUT",
        "uri": "/auth/component/{{componentId}}/{{accountId}}"
    },
    "auth.getForFlow": {
        "description": "Get authentication status for a flow.",
        "method": "GET",
        "uri": "/auth/flow/{{flowId}}"
    },
    "account.get": {
        "description": "Get list of user accounts.",
        "method": "GET",
        "uri": "/accounts"
    },
    "account.create": {
        "description": "Creates an account using provided token information.",
        "method": "POST",
        "uri": "/accounts",
        "json": true
    },
    "account.revoke": {
        "description": "Revoke access for the account, remove all tokens.",
        "method": "DELETE",
        "uri": "/accounts/{{accountId}}"
    },
    "account.getFlows": {
        "description": "Get flow IDs that use this account.",
        "method": "GET",
        "uri": "/accounts/{{accountsId}}/flows"
    },
    "account.update": {
        "description": "Update account.",
        "method": "PUT",
        "uri": "/accounts/{{accountId}}"
    },
    "user.create": {
        "description": "Create new user.",
        "method": "POST",
        "uri": "/user",
        "json": true
    },
    "user.get": {
        "description": "Get user",
        "method": "GET",
        "uri": "/user"
    },
    "user.changePassword": {
        "description": "Change user password",
        "method": "POST",
        "uri": "/user/change-password",
        "json": true
    },
    "user.auth": {
        "description": "Authenticate user.",
        "method": "POST",
        "uri": "/user/auth",
        "json": true
    },
    "user.delete": {
        "description": "Delete user and all its data.",
        "method": "DELETE",
        "uri": "/users/{{userId}}"
    },
    "user.deleteStatus": {
        "description": "Delete user and all its data.",
        "method": "GET",
        "uri": "/users/{{userId}}/delete-status/{{ticket}}"
    },
    "info": {
        "description": "Get server info.",
        "method": "GET",
        "uri": "/"
    },
    "trigger.url": {
        "description": "Get URL of a Webhook component.",
        "method": "GET",
        "uri": "/triggers/{{componentId}}/url"
    },
    "account.profileInfo": {
        "description": "Get profile info for account/component.",
        "method": "GET",
        "uri": "/accounts/profile-info/{{field}}?componentId={{componentId}}"
    },
    "telemetry.getAll": {
        "description": "Get telemetry for the current user.",
        "method": "GET",
        "uri": "/telemetry?from={{from}}&to={{to}}"
    },
    "telemetry.messages": {
        "description": "Get number of all messages and size of those messages.",
        "method": "GET",
        "uri": "/telemetry/messages?userId={{userId}}&from={{from}}&to={{to}}"
    },
    "payment.clientToken": {
        "description": "Get client token for braintree.",
        "method": "POST",
        "uri": "/payments/client-token"
    },
    "paymentToken.save": {
        "description": "Store payment token.",
        "method": "POST",
        "uri": "/subscriptions/token",
        "json": true
    },
    "subscription.get": {
        "description": "Get user subscription details.",
        "method": "GET",
        "uri": "/subscription"
    },
    "subscription.update": {
        "description": "Update user subscription.",
        "method": "PUT",
        "uri": "/subscriptions/{{subscriptionId}}",
        "json": true
    },
    "subscription.selectPlan": {
        "description": "Select subscription plan.",
        "method": "PUT",
        "uri": "/subscriptions/{{subscriptionId}}/select-plan",
        "json": true
    },
    "subscription.currentPrice": {
        "description": "Get subscription price in current month.",
        "method": "GET",
        "uri": "/subscriptions/{{subscriptionId}}/current-price"
    },
    "priceLists.get": {
        "description": "Get price list.",
        "method": "GET",
        "uri": "/price-lists"
    },
    "stores.list": {
        "description": "List stores.",
        "method": "GET",
        "uri": "/stores"
    },
    "store.create": {
        "description": "Create store.",
        "method": "POST",
        "uri": "/stores",
        "json": true
    },
    "store.list": {
        "description": "List items.",
        "method": "GET",
        "uri": "/store?offset={{offset}}&limit={{limit}}"
    },
    "store.get": {
        "description": "Get item from store.",
        "method": "GET",
        "uri": "/store/{{storeId}}/{{escapeurl key}}"
    },
    "store.count": {
        "description": "Count number of items in a store",
        "method": "GET",
        "uri": "/store/count"
    },
    "store.find": {
        "description": "Find in store.",
        "method": "GET",
        "uri": "/store/{{storeId}}/find/{{pattern}}"
    },
    "store.set": {
        "description": "Set item into store.",
        "method": "POST",
        "uri": "/store/{{storeId}}/{{escapeurl key}}",
        "json": true
    },
    "store.move": {
        "description": "Moves item from one store to another.",
        "method": "PUT",
        "uri": "/store/{{storeId}}/{{escapeurl key}}",
        "json": true
    },
    "store.clear": {
        "description": "Clear store.",
        "method": "DELETE",
        "uri": "/store/{{storeId}}/*"
    },
    "store.remove": {
        "description": "Remove item from store.",
        "method": "DELETE",
        "uri": "/store/{{storeId}}/{{escapeurl key}}"
    },
    "store.removeMany": {
        "description": "Remove many items from store.",
        "method": "DELETE",
        "uri": "/store",
        "json": true
    },
    "store.download": {
        "description": "Download data from store." ,
        "method": "GET",
        "uri": "/store/download/{{storeId}}?format={{format}}"
    },
    "store.delete": {
        "description": "Delete data store",
        "method": "DELETE",
        "uri": "/stores/{{storeId}}"
    },
    "coupon.get": {
        "description": "Get coupon details.",
        "method": "GET",
        "uri": "/coupons/{{coupon}}"
    },
    "modifiers.get": {
        "description": "Get modifiers.",
        "method": "GET",
        "uri": "/modifiers"
    },
    "modifiers.publish": {
        "description": "Publish modifiers.",
        "method": "PUT",
        "uri": "/modifiers"
    },
    "modifiers.delete": {
        "description": "Delete modifiers.",
        "method": "DELETE",
        "uri": "/modifiers"
    },
    "apps.all": {
        "description": "Get all apps (not components)",
        "method": "GET",
        "uri": "/apps"
    },
    "apps.components": {
        "description": "Get all components for a specified application",
        "method": "GET",
        "uri": "/apps/components?app={{app}}"
    },
    "acl.types": {
        "description": "Get all ACL types",
        "method": "GET",
        "uri": "/acl-types"
    },
    "acl.rules": {
        "description": "Get ACL rules by type",
        "method": "GET",
        "uri": "/acl/{{type}}"
    },
    "acl.rules.create": {
        "description": "Create ACL rule",
        "method": "POST",
        "uri": "/acl/{{type}}",
        "json": true
    },
    "acl.resources": {
        "description": "Get ACL resources by type",
        "method": "GET",
        "uri": "/acl/{{type}}/resources"
    },
    "acl.actions": {
        "description": "Get ACL actions by type",
        "method": "GET",
        "uri": "/acl/{{type}}/actions"
    },
    "acl.attributes": {
        "description": "Get ACL attributes by type",
        "method": "GET",
        "uri": "/acl/{{type}}/resource/{{resource}}/attributes"
    },
    "unprocessed.get": {
        "description": "Get single unprocessed messages.",
        "method": "GET",
        "uri": "/unprocessed-messages/{{messageId}}"
    },
    "unprocessed.all": {
        "description": "Get all unprocessed messages user can see (includes shared flows).",
        "method": "GET",
        "uri": "/unprocessed-messages"
    },
    "unprocessed.remove": {
        "description": "Delete unprocessed message from DB.",
        "method": "DELETE",
        "uri": "/unprocessed-messages/{{messageId}}"
    },
    "unprocessed.retry": {
        "description": "Retry unprocessed message.",
        "method": "POST",
        "uri": "/unprocessed-messages/{{messageId}}/retry"
    },
    "serviceConfig.all": {
        "description": "Get auth config for services.",
        "method": "GET",
        "uri": "/service-config"
    },
    "serviceConfig.query": {
        "description": "Get auth config for services.",
        "method": "GET",
        "uri": "/service-config?pattern={{pattern}}"
    },
    "serviceConfig.get": {
        "description": "Get auth config for given service.",
        "method": "GET",
        "uri": "/service-config/{{serviceId}}"
    },
    "serviceConfig.create": {
        "description": "Create auth config",
        "method": "POST",
        "uri": "/service-config",
        "json": true
    },
    "serviceConfig.update": {
        "description": "Update auth config for given service.",
        "method": "PUT",
        "uri": "/service-config/{{serviceId}}",
        "json": true
    },
    "serviceConfig.remove": {
        "description": "Remove auth config for given service.",
        "method": "DELETE",
        "uri": "/service-config/{{serviceId}}"
    },
    "system.componentJobs": {
        "description": "Get scheduled component jobs.",
        "method": "GET",
        "uri": "/system/component-jobs"
    },
    "urlAlias.get": {
        "description": "Get url alias by ID.",
        "method": "GET",
        "uri": "/url-aliases/{{aliasId}}"
    },
    "urlAlias.getAll": {
        "description": "get all url alias of user.",
        "method": "GET",
        "uri": "/url-aliases",
        "json": true
    },
    "urlAlias.create": {
        "description": "Create url alias for webhook.",
        "method": "POST",
        "uri": "/url-aliases",
        "json": true
    },
    "urlAlias.update": {
        "description": "Update url alias for webhook.",
        "method": "PUT",
        "uri": "/url-aliases/{{aliasId}}",
        "json": true
    },
    "urlAlias.remove": {
        "description": "Remove url alias for webhook.",
        "method": "DELETE",
        "uri": "/url-aliases/{{aliasId}}",
        "json": true
    },
    "modifiers.transform": {
        "method": "POST",
        "uri": "/modifiers/transform",
        "json": true
    }
}
