@itentialopensource/adapter-microsoft_dynamics
Version: 
This adapter integrates with system described as: Microsoft Dynamics 365: Business Applications
1,589 lines • 55.7 kB
JSON
{
  "$id": "adapter-microsoft_dynamics",
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "host": {
      "type": "string",
      "description": "hostname of the server",
      "default": "",
      "examples": [
        "systemx.customer.com"
      ]
    },
    "port": {
      "type": "integer",
      "description": "port on which to connect to the server",
      "default": 443,
      "minimum": 1,
      "maximum": 65535
    },
    "choosepath": {
      "type": "string",
      "description": "choose the path to use -- requires entityPath choices",
      "default": ""
    },
    "base_path": {
      "type": "string",
      "description": "a base path that is consistent across api calls",
      "default": "",
      "examples": [
        "/system/api"
      ]
    },
    "version": {
      "type": "string",
      "description": "api version this adapter integrates with",
      "default": "",
      "examples": [
        "v1",
        "v2.6",
        "4.5.1"
      ]
    },
    "cache_location": {
      "type": "string",
      "description": "Where cache of information should be located redis or local memory",
      "default": "none",
      "enum": [
        "redis",
        "local",
        "none"
      ]
    },
    "encode_pathvars": {
      "type": "boolean",
      "description": "When true the path variables are encoded in the url",
      "default": true
    },
    "encode_queryvars": {
      "type": "boolean",
      "description": "When true the query parameters are encoded in the url",
      "default": true
    },
    "save_metric": {
      "type": [
        "boolean",
        "string"
      ],
      "description": "When true the metrics collected by the adapter will be stored in mongo or on the filesystem",
      "default": false
    },
    "stub": {
      "type": "boolean",
      "description": "When true will not connect to the remote server, but will use a static object for all responses",
      "default": false
    },
    "protocol": {
      "type": "string",
      "description": "the protocol to use to connect to server",
      "default": "http",
      "enum": [
        "http",
        "https"
      ]
    },
    "service": {
      "type": "string",
      "description": "Service we are integrating with -- used with AWS Authentication",
      "examples": [
        "ec2",
        "route53"
      ]
    },
    "authentication": {
      "$ref": "#/definitions/authentication"
    },
    "healthcheck": {
      "$ref": "#/definitions/healthcheck"
    },
    "throttle": {
      "$ref": "#/definitions/throttle"
    },
    "request": {
      "$ref": "#/definitions/request"
    },
    "proxy": {
      "$ref": "#/definitions/proxy"
    },
    "ssl": {
      "$ref": "#/definitions/ssl"
    },
    "mongo": {
      "$ref": "#/definitions/mongo"
    },
    "devicebroker": {
      "$ref": "#/definitions/devicebroker"
    },
    "cache": {
      "$ref": "#/definitions/cache"
    }
  },
  "required": [
    "host",
    "port",
    "authentication",
    "healthcheck"
  ],
  "definitions": {
    "authentication": {
      "type": "object",
      "properties": {
        "auth_method": {
          "type": "string",
          "description": "The authentication method for requests",
          "default": "basic user_password",
          "enum": [
            "basic user_password",
            "static_token",
            "jwt_token",
            "request_token",
            "no_authentication",
            "multi_step_authentication",
            "aws_authentication"
          ]
        },
        "username": {
          "type": "string",
          "description": "The username used for requests",
          "default": "",
          "examples": [
            "username"
          ]
        },
        "password": {
          "type": "string",
          "description": "The password used for requests. If it was retrieved through the encrypt password call, use the exact return including the {code} or {crypt}",
          "default": "",
          "examples": [
            "password",
            "{code}password",
            "{crypt}password"
          ]
        },
        "tenant_id": {
          "type": "string",
          "description": "The client id for OAuth requests - can also use username depending on schema",
          "default": ""
        },
        "client_id": {
          "type": "string",
          "description": "The client id for OAuth requests - can also use username depending on schema",
          "default": ""
        },
        "client_secret": {
          "type": "string",
          "description": "The client secret for OAuth requests - can also use password depending on schema",
          "default": ""
        },
        "token": {
          "type": "string",
          "description": "The token used for requests",
          "default": "",
          "examples": [
            "sdadafdsf_dummytoken_adfkdhfkajd"
          ]
        },
        "token_user_field": {
          "type": "string",
          "description": "The field to send the user credential when getting a token",
          "default": "username",
          "examples": [
            "username"
          ]
        },
        "token_password_field": {
          "type": "string",
          "description": "The field to send the password credential when getting a token",
          "default": "password",
          "examples": [
            "password"
          ]
        },
        "token_result_field": {
          "type": "string",
          "description": "The field to pull the result from when getting a token",
          "default": "token",
          "examples": [
            "token"
          ]
        },
        "token_URI_path": {
          "type": "string",
          "description": "The path used to retrieve a token",
          "default": "",
          "examples": [
            "/api/version/authenticate"
          ]
        },
        "invalid_token_error": {
          "type": "integer",
          "description": "http error status number which defines an invalid token",
          "default": 401,
          "minimum": 0,
          "maximum": 1000
        },
        "token_timeout": {
          "type": "integer",
          "description": "How long a token is valid (in milliseconds), -1 (always get token), 0 use expiration returned with token",
          "default": -1,
          "minimum": -1,
          "maximum": 3600000
        },
        "token_cache": {
          "type": "string",
          "description": "Whether tokens should be stored in redis or local memory",
          "default": "local",
          "enum": [
            "redis",
            "local"
          ]
        },
        "auth_field": {
          "type": [
            "string",
            "array"
          ],
          "description": "The field in which to pass the token",
          "default": "header.headers.X-AUTH-TOKEN",
          "examples": [
            "header.headers.X-AUTH-TOKEN",
            "header.headers.Authorization",
            "header.auth",
            "body.token",
            "url"
          ]
        },
        "auth_field_format": {
          "type": [
            "string",
            "array"
          ],
          "description": "The format used to pass the authentication -- variables {token}, {username}, {password} will be replaced with the proper values. {b64}...{/b64} will base64 encode everything between the start and end tag.",
          "default": "{token}",
          "examples": [
            "{token}",
            "Token {token}",
            "{username}:{password}",
            "Basic {b64}{username}:{password}{/b64}",
            "token={token}"
          ]
        },
        "auth_logging": {
          "type": "boolean",
          "description": "This property turns on logging of Authentication Information and should only be true when debugging authentication and connectivity",
          "default": false
        },
        "grant_type": {
          "type": "string",
          "description": "The grant type for OAuth requests - can also provide in schema",
          "default": ""
        },
        "sensitive": {
          "type": "array",
          "description": "List of sensitive keys to search and hide values from being logged",
          "default": [],
          "items": {
            "type": "string"
          }
        },
        "sso": {
          "type": "object",
          "properties": {
            "protocol": {
              "type": "string",
              "description": "the protocol to request token from system",
              "default": "",
              "enum": [
                "http",
                "https",
                ""
              ]
            },
            "host": {
              "type": "string",
              "description": "hostname of the authentication system",
              "default": "",
              "examples": [
                "systemx.customer.com"
              ]
            },
            "port": {
              "type": "integer",
              "description": "port on which to connect to the authentication system",
              "default": 0,
              "minimum": 0,
              "maximum": 65535
            }
          }
        },
        "multiStepAuthCalls": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "description": "Id of the step call",
                "examples": [
                  "getAccessToken"
                ]
              },
              "requestFields": {
                "type": "object",
                "description": "The fields set in step request"
              },
              "responseFields": {
                "type": "object",
                "description": "The fields from the step result"
              },
              "successfullResponseCode": {
                "type": "integer",
                "description": "Expected response code for given step, if not set any successfull http response is accepted",
                "examples": [
                  200
                ]
              }
            }
          }
        }
      },
      "required": [
        "auth_method"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "auth_method": {
                "enum": [
                  "basic user_password"
                ]
              }
            }
          },
          "then": {
            "required": [
              "username",
              "password",
              "auth_field",
              "auth_field_format"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "auth_method": {
                "enum": [
                  "request_token"
                ]
              }
            }
          },
          "then": {
            "required": [
              "tenant_id",
              "client_id",
              "client_secret",
              "auth_field",
              "auth_field_format"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "auth_method": {
                "enum": [
                  "static_token"
                ]
              }
            }
          },
          "then": {
            "required": [
              "token",
              "auth_field",
              "auth_field_format"
            ]
          }
        }
      ]
    },
    "healthcheck": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of healthcheck to run",
          "default": "intermittent",
          "enum": [
            "none",
            "startup",
            "intermittent"
          ]
        },
        "frequency": {
          "type": "integer",
          "description": "How often the healthcheck should run (in milliseconds).",
          "default": 300000,
          "minimum": 60000,
          "maximum": 3600000
        },
        "protocol": {
          "type": "string",
          "description": "The protocol used to check the health of the system",
          "default": "REST",
          "enum": [
            "REST"
          ]
        },
        "URI_Path": {
          "type": "string",
          "description": "The path used to check the health of the system",
          "default": "",
          "examples": [
            "/api/version/ping"
          ]
        },
        "query_object": {
          "type": "object",
          "description": "Query object { device: xxxxx } to be placed into the healthcheck, will be converted to query string by the adapter",
          "default": {}
        },
        "addlHeaders": {
          "type": "object",
          "description": "headers that will be appended to the headers for the call",
          "default": {}
        }
      },
      "required": [
        "type"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "type": {
                "enum": [
                  "intermittent"
                ]
              }
            }
          },
          "then": {
            "required": [
              "frequency"
            ]
          }
        }
      ]
    },
    "throttle": {
      "type": "object",
      "properties": {
        "throttle_enabled": {
          "type": "boolean",
          "description": "Whether to use throttling",
          "default": false
        },
        "number_pronghorns": {
          "type": "integer",
          "description": "whether the throttling is being done in a single Pronghorn instance or whether requests are being throttled across multiple pronghorns",
          "default": 1,
          "minimum": 1,
          "maximum": 20
        },
        "sync_async": {
          "type": "string",
          "description": "should the queue handle request synchronously or asynchronously",
          "default": "sync",
          "examples": [
            "async",
            "sync"
          ]
        },
        "max_in_queue": {
          "type": "integer",
          "description": "the maximum number of requests that Pronghorn should allow into the queue before rejecting requests",
          "default": 1000,
          "minimum": 1,
          "maximum": 5000
        },
        "concurrent_max": {
          "type": "integer",
          "description": "defines the number of request that Pronghorn can send microsoft_dynamics at one time",
          "default": 1,
          "minimum": 0,
          "maximum": 1000
        },
        "expire_timeout": {
          "type": "integer",
          "description": "After the request has completed, Pronghorn will wait the additional expire timeout time (in milliseconds) prior to sending in the next request.",
          "default": 0,
          "minimum": 0,
          "maximum": 60000
        },
        "avg_runtime": {
          "type": "integer",
          "description": "an approximate average of how long it takes microsoft_dynamics to handle each request",
          "default": 200,
          "minimum": 50,
          "maximum": 60000
        },
        "priorities": {
          "type": "array",
          "description": "define your priorities here",
          "default": [],
          "items": {
            "type": "object",
            "properties": {
              "value": {
                "type": "number",
                "description": "Defines a priority - this number is what is passed in on a priority request"
              },
              "percent": {
                "type": "number",
                "description": "this is the percent of the queue that comes before the priority request (0 is front of queue, 100 is last in queue)"
              }
            }
          }
        }
      },
      "required": [
        "throttle_enabled"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "throttle_enabled": {
                "enum": [
                  true
                ]
              }
            }
          },
          "then": {
            "required": [
              "number_pronghorns",
              "sync_async",
              "max_in_queue",
              "concurrent_max",
              "expire_timeout",
              "avg_runtime"
            ]
          }
        }
      ]
    },
    "request": {
      "type": "object",
      "properties": {
        "number_redirects": {
          "type": "integer",
          "description": "how many redirects before it gives up on the request",
          "default": 0,
          "minimum": 0,
          "maximum": 20
        },
        "number_retries": {
          "type": "integer",
          "description": "how many attempt to make before it gives up on the request",
          "default": 3,
          "minimum": 0,
          "maximum": 20
        },
        "limit_retry_error": {
          "type": [
            "integer",
            "array"
          ],
          "description": "http error status number which defines that no capacity was available and thus after waiting a short interval the adapter can retry the request. Supports an array of numbers or strings including a range provided as '###-###'",
          "default": 0
        },
        "failover_codes": {
          "type": "array",
          "description": "An array of codes where it is ok to try another method",
          "default": [],
          "items": {
            "type": "integer"
          }
        },
        "attempt_timeout": {
          "type": "integer",
          "description": "how long Pronghorn should wait before aborting the attempt",
          "default": 5000,
          "minimum": 1000,
          "maximum": 3600000
        },
        "global_request": {
          "type": "object",
          "description": "Global Request data that is overriden by the request object",
          "properties": {
            "payload": {
              "type": "object",
              "description": "payload fields that will be appended to the provided payload (excluding GET calls)",
              "default": {}
            },
            "uriOptions": {
              "type": "object",
              "description": "options that will be appended to all GET calls",
              "default": {}
            },
            "addlHeaders": {
              "type": "object",
              "description": "headers that will be appended to the headers for the call",
              "default": {}
            },
            "authData": {
              "type": "object",
              "description": "authentication data that will be appended to the payload for authentication calls",
              "default": {}
            }
          }
        },
        "healthcheck_on_timeout": {
          "type": "boolean",
          "description": "Should the system run a healthcheck on timeout",
          "default": false
        },
        "return_raw": {
          "type": "boolean",
          "description": "Will include the raw response with the data that is returned",
          "default": false
        },
        "archiving": {
          "type": "boolean",
          "description": "Archives each request/response and corresponding metrics",
          "default": false
        },
        "return_request": {
          "type": "boolean",
          "description": "This property turns on returning the response information - need to be carefull in case credentials are in the path",
          "default": false
        }
      },
      "required": [
        "number_retries",
        "limit_retry_error",
        "attempt_timeout",
        "healthcheck_on_timeout"
      ]
    },
    "proxy": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not there is a proxy for the Server",
          "default": false
        },
        "host": {
          "type": "string",
          "description": "hostname of the proxy for the server",
          "default": "",
          "examples": [
            "proxy.customer.com"
          ]
        },
        "port": {
          "type": "integer",
          "description": "port on which to connect to the proxy for the server",
          "default": 443,
          "minimum": 1,
          "maximum": 65535
        },
        "protocol": {
          "type": "string",
          "description": "the protocol to use to connect to the proxy",
          "default": "http",
          "enum": [
            "http",
            "https",
            "socks4",
            "socks5",
            "tls"
          ]
        },
        "username": {
          "type": "string",
          "description": "username for proxy authentication",
          "default": ""
        },
        "password": {
          "type": "string",
          "description": "password for proxy authentication",
          "default": ""
        }
      },
      "required": [
        "enabled"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "enabled": {
                "enum": [
                  true
                ]
              }
            }
          },
          "then": {
            "required": [
              "host",
              "port"
            ]
          }
        }
      ]
    },
    "ssl": {
      "type": "object",
      "properties": {
        "ecdhCurve": {
          "type": "string",
          "description": "Do we need to set the autoCurve on this request",
          "default": "",
          "examples": [
            "auto"
          ]
        },
        "enabled": {
          "type": "boolean",
          "description": "Whether or not ssl is enabled on Server",
          "default": false
        },
        "accept_invalid_cert": {
          "type": "boolean",
          "description": "Whether the adapter should accept invalid certificates",
          "default": false
        },
        "ca_file": {
          "type": "string",
          "description": "The fully qualified path name to the CA file used for SSL",
          "default": "",
          "examples": [
            "security/ca.pem"
          ]
        },
        "ca_file_content": {
          "type": "string",
          "description": "The content of the CA file used for SSL",
          "default": "",
          "examples": [
            "-----BEGIN CERTIFICATE-----"
          ]
        },
        "key_file": {
          "type": "string",
          "description": "The fully qualified path name to the key file used for SSL",
          "default": "",
          "examples": [
            "security/key.pem"
          ]
        },
        "cert_file": {
          "type": "string",
          "description": "The fully qualified path name to the Cert file used for SSL",
          "default": "",
          "examples": [
            "security/cert.pem"
          ]
        },
        "secure_protocol": {
          "type": "string",
          "description": "What protocol to set on the ssl request",
          "default": "",
          "examples": [
            "SSLv2_method",
            "SSLv3_method"
          ]
        },
        "ciphers": {
          "type": "string",
          "description": "Hyphen separated list of acceptable ciphers",
          "default": "",
          "examples": [
            "DHE-RSA-AES256-SHA"
          ]
        }
      },
      "required": [
        "enabled"
      ],
      "allOf": [
        {
          "if": {
            "properties": {
              "enabled": {
                "enum": [
                  true
                ]
              }
            }
          },
          "then": {
            "required": [
              "accept_invalid_cert",
              "ciphers"
            ]
          }
        },
        {
          "if": {
            "allOf": [
              {
                "properties": {
                  "enabled": {
                    "enum": [
                      true
                    ]
                  }
                }
              },
              {
                "properties": {
                  "accept_invalid_cert": {
                    "enum": [
                      false
                    ]
                  }
                }
              }
            ]
          },
          "then": {
            "required": [
              "ca_file"
            ]
          }
        }
      ]
    },
    "mongo": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "Mongo's complete connection URL. This property overrides host, port, database, username, password and replSet settings.",
          "examples": [
            "mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]",
            "mongodb+srv://[username:password@]cluster0.xxxxx.mongodb.net/[defaultauthdb][?options]",
            "mongodb+srv://cluster0.xxxxx.mongodb.net/[defaultauthdb][?options]"
          ]
        },
        "host": {
          "type": "string",
          "description": "Host information for the Mongo server",
          "default": "",
          "examples": [
            "localhost",
            "cluster0.xxxxx.mongodb.net",
            "my-cluster.example.com"
          ]
        },
        "port": {
          "type": "integer",
          "description": "Port information for the Mongo server. Not used when using mongodb+srv:// protocol",
          "default": 443,
          "minimum": 0,
          "maximum": 65535
        },
        "database": {
          "type": "string",
          "description": "The database for the adapter to use for its data.",
          "default": "",
          "examples": [
            "adapter-xyz"
          ]
        },
        "dbAuth": {
          "type": "boolean",
          "description": "Whether to use authentication for MongoDB connection. Default is false.",
          "default": false
        },
        "username": {
          "type": "string",
          "description": "If credentials are required to access Mongo, this is the user to login as.",
          "default": "",
          "examples": [
            "username"
          ]
        },
        "password": {
          "type": "string",
          "description": "If credentials are required to access Mongo, this is the password to login with.",
          "default": "",
          "examples": [
            "password"
          ]
        },
        "replSet": {
          "type": "string",
          "description": "If the database is set up to use replica sets, define it here so it can be added to the database connection. Not used when using mongodb+srv:// protocol",
          "default": "",
          "examples": [
            "my_repolica_set"
          ]
        },
        "addSrv": {
          "type": "boolean",
          "description": "Whether the connection requires the mongodb+srv:// protocol. If true, uses mongodb+srv:// protocol. Note: mongodb+srv:// can also be used for non-Atlas deployments that support DNS SRV records",
          "default": false
        },
        "db_ssl": {
          "type": "object",
          "description": "SSL for mongo database connection",
          "properties": {
            "enabled": {
              "type": "boolean",
              "description": "Whether or not ssl is enabled on Database Server",
              "default": false
            },
            "accept_invalid_cert": {
              "type": "boolean",
              "description": "Whether the adapter should accept invalid certificates",
              "default": false
            },
            "ca_file": {
              "type": "string",
              "description": "The fully qualified path name to the CA file used for Database SSL",
              "default": "",
              "examples": [
                "security/ca.pem"
              ]
            },
            "key_file": {
              "type": "string",
              "description": "The fully qualified path name to the key file used for Database SSL",
              "default": "",
              "examples": [
                "security/key.pem"
              ]
            },
            "cert_file": {
              "type": "string",
              "description": "The fully qualified path name to the Cert file used for Database SSL",
              "default": "",
              "examples": [
                "security/cert.pem"
              ]
            }
          }
        }
      },
      "dependencies": {
        "dbAuth": {
          "oneOf": [
            {
              "properties": {
                "dbAuth": {
                  "const": false
                }
              }
            },
            {
              "properties": {
                "dbAuth": {
                  "const": true
                },
                "username": {
                  "type": "string",
                  "minLength": 1
                },
                "password": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": [
                "username",
                "password"
              ]
            }
          ]
        }
      }
    },
    "devicebroker": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not the device broker calls have been mapped",
          "default": false
        },
        "getDevice": {
          "type": "array",
          "description": "Broker call(s) to getDevice",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "The fully qualified path of the call to getDevice (e.g. /rest/api/device/{deviceid})",
                "default": ""
              },
              "method": {
                "type": "string",
                "description": "The method of the call to getDevice",
                "default": "GET"
              },
              "query": {
                "type": "object",
                "description": "The json object with query parameters of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "body": {
                "type": "object",
                "description": "The json object with body of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "headers": {
                "type": "object",
                "description": "The json object with headers of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "handleFailure": {
                "type": "string",
                "enum": [
                  "ignore",
                  "fail"
                ],
                "description": "return failure or ignore failure",
                "default": "ignore"
              },
              "requestFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              },
              "responseDatakey": {
                "type": "string",
                "description": "place in the response where the data is - supports jsonquery",
                "default": ""
              },
              "responseFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The field in response to getDevice that contains the name of the device",
                    "default": "name"
                  },
                  "ostype": {
                    "type": "string",
                    "description": "The field in response to getDevice that contains the ostype of the device",
                    "default": "ostype"
                  },
                  "ostypePrefix": {
                    "type": "string",
                    "description": "Any prefix that should be added to the ostype of the device (e.g. aws-)",
                    "default": ""
                  },
                  "port": {
                    "type": "string",
                    "description": "The field in response to getDevice that contains the port of the device",
                    "default": ""
                  },
                  "ipaddress": {
                    "type": "string",
                    "description": "The field in response to getDevice that contains the ip address of the device",
                    "default": ""
                  }
                }
              }
            }
          }
        },
        "getDevicesFiltered": {
          "type": "array",
          "description": "Broker call(s) to getDevicesFiltered",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "The fully qualified path of the call to getDevicesFiltered (e.g. /rest/api/device/{deviceid})",
                "default": ""
              },
              "method": {
                "type": "string",
                "description": "The method of the call to getDevicesFiltered",
                "default": "GET"
              },
              "pagination": {
                "type": "object",
                "description": "todo",
                "properties": {
                  "offsetVar": {
                    "type": "string",
                    "description": "Name of variable that defines how to go to next set of results"
                  },
                  "limitVar": {
                    "type": "string",
                    "description": "Name of variable that defines the max results returned in a request"
                  },
                  "incrementBy": {
                    "type": "string",
                    "enum": [
                      "limit",
                      "page"
                    ],
                    "description": "How to incremenet offset. Default limit",
                    "default": "limit"
                  },
                  "requestLocation": {
                    "type": "string",
                    "enum": [
                      "query",
                      "body"
                    ],
                    "description": "Where in request the pagination data goes",
                    "default": "query"
                  }
                }
              },
              "query": {
                "type": "object",
                "description": "The json object with query parameters of the call to getDevicesFiltered",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "body": {
                "type": "object",
                "description": "The json object with body of the call to getDevicesFiltered",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "headers": {
                "type": "object",
                "description": "The json object with headers of the call to getDevicesFiltered",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "handleFailure": {
                "type": "string",
                "enum": [
                  "ignore",
                  "fail"
                ],
                "description": "return failure or ignore failure",
                "default": "ignore"
              },
              "requestFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              },
              "responseDatakey": {
                "type": "string",
                "description": "place in the response where the data is - supports jsonquery",
                "default": ""
              },
              "responseFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevicesFiltered",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {
                  "name": {
                    "type": "string",
                    "description": "The field in response to getDevicesFiltered that contains the name of the device",
                    "default": "name"
                  },
                  "ostype": {
                    "type": "string",
                    "description": "The field in response to getDevicesFiltered that contains the ostype of the device",
                    "default": "ostype"
                  },
                  "ostypePrefix": {
                    "type": "string",
                    "description": "Any prefix that should be added to the ostype of the device (e.g. aws-)",
                    "default": ""
                  },
                  "port": {
                    "type": "string",
                    "description": "The field in response to getDevicesFiltered that contains the port of the device",
                    "default": ""
                  },
                  "ipaddress": {
                    "type": "string",
                    "description": "The field in response to getDevicesFiltered that contains the ip address of the device",
                    "default": ""
                  }
                }
              }
            }
          }
        },
        "isAlive": {
          "type": "array",
          "description": "Broker call(s) to determine if the device isAlive",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "The fully qualified path of the call to isAlive (e.g. /rest/api/device/{deviceid})",
                "default": ""
              },
              "method": {
                "type": "string",
                "description": "The method of the call to isAlive",
                "default": "GET"
              },
              "query": {
                "type": "object",
                "description": "The json object with query parameters of the call to isAlive",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "body": {
                "type": "object",
                "description": "The json object with body of the call to isAlive",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "headers": {
                "type": "object",
                "description": "The json object with headers of the call to isAlive",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "handleFailure": {
                "type": "string",
                "enum": [
                  "ignore",
                  "fail"
                ],
                "description": "return failure or ignore isAlive",
                "default": "ignore"
              },
              "requestFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              },
              "responseDatakey": {
                "type": "string",
                "description": "place in the response where the data is - supports jsonquery",
                "default": ""
              },
              "responseFields": {
                "type": "object",
                "description": "The json object with response fields of the call to isAlive",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {
                  "status": {
                    "type": "string",
                    "description": "The field in response to isAlive that contains the status of the device",
                    "default": "name"
                  },
                  "statusValue": {
                    "type": "string",
                    "description": "The expected value in the status field",
                    "default": "true"
                  }
                }
              }
            }
          }
        },
        "getConfig": {
          "type": "array",
          "description": "Broker call(s) to getConfig",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "The fully qualified path of the call to getConfig (e.g. /rest/api/device/{deviceid})",
                "default": ""
              },
              "method": {
                "type": "string",
                "description": "The method of the call to getConfig",
                "default": "GET"
              },
              "query": {
                "type": "object",
                "description": "The json object with query parameters of the call to getConfig",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "body": {
                "type": "object",
                "description": "The json object with body of the call to getConfig",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "headers": {
                "type": "object",
                "description": "The json object with headers of the call to getConfig",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "handleFailure": {
                "type": "string",
                "enum": [
                  "ignore",
                  "fail"
                ],
                "description": "return failure or ignore getConfig",
                "default": "ignore"
              },
              "requestFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              },
              "responseDatakey": {
                "type": "string",
                "description": "place in the response where the data is - supports jsonquery",
                "default": ""
              },
              "responseFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getConfig",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              }
            }
          }
        },
        "getCount": {
          "type": "array",
          "description": "Broker call(s) to getCount",
          "items": {
            "type": "object",
            "properties": {
              "path": {
                "type": "string",
                "description": "The fully qualified path of the call to getCount (e.g. /rest/api/device/{deviceid})",
                "default": ""
              },
              "method": {
                "type": "string",
                "description": "The method of the call to getCount",
                "default": "GET"
              },
              "query": {
                "type": "object",
                "description": "The json object with query parameters of the call to getCount",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "body": {
                "type": "object",
                "description": "The json object with body of the call to getCount",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "headers": {
                "type": "object",
                "description": "The json object with headers of the call to getCount",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "handleFailure": {
                "type": "string",
                "enum": [
                  "ignore",
                  "fail"
                ],
                "description": "return failure or ignore getCount",
                "default": "ignore"
              },
              "requestFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getDevice",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              },
              "responseDatakey": {
                "type": "string",
                "description": "place in the response where the data is - supports jsonquery",
                "default": ""
              },
              "responseFields": {
                "type": "object",
                "description": "The json object with response fields of the call to getConfig",
                "additionalProperties": {
                  "type": [
                    "string",
                    "number"
                  ]
                },
                "properties": {}
              }
            }
          }
        }
      }
    },
    "cache": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean",
          "description": "Whether or not cache is enabled for adapter",
          "default": false
        },
        "entities": {
          "type": "array",
          "description": "Information for the cached entities",
          "items": {
            "type": "object",
            "properties": {
              "entityType": {
                "type": "string",
                "description": "The name of the entity - should match adapter entity configuration or a broker (e.g. Device)",
                "default": ""
              },
              "frequency": {
                "type": "integer",
                "description": "how long (in minutes) we wait to re-populate the cache",
                "default": 1440,
                "maximum": 10080
              },
              "flushOnFail": {
                "type": "boolean",
                "description": "Whether to clear the cache we have if the populate failed",
                "default": false
              },
              "limit": {
                "type": "integer",
                "description": "maximum number of items to keep in cache",
                "default": 1000
              },
              "retryAttempts": {
                "type": "integer",
                "description": "number of times to retry the populate call before failure",
                "default": 5
              },
              "sort": {
                "type": "boolean",
                "description": "whether to sort the data or not",
                "default": true
              },
              "populate": {
                "type": "array",
                "description": "Information for the call(s) used to populate the ca