This is the reference documentation for Morio's Management API. It is auto-generated from this API's OpenAPI v3 specification.
Returns the root and intermediate certificates of the Morio CA, along with the root certificate's fingerprint.
{- "root_fingerprint": "50a3270a0988610145659cfb190121d1fcfd50141b953a783f354d840ad3bf9e",
- "root_certificate": "-----BEGIN CERTIFICATE-----\r\nMIIGdDCCBFygAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCQkUx\r\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\r\nRW5naW5lZXJpbmcgVGVhbTEkMCIGA1UECxMbTW9yaW8gU3RhbmRhbG9uZSBTd2Fy\r\nbSBUZXN0MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0\r\neTAeFw0yNDA3MjgxMzE4MzZaFw00NDA3MjgxMzE4MzZaMIGfMQswCQYDVQQGEwJC\r\nRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYDVQQK\r\nExBFbmdpbmVlcmluZyBUZWFtMSQwIgYDVQQLExtNb3JpbyBTdGFuZGFsb25lIFN3\r\nYXJtIFRlc3QxKTAnBgNVBAMTIE1vcmlvIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y\r\naXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkK3oHb9U0thYdq2F\r\niOtXhsxIp+omgEczcYL6fE5B+y2Qy7vzWvOr1l9kZTPN6FkYlo0idXWa4RO9SgQ9\r\nBoOqR+NaOvYRvn836l9ohGztvPAfxdxB+BGoHcd3KFgeD8veedKaCTgeVWNUQMUK\r\nHPR3q8HQXs1bycJ15j9ktmhtCKnZvFJUXZrOskgWdE+0pXI8rfrBdXB2z9WrN9dr\r\n32bxLfsB+JycO1OLs/dJpkIyj1+nbAzdW6KpiDMTq9DJSQgGKbgYoz73cD6uSbnh\r\n+sLhSvpUy7Kz5O+L5Ne+q4LNI4Dt5St4FGBljDWxV1Oar2MRyhwbdeIb4yunIpgY\r\nr/iD4+vCDSEiIxwcS9H8n5qyHbhMO8Nh9zUsGsomBcB+UlPbdB3I0M1veLB2Eb3t\r\nJ/qf7mzdN4yO2i5gP3irvF6BYM4Yb1NNvBKioyWYsQYAl+xOWI7vLXB/1IKs3Xux\r\nFnKa8lTuo1PORwS8g+pXUMX2Otc6Ucf0r58YoZrvAFUQRfdf9uk1jAKGXLkhrWva\r\no+ZUDrB9VnjNUrCr6DoTam7mDRIlgkCpDje/alW5gLh5++l2gcG4Eht1I9L/O+Ug\r\nJptJ3gyrWm8RknXFqT3LsPwRYFFewjxfS0bsww/5+O5A3TKu/PKyINazT5SRYNI4\r\noXOSebu0b9WHMkYVqrmxoTGgd/sCAwEAAaOBuDCBtTAMBgNVHRMEBTADAQH/MAsG\r\nA1UdDwQEAwIC9DA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUF\r\nBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwEQYJYIZIAYb4QgEBBAQDAgD3MB0GA1Ud\r\nDgQWBBRLAieUVRyHBPxbwRQ05LyL7xSvNTApBgNVHREEIjAggh5wb2MtbW9yaW8t\r\nbm9kZTEuY2VydC5ldXJvcGEuZXUwDQYJKoZIhvcNAQELBQADggIBAHfuhwc9awm+\r\nnZy7l8iviAoFqo3ja6yt/efx9KoQOCWP0q7TX7YAqWs8JQGV1DxFE94j3flgSxx5\r\nEeNs1p7qFHpJ1wGoWbTS8X/ytAVjKQEzfzSNSIEfK5O7G9rKWnpMjI6ZnuAbB7MU\r\nA1h6vrA2373qj7VFJfupj6qanZ8/WmhEU6dfwL1Mp4trwY7g40FfQOq8+YyqWyU0\r\nZdO7DUJd+bO8KGV6l7z8U9CyVN3X4hAvpHZ4rhD5Kabq0o6pA3GaQaSWPJfAxCNF\r\n1uWR3rLH2aK68pKAUrGNXRibyhrWIuX5t/WTub9zZw7FMk01YSFwXnl46MHFTt/r\r\nZWJVVITPCLjAHJaBH7WX8KXAORuE1Lqm9Ynapj0+B8c3nGC4Th+BiHorB3+CF799\r\nEpRjHsNXQWLRgP09gl1g/yp4GYbImUN2tjkyb7OftF/F/AEIozFGeXK0ewk+gZKt\r\nlYyqKzOjNbL7pDVh3NWQlGV9ky6rr2XWvYFzb3vFkH5MNWMHE5kCpjuAU/tOzmpG\r\n55TpUcT2BY4rTM8mObGNiPu4Vy9VqCaTy+mUlyRHlUZIBaZTxqNmjHrQXDj/B9s9\r\n0ekS8ikHr7A3mYdbZrCi0dEfQTs9seiWfid59I4W7R7/J0czJHusKkpM/GE5lFcg\r\noUyCyR375Emn80zazBRiKvAey+gT1bPD\r\n-----END CERTIFICATE-----\r\n",
- "intermediate_certificate": "-----BEGIN CERTIFICATE-----\r\nMIIGfDCCBGSgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCQkUx\r\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\r\nRW5naW5lZXJpbmcgVGVhbTEkMCIGA1UECxMbTW9yaW8gU3RhbmRhbG9uZSBTd2Fy\r\nbSBUZXN0MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0\r\neTAeFw0yNDA3MjgxMzE4NDFaFw0yOTA3MjgxMzE4NDFaMIGnMQswCQYDVQQGEwJC\r\nRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYDVQQK\r\nExBFbmdpbmVlcmluZyBUZWFtMSQwIgYDVQQLExtNb3JpbyBTdGFuZGFsb25lIFN3\r\nYXJtIFRlc3QxMTAvBgNVBAMTKE1vcmlvIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0\r\nZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDEbgzx\r\n0dF680J70HM+CwPDQM7owZf/nQnvHkxelrNOE1JE845kMbO+LC07WX8C1anizDJQ\r\npHiMzMWuCdziqUUSl19aAUfrP53ei3IvIC3R9mXusKLnrTEXauC7er1h2vsoz9F5\r\nmULW7Lsf/mdKu6MsXalJyDpWLBtZz3zznzoTd/rwKnFUnauy/rkTuwDqzRho1/89\r\n50sNdUgSQ14srXGxQmXyAeH9PZk3c40mLHmSYqJhP1H6O0t/snXbfO4s+5UDaTiF\r\n+3ANjeeJDUeDtXxg2hGiCPssrWeCGr331Jy4XU3nwaTGH7EmLep4IjE1+7qcOSl3\r\nkOWex7CmY991/PZSneHE0w4YAmudZTfHl7lA2RpVxFMkbIcbx7lMll/zfrvqax6W\r\nx7TIuqYoPwofr8hwxiKbxVCqW0UudxRrJXZLMlTavXIxVfEOmR7frfl/CmiyybwG\r\nzLqAsILof8azYWjqR+hwUKrj/UR05fiQfJmC8WGfGXWqM/YKUpIheG+FWs6jKHkm\r\nNcmANp+w6ucTbV++1vdhj8vLmjELFf9JRptSZxMQpUA2gVfF2Hbn+jyDQyhFSElk\r\n2K0KKQRHqMYRquRVZCHWZnaLyESh5bQGpt0q3+ZqlEfSM57h8eCmmd+ia1aVDeWU\r\nGlpe3mJPtNef9HBojkytvXqcQOOw0RDI6JBnuQIDAQABo4G4MIG1MAwGA1UdEwQF\r\nMAMBAf8wCwYDVR0PBAQDAgL0MDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcD\r\nAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCDARBglghkgBhvhCAQEEBAMC\r\nAPcwHQYDVR0OBBYEFEsCJ5RVHIcE/FvBFDTkvIvvFK81MCkGA1UdEQQiMCCCHnBv\r\nYy1tb3Jpby1ub2RlMS5jZXJ0LmV1cm9wYS5ldTANBgkqhkiG9w0BAQsFAAOCAgEA\r\nTN9kHQBILMqCQSpYINywlmnchGTsqzvisE9p3IzqDWNMuQybwAt6/3LetE1SomYc\r\nYmh2fS8MmAHs+xr7ZfldTSVBUMXj+R2p176d3AmToR4PQ2qFdLGT+JoMOk9qsMG6\r\nNyozmLKvT1TIAt2pwjGSfX0GLSy2RS+mUpxUHpaDKLozTk1YJZJnAzX9l6SJz+m/\r\n77XpmTxMTKCQY0WsKLtohlDAs9lrm9MAJir7XKbMyiHE0L4OiW1pgozxvPxeTBUz\r\ngEXz4laHvrbN/rRwzqdlZ1XFzgjuOT1Tfkn8fzbjqZVqs0muyTqsftkKUyi3rgY8\r\nH1RKqt4r+h86XSXTR3/M3Z7IZYQ9ts0qDhPyrya9S9V7ZPO7GWKcMIA2JhjAn5/0\r\nvcvrXFoE6bnXagxT6p+lUJqUycecpDgN4TFcRCTB/rvC7H6Qi7v7z3OU2kjYQp7n\r\nQjiAYmeXwoqB27hlBjKOpS3dgX34/HjhYJJ6JSZ5r89ZhSgQraIvNpf8HamrKtTz\r\nVsipAq4Ol2rkMwuiIRZGfE3eFppO4aWGs6nIwwrI00ttO241a8MVv95ruPFoULLS\r\nZJ3dD2kDgEZ3F9pDlJyty0T4PPNkwu35ysldWPXce9zy/7AFmxujMnd4bB+0tO0t\r\nDmghEeLnxtbFVX9qGQYM4a07Y7s7jFuIlXeZqMDxHgU=\r\n-----END CERTIFICATE-----\r\n"
}Returns Morio's internal public key. This can be used to validate Morio's JWTs
{- "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2w8z3zdnU8oAWYD8UfQ9\nAr3xVlEo2PIC4ZNZ7AYsXitFJ8NNdHvXqO5VIC3R2LHIsdn9wPkaaI5sAEcGNzeL\n2AD4QzDCWIIYWfLLS1MTVVd9hW1HzHZxzvng4WJV3vuULCvYh+9bcy0xoKzq9OzE\njETDSFpsTEl3VGHE/J2XN/bh4I6qYvrze2ZAMtYfu1Xd7lk6tXooQO8WGaVdH/5/\nR3HCoiFBTGJAa1VLlFp7Zuc2P4Gi7lbI1VAANCmN38olkyP2yrqPAtaFzAHZdmUZ\nP+1BkJ7OQ2Z0uNKrpMiZZaweuaFGnmf1N3YsAJNwNvVksKWJJMilpNZbWQsm2QQj\nU5i/MKSngXx7yyzATAxwH/JZrXYamNEdWFxFUdNaAleO3cSXQVxhqzcCb7JthlhG\nn1DVvuM2kPGJJr8iSylXpX2Sge1Z9dnnrWpK+7/+mVTgYH+dlqZEHf7NC8cw7D/M\nSN9phe5P6gCOppTqDNFi/3QsgdQ8w9kKhvD2d77I1pzTvjXqHxrFnZ/Je/8iOpa8\nHnlRWso2II0Wn6BNOxNK5K/4TRFcOdVS+RbWaQ/+xuvX3/8GMeuOybwydqtIUXWs\nropJOuQ/yET5BtYVnalr4V9BfKmALfcYenIrk9sWLe3f+FG34kGF1egaWy2c4HFV\n2zVgK4iWU+nnSlpFGcwAxVUCAwEAAQ==\n-----END PUBLIC KEY-----\n"
}Returns Morio's internal public key as a PEM file. This can be used to validate Morio's JWTs
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2w8z3zdnU8oAWYD8UfQ9 Ar3xVlEo2PIC4ZNZ7AYsXitFJ8NNdHvXqO5VIC3R2LHIsdn9wPkaaI5sAEcGNzeL 2AD4QzDCWIIYWfLLS1MTVVd9hW1HzHZxzvng4WJV3vuULCvYh+9bcy0xoKzq9OzE jETDSFpsTEl3VGHE/J2XN/bh4I6qYvrze2ZAMtYfu1Xd7lk6tXooQO8WGaVdH/5/ R3HCoiFBTGJAa1VLlFp7Zuc2P4Gi7lbI1VAANCmN38olkyP2yrqPAtaFzAHZdmUZ P+1BkJ7OQ2Z0uNKrpMiZZaweuaFGnmf1N3YsAJNwNvVksKWJJMilpNZbWQsm2QQj U5i/MKSngXx7yyzATAxwH/JZrXYamNEdWFxFUdNaAleO3cSXQVxhqzcCb7JthlhG n1DVvuM2kPGJJr8iSylXpX2Sge1Z9dnnrWpK+7/+mVTgYH+dlqZEHf7NC8cw7D/M SN9phe5P6gCOppTqDNFi/3QsgdQ8w9kKhvD2d77I1pzTvjXqHxrFnZ/Je/8iOpa8 HnlRWso2II0Wn6BNOxNK5K/4TRFcOdVS+RbWaQ/+xuvX3/8GMeuOybwydqtIUXWs ropJOuQ/yET5BtYVnalr4V9BfKmALfcYenIrk9sWLe3f+FG34kGF1egaWy2c4HFV 2zVgK4iWU+nnSlpFGcwAxVUCAwEAAQ== -----END PUBLIC KEY-----
Returns a list of files in the download folder that can be downloaded from the API
[- "/downloads/certs",
- "/downloads/certs/root.pem",
- "/downloads/certs/intermediate.pem",
- "/downloads/certs/db.pem",
- "/downloads/certs/console.pem",
- "/downloads/certs/broker.pem"
]Returns information about the available identity providers (IDPs). Useful for frontend integration.
{- "idps": {
- "apikey": {
- "id": "apikey",
- "provider": "apikey",
- "label": "API Key",
- "about": false
}, - "mrt": {
- "id": "mrt",
- "provider": "mrt",
- "about": false
}, - "local": {
- "id": "local",
- "provider": "local",
- "label": "Morio Account",
- "about": false
}, - "ad": {
- "id": "ad",
- "provider": "ldap",
- "label": "Active Directory",
- "about": "Morio Tokyo branch on-prem Active Directory"
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}Returns information to verify the JSON Web Tokens (JWT) were issued by this Morio deployment. Useful for integration with exteral services. See RFC 7517
{- "keys": [
- {
- "kty": "RSA",
- "kid": "YEKFMAkSJihz6zIBs6a-gQ9iEOxuljm_A3Xg6mkiAPY",
- "n": "yriNzCVnGQ56dyOVhoPn4J2xlq4_SW6YEoq2FAM1uXtY2FNg1nAtytdY7SKzyuSF1U5sOQ77RmACiXIX-tkuTTPl_kNZQ4udH-c2w01_So9uj9rjDSwvtilHOn4y-l9qYyqBM93jBnjWGFTBNpmDHO4ctVorI6zK1mE7ILDTEpz1lPiZUz22feLOSuCQfnGNJsoU5msSJCiOVtfi37yFQ-ZAQtcJGBe11xRkvjegQJv9UB67tnD3DkRt7FnNDWHJmIcPOyySHJ7CH_ajRZj6_S0BVdlTWNiarKGzTlRCpQCqVFaiu8g6H8ANSoWypIazoOA-iJ3n8VSgvxiVAX1vVzG_Z44Vd8JpEpOWeC36qfX2LNKg0KvUEgbdMt6NB4RUsXVgdIGT02h_RRVmTY5FZCcWtA6pqlJ9sd27f5t0IWAMLJLpUq6WjOVTidUxon7xVGLot26DP3S7KnVS1FHZFsUQn5uQ2kNbzWyr6gha3YbvYk1Ss6bRu9Zzv4mKXaXn-rASvuSHZClPo0k4wEfQ7kWRJgwNe9hbZRh_MGl4VbGhg0TbaPwqYucmffecjrhNEAPsjt5R7_Ukc4lg8y4miPn6QPsGBfNgiGfhdWLy_FXA-Nn2DJqsDJcieNJp0rOUDGRJSj64s8Y1dpOi14ZjErz3x9OZBHk1Nw1NAQ3Z96U",
- "e": "AQAB"
}
]
}Returns information on your current rate limits. The API is rate-limited per IP address, this endpoint lets you see how many requests you have made within the rate limiting window, and how long before it will reset.
{- "ip": "10.13.22.6",
- "hits": 6,
- "reset_time": "2024-09-12T09:37:49.723Z",
- "reset_seconds": 899
}Returns information about how Morio is doing. Useful for monitoring.
{- "info": {
- "about": "Morio Management API",
- "name": "@itsmorio/api",
- "production": false,
- "version": "0.2.0"
}, - "state": {
- "ephemeral": false,
- "uptime": 37,
- "start_time": 1722232994724,
- "reload_count": 1,
- "config_resolved": true,
- "settings_serial": 1722172709838
}, - "core": {
- "info": {
- "about": "Morio Core",
- "name": "@itsmorio/core",
- "production": false,
- "version": "0.2.0"
}, - "status": {
- "cluster": {
- "code": 0,
- "color": "green",
- "time": 1722233017641,
- "updated": 1722233017641,
- "leader_serial": 1,
- "leading": true,
- "msg": "Everything is ok"
}, - "nodes": {
- "morio-node1.tokyo.morio.it": {
- "api": 0,
- "broker": 0,
- "db": 0,
- "ca": 0,
- "proxy": 0,
- "ui": 0,
- "console": 0
}
}
}, - "nodes": {
- "39b0b5fd-6648-41f8-b3b9-df96c5d11579": {
- "fqdn": "morio-node1.tokyo.morio.it",
- "hostname": "poc-morio-node1",
- "ip": "10.123.12.15",
- "serial": 1,
- "uuid": "39b0b5fd-6648-41f8-b3b9-df96c5d11579",
- "settings": 1722172709838
}
}, - "node": {
- "uptime": 46633,
- "cluster": "8602906f-5437-4cce-b150-7c3387da36fa",
- "node": "39b0b5fd-6648-41f8-b3b9-df96c5d11579",
- "node_serial": 1,
- "ephemeral": false,
- "reconfigure_count": 1,
- "config_resolved": true,
- "settings_serial": 1722172709838
}
}
}Will validate settings so you can deploy them with confidence.
The Morio settings you want to validate
object | |
object | |
object | |
| connector | object |
object | |
object | |
object | |
object or string | |
object | |
| tap | object |
{- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}{- "valid": true,
- "deployable": false,
- "errors": [ ],
- "warnings": [
- "Node 1 runs Morio, but is not in ephemeral mode, its settings would be overwritten"
], - "info": [
- "Settings passed schema validation",
- "Validating node 1: morio-node1.tokyo.morio.it",
- "Node 1 resolves to: 10.123.12.15",
- "Node 1 is reachable over HTTPS"
], - "validated_settings": {
- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}
}Will validate preseed settings so you can deploy them with confidence.
The Morio preseed settings you want to validate
| url | string |
| git | object |
object or object or object or string | |
Array of objects or objects or objects or strings | |
object | |
Array of objects or objects or objects or strings | |
Array of objects or objects or objects or strings | |
Array of objects or objects or objects or strings |
{- "base": {
- "github": {
- "owner": "morio",
- "repo": "preseed",
- "file_path": "settings/standalone.yaml",
- "ref": "main",
- "token": "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"
}
}, - "overlays": [
- "settings/overlays/idp-ad.yaml",
- "settings/overlays/idp-apikey.yaml",
- "settings/overlays/idp-local.yaml",
- "settings/overlays/idp-mrt.yaml"
]
}{- "valid": true,
- "deployable": false,
- "errors": [ ],
- "warnings": [
- "Node 1 runs Morio, but is not in ephemeral mode, its settings would be overwritten"
], - "info": [
- "Settings passed schema validation",
- "Validating node 1: morio-node1.tokyo.morio.it",
- "Node 1 resolves to: 10.123.12.15",
- "Node 1 is reachable over HTTPS"
], - "validated_settings": {
- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}
}This will handle the initial setup of Morio. Or rather, it will ask Morio Core to do so after validation.
This endpoint does not require authentication. However, it is only available in ephemeral Mode. In other words, once Morio is set up, this endpoint becomes unavailable.
The Morio settings to use for the initial setup
object | |
object | |
object | |
| connector | object |
object | |
object | |
object | |
object or string | |
object | |
| tap | object |
{- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}{- "result": "success",
- "uuids": {
- "node": "40361cd8-a149-4675-bd46-11a2b48acd04",
- "cluster": "26e66c95-c342-49fc-8e3a-f5ca69b392ba"
}, - "root_token": {
- "about": "This is the Morio root token. You can use it to authenticate before any authentication providers have been set up. Store it in a safe space, as it will never be shown again.",
- "value": "mrt.7297ef89ed8c855ffc6786e0377bb7bf5e0137dcbc367494aebd39782747ab43"
}
}Returns the list of accounts. Needs at least the manager role.
manager role, the list will include all accounts created by the current user.operator, engineer, or even root), the list will include all accounts.[- {
- "id": "local.testaccount1722178139692",
- "about": "This account was created as part of a test",
- "status": "active",
- "role": "user",
- "created_by": "local.test_user",
- "created_at": "1722178140015",
- "updated_by": null,
- "updated_at": null,
- "last_login": null,
- "provider": "local",
- "username": "testaccount1722178139692"
}
]Creates a local Morio account. The account needs to be activated via the invite code/url.
The Morio settings you want to validate
| about | string [ 0 .. 255 ] characters A description or nmemonic note for the acount |
| provider required | string [ 2 .. 255 ] characters The ID of the identity provider to use for this account |
| role required | string Enum: "user" "manager" "operator" "engineer" "root" The requested role to assign after authentication. Must be one of: user, manager, operator, engineer, root. Although root can only be assigned by the MRT identity provider. |
| username required | string [ 2 .. 255 ] characters The username of the account |
| overwrite | boolean Whether to overwrite the account, if one has a sufficiently high role |
{- "username": "testAccount1722234021332",
- "about": "This account was created as part of a test",
- "provider": "local",
- "role": "user"
}{- "username": "testAccount1722068362387",
- "about": "This account was created as part of a test",
- "provider": "local",
- "role": "user",
- "invite": "e7d7b6427378f9ddde77775160ac91dda8eea6c5ef0491c8",
}Activates an account based on its invite code.
Note that for local Morio accounts, the account will still need to activate MFA before it can be used. That is because MFA is manadatory for local Morio accounts.
So for a local Morio account, this endpoint will return the secret to setup MFA, as well as (an SVG of) the QR-code to do so.
The invite code, as well as username and (identity) provider
| invite required | string = 48 characters The account invite code |
| provider required | string [ 2 .. 255 ] characters The ID of the identity provider to use for this account |
| username required | string [ 2 .. 255 ] characters The username of the account |
{- "username": "testAccount1722234284869",
- "invite": "251bdac3a4ffadaef194cdc18b97be9a0f9951ce65a10ae1",
- "provider": "local"
}{- "secret": "AULGYK3RINCS62ZM",
- "otpauth": "otpauth://totp/Morio%2FMorio%20Standalone%20Swarm%20Test:testAccount1722180213478?secret=AULGYK3RINCS62ZM&period=30&digits=6&algorithm=SHA1&issuer=Morio%2FMorio%20Standalone%20Swarm%20Test",
- "qrcode": "<svg class=\"qrcode\" width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 65 65\" shape-rendering=\"crispEdges\"><path fill=\"none\" d=\"M0 0h65v65H0z\"/><path stroke=\"currentColor\" d=\"M4 4.5h7m1 0h2m3 0h1m5 0h1m1 0h2m1 0h5m1 0h6m1 0h2m1 0h1m1 0h2m2 0h2m2 0h7M4 5.5h1m5 0h1m1 0h2m1 0h1m1 0h1m1 0h1m2 0h1m1 0h3m5 0h5m2 0h2m1 0h1m2 0h1m1 0h1m3 0h1m2 0h1m5 0h1M4 6.5h1m1 0h3m1 0h1m1 0h3m1 0h4m2 0h1m1 0h4m3 0h1m1 0h3m3 0h2m1 0h2m2 0h6m2 0h1m1 0h3m1 0h1M4 7.5h1m1 0h3m1 0h1m3 0h3m7 0h1m5 0h6m4 0h2m1 0h1m2 0h1m1 0h1m2 0h1m2 0h1m1 0h3m1 0h1M4 8.5h1m1 0h3m1 0h1m1 0h1m1 0h1m1 0h1m3 0h1m1 0h1m2 0h2m1 0h7m4 0h2m1 0h1m2 0h2m1 0h2m1 0h1m2 0h1m1 0h3m1 0h1M4 9.5h1m5 0h1m2 0h5m1 0h4m2 0h1m1 0h1m1 0h2m3 0h3m1 0h1m1 0h1m1 0h2m1 0h2m3 0h1m3 0h1m5 0h1M4 10.5h7m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h1m1 0h7M13 11.5h2m1 0h1m2 0h1m1 0h1m1 0h1m2 0h1m1 0h3m3 0h3m2 0h1m1 0h2m2 0h8M4 12.5h1m2 0h6m1 0h4m1 0h2m3 0h1m4 0h7m2 0h3m1 0h1m1 0h2m1 0h1m5 0h1m2 0h1m1 0h3M7 13.5h2m3 0h1m4 0h1m2 0h1m1 0h2m2 0h4m3 0h2m3 0h2m1 0h2m5 0h1m1 0h1m1 0h1m1 0h4m1 0h1M4 14.5h1m2 0h2m1 0h1m3 0h1m4 0h1m1 0h2m1 0h2m1 0h1m2 0h1m1 0h1m1 0h3m7 0h2m2 0h3m1 0h1m1 0h3m1 0h1m1 0h1M5 15.5h3m5 0h1m2 0h1m1 0h2m2 0h1m2 0h2m3 0h1m1 0h1m3 0h1m1 0h5m7 0h1m2 0h2m1 0h3m1 0h1M7 16.5h2m1 0h2m1 0h3m1 0h1m1 0h1m1 0h2m1 0h3m1 0h3m2 0h1m1 0h3m4 0h1m1 0h2m2 0h6m1 0h3m1 0h2M5 17.5h1m2 0h2m2 0h1m1 0h1m2 0h2m1 0h3m2 0h1m2 0h3m1 0h1m3 0h2m3 0h3m1 0h1m1 0h1m1 0h1m2 0h1m1 0h1m1 0h2m1 0h1M4 18.5h1m3 0h1m1 0h1m1 0h6m4 0h2m2 0h3m5 0h1m1 0h2m1 0h1m1 0h4m1 0h1m1 0h1m1 0h4m3 0h2M4 19.5h1m2 0h2m2 0h6m1 0h1m1 0h1m4 0h1m2 0h1m1 0h1m1 0h1m2 0h2m1 0h1m2 0h2m2 0h1m2 0h4m1 0h3m2 0h1m1 0h1M4 20.5h2m1 0h1m2 0h1m1 0h5m2 0h4m2 0h1m1 0h4m1 0h2m1 0h3m4 0h1m10 0h2m2 0h4M4 21.5h2m2 0h2m1 0h1m1 0h2m3 0h6m1 0h1m3 0h1m1 0h2m1 0h1m3 0h1m1 0h1m1 0h3m1 0h1m1 0h1m1 0h4m1 0h2m1 0h1M6 22.5h1m3 0h2m1 0h2m2 0h2m3 0h1m5 0h3m2 0h1m1 0h4m2 0h1m1 0h1m1 0h3m2 0h2m3 0h3m2 0h1M6 23.5h1m4 0h1m2 0h4m3 0h1m2 0h1m2 0h1m2 0h1m3 0h1m2 0h1m7 0h2m2 0h2m1 0h5m1 0h2M4 24.5h1m2 0h1m1 0h2m4 0h3m2 0h3m1 0h1m1 0h1m2 0h2m2 0h3m1 0h6m3 0h2m1 0h1m3 0h2m1 0h1m1 0h1M5 25.5h4m2 0h1m2 0h3m3 0h1m1 0h1m3 0h2m1 0h1m4 0h1m2 0h1m3 0h1m3 0h2m1 0h3m1 0h6m2 0h1M8 26.5h3m1 0h1m5 0h1m1 0h1m1 0h3m1 0h1m1 0h2m4 0h1m1 0h2m2 0h1m1 0h1m1 0h2m1 0h5m3 0h1M4 27.5h3m2 0h1m2 0h4m4 0h1m2 0h1m1 0h1m3 0h1m2 0h4m1 0h1m3 0h1m3 0h1m1 0h2m2 0h1m1 0h2m3 0h1m1 0h1M4 28.5h2m2 0h1m1 0h2m1 0h2m3 0h3m1 0h1m2 0h2m4 0h2m2 0h2m1 0h1m1 0h1m1 0h4m2 0h2m1 0h3m1 0h2M5 29.5h1m1 0h3m1 0h1m1 0h2m2 0h1m3 0h2m1 0h5m4 0h2m1 0h1m4 0h3m1 0h4m1 0h5m3 0h1M5 30.5h8m1 0h2m1 0h1m1 0h1m2 0h1m1 0h1m1 0h2m1 0h7m1 0h1m1 0h1m2 0h1m6 0h2m1 0h5m1 0h2M6 31.5h1m1 0h1m3 0h1m1 0h3m1 0h1m3 0h2m2 0h1m1 0h1m1 0h1m3 0h1m1 0h2m4 0h1m5 0h2m1 0h2m3 0h3m1 0h1M4 32.5h1m1 0h1m1 0h1m1 0h1m1 0h1m3 0h4m2 0h3m1 0h2m2 0h1m1 0h1m1 0h5m1 0h2m1 0h2m1 0h1m3 0h1m1 0h1m1 0h1m1 0h1m1 0h3M4 33.5h1m2 0h2m3 0h6m1 0h5m2 0h1m1 0h1m1 0h1m3 0h1m1 0h2m2 0h2m2 0h2m2 0h5m3 0h5M4 34.5h1m1 0h1m1 0h5m1 0h1m2 0h1m4 0h2m1 0h2m3 0h5m1 0h3m2 0h1m3 0h1m5 0h10M4 35.5h1m7 0h4m1 0h4m1 0h1m1 0h4m2 0h1m2 0h1m1 0h1m2 0h3m5 0h2m1 0h1m3 0h4m1 0h1m1 0h1M4 36.5h2m3 0h8m2 0h1m2 0h3m1 0h1m1 0h4m4 0h1m1 0h1m1 0h1m3 0h12M4 37.5h2m2 0h1m2 0h4m2 0h2m2 0h1m1 0h1m2 0h2m2 0h4m2 0h6m2 0h1m1 0h1m1 0h3m3 0h4m2 0h1M6 38.5h3m1 0h2m1 0h1m3 0h1m1 0h1m1 0h2m4 0h1m1 0h2m2 0h1m1 0h1m1 0h4m5 0h2m1 0h4m1 0h3m1 0h3M7 39.5h1m1 0h1m1 0h1m5 0h4m1 0h4m3 0h1m2 0h3m1 0h2m1 0h1m1 0h1m5 0h3m1 0h1m2 0h1m2 0h1M4 40.5h2m2 0h1m1 0h1m2 0h1m1 0h2m1 0h1m1 0h2m2 0h2m1 0h1m4 0h1m2 0h1m2 0h2m1 0h1m2 0h1m1 0h1m1 0h5m3 0h2m1 0h2M4 41.5h4m1 0h1m2 0h2m2 0h1m7 0h2m1 0h1m2 0h1m5 0h1m2 0h2m1 0h1m1 0h5m5 0h1m4 0h1M5 42.5h1m3 0h3m1 0h3m1 0h1m2 0h1m3 0h1m2 0h4m1 0h3m1 0h2m3 0h1m1 0h2m3 0h1m1 0h1m2 0h4m2 0h2M4 43.5h1m2 0h3m1 0h2m3 0h1m1 0h4m5 0h1m2 0h1m1 0h1m2 0h1m1 0h1m4 0h6m1 0h1m1 0h2m4 0h2m1 0h1M4 44.5h2m1 0h4m1 0h1m2 0h1m1 0h1m1 0h2m2 0h2m2 0h1m2 0h3m3 0h2m1 0h1m1 0h3m2 0h6m1 0h5m1 0h2M5 45.5h1m1 0h1m3 0h2m3 0h1m6 0h1m6 0h1m1 0h2m1 0h1m7 0h2m1 0h6m3 0h2m1 0h1m1 0h1M4 46.5h1m4 0h3m2 0h4m6 0h1m1 0h3m2 0h3m2 0h3m1 0h1m1 0h3m2 0h3m1 0h1m2 0h1m2 0h4M4 47.5h2m1 0h3m1 0h3m2 0h3m2 0h5m1 0h1m1 0h4m1 0h5m2 0h2m2 0h2m2 0h5m1 0h1m1 0h2m1 0h1M4 48.5h1m4 0h2m3 0h2m3 0h2m1 0h3m6 0h1m1 0h1m2 0h1m1 0h5m1 0h1m1 0h1m2 0h2m1 0h1m1 0h2m1 0h1m2 0h1M4 49.5h5m2 0h1m2 0h3m2 0h1m4 0h1m1 0h3m8 0h1m1 0h4m2 0h1m1 0h1m4 0h5m1 0h2M4 50.5h1m1 0h1m2 0h4m4 0h1m1 0h2m2 0h2m3 0h2m2 0h1m2 0h1m1 0h2m1 0h1m1 0h1m1 0h4m1 0h2m1 0h1m1 0h2m3 0h2M4 51.5h5m3 0h2m3 0h1m4 0h1m1 0h1m1 0h1m1 0h2m1 0h4m1 0h1m1 0h5m1 0h1m3 0h3m1 0h1m1 0h1m1 0h1m1 0h2M10 52.5h1m3 0h3m1 0h2m2 0h3m2 0h1m2 0h6m2 0h1m1 0h1m2 0h2m1 0h1m1 0h3m1 0h5m3 0h1M12 53.5h3m1 0h1m2 0h1m1 0h1m2 0h2m1 0h4m3 0h3m5 0h1m1 0h2m1 0h1m1 0h1m2 0h1m3 0h1m1 0h2M4 54.5h7m1 0h3m1 0h2m4 0h1m3 0h1m1 0h1m1 0h1m1 0h1m1 0h1m3 0h3m1 0h1m5 0h2m2 0h1m1 0h1m1 0h1m1 0h2M4 55.5h1m5 0h1m1 0h2m1 0h3m1 0h1m5 0h1m1 0h1m1 0h2m3 0h1m2 0h1m2 0h2m1 0h1m1 0h1m3 0h4m3 0h5M4 56.5h1m1 0h3m1 0h1m1 0h4m1 0h2m2 0h1m2 0h1m1 0h1m1 0h1m1 0h5m1 0h1m1 0h1m3 0h1m2 0h1m5 0h6m2 0h2M4 57.5h1m1 0h3m1 0h1m1 0h1m2 0h1m1 0h1m1 0h2m1 0h2m2 0h3m3 0h1m1 0h2m2 0h2m2 0h2m4 0h4m1 0h2m3 0h1M4 58.5h1m1 0h3m1 0h1m2 0h3m1 0h1m1 0h1m1 0h1m6 0h1m2 0h4m2 0h1m3 0h6m4 0h3m5 0h2M4 59.5h1m5 0h1m3 0h4m3 0h1m1 0h3m2 0h1m1 0h1m2 0h4m1 0h1m1 0h2m1 0h3m1 0h2m4 0h2m1 0h1m2 0h2M4 60.5h7m1 0h4m1 0h3m2 0h1m3 0h1m1 0h3m1 0h1m2 0h1m3 0h1m1 0h1m2 0h2m1 0h1m2 0h3\"/></svg>\n"
}Activates MFA on a local Morio account, and provides scratch codes as fallback.
Three scratch codes will be provided that can each be used once as a fallback for the TOTP token, in case the device generating the token is unavailable.
The invite code, as well as username and (identity) provider
| invite required | string = 48 characters The account invite code |
| provider required | string [ 2 .. 255 ] characters The ID of the identity provider to use for this account |
| token required | string [ 3 .. 64 ] characters The TOTP token (one-time password) |
| password required | string [ 3 .. 1024 ] characters The account's password |
| username required | string [ 2 .. 255 ] characters The username of the account |
{- "username": "testAccount1722234633560",
- "invite": "055319ca21a36ac7b7a008694bb48cf6b882242a5f78b97d",
- "provider": "local",
- "token": "171589",
- "password": "kAsflASD8900)()lmn#LE$Q0-"
}{- "scratch_codes": [
- "06858bad92373bfd4746b6128c5ab769f7b12a652101eeec1741e4dc7432fe99",
- "d21da1e5e7cf70b1044f11e06a39135fab248f7f4d849d964c81a7e9e72d498f",
- "7c68b780d1c77d17d292780acc44564e374262c58193daf867c6011cce4a9bab"
]
}Returns the list of API keys.
user role, the list will include all API keys created by the current user.manager role, the list will include all API keys belonging to accounts created by the current user.operator, engineer, or even root), the list will include all API keys.[- {
- "id": "68b04077-e103-4b8e-9e5f-7b5daff57b96",
- "name": "testKey2024-07-28T16:07:30.612Z",
- "status": "active",
- "role": "user",
- "created_by": "local.test_user",
- "created_at": "2024-07-28T16:07:30.848Z",
- "updated_by": null,
- "updated_at": null,
- "last_login": null,
- "key": "68b04077-e103-4b8e-9e5f-7b5daff57b96"
}
]Creates a Morio API key. The role of the API key can not be higher than the role of the user creating the API key.
The API key settings
| name required | string >= 2 characters A name for the API key |
| expires required | number <float> [ 1 .. 730 ] Number of days before the API key expires |
| role required | string Enum: "user" "manager" "operator" "engineer" "root" The role to assign to the API key |
{ }{ }Updates an existing API key.
| id required | string <uuid> The API key ID (a UUID) |
{- "id": "600d03a3-573b-4f64-b127-96f0157cb6b0",
- "name": "testKey2024-07-29T06:47:57.472Z",
- "status": "active",
- "role": "user",
- "created_by": "local.test_user",
- "created_at": "2024-07-29T06:47:57.679Z",
- "expires_at": "2024-07-30T06:47:57.679Z",
- "updated_by": "local.test_user",
- "updated_at": "2024-07-29T06:47:57.872Z",
- "secret": "90a28457c6bc7c5b5b40aa94730bf12b1f0bb726bfc015652147598ca781d3f7b61551716ffa8839cbad41e20ea76ffa",
- "last_login": null,
- "key": "600d03a3-573b-4f64-b127-96f0157cb6b0"
}Updates an existing API key.
| id required | string <uuid> The API key ID (a UUID) |
{- "id": "600d03a3-573b-4f64-b127-96f0157cb6b0",
- "name": "testKey2024-07-29T06:47:57.472Z",
- "status": "active",
- "role": "user",
- "created_by": "local.test_user",
- "created_at": "2024-07-29T06:47:57.679Z",
- "expires_at": "2024-07-30T06:47:57.679Z",
- "updated_by": "local.test_user",
- "updated_at": "2024-07-29T06:47:58.048Z",
- "last_login": "2024-07-29T06:47:57.985Z",
- "key": "600d03a3-573b-4f64-b127-96f0157cb6b0"
}Updates an existing API key.
| id required | string <uuid> The API key ID (a UUID) |
{- "id": "600d03a3-573b-4f64-b127-96f0157cb6b0",
- "name": "testKey2024-07-29T06:47:57.472Z",
- "status": "disabled",
- "role": "user",
- "created_by": "local.test_user",
- "created_at": "2024-07-29T06:47:57.679Z",
- "expires_at": "2024-07-30T06:47:57.679Z",
- "updated_by": "local.test_user",
- "updated_at": "2024-07-29T06:47:58.020Z",
- "last_login": "2024-07-29T06:47:57.985Z",
- "key": "600d03a3-573b-4f64-b127-96f0157cb6b0"
}Removes a Morio API key.
| id required | string <uuid> The API key ID (a UUID) |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Returns information about the available identity providers (IDPs). Useful for frontend integration.
{- "idps": {
- "apikey": {
- "id": "apikey",
- "provider": "apikey",
- "label": "API Key",
- "about": false
}, - "mrt": {
- "id": "mrt",
- "provider": "mrt",
- "about": false
}, - "local": {
- "id": "local",
- "provider": "local",
- "label": "Morio Account",
- "about": false
}, - "ad": {
- "id": "ad",
- "provider": "ldap",
- "label": "Active Directory",
- "about": "Morio Tokyo branch on-prem Active Directory"
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}Returns information to verify the JSON Web Tokens (JWT) were issued by this Morio deployment. Useful for integration with exteral services. See RFC 7517
{- "keys": [
- {
- "kty": "RSA",
- "kid": "YEKFMAkSJihz6zIBs6a-gQ9iEOxuljm_A3Xg6mkiAPY",
- "n": "yriNzCVnGQ56dyOVhoPn4J2xlq4_SW6YEoq2FAM1uXtY2FNg1nAtytdY7SKzyuSF1U5sOQ77RmACiXIX-tkuTTPl_kNZQ4udH-c2w01_So9uj9rjDSwvtilHOn4y-l9qYyqBM93jBnjWGFTBNpmDHO4ctVorI6zK1mE7ILDTEpz1lPiZUz22feLOSuCQfnGNJsoU5msSJCiOVtfi37yFQ-ZAQtcJGBe11xRkvjegQJv9UB67tnD3DkRt7FnNDWHJmIcPOyySHJ7CH_ajRZj6_S0BVdlTWNiarKGzTlRCpQCqVFaiu8g6H8ANSoWypIazoOA-iJ3n8VSgvxiVAX1vVzG_Z44Vd8JpEpOWeC36qfX2LNKg0KvUEgbdMt6NB4RUsXVgdIGT02h_RRVmTY5FZCcWtA6pqlJ9sd27f5t0IWAMLJLpUq6WjOVTidUxon7xVGLot26DP3S7KnVS1FHZFsUQn5uQ2kNbzWyr6gha3YbvYk1Ss6bRu9Zzv4mKXaXn-rASvuSHZClPo0k4wEfQ7kWRJgwNe9hbZRh_MGl4VbGhg0TbaPwqYucmffecjrhNEAPsjt5R7_Ukc4lg8y4miPn6QPsGBfNgiGfhdWLy_FXA-Nn2DJqsDJcieNJp0rOUDGRJSj64s8Y1dpOi14ZjErz3x9OZBHk1Nw1NAQ3Z96U",
- "e": "AQAB"
}
]
}Generates a JSON Web Token that can be used for subsequential API access.
The Morio settings you want to validate
| provider required | string [ 2 .. 255 ] characters Value: "apikey" ID of the Morio identity provider. Must always be 'apikey' for authentication with an API key |
required | object Holds data that is specific to the identity provider |
{- "provider": "apikey",
- "data": {
- "api_key": "724098e3-930a-4c93-9fac-9a55decfb735",
- "api_key_secret": "c0502771315e8239462adcccab7b6867e6d2742e3675c7aacac369f43a8f27b836292009b6badb7bc7a293b10e3275d2"
}
}{- "jwt": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYXBpa2V5LjVlNTg1OGRiLWVlZjItNGM1YS05OGFhLTFlZDczM2FjODhhZSIsInJvbGUiOiJ1c2VyIiwicHJvdmlkZXIiOiJhcGlrZXkiLCJub2RlIjoiMzliMGI1ZmQtNjY0OC00MWY4LWIzYjktZGY5NmM1ZDExNTc5IiwiY2x1c3RlciI6Ijg2MDI5MDZmLTU0MzctNGNjZS1iMTUwLTdjMzM4N2RhMzZmYSIsImlhdCI6MTcyMjIzNjk5NiwibmJmIjoxNzIyMjM2OTk2LCJleHAiOjE3MjIyNTEzOTYsImF1ZCI6Im1vcmlvIiwiaXNzIjoibW9yaW8iLCJzdWIiOiJtb3JpbyJ9.LLx3wjEvAi4FdggXrkxdNTps3G50r4vhBcQF2FPEaJz9sYCxlewFKarPpmWvBu5JbkjpiZ7Nzv8rFGtNQBGt96Y4eZkPuqQ4nr6DaMp7UgoDcLqsV-2jlmLStHsHk3Bbd2Sm1eyMQvsdBeebd2fz4EGgziYd2uW4rvSGHSeTAGOymoWXilAI5nrOpiWczcIVnIfyhgdtSNwFc7MowiBGJGv0xELJQrWST3QZx_G6VNLYwJkPXaBna2dfC2UQ5nsr4RVRjaGzIVfmWfnHp7fZo-xjV_-QciXZUJcROoWjCdroDt_BDjZdWe8j8-VsyCyXAJ9cnsntFgknFRH2CYZb5jYlH2_gBSk-PIYSsTbAOjmPK0AxiUHJnRonMgP5Fdc1dF_GowAdlsBxyKffSN3z6tZbH3DvELmtT27O8tnZYnEKAFgAod4f_fXphiIcssEt-kAbhs7HsJp4rDI5l3Ur-HkxvjOuzPeNmishqjgqWHwFwH4fU34Hkdk9Fp7KIWRXbT_sV2bzuj7GwVlndnCGsCXU99vwwVBMTh-Yw61FxDcC0tHbHp72A9tAKtUfBaR8L0gbnnRbik5Z_dnN6kx_rgVA5D7rNCfj5j4vn4cyeCklywH51ApQtTr_EMddOJTxulOnktSbCwpvioPY5hjgQMHsH8vbh4__ja2aIXt89lc",
- "data": {
- "user": "apikey.5e5858db-eef2-4c5a-98aa-1ed733ac88ae",
- "role": "user",
- "provider": "apikey"
}
}This will return a new JSON Web Token that can replace the current token. This will only work if the current token is not expired yet.
{- "jwt": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoibG9jYWwudGVzdEFjY291bnQxNzIyMTg2NzE0OTU0Iiwicm9sZSI6InVzZXIiLCJhdmFpbGFibGVfcm9sZXMiOltdLCJwcm92aWRlciI6ImxvY2FsIiwiaWF0IjoxNzIyMTg2NzE2LCJuYmYiOjE3MjIxODY3MTYsImV4cCI6MTcyMjIwMTExNiwiYXVkIjoibW9yaW8iLCJpc3MiOiJtb3JpbyIsInN1YiI6Im1vcmlvIn0.CR28Y2xIBtDPOGZSpfSnee7qkRBBG470g4BgcpknJee-VEePvJuorS0NZC43Ta1-4Vx2684K7RgPZNsgW-SAN5yF8PdFe5-y9XtgEn3N3ZmXUCogJoRBQxjGC4UaK6Nrse4dJcqpnxhvUv1yPBcTbS0ycPvMynUd0szkG92u6jyPoDuLFErmDlEgCDlDsPPig81N9zg3Bb0fP44Acc0RpBGybgijYBbPsVZBRSolAr6bBtwuoqcD3Q2pMrkovKduZ1Uob1Cgu8sdmB9DwWETKflEzkcafR96Upej7t1OIiM4AdlznURJvOo2CKffK4GNOsdltQysDF3_aEmRjIY9qJxygQ_sHmPf3-t3MuRvd8zcr9lupN4QRvXCjyUMSg_i25Zq-psnP_aNb0rf6qNCBigNPdsR6QR0V_SotKPNFV9OpkuC44f39-h0IV3ZTYuPoy0WVIRLCQCkTA_1nRnXAOXTjc7wRlLFJ00olYSOQudauuP_JJ8Xpfy_2up_24Mqn__x4ulbPjQpjjirNtEgHJwpzKEES-2E0FFsJEs5V9w-LOtrc7Xyn7HQ2hyuWYHvnTePa2qxpmcowiFC3jdkE1sxF8HU5v46a5xV6no7QAPN7E5wzVj5pE7zSWRRU4m06NjYgVARqa755XrpY-TvYifk9XDboS1ZHYSM0oZJ-jI"
}This will return info about the currently authenticated account
{- "value": {
- "user": "apikey.724098e3-930a-4c93-9fac-9a55decfb735",
- "role": "user",
- "provider": "apikey",
- "node": "39b0b5fd-6648-41f8-b3b9-df96c5d11579",
- "cluster": "8602906f-5437-4cce-b150-7c3387da36fa",
- "iat": 1722187044,
- "nbf": 1722187044,
- "exp": 1722201444,
- "aud": "morio",
- "iss": "morio",
- "sub": "morio"
}
}Returns the list of key IDs stored in the cache.
Note that scanning the keyspace like this is not very efficient, and you should refrain from using this when possible. Instead, give your cache entries deterministic IDs so you can access them without having to list all keys to find the one you want.
| pattern | string An optional glob pattern to filter key IDs |
[ ]Returns the list of key IDs stored in the cache.
Note that scanning the keyspace like this is not very efficient, and you should refrain from using this when possible. Instead, give your cache entries deterministic IDs so you can access them without having to list all keys to find the one you want.
[ ]Returns the value of multiple keys stored in the cache.
This will also include the type of key, which hints at the type of data held by it.
The keys to retrieve
| keys required | Array of strings |
{- "keys": [
- "key1",
- "key2"
]
}{- "key1": {
- "key": "key1",
- "type": "string",
- "value": "Example 1"
}, - "key2": {
- "key": "key2",
- "type": "list",
- "value": [
- "Example 2 - 1",
- "Example 2 - 2",
- "Example 2 - 3"
]
}
}Returns the value stored under key in the cache.
This will also include the type of key, which hints at the type of data held by it.
| key required | string The key in the ValKey cache |
{- "key": "example.key",
- "value": [
- "entry 1",
- "entry 2"
], - "type": "list"
}Endpoints to centrally manage Morio's clients.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Gets info about a client command
| id required | number <float> The client command ID |
{- "id": 12,
- "clients": [
- "ee623dd1-39d7-4b73-8cdb-3ac422817adc"
], - "created_at": "2025-03-14T14:42:23.569Z"
}Gets status updates for a client command
| id required | number <float> The client command ID |
[- {
- "id": 32,
- "host": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "cid": 12,
- "created_at": "2025-03-14T14:47:17.87Z",
- "status": "start"
}, - {
- "id": 33,
- "host": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "cid": 12,
- "created_at": "2025-03-14T14:47:18.422Z",
- "status": "done"
}
]FIXME: This and other inventory endpoints are not yet documented since it's a work in progress.
{- "available": [
- "linux-apache2",
- "linux-docker",
- "linux-laurel",
- "linux-samba",
- "linux-splunk",
- "linux-tomcat",
- "linux-zabbix-agent",
- "linux-zabbix-server"
], - "enabled": [
- "linux-system"
]
}Loads the client configuration and template files from the Morio cluster
| uuid required | string <uuid> The client UUID |
{- "modules": [
- "linux-system"
], - "files": [
- {
- "file": "linux-system.yml",
- "folder": "metrics/module-templates.d",
- "content": "- moriodata:\n info: \"Collects metrics from Linux systems\"\n vars:\n METRICS_LINUX_SYSTEM_INTERVAL_FILESYSTEM:\n dflt: 10m\n info: The interval to use for collecting filesystem data\n METRICS_LINUX_SYSTEM_METRICSETS_ALWAYS:\n dflt:\n - cpu\n - diskio\n - load\n - memory\n - service\n - network_summary\n - process_summary\n - socket_summary\n info: The metricsets to collect on every tick\n METRICS_LINUX_SYSTEM_MOUNTPOINTS_IGNORE_REGEX:\n dflt: '^/(snap|sys|cgroup|proc|dev|host|lib)($|/)'\n info: A regular expression of mountpoints for which to drop filesystem events\n\n- module: system\n period: \"{| MORIO_TICK |}\"\n metricsets: {|{ METRICS_LINUX_SYSTEM_METRICSETS_ALWAYS }|}\n service:\n state_filter: [ failed ]\n\n- module: system\n period: {| METRICS_LINUX_SYSTEM_INTERVAL_FILESYSTEM |}\n metricsets:\n - fsstat\n processors:\n - drop_event:\n when:\n regexp:\n system.filesystem.mount_point: {|{ METRICS_LINUX_SYSTEM_MOUNTPOINTS_IGNORE_REGEX }|}\n\n"
}, - {
- "file": "linux-system.yml",
- "folder": "logs/module-templates.d",
- "content": "# noop\n#\n# Filebeat does not list inputs as modules.\n# So we keep an empty file here to make sure this shows up as a Filebeat module.\n#\n"
}, - {
- "file": "linux-system.yml",
- "folder": "logs/input-templates.d",
- "content": "- moriodata:\n info: \"Collects log data from journald on Linux systems\"\n\n- type: journald # This collects all journald data\n id: journald_everything\n processors:\n - decode_json_fields:\n fields: [\"message\"]\n process_array: false\n max_depth: 2\n target: \"message_json\"\n overwrite_keys: false\n add_error_key: false\n"
}, - {
- "file": "linux-system.yml",
- "folder": "audit/module-templates.d",
- "content": "- moriodata:\n info: \"Auditd rules for Linux\"\n vars:\n AUDIT_LINUX_SYSTEM_RULE_FILES:\n dflt:\n- /etc/morio/audit/rules.d/linux-system-morio.rules\n - /etc/morio/audit/rules.d/linux-system-mitre.rules\ninfo: A list of files with auditd rules to load\n\n- module: auditd\n audit_rule_files: {|{ AUDIT_LINUX_SYSTEM_RULE_FILES }|}\n ignore_errors: false\n\n- module: system\n datasets:\n - login\n - user\n period: 300s\n state.period: 8h\n login.wtmp_file_pattern: /var/log/wtmp*\n login.btmp_file_pattern: /var/log/btmp*\n user.detect_password_changes: true\n"
}
], - "vars": [
- {
- "key": "METRICS_LINUX_SYSTEM_INTERVAL_FILESYSTEM",
- "val": "10m"
}, - {
- "key": "METRICS_LINUX_SYSTEM_METRICSETS_ALWAYS",
- "val": "[\"cpu\",\"diskio\",\"load\",\"memory\",\"service\",\"network_summary\",\"process_summary\",\"socket_summary\"]"
}, - {
- "key": "METRICS_LINUX_SYSTEM_MOUNTPOINTS_IGNORE_REGEX",
- "val": "^/(snap|sys|cgroup|proc|dev|host|lib)($|/)"
}, - {
- "key": "AUDIT_LINUX_SYSTEM_RULE_FILES",
- "val": "[\"/etc/morio/audit/rules.d/linux-system-morio.rules\",\"/etc/morio/audit/rules.d/linux-system-mitre.rules\"]"
}
]
}Creates a client invite code.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
| type required | string The type of invite code. Either |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Joins a new client to a Morio cluster.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Note that invite in the request body is required when
the REQUIRE_CLIENT_INVITES feature flag is enabled.
The uuid in the request body can be passed to suggest a UUID for the client.
However, the API will run checks to validate not only that the UUID is not already in use,
but also to determine whether the client is running on a Morio cluster node. And if it is,
it will use the UUID of the cluster node. So this preference is not guaranteed to be respected.
This endpoint will return everything the client needs to communicate with the cluster:
Data from the system running the Morio client
| cluster | string |
| invite | string |
| uuid | string <uuid> |
required | object |
{- "cluster": "example.morio.it",
- "info": {
- "name": "vm001",
- "fqdn": "vm001.infra.morio.it",
- "os": "linux",
- "os_version": "debian 12.9 6.1.0-31-amd64",
- "arch": "amd64",
- "cores": 4,
- "memory": 8326467584,
- "ips": [
- "10.1.69.32",
- "172.17.0.1",
- "192.168.144.33",
- "fe80:0:0:0:250:56ff:fe8e:78e5",
- "fe80:0:0:0:bcf3:2eff:fe38:ce7a"
], - "macs": [
- "00:50:56:8e:78:e5",
- "02:42:0b:ca:a5:fd",
- "02:42:88:cd:a7:e9",
- "2e:82:fc:fd:ae:30"
], - "packages": [
- {
- "name": "sed",
- "version": "4.9-1"
}, - {
- "name": "sudo",
- "version": "1.9.13p3-1+deb12u1"
}, - {
- "name": "tar",
- "version": "1.34+dfsg-1.2+deb12u1"
}, - {
- "name": "tasksel",
- "version": "3.73"
}, - {
- "name": "tzdata",
- "version": "2024b-0+deb12u1"
}
]
}
}{- "crt": "-----BEGIN CERTIFICATE-----\nMIIFZDCCA0ygAwIBAgIQPZKnxGbE+KH8FnYUzTO2ETANBgkqhkiG9w0BAQsFADCB\nqjELMAkGA1UEBhMCQkUxETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVz\nc2VsczEZMBcGA1UEChMQRW5naW5lZXJpbmcgVGVhbTEnMCUGA1UECxMecG9jLW1v\ncmlvLW5vZGUxLmNlcnQuZXVyb3BhLmV1MTEwLwYDVQQDEyhNb3JpbyBJbnRlcm1l\nZGlhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTI1MDMxNDEyMzg0MVoXDTI3\nMDMxNTEyMzk0MVowRjFEMEIGA1UEAxM7ZWU2MjNkZDEtMzlkNy00YjczLThjZGIt\nM2FjNDIyODE3YWRjLmNsaWVudHMubW9yaW8uaW50ZXJuYWwwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQDi+sOgVifyV2v3Qux0c882lWI9fbPFA2ltN9Gd\nqiXlVTlw8OBC12+mjjSexn7/OHPKfo7wvyNlSXONBveZXREzOUyowyKFK0lNrRRb\naph2CB7uISoxJrpSGME0kO6zESyrif9ebCwdgCSbEda6dnUy8s2t+5xQPIaBb/7A\n993t5CMQCkINRDr5TxrnkGlNRsIBBa3RFH8QSGyGcpkATxNGn3bZ1S2JIA/wZh1x\nuoRENbye8VQTi4ZucaZFw3DjL5ZO5azix7Db3olkg0ESpl17g7vy4EmxsEsi6dwf\ngkX8D3Lfsvm2r1/3/zjOjThi+8h3TdWPafbMKFxOXjMEWT+zAgMBAAGjgegwgeUw\nDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAd\nBgNVHQ4EFgQUI9RsjMVscBWcoTmj0e8xbX1raYowHwYDVR0jBBgwFoAUMpExffYp\n0Mrnh6Q3fu8My3YwA7swKQYDVR0RBCIwIIIecG9jLW1vcmlvLW5vZGUxLmNlcnQu\nZXVyb3BhLmV1MEkGDCsGAQQBgqRkxihAAQQ5MDcCAQEEBWFkbWluBCtxd3JzVzUz\nR0J6bHlhSGhnVlkzaVJNaU5GMTYzeDFLYlYxT1puLUFXYkI4MA0GCSqGSIb3DQEB\nCwUAA4ICAQBIZWowxkPFnmighnPZw8mtHG23i0A34Sxo3O4OeH/I9G0j21ZKesOI\njCKyxyTPX/0/+HPpsDiqkiAJ1ZCf+rmD8H1ThUItZqIep7MyikSPgD5oUAiK/UZm\n6K1DQQs11rAgQOS/ESxZReJraJVR45u2I3TTPz/WuYDa06vcy2mrf3FuBVW9stqg\nU6wmyHtddWh4Yyysc2W8IqoW0E9xxVRq6VvC9fEDDMjLS0T3VXen9QA1N6XNchkd\nZBr4PqYUSIZo688OqjYnhYyK0OrnJ2EAQ/I8S85phMgUSahCzMZoEiJAXog+bSox\nC79BsRDqWuWUbZ/iQY27C+uDNxCi8d7BgmzATsKBXhs244VlR2iARt6Vb2udFSnj\nZwgcQj6zOLERvI0F/8twBHK1jV4JzfyAGL3M0qqcvCG9GgwCEw56wK6Vou3lbpxO\nIW5YKTcSx5NAuc5Q59dGFDLUj0FHjWr9+BNRSJW9bR07g8KuvxMO05K3KIm+pS+S\nNlH0BdGxdm1nSxPVog/C73sn7YZIh6zG3XFXBNPrRB3h9gjk91mMr801WOc5E1UV\n6qktAralDe2X0FQYZASICaueuUuniMprhNSV8sHfmPLRP81+hlnhXr92UUoUldcc\n4H88k+/ZruKwCPLsACkg0ysNkypvDADGy9I8DqoOVjqXNEwjLyf6qA==\n-----END CERTIFICATE-----\n",
- "key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpAIBAAKCAQEA4vrDoFYn8ldr90LsdHPPNpViPX2zxQNpbTfRnaol5VU5cPDg\r\nQtdvpo40nsZ+/zhzyn6O8L8jZUlzjQb3mV0RMzlMqMMihStJTa0UW2qYdgge7iEq\r\nMSa6UhjBNJDusxEsq4n/XmwsHYAkmxHWunZ1MvLNrfucUDyGgW/+wPfd7eQjEApC\r\nDUQ6+U8a55BpTUbCAQWt0RR/EEhshnKZAE8TRp922dUtiSAP8GYdcbqERDW8nvFU\r\nE4uGbnGmRcNw4y+WTuWs4sew296JZINBEqZde4O78uBJsbBLIuncH4JF/A9y37L5\r\ntq9f9/84zo04YvvId03Vj2n2zChcTl4zBFk/swIDAQABAoIBAD2ZEyT8rKuaaPz5\r\n5wS1dxsXkEkix3okcmSG/PZ+OfmSVtvdKudI4w5+0i3yrX1i2x2tmeog3SC8PcUc\r\nim5O8P+HQdQc3M3qEOMpIPisJYMGsioqyvH60h68hBZZbMYg15AYC7savSAmagjB\r\nXxZMVoMEnKfmPCYUPuZ6t9azjcFkoPsgGkDe4C7GIhAdo4eKYgZDm/thIlh3gdyD\r\ncIfWXPv92uka7YE16eTG9+rZaqNiYrueFflOixyc5sdX5zniYM5FfdZZrCrfC47K\r\n8699/Fz9gdsBrMWLEnrQzwqN24BEWu1Zt+7PDO/ZA8UHzVjlTK5ztQkojRcMgrZf\r\n6uPTFLkCgYEA9NFy4U2saL2p8jrTgAytfv5T60C8yNEp5iojxYiqZscgzEaeWS9p\r\nJrQwyvUvJ0tVZ1raLcZ5mgxi/Z0F0W7HfGIFUOTyFoyol9S31pAFMQUMV61Q9cw9\r\nf9/FV7ZjV7PkRDo9WF5DrLt4NB3HwO4i+oJTpeL0tfmzgo02Cljov9sCgYEA7Vi8\r\ngiKVja48hqBZZds/EdFZxlId5WutXRnBDAficKEbQ7XxAPvEhqvXStE3zsHzDOpv\r\nM7mKghcUfWcEKI7nbs2WWjHRODj71HIK5mXnhnPrqM6udReibC3FXpJJ1J+OIRWe\r\n5J8SmWw27+BihMDfX8iYhIMpPlLGd3JmTNDr0wkCgYAF3WalIxk4QSLrHKGodaVK\r\nX4lfH2PmY6xfSS8mMknywF52xlJQzKP2O2bX1dvVUyaunSyQ4CpVmGperP5QsBiz\r\nUB3UfEeYZrI7QOtOhpC5ReevygUgfk4S3Cd8HHBwz2xuff6uOUPhxXPxu6znYE0S\r\nN0ENvkwid+LnA78BrHOW9QKBgQCOSpapBgbW69BJfbRaxjhnfDTwGqbltco3eIst\r\npURx9YQc8eTMjCPkAP2PUyK8B7ao1ZtZTTDmkOOt0qbBkfrZiNNMu3UM2czQLpau\r\nTgWhq7lqeI5KkKLFbCNZcSZmHEnfN9EMivlhlWjSIpmtsNu51s7pEqEVRhbJ4YHH\r\nJ7FZ0QKBgQCBkWf2Xqg/i5TuuMO9VRh8F+vWaf+UPTaVTaec35594LU0wYzSNyVi\r\nDLj7PVL1ZlQi517bNP4aXMJb1j3icaX92Cwsvla/H4g1p6RihsJYgThAK3UlSD+P\r\n0yWdKyz1N5EudtOnsrgFtO/zIqGY3VImtzxZHvKamWetMiWYmxc7PQ==\r\n-----END RSA PRIVATE KEY-----\r\n",
- "ca": "-----BEGIN CERTIFICATE-----\nMIIGgjCCBGqgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBojELMAkGA1UEBhMCQkUx\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\nRW5naW5lZXJpbmcgVGVhbTEnMCUGA1UECxMecG9jLW1vcmlvLW5vZGUxLmNlcnQu\nZXVyb3BhLmV1MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhv\ncml0eTAeFw0yNTAzMTQxMTU2MjNaFw0zMDAzMTQxMTU2MjNaMIGqMQswCQYDVQQG\nEwJCRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYD\nVQQKExBFbmdpbmVlcmluZyBUZWFtMScwJQYDVQQLEx5wb2MtbW9yaW8tbm9kZTEu\nY2VydC5ldXJvcGEuZXUxMTAvBgNVBAMTKE1vcmlvIEludGVybWVkaWF0ZSBDZXJ0\naWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC\nAQD2BLSfRnRf0q35yFwMT2V5E9jOuTiMVUp2uZf9d2SAFfZmn7IZTpsvwLEW1W7W\nnHW+ybQNFrBKe6nVC6VbIJPAK1U/RZnKkiRr57Qgv02Abs12QO1MPNo0pJs+xEBM\nLz39sH31Ou/neqA+c9FBGugKMQRg5bu4Dx6rkAVJ3ZpSsqQleIaFjG6vDbUEOCNv\no9POEBndEXoECxlbq7NdrXYv82+b+492yCAckC1O0SWrx34PURU12+/RTGQn0/n8\nc0EYj7kCBsdhKwKMhlMReGumq8b2SgKSSwaVl2p8UQ7UoZc3Op6rTmuyrL7Da480\nICiGTaLBXZrREEHNa0069wCsupT7VoLFrQZOvLGuNwe7f16QYIFdt6LEorljb4/u\nYUxmNIoIRVwOjyNgalPS9t7IHc88X9asJ9Mq3NSWlNfP1EGY9wXvgZ7nhDAekbz5\ns1GdDDwQvNJAzBA9BCLQi5byod5E062COfeQLSBgbw4Gb0p+8WRLLJf9nMra8MwC\nHXhbOEdOCJH4go8G0bklT6HrjOLucxNeGd6wjgC6p52Awd7z5UNJwlGvoAGDcf9j\nJJ8rHo/s0VxTCL3hZO2VsnC8JSHggGEosqunNKZ8Tn7+EpIERmUMdrwKMmCXMri4\nGK8+fm3JC8E7l0XkzAmNDCK8nTXgsiwUQeVTR723LGxoewIDAQABo4G4MIG1MAwG\nA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgL0MDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggr\nBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCDARBglghkgBhvhC\nAQEEBAMCAPcwHQYDVR0OBBYEFDKRMX32KdDK54ekN37vDMt2MAO7MCkGA1UdEQQi\nMCCCHnBvYy1tb3Jpby1ub2RlMS5jZXJ0LmV1cm9wYS5ldTANBgkqhkiG9w0BAQsF\nAAOCAgEASArHm8sYoLiPwgoJKXmO6JXf6Nz/6MT8zJD+FtdzMAHnnpNy9MlSmEJ5\nnDSlgx4YSCOD0xbgc7bvPfB39Aa6ZUjXPgWLWcfOkJZw0+PUfNuRfT7C0VD22Byb\nmJRSkcl4jtlwdpRYCa8JI8onqW2vBf7ISkaE7Y1nzUwJQod/xwrtfSFS9fD0HYit\neuXSg2n5gGzrJZ2y6isA5FS4z2U07gFE8k8NaGqNZtSY1JU8XCCBoNyvnofndkjc\nVxk/4+2gXuAIT5MAA8en2bSI4oebqCaI7enzTN1dg0cDjeV5p7RrJ2H+xhTRk6nk\nqZIFOSgXAHj5UeZtzjWUwZiMHBu01YSlxd0BCXgXL1vp/XFKO7neuMfYnTktFyQK\nPHziCocy/unsiXGeQtmKejr0VYFZddYFRfhiMEplIq1xfIsdqWu5sE09byWz/vDV\n4NavlRopc2IldoKt7oCMVMNGhX5Crk5vqQmD4WOASpiOmFGs3yHMTMRoGnFvTAFb\nG/H3YaoOTt9wwLGq8Fou/3GT0Zisk+JpVes5Sg9rkOOy9j0LGBIXUxcHApg4Nesv\nCmRSwkUDJS16qNQf5y1kHoxypYrxDDj8q4YnBoktMLSuj91dTs0+iABzRep2/K0r\nm+hPQNIjLRbiUfVXF8uxTV4meAEuNANqNE7gt1z28ne2N/xHpFQ=\n-----END CERTIFICATE-----\n",
- "uuid": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "secret": "3b2f6c9462d56bf6168db2469ccddc653e8fd348a0b730ec492e8322c91b73c7f91ec4edc4cb7aa678c10fbb0dc41a4c",
- "cluster": "example.morio.it",
- "brokers": [
- "example.morio.it:9092"
]
}Joins an existing client to a Morio cluster.
Unlike the /join endpoint, this will allow to join a client with an already known UUID.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Note that invite in the request body is required when
the REQUIRE_CLIENT_INVITES feature flag is enabled.
The uuid in the request body can be passed to suggest a UUID for the client.
However, the API will run checks to validate not only that the UUID is not already in use,
but also to determine whether the client is running on a Morio cluster node. And if it is,
it will use the UUID of the cluster node. So this preference is not guaranteed to be respected.
This endpoint will return everything the client needs to communicate with the cluster:
Data from the system running the Morio client
| cluster | string |
| invite | string |
| uuid | string <uuid> |
required | object |
{- "cluster": "example.morio.it",
- "info": {
- "name": "vm001",
- "fqdn": "vm001.infra.morio.it",
- "os": "linux",
- "os_version": "debian 12.9 6.1.0-31-amd64",
- "arch": "amd64",
- "cores": 4,
- "memory": 8326467584,
- "ips": [
- "10.1.69.32",
- "172.17.0.1",
- "192.168.144.33",
- "fe80:0:0:0:250:56ff:fe8e:78e5",
- "fe80:0:0:0:bcf3:2eff:fe38:ce7a"
], - "macs": [
- "00:50:56:8e:78:e5",
- "02:42:0b:ca:a5:fd",
- "02:42:88:cd:a7:e9",
- "2e:82:fc:fd:ae:30"
], - "packages": [
- {
- "name": "sed",
- "version": "4.9-1"
}, - {
- "name": "sudo",
- "version": "1.9.13p3-1+deb12u1"
}, - {
- "name": "tar",
- "version": "1.34+dfsg-1.2+deb12u1"
}, - {
- "name": "tasksel",
- "version": "3.73"
}, - {
- "name": "tzdata",
- "version": "2024b-0+deb12u1"
}
]
}
}{- "crt": "-----BEGIN CERTIFICATE-----\nMIIFZDCCA0ygAwIBAgIQPZKnxGbE+KH8FnYUzTO2ETANBgkqhkiG9w0BAQsFADCB\nqjELMAkGA1UEBhMCQkUxETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVz\nc2VsczEZMBcGA1UEChMQRW5naW5lZXJpbmcgVGVhbTEnMCUGA1UECxMecG9jLW1v\ncmlvLW5vZGUxLmNlcnQuZXVyb3BhLmV1MTEwLwYDVQQDEyhNb3JpbyBJbnRlcm1l\nZGlhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XDTI1MDMxNDEyMzg0MVoXDTI3\nMDMxNTEyMzk0MVowRjFEMEIGA1UEAxM7ZWU2MjNkZDEtMzlkNy00YjczLThjZGIt\nM2FjNDIyODE3YWRjLmNsaWVudHMubW9yaW8uaW50ZXJuYWwwggEiMA0GCSqGSIb3\nDQEBAQUAA4IBDwAwggEKAoIBAQDi+sOgVifyV2v3Qux0c882lWI9fbPFA2ltN9Gd\nqiXlVTlw8OBC12+mjjSexn7/OHPKfo7wvyNlSXONBveZXREzOUyowyKFK0lNrRRb\naph2CB7uISoxJrpSGME0kO6zESyrif9ebCwdgCSbEda6dnUy8s2t+5xQPIaBb/7A\n993t5CMQCkINRDr5TxrnkGlNRsIBBa3RFH8QSGyGcpkATxNGn3bZ1S2JIA/wZh1x\nuoRENbye8VQTi4ZucaZFw3DjL5ZO5azix7Db3olkg0ESpl17g7vy4EmxsEsi6dwf\ngkX8D3Lfsvm2r1/3/zjOjThi+8h3TdWPafbMKFxOXjMEWT+zAgMBAAGjgegwgeUw\nDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAd\nBgNVHQ4EFgQUI9RsjMVscBWcoTmj0e8xbX1raYowHwYDVR0jBBgwFoAUMpExffYp\n0Mrnh6Q3fu8My3YwA7swKQYDVR0RBCIwIIIecG9jLW1vcmlvLW5vZGUxLmNlcnQu\nZXVyb3BhLmV1MEkGDCsGAQQBgqRkxihAAQQ5MDcCAQEEBWFkbWluBCtxd3JzVzUz\nR0J6bHlhSGhnVlkzaVJNaU5GMTYzeDFLYlYxT1puLUFXYkI4MA0GCSqGSIb3DQEB\nCwUAA4ICAQBIZWowxkPFnmighnPZw8mtHG23i0A34Sxo3O4OeH/I9G0j21ZKesOI\njCKyxyTPX/0/+HPpsDiqkiAJ1ZCf+rmD8H1ThUItZqIep7MyikSPgD5oUAiK/UZm\n6K1DQQs11rAgQOS/ESxZReJraJVR45u2I3TTPz/WuYDa06vcy2mrf3FuBVW9stqg\nU6wmyHtddWh4Yyysc2W8IqoW0E9xxVRq6VvC9fEDDMjLS0T3VXen9QA1N6XNchkd\nZBr4PqYUSIZo688OqjYnhYyK0OrnJ2EAQ/I8S85phMgUSahCzMZoEiJAXog+bSox\nC79BsRDqWuWUbZ/iQY27C+uDNxCi8d7BgmzATsKBXhs244VlR2iARt6Vb2udFSnj\nZwgcQj6zOLERvI0F/8twBHK1jV4JzfyAGL3M0qqcvCG9GgwCEw56wK6Vou3lbpxO\nIW5YKTcSx5NAuc5Q59dGFDLUj0FHjWr9+BNRSJW9bR07g8KuvxMO05K3KIm+pS+S\nNlH0BdGxdm1nSxPVog/C73sn7YZIh6zG3XFXBNPrRB3h9gjk91mMr801WOc5E1UV\n6qktAralDe2X0FQYZASICaueuUuniMprhNSV8sHfmPLRP81+hlnhXr92UUoUldcc\n4H88k+/ZruKwCPLsACkg0ysNkypvDADGy9I8DqoOVjqXNEwjLyf6qA==\n-----END CERTIFICATE-----\n",
- "key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpAIBAAKCAQEA4vrDoFYn8ldr90LsdHPPNpViPX2zxQNpbTfRnaol5VU5cPDg\r\nQtdvpo40nsZ+/zhzyn6O8L8jZUlzjQb3mV0RMzlMqMMihStJTa0UW2qYdgge7iEq\r\nMSa6UhjBNJDusxEsq4n/XmwsHYAkmxHWunZ1MvLNrfucUDyGgW/+wPfd7eQjEApC\r\nDUQ6+U8a55BpTUbCAQWt0RR/EEhshnKZAE8TRp922dUtiSAP8GYdcbqERDW8nvFU\r\nE4uGbnGmRcNw4y+WTuWs4sew296JZINBEqZde4O78uBJsbBLIuncH4JF/A9y37L5\r\ntq9f9/84zo04YvvId03Vj2n2zChcTl4zBFk/swIDAQABAoIBAD2ZEyT8rKuaaPz5\r\n5wS1dxsXkEkix3okcmSG/PZ+OfmSVtvdKudI4w5+0i3yrX1i2x2tmeog3SC8PcUc\r\nim5O8P+HQdQc3M3qEOMpIPisJYMGsioqyvH60h68hBZZbMYg15AYC7savSAmagjB\r\nXxZMVoMEnKfmPCYUPuZ6t9azjcFkoPsgGkDe4C7GIhAdo4eKYgZDm/thIlh3gdyD\r\ncIfWXPv92uka7YE16eTG9+rZaqNiYrueFflOixyc5sdX5zniYM5FfdZZrCrfC47K\r\n8699/Fz9gdsBrMWLEnrQzwqN24BEWu1Zt+7PDO/ZA8UHzVjlTK5ztQkojRcMgrZf\r\n6uPTFLkCgYEA9NFy4U2saL2p8jrTgAytfv5T60C8yNEp5iojxYiqZscgzEaeWS9p\r\nJrQwyvUvJ0tVZ1raLcZ5mgxi/Z0F0W7HfGIFUOTyFoyol9S31pAFMQUMV61Q9cw9\r\nf9/FV7ZjV7PkRDo9WF5DrLt4NB3HwO4i+oJTpeL0tfmzgo02Cljov9sCgYEA7Vi8\r\ngiKVja48hqBZZds/EdFZxlId5WutXRnBDAficKEbQ7XxAPvEhqvXStE3zsHzDOpv\r\nM7mKghcUfWcEKI7nbs2WWjHRODj71HIK5mXnhnPrqM6udReibC3FXpJJ1J+OIRWe\r\n5J8SmWw27+BihMDfX8iYhIMpPlLGd3JmTNDr0wkCgYAF3WalIxk4QSLrHKGodaVK\r\nX4lfH2PmY6xfSS8mMknywF52xlJQzKP2O2bX1dvVUyaunSyQ4CpVmGperP5QsBiz\r\nUB3UfEeYZrI7QOtOhpC5ReevygUgfk4S3Cd8HHBwz2xuff6uOUPhxXPxu6znYE0S\r\nN0ENvkwid+LnA78BrHOW9QKBgQCOSpapBgbW69BJfbRaxjhnfDTwGqbltco3eIst\r\npURx9YQc8eTMjCPkAP2PUyK8B7ao1ZtZTTDmkOOt0qbBkfrZiNNMu3UM2czQLpau\r\nTgWhq7lqeI5KkKLFbCNZcSZmHEnfN9EMivlhlWjSIpmtsNu51s7pEqEVRhbJ4YHH\r\nJ7FZ0QKBgQCBkWf2Xqg/i5TuuMO9VRh8F+vWaf+UPTaVTaec35594LU0wYzSNyVi\r\nDLj7PVL1ZlQi517bNP4aXMJb1j3icaX92Cwsvla/H4g1p6RihsJYgThAK3UlSD+P\r\n0yWdKyz1N5EudtOnsrgFtO/zIqGY3VImtzxZHvKamWetMiWYmxc7PQ==\r\n-----END RSA PRIVATE KEY-----\r\n",
- "ca": "-----BEGIN CERTIFICATE-----\nMIIGgjCCBGqgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBojELMAkGA1UEBhMCQkUx\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\nRW5naW5lZXJpbmcgVGVhbTEnMCUGA1UECxMecG9jLW1vcmlvLW5vZGUxLmNlcnQu\nZXVyb3BhLmV1MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhv\ncml0eTAeFw0yNTAzMTQxMTU2MjNaFw0zMDAzMTQxMTU2MjNaMIGqMQswCQYDVQQG\nEwJCRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYD\nVQQKExBFbmdpbmVlcmluZyBUZWFtMScwJQYDVQQLEx5wb2MtbW9yaW8tbm9kZTEu\nY2VydC5ldXJvcGEuZXUxMTAvBgNVBAMTKE1vcmlvIEludGVybWVkaWF0ZSBDZXJ0\naWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC\nAQD2BLSfRnRf0q35yFwMT2V5E9jOuTiMVUp2uZf9d2SAFfZmn7IZTpsvwLEW1W7W\nnHW+ybQNFrBKe6nVC6VbIJPAK1U/RZnKkiRr57Qgv02Abs12QO1MPNo0pJs+xEBM\nLz39sH31Ou/neqA+c9FBGugKMQRg5bu4Dx6rkAVJ3ZpSsqQleIaFjG6vDbUEOCNv\no9POEBndEXoECxlbq7NdrXYv82+b+492yCAckC1O0SWrx34PURU12+/RTGQn0/n8\nc0EYj7kCBsdhKwKMhlMReGumq8b2SgKSSwaVl2p8UQ7UoZc3Op6rTmuyrL7Da480\nICiGTaLBXZrREEHNa0069wCsupT7VoLFrQZOvLGuNwe7f16QYIFdt6LEorljb4/u\nYUxmNIoIRVwOjyNgalPS9t7IHc88X9asJ9Mq3NSWlNfP1EGY9wXvgZ7nhDAekbz5\ns1GdDDwQvNJAzBA9BCLQi5byod5E062COfeQLSBgbw4Gb0p+8WRLLJf9nMra8MwC\nHXhbOEdOCJH4go8G0bklT6HrjOLucxNeGd6wjgC6p52Awd7z5UNJwlGvoAGDcf9j\nJJ8rHo/s0VxTCL3hZO2VsnC8JSHggGEosqunNKZ8Tn7+EpIERmUMdrwKMmCXMri4\nGK8+fm3JC8E7l0XkzAmNDCK8nTXgsiwUQeVTR723LGxoewIDAQABo4G4MIG1MAwG\nA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgL0MDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggr\nBgEFBQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCDARBglghkgBhvhC\nAQEEBAMCAPcwHQYDVR0OBBYEFDKRMX32KdDK54ekN37vDMt2MAO7MCkGA1UdEQQi\nMCCCHnBvYy1tb3Jpby1ub2RlMS5jZXJ0LmV1cm9wYS5ldTANBgkqhkiG9w0BAQsF\nAAOCAgEASArHm8sYoLiPwgoJKXmO6JXf6Nz/6MT8zJD+FtdzMAHnnpNy9MlSmEJ5\nnDSlgx4YSCOD0xbgc7bvPfB39Aa6ZUjXPgWLWcfOkJZw0+PUfNuRfT7C0VD22Byb\nmJRSkcl4jtlwdpRYCa8JI8onqW2vBf7ISkaE7Y1nzUwJQod/xwrtfSFS9fD0HYit\neuXSg2n5gGzrJZ2y6isA5FS4z2U07gFE8k8NaGqNZtSY1JU8XCCBoNyvnofndkjc\nVxk/4+2gXuAIT5MAA8en2bSI4oebqCaI7enzTN1dg0cDjeV5p7RrJ2H+xhTRk6nk\nqZIFOSgXAHj5UeZtzjWUwZiMHBu01YSlxd0BCXgXL1vp/XFKO7neuMfYnTktFyQK\nPHziCocy/unsiXGeQtmKejr0VYFZddYFRfhiMEplIq1xfIsdqWu5sE09byWz/vDV\n4NavlRopc2IldoKt7oCMVMNGhX5Crk5vqQmD4WOASpiOmFGs3yHMTMRoGnFvTAFb\nG/H3YaoOTt9wwLGq8Fou/3GT0Zisk+JpVes5Sg9rkOOy9j0LGBIXUxcHApg4Nesv\nCmRSwkUDJS16qNQf5y1kHoxypYrxDDj8q4YnBoktMLSuj91dTs0+iABzRep2/K0r\nm+hPQNIjLRbiUfVXF8uxTV4meAEuNANqNE7gt1z28ne2N/xHpFQ=\n-----END CERTIFICATE-----\n",
- "uuid": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "secret": "3b2f6c9462d56bf6168db2469ccddc653e8fd348a0b730ec492e8322c91b73c7f91ec4edc4cb7aa678c10fbb0dc41a4c",
- "cluster": "example.morio.it",
- "brokers": [
- "example.morio.it:9092"
]
}Stores the local client configuration to the Morio cluster.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Configuration from the system running the Morio client
| uuid required | string <uuid> The UUID of the client |
| cluster required | string The FQDN of the Morio cluster |
| modules | Array of strings |
| vars | object |
{- "uuid": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "cluster": "example.morio.it",
- "modules": [
- "linux-system"
], - "vars": {
- "METRICS_LINUX_SYSTEM_INTERVAL_FILESYSTEM": "10m",
- "METRICS_LINUX_SYSTEM_METRICSETS_ALWAYS": "[ \"cpu\", \"diskio\", \"load\", \"memory\", \"service\", \"network_summary\", \"process_summary\", \"socket_summary\" ]"
}
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reports data about the system the client is running on.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Info about the system running the Morio client
| cluster required | string |
| uuid | string <uuid> |
required | object |
{- "cluster": "example.morio.it",
- "uuid": "ee623dd1-39d7-4b73-8cdb-3ac422817adc",
- "info": {
- "name": "vm001",
- "fqdn": "vm001.infra.morio.it",
- "os": "linux",
- "os_version": "debian 12.9 6.1.0-31-amd64",
- "arch": "amd64",
- "cores": 4,
- "memory": 8326467584,
- "ips": [
- "10.1.69.32",
- "172.17.0.1",
- "192.168.144.33",
- "fe80:0:0:0:250:56ff:fe8e:78e5",
- "fe80:0:0:0:bcf3:2eff:fe38:ce7a"
], - "macs": [
- "00:50:56:8e:78:e5",
- "02:42:0b:ca:a5:fd",
- "02:42:88:cd:a7:e9",
- "2e:82:fc:fd:ae:30"
], - "packages": [
- {
- "name": "sed",
- "version": "4.9-1"
}, - {
- "name": "sudo",
- "version": "1.9.13p3-1+deb12u1"
}, - {
- "name": "tar",
- "version": "1.34+dfsg-1.2+deb12u1"
}, - {
- "name": "tasksel",
- "version": "3.73"
}, - {
- "name": "tzdata",
- "version": "2024b-0+deb12u1"
}
]
}
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Update the status of a client command.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
Info about the status of the client command
| uuid required | string <uuid> |
| id | number <float> |
| status required | string |
{- "cluster": "example.morio.it",
- "id": 12,
- "status": "started"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Enables a client module in the database.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
| module required | string The module name. |
{- "status": 403,
- "title": "Database failure",
- "detail": "Could not complete the request because the database returned an error."
}Disables a client module in the database.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
| module required | string The module name. |
{- "status": 403,
- "title": "Database failure",
- "detail": "Could not complete the request because the database returned an error."
}Sends a command to clients.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
| cmd required | string The command to send. One of:
|
Info about the status of the client command
required | boolean or Array of strings |
Any of boolean | |
{- "clients": [
- "example.morio.it"
]
}{- "command": "pull",
- "clients": [
- "example.morio.it"
], - "id": 12
}Removes a client from the Morio inventory.
A warning about client endpoints
The API endpoints with a
/clients/prefix underpin the Morio client integration.These endpoints are not intended to be accessed by anything but the Morio client binary.
In addition, they require the specialclientrole which is not available to regular users.We document these endpoints for transparency, and we do not oppose their use as such.
However, these endpoints are exempt from semantic versioning rules. In other words, we may introduce breaking changes to these endpoints at any moment as we consider them to be part of Morio's inner working.
| uuid required | string <uuid> The client UUID |
{- "status": 403,
- "title": "Authentication mismatch",
- "detail": "This endpoint can only be used by the API key that was assigned to the client when joining the cluster."
}Returns the root and intermediate certificates of the Morio CA, along with the root certificate's fingerprint.
{- "root_fingerprint": "50a3270a0988610145659cfb190121d1fcfd50141b953a783f354d840ad3bf9e",
- "root_certificate": "-----BEGIN CERTIFICATE-----\r\nMIIGdDCCBFygAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCQkUx\r\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\r\nRW5naW5lZXJpbmcgVGVhbTEkMCIGA1UECxMbTW9yaW8gU3RhbmRhbG9uZSBTd2Fy\r\nbSBUZXN0MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0\r\neTAeFw0yNDA3MjgxMzE4MzZaFw00NDA3MjgxMzE4MzZaMIGfMQswCQYDVQQGEwJC\r\nRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYDVQQK\r\nExBFbmdpbmVlcmluZyBUZWFtMSQwIgYDVQQLExtNb3JpbyBTdGFuZGFsb25lIFN3\r\nYXJtIFRlc3QxKTAnBgNVBAMTIE1vcmlvIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y\r\naXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAkK3oHb9U0thYdq2F\r\niOtXhsxIp+omgEczcYL6fE5B+y2Qy7vzWvOr1l9kZTPN6FkYlo0idXWa4RO9SgQ9\r\nBoOqR+NaOvYRvn836l9ohGztvPAfxdxB+BGoHcd3KFgeD8veedKaCTgeVWNUQMUK\r\nHPR3q8HQXs1bycJ15j9ktmhtCKnZvFJUXZrOskgWdE+0pXI8rfrBdXB2z9WrN9dr\r\n32bxLfsB+JycO1OLs/dJpkIyj1+nbAzdW6KpiDMTq9DJSQgGKbgYoz73cD6uSbnh\r\n+sLhSvpUy7Kz5O+L5Ne+q4LNI4Dt5St4FGBljDWxV1Oar2MRyhwbdeIb4yunIpgY\r\nr/iD4+vCDSEiIxwcS9H8n5qyHbhMO8Nh9zUsGsomBcB+UlPbdB3I0M1veLB2Eb3t\r\nJ/qf7mzdN4yO2i5gP3irvF6BYM4Yb1NNvBKioyWYsQYAl+xOWI7vLXB/1IKs3Xux\r\nFnKa8lTuo1PORwS8g+pXUMX2Otc6Ucf0r58YoZrvAFUQRfdf9uk1jAKGXLkhrWva\r\no+ZUDrB9VnjNUrCr6DoTam7mDRIlgkCpDje/alW5gLh5++l2gcG4Eht1I9L/O+Ug\r\nJptJ3gyrWm8RknXFqT3LsPwRYFFewjxfS0bsww/5+O5A3TKu/PKyINazT5SRYNI4\r\noXOSebu0b9WHMkYVqrmxoTGgd/sCAwEAAaOBuDCBtTAMBgNVHRMEBTADAQH/MAsG\r\nA1UdDwQEAwIC9DA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUF\r\nBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwEQYJYIZIAYb4QgEBBAQDAgD3MB0GA1Ud\r\nDgQWBBRLAieUVRyHBPxbwRQ05LyL7xSvNTApBgNVHREEIjAggh5wb2MtbW9yaW8t\r\nbm9kZTEuY2VydC5ldXJvcGEuZXUwDQYJKoZIhvcNAQELBQADggIBAHfuhwc9awm+\r\nnZy7l8iviAoFqo3ja6yt/efx9KoQOCWP0q7TX7YAqWs8JQGV1DxFE94j3flgSxx5\r\nEeNs1p7qFHpJ1wGoWbTS8X/ytAVjKQEzfzSNSIEfK5O7G9rKWnpMjI6ZnuAbB7MU\r\nA1h6vrA2373qj7VFJfupj6qanZ8/WmhEU6dfwL1Mp4trwY7g40FfQOq8+YyqWyU0\r\nZdO7DUJd+bO8KGV6l7z8U9CyVN3X4hAvpHZ4rhD5Kabq0o6pA3GaQaSWPJfAxCNF\r\n1uWR3rLH2aK68pKAUrGNXRibyhrWIuX5t/WTub9zZw7FMk01YSFwXnl46MHFTt/r\r\nZWJVVITPCLjAHJaBH7WX8KXAORuE1Lqm9Ynapj0+B8c3nGC4Th+BiHorB3+CF799\r\nEpRjHsNXQWLRgP09gl1g/yp4GYbImUN2tjkyb7OftF/F/AEIozFGeXK0ewk+gZKt\r\nlYyqKzOjNbL7pDVh3NWQlGV9ky6rr2XWvYFzb3vFkH5MNWMHE5kCpjuAU/tOzmpG\r\n55TpUcT2BY4rTM8mObGNiPu4Vy9VqCaTy+mUlyRHlUZIBaZTxqNmjHrQXDj/B9s9\r\n0ekS8ikHr7A3mYdbZrCi0dEfQTs9seiWfid59I4W7R7/J0czJHusKkpM/GE5lFcg\r\noUyCyR375Emn80zazBRiKvAey+gT1bPD\r\n-----END CERTIFICATE-----\r\n",
- "intermediate_certificate": "-----BEGIN CERTIFICATE-----\r\nMIIGfDCCBGSgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBnzELMAkGA1UEBhMCQkUx\r\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\r\nRW5naW5lZXJpbmcgVGVhbTEkMCIGA1UECxMbTW9yaW8gU3RhbmRhbG9uZSBTd2Fy\r\nbSBUZXN0MSkwJwYDVQQDEyBNb3JpbyBSb290IENlcnRpZmljYXRlIEF1dGhvcml0\r\neTAeFw0yNDA3MjgxMzE4NDFaFw0yOTA3MjgxMzE4NDFaMIGnMQswCQYDVQQGEwJC\r\nRTERMA8GA1UECBMIQnJ1c3NlbHMxETAPBgNVBAcTCEJydXNzZWxzMRkwFwYDVQQK\r\nExBFbmdpbmVlcmluZyBUZWFtMSQwIgYDVQQLExtNb3JpbyBTdGFuZGFsb25lIFN3\r\nYXJtIFRlc3QxMTAvBgNVBAMTKE1vcmlvIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0\r\nZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDEbgzx\r\n0dF680J70HM+CwPDQM7owZf/nQnvHkxelrNOE1JE845kMbO+LC07WX8C1anizDJQ\r\npHiMzMWuCdziqUUSl19aAUfrP53ei3IvIC3R9mXusKLnrTEXauC7er1h2vsoz9F5\r\nmULW7Lsf/mdKu6MsXalJyDpWLBtZz3zznzoTd/rwKnFUnauy/rkTuwDqzRho1/89\r\n50sNdUgSQ14srXGxQmXyAeH9PZk3c40mLHmSYqJhP1H6O0t/snXbfO4s+5UDaTiF\r\n+3ANjeeJDUeDtXxg2hGiCPssrWeCGr331Jy4XU3nwaTGH7EmLep4IjE1+7qcOSl3\r\nkOWex7CmY991/PZSneHE0w4YAmudZTfHl7lA2RpVxFMkbIcbx7lMll/zfrvqax6W\r\nx7TIuqYoPwofr8hwxiKbxVCqW0UudxRrJXZLMlTavXIxVfEOmR7frfl/CmiyybwG\r\nzLqAsILof8azYWjqR+hwUKrj/UR05fiQfJmC8WGfGXWqM/YKUpIheG+FWs6jKHkm\r\nNcmANp+w6ucTbV++1vdhj8vLmjELFf9JRptSZxMQpUA2gVfF2Hbn+jyDQyhFSElk\r\n2K0KKQRHqMYRquRVZCHWZnaLyESh5bQGpt0q3+ZqlEfSM57h8eCmmd+ia1aVDeWU\r\nGlpe3mJPtNef9HBojkytvXqcQOOw0RDI6JBnuQIDAQABo4G4MIG1MAwGA1UdEwQF\r\nMAMBAf8wCwYDVR0PBAQDAgL0MDsGA1UdJQQ0MDIGCCsGAQUFBwMBBggrBgEFBQcD\r\nAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDCDARBglghkgBhvhCAQEEBAMC\r\nAPcwHQYDVR0OBBYEFEsCJ5RVHIcE/FvBFDTkvIvvFK81MCkGA1UdEQQiMCCCHnBv\r\nYy1tb3Jpby1ub2RlMS5jZXJ0LmV1cm9wYS5ldTANBgkqhkiG9w0BAQsFAAOCAgEA\r\nTN9kHQBILMqCQSpYINywlmnchGTsqzvisE9p3IzqDWNMuQybwAt6/3LetE1SomYc\r\nYmh2fS8MmAHs+xr7ZfldTSVBUMXj+R2p176d3AmToR4PQ2qFdLGT+JoMOk9qsMG6\r\nNyozmLKvT1TIAt2pwjGSfX0GLSy2RS+mUpxUHpaDKLozTk1YJZJnAzX9l6SJz+m/\r\n77XpmTxMTKCQY0WsKLtohlDAs9lrm9MAJir7XKbMyiHE0L4OiW1pgozxvPxeTBUz\r\ngEXz4laHvrbN/rRwzqdlZ1XFzgjuOT1Tfkn8fzbjqZVqs0muyTqsftkKUyi3rgY8\r\nH1RKqt4r+h86XSXTR3/M3Z7IZYQ9ts0qDhPyrya9S9V7ZPO7GWKcMIA2JhjAn5/0\r\nvcvrXFoE6bnXagxT6p+lUJqUycecpDgN4TFcRCTB/rvC7H6Qi7v7z3OU2kjYQp7n\r\nQjiAYmeXwoqB27hlBjKOpS3dgX34/HjhYJJ6JSZ5r89ZhSgQraIvNpf8HamrKtTz\r\nVsipAq4Ol2rkMwuiIRZGfE3eFppO4aWGs6nIwwrI00ttO241a8MVv95ruPFoULLS\r\nZJ3dD2kDgEZ3F9pDlJyty0T4PPNkwu35ysldWPXce9zy/7AFmxujMnd4bB+0tO0t\r\nDmghEeLnxtbFVX9qGQYM4a07Y7s7jFuIlXeZqMDxHgU=\r\n-----END CERTIFICATE-----\r\n"
}Returns Morio's internal public key. This can be used to validate Morio's JWTs
{- "pubkey": "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2w8z3zdnU8oAWYD8UfQ9\nAr3xVlEo2PIC4ZNZ7AYsXitFJ8NNdHvXqO5VIC3R2LHIsdn9wPkaaI5sAEcGNzeL\n2AD4QzDCWIIYWfLLS1MTVVd9hW1HzHZxzvng4WJV3vuULCvYh+9bcy0xoKzq9OzE\njETDSFpsTEl3VGHE/J2XN/bh4I6qYvrze2ZAMtYfu1Xd7lk6tXooQO8WGaVdH/5/\nR3HCoiFBTGJAa1VLlFp7Zuc2P4Gi7lbI1VAANCmN38olkyP2yrqPAtaFzAHZdmUZ\nP+1BkJ7OQ2Z0uNKrpMiZZaweuaFGnmf1N3YsAJNwNvVksKWJJMilpNZbWQsm2QQj\nU5i/MKSngXx7yyzATAxwH/JZrXYamNEdWFxFUdNaAleO3cSXQVxhqzcCb7JthlhG\nn1DVvuM2kPGJJr8iSylXpX2Sge1Z9dnnrWpK+7/+mVTgYH+dlqZEHf7NC8cw7D/M\nSN9phe5P6gCOppTqDNFi/3QsgdQ8w9kKhvD2d77I1pzTvjXqHxrFnZ/Je/8iOpa8\nHnlRWso2II0Wn6BNOxNK5K/4TRFcOdVS+RbWaQ/+xuvX3/8GMeuOybwydqtIUXWs\nropJOuQ/yET5BtYVnalr4V9BfKmALfcYenIrk9sWLe3f+FG34kGF1egaWy2c4HFV\n2zVgK4iWU+nnSlpFGcwAxVUCAwEAAQ==\n-----END PUBLIC KEY-----\n"
}Returns Morio's internal public key as a PEM file. This can be used to validate Morio's JWTs
-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2w8z3zdnU8oAWYD8UfQ9 Ar3xVlEo2PIC4ZNZ7AYsXitFJ8NNdHvXqO5VIC3R2LHIsdn9wPkaaI5sAEcGNzeL 2AD4QzDCWIIYWfLLS1MTVVd9hW1HzHZxzvng4WJV3vuULCvYh+9bcy0xoKzq9OzE jETDSFpsTEl3VGHE/J2XN/bh4I6qYvrze2ZAMtYfu1Xd7lk6tXooQO8WGaVdH/5/ R3HCoiFBTGJAa1VLlFp7Zuc2P4Gi7lbI1VAANCmN38olkyP2yrqPAtaFzAHZdmUZ P+1BkJ7OQ2Z0uNKrpMiZZaweuaFGnmf1N3YsAJNwNvVksKWJJMilpNZbWQsm2QQj U5i/MKSngXx7yyzATAxwH/JZrXYamNEdWFxFUdNaAleO3cSXQVxhqzcCb7JthlhG n1DVvuM2kPGJJr8iSylXpX2Sge1Z9dnnrWpK+7/+mVTgYH+dlqZEHf7NC8cw7D/M SN9phe5P6gCOppTqDNFi/3QsgdQ8w9kKhvD2d77I1pzTvjXqHxrFnZ/Je/8iOpa8 HnlRWso2II0Wn6BNOxNK5K/4TRFcOdVS+RbWaQ/+xuvX3/8GMeuOybwydqtIUXWs ropJOuQ/yET5BtYVnalr4V9BfKmALfcYenIrk9sWLe3f+FG34kGF1egaWy2c4HFV 2zVgK4iWU+nnSlpFGcwAxVUCAwEAAQ== -----END PUBLIC KEY-----
Generates an X.509 certificate, issued by Morio's internal Certificate Authority
The Morio settings you want to validate
object | |||||||||||||||
| |||||||||||||||
{- "certificate": {
- "cn": "A Morio Certificate",
- "c": "BE",
- "st": "Brussels",
- "l": "Brussels",
- "o": "CertsRus",
- "ou": "NotThatCrypto",
- "san": [
- "morio-name1.brussels.morio.it",
- "morio-name2.brussels.morio.it",
- "morio-name3.brussels.morio.it"
]
}
}{- "certificate": {
- "crt": "-----BEGIN CERTIFICATE-----\nMIIFIjCCAwqgAwIBAgIQZEZGk0+zMNeeFQOzdPmE0jANBgkqhkiG9w0BAQsFADCB\nnDELMAkGA1UEBhMCQkUxETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVz\nc2VsczEZMBcGA1UEChMQRW5naW5lZXJpbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8g\nVW5pdCBUZXN0czExMC8GA1UEAxMoTW9yaW8gSW50ZXJtZWRpYXRlIENlcnRpZmlj\nYXRlIEF1dGhvcml0eTAeFw0yNDA3MjkwOTI1MDRaFw0yNjA3MzAwOTI2MDRaMB4x\nHDAaBgNVBAMTE0EgTW9yaW8gQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQC/lhIGkpFmgqh3roMLONXNkSz6WegKmI72WKmw4hUBOdeL\ni0zSmtrBWxj1+f7AA9niPWaU+TISuD5V6pSTGqYA0Q+cX3MNe/hJUk+hnjohqASR\ntW4MXbxs0xiaKGL8O30F7DPP2YTLCiAwn2ljFkA5jI6YvFh7lSPDJRMJBL7GlK2X\nfIfaJC793U75mB1GRJQJ6VS0REXkh6fFPXyA01E7DhlLBcmzSsUKwXo36agewWpq\nDIVWtNDG6CEJVvtdjOTCx5aDysCsfDyVax0/ufCy176ryakqru4YahtuFBLdkmgw\n1PTjhLKNyGcJb59JtzaC2gnPQ9jGQLGu8lAe1IjZAgMBAAGjgdwwgdkwDgYDVR0P\nAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E\nFgQU6r8GEWT1O4DJsB6Bcy7dOiz5NN4wHwYDVR0jBBgwFoAUoSdQN6s/1SyP/x1y\n15KPY89ogRUwHQYDVR0RBBYwFIISdW5pdC50ZXN0Lm1vcmlvLml0MEkGDCsGAQQB\ngqRkxihAAQQ5MDcCAQEEBWFkbWluBCtDVTJzVDhZT3Q0aGJhWFhCUmthREVRVFoz\nQk5aSk9EalpTdmt3a2E1M0JNMA0GCSqGSIb3DQEBCwUAA4ICAQA2Abl/JkbsaSVW\nnyF3FY6Kf4tBs+ZpVufyn5JLyWbA9T/QccBAGw7k7nOSWXhVoDjFBRyX6aVkUUuD\nLfX30vztU9fXkVmPO7ElBVG163zh+l3+jtZhKmGmHyFmipsDKSRu+zNlyjJYkxD+\nA+HsTM1cG8+W/KLPOIfQZeE/9HmUCAOtsMeXWuSOmXuq5ZjPQEClAAG0luDVGXuF\n0gyUDSfe7T8pVdUdlBMLixEyuFBFmZ0jjrf3jDDdor6xM8rl9gFJEGsv24NbHQCu\n58u1rcLUswMh6xJr3Umc7V3h0Mfaqss2RupB+6s2jgtwNXUPrts8guXKl74qmISq\n8Voon8kJ3KJqau4rjnpIDFLFErgbBtwfViEH1YRWYGrxSRqD5oDjDDudg3zekFQ6\nYH0yjCKpSJB9JcF/EDKHU4mwatl80PWo9kLDyivvtUq+cIQn9AJR99NiOSLkUbBv\niC6KSkGOSGoibQOKpXCQJkqJLlKgR2IEfy8HiN+Or971JNEKApv7duU8iIpk0Svl\n20pI4oz4qSpt8hJzW/4CAD3sPnsQrlYmxLWQDNgJhebqwMqya37RDzny22gThpo8\nGpCrWQi/h5iZUO1o/h/Qy1wNB/K+zzJgGKCJw+BOzfXuX8uNWIYZc6C19AfcuJuR\nQ0qAthZjtW6wcj7ohuhq49szIug44A==\n-----END CERTIFICATE-----\n",
- "ca": "-----BEGIN CERTIFICATE-----\nMIIGWjCCBEKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCQkUx\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\nRW5naW5lZXJpbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8gVW5pdCBUZXN0czEpMCcG\nA1UEAxMgTW9yaW8gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjQwNzI5\nMDcxMzM3WhcNMjkwNzI5MDcxMzM3WjCBnDELMAkGA1UEBhMCQkUxETAPBgNVBAgT\nCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQRW5naW5lZXJp\nbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8gVW5pdCBUZXN0czExMC8GA1UEAxMoTW9y\naW8gSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhvcml0eTCCAiIwDQYJKoZI\nhvcNAQEBBQADggIPADCCAgoCggIBAJdVXnZsMS6/esyEgOBZIowVQOygS7OX1h8/\n6Wi2HZxcXk6NY6a53s1e0AVqqgnbcT5iSmdVdlsJw2uhHtm+AHAGnWQr+dNwLYBK\n1e6V5rTrW4oDZ4eMjVzEGfOkvYJplnTi27iqmrj/Em6xZ++z3E5Ujs/OP1k0HXQj\nDVgNa9hP4fV/JWOd8krWglgGQhSLINhenRldD51IpRfM3jUkxMC1WinAQ/10cv62\nKQzHGmPK/gDnNb0mJvF5JD0rN+Fr6Y+HY/M5Ti9jEw2JAZwt189fRG/Fpuje/Oca\nmWDWfiEHszrTwgIGQvNURmdsDUaXKO/DbCq8dDG9bWARREXnU/C3sOVtD1H5Lm12\nw/LCGa3+81DFcSXcwwxppGl9JgA69nfp8HJTHR1zeNPM1eCPukz/26A3mWEh0zU6\nxaqS0oeO0+aaPreLn+W7n36/oI0gc1m3hdQtOljBZFOGQQzkP+fQR0Wh/Z/+41N8\ncM1IALhsXq3Ot0w9R8ewIAitUf5lqXNDmZkFM3Z51fB1novAW6QECk1no+Hiq10s\nSHMyKkBPAeXMzxEutkT84XxBPvBfFxOyRdQim7hT9bn2t7BWQD49gkDonVGTh+HL\niwydENkBuj/5M6+X6f4K1SsdttvyMqO4wxcJyaDB9O2h9S6WAkCL+zCV02BPjrFq\nXfIqC5XJAgMBAAGjgawwgakwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAvQwOwYD\nVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwQG\nCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA9zAdBgNVHQ4EFgQUoSdQN6s/1SyP\n/x1y15KPY89ogRUwHQYDVR0RBBYwFIISdW5pdC50ZXN0Lm1vcmlvLml0MA0GCSqG\nSIb3DQEBCwUAA4ICAQAV/yCUT8sZZj7VmSDxdQ6pbL/JWuWI6uA1g1nYNYORf7NA\n0OSFeb9SCJxAsQoTO2iWmDfwSd1mYIIKDDZ59l8COrWyIlPFvLxaJrfQFuMrK1yN\n2JDaS+qKRwX2MRdjKQNLR87Ql2oC4ZynJdnflMkSP7Kw3yiok/YpUnf7y5iCuHTe\nTXatprHebxFAcQJIhx+VNGpe5saRCGiCLfVcB6hXVKhMXHoXfrwhj4nKe8H0I/tx\n67r2JzvrQBBeVSGqoXDWgbK3RzAyPoom1jj4lot/WajVE2tc/3p0YwluZDiyuhOw\nVEexHB5g7PdqPY9U5yvBVTDa1lDhPp/5oxXrfhFjIjfrA9IpW6qATqx27001vhY7\neTduv3rO0SH60ueBtKr77PA/9qjG+yck3N4uxPofGKZ+ccqEAbeGkxyIY3UaD0EJ\nZjWg4QXvhnSL2cnwriJLDXQewiiXYH4ZKWCDbztgu2D49SUp/OO3AIQsf2w4EKit\nsfz4snFiACNIm+FzZSwdZR/epL5IDZtOjV0XoFOBiWxsc7i5j9DEUDBfheAVxULO\nhe+ZxO+04Zx7NxB5ibJkwLLb5ITsug6qmIlcZ13IZ4QhkrUNcVZfxT2k0tJbfAxh\nZvYknMm1bpmi7AEuC4yg2ojnxTEvQsQsWrVKyFyZNEfDLHtBc6q8Y0SF/ILzug==\n-----END CERTIFICATE-----\n",
- "certChain": [
- "-----BEGIN CERTIFICATE-----\nMIIFIjCCAwqgAwIBAgIQZEZGk0+zMNeeFQOzdPmE0jANBgkqhkiG9w0BAQsFADCB\nnDELMAkGA1UEBhMCQkUxETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVz\nc2VsczEZMBcGA1UEChMQRW5naW5lZXJpbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8g\nVW5pdCBUZXN0czExMC8GA1UEAxMoTW9yaW8gSW50ZXJtZWRpYXRlIENlcnRpZmlj\nYXRlIEF1dGhvcml0eTAeFw0yNDA3MjkwOTI1MDRaFw0yNjA3MzAwOTI2MDRaMB4x\nHDAaBgNVBAMTE0EgTW9yaW8gQ2VydGlmaWNhdGUwggEiMA0GCSqGSIb3DQEBAQUA\nA4IBDwAwggEKAoIBAQC/lhIGkpFmgqh3roMLONXNkSz6WegKmI72WKmw4hUBOdeL\ni0zSmtrBWxj1+f7AA9niPWaU+TISuD5V6pSTGqYA0Q+cX3MNe/hJUk+hnjohqASR\ntW4MXbxs0xiaKGL8O30F7DPP2YTLCiAwn2ljFkA5jI6YvFh7lSPDJRMJBL7GlK2X\nfIfaJC793U75mB1GRJQJ6VS0REXkh6fFPXyA01E7DhlLBcmzSsUKwXo36agewWpq\nDIVWtNDG6CEJVvtdjOTCx5aDysCsfDyVax0/ufCy176ryakqru4YahtuFBLdkmgw\n1PTjhLKNyGcJb59JtzaC2gnPQ9jGQLGu8lAe1IjZAgMBAAGjgdwwgdkwDgYDVR0P\nAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAdBgNVHQ4E\nFgQU6r8GEWT1O4DJsB6Bcy7dOiz5NN4wHwYDVR0jBBgwFoAUoSdQN6s/1SyP/x1y\n15KPY89ogRUwHQYDVR0RBBYwFIISdW5pdC50ZXN0Lm1vcmlvLml0MEkGDCsGAQQB\ngqRkxihAAQQ5MDcCAQEEBWFkbWluBCtDVTJzVDhZT3Q0aGJhWFhCUmthREVRVFoz\nQk5aSk9EalpTdmt3a2E1M0JNMA0GCSqGSIb3DQEBCwUAA4ICAQA2Abl/JkbsaSVW\nnyF3FY6Kf4tBs+ZpVufyn5JLyWbA9T/QccBAGw7k7nOSWXhVoDjFBRyX6aVkUUuD\nLfX30vztU9fXkVmPO7ElBVG163zh+l3+jtZhKmGmHyFmipsDKSRu+zNlyjJYkxD+\nA+HsTM1cG8+W/KLPOIfQZeE/9HmUCAOtsMeXWuSOmXuq5ZjPQEClAAG0luDVGXuF\n0gyUDSfe7T8pVdUdlBMLixEyuFBFmZ0jjrf3jDDdor6xM8rl9gFJEGsv24NbHQCu\n58u1rcLUswMh6xJr3Umc7V3h0Mfaqss2RupB+6s2jgtwNXUPrts8guXKl74qmISq\n8Voon8kJ3KJqau4rjnpIDFLFErgbBtwfViEH1YRWYGrxSRqD5oDjDDudg3zekFQ6\nYH0yjCKpSJB9JcF/EDKHU4mwatl80PWo9kLDyivvtUq+cIQn9AJR99NiOSLkUbBv\niC6KSkGOSGoibQOKpXCQJkqJLlKgR2IEfy8HiN+Or971JNEKApv7duU8iIpk0Svl\n20pI4oz4qSpt8hJzW/4CAD3sPnsQrlYmxLWQDNgJhebqwMqya37RDzny22gThpo8\nGpCrWQi/h5iZUO1o/h/Qy1wNB/K+zzJgGKCJw+BOzfXuX8uNWIYZc6C19AfcuJuR\nQ0qAthZjtW6wcj7ohuhq49szIug44A==\n-----END CERTIFICATE-----\n",
- "-----BEGIN CERTIFICATE-----\nMIIGWjCCBEKgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCQkUx\nETAPBgNVBAgTCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQ\nRW5naW5lZXJpbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8gVW5pdCBUZXN0czEpMCcG\nA1UEAxMgTW9yaW8gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjQwNzI5\nMDcxMzM3WhcNMjkwNzI5MDcxMzM3WjCBnDELMAkGA1UEBhMCQkUxETAPBgNVBAgT\nCEJydXNzZWxzMREwDwYDVQQHEwhCcnVzc2VsczEZMBcGA1UEChMQRW5naW5lZXJp\nbmcgVGVhbTEZMBcGA1UECxMQTW9yaW8gVW5pdCBUZXN0czExMC8GA1UEAxMoTW9y\naW8gSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhvcml0eTCCAiIwDQYJKoZI\nhvcNAQEBBQADggIPADCCAgoCggIBAJdVXnZsMS6/esyEgOBZIowVQOygS7OX1h8/\n6Wi2HZxcXk6NY6a53s1e0AVqqgnbcT5iSmdVdlsJw2uhHtm+AHAGnWQr+dNwLYBK\n1e6V5rTrW4oDZ4eMjVzEGfOkvYJplnTi27iqmrj/Em6xZ++z3E5Ujs/OP1k0HXQj\nDVgNa9hP4fV/JWOd8krWglgGQhSLINhenRldD51IpRfM3jUkxMC1WinAQ/10cv62\nKQzHGmPK/gDnNb0mJvF5JD0rN+Fr6Y+HY/M5Ti9jEw2JAZwt189fRG/Fpuje/Oca\nmWDWfiEHszrTwgIGQvNURmdsDUaXKO/DbCq8dDG9bWARREXnU/C3sOVtD1H5Lm12\nw/LCGa3+81DFcSXcwwxppGl9JgA69nfp8HJTHR1zeNPM1eCPukz/26A3mWEh0zU6\nxaqS0oeO0+aaPreLn+W7n36/oI0gc1m3hdQtOljBZFOGQQzkP+fQR0Wh/Z/+41N8\ncM1IALhsXq3Ot0w9R8ewIAitUf5lqXNDmZkFM3Z51fB1novAW6QECk1no+Hiq10s\nSHMyKkBPAeXMzxEutkT84XxBPvBfFxOyRdQim7hT9bn2t7BWQD49gkDonVGTh+HL\niwydENkBuj/5M6+X6f4K1SsdttvyMqO4wxcJyaDB9O2h9S6WAkCL+zCV02BPjrFq\nXfIqC5XJAgMBAAGjgawwgakwDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAvQwOwYD\nVR0lBDQwMgYIKwYBBQUHAwEGCCsGAQUFBwMCBggrBgEFBQcDAwYIKwYBBQUHAwQG\nCCsGAQUFBwMIMBEGCWCGSAGG+EIBAQQEAwIA9zAdBgNVHQ4EFgQUoSdQN6s/1SyP\n/x1y15KPY89ogRUwHQYDVR0RBBYwFIISdW5pdC50ZXN0Lm1vcmlvLml0MA0GCSqG\nSIb3DQEBCwUAA4ICAQAV/yCUT8sZZj7VmSDxdQ6pbL/JWuWI6uA1g1nYNYORf7NA\n0OSFeb9SCJxAsQoTO2iWmDfwSd1mYIIKDDZ59l8COrWyIlPFvLxaJrfQFuMrK1yN\n2JDaS+qKRwX2MRdjKQNLR87Ql2oC4ZynJdnflMkSP7Kw3yiok/YpUnf7y5iCuHTe\nTXatprHebxFAcQJIhx+VNGpe5saRCGiCLfVcB6hXVKhMXHoXfrwhj4nKe8H0I/tx\n67r2JzvrQBBeVSGqoXDWgbK3RzAyPoom1jj4lot/WajVE2tc/3p0YwluZDiyuhOw\nVEexHB5g7PdqPY9U5yvBVTDa1lDhPp/5oxXrfhFjIjfrA9IpW6qATqx27001vhY7\neTduv3rO0SH60ueBtKr77PA/9qjG+yck3N4uxPofGKZ+ccqEAbeGkxyIY3UaD0EJ\nZjWg4QXvhnSL2cnwriJLDXQewiiXYH4ZKWCDbztgu2D49SUp/OO3AIQsf2w4EKit\nsfz4snFiACNIm+FzZSwdZR/epL5IDZtOjV0XoFOBiWxsc7i5j9DEUDBfheAVxULO\nhe+ZxO+04Zx7NxB5ibJkwLLb5ITsug6qmIlcZ13IZ4QhkrUNcVZfxT2k0tJbfAxh\nZvYknMm1bpmi7AEuC4yg2ojnxTEvQsQsWrVKyFyZNEfDLHtBc6q8Y0SF/ILzug==\n-----END CERTIFICATE-----\n"
], - "tlsOptions": {
- "cipherSuites": [
- "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
- "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
], - "minVersion": 1.2,
- "maxVersion": 1.3,
- "renegotiation": false
}
}, - "key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEpQIBAAKCAQEAv5YSBpKRZoKod66DCzjVzZEs+lnoCpiO9lipsOIVATnXi4tM\r\n0prawVsY9fn+wAPZ4j1mlPkyErg+VeqUkxqmANEPnF9zDXv4SVJPoZ46IagEkbVu\r\nDF28bNMYmihi/Dt9Bewzz9mEywogMJ9pYxZAOYyOmLxYe5UjwyUTCQS+xpStl3yH\r\n2iQu/d1O+ZgdRkSUCelUtERF5IenxT18gNNROw4ZSwXJs0rFCsF6N+moHsFqagyF\r\nVrTQxughCVb7XYzkwseWg8rArHw8lWsdP7nwste+q8mpKq7uGGobbhQS3ZJoMNT0\r\n44SyjchnCW+fSbc2gtoJz0PYxkCxrvJQHtSI2QIDAQABAoIBAC0DD7Ienm20tesE\r\ng8JPtJ/LA4PAOs2+gRwswZWO0HuMwPEGpeJ3Qn0aL5efCDTJ0teeMGtAzvxp8C9U\r\nYVrccHMRqzbEkC3zWea0IYRpveOpa4VmWHgsT7hLsmSJp5P2UA3jrFqhktr3Qo/Z\r\n7DM9B5LdzKTi33ENnazcGYhNZpsV7Eg+GZI8oP4mLNJ6ARvEEk3xzV1bsmJxHKnt\r\nSGg4Vib+a8/Ac90rcXPztjOy6r1tnuXaeeKdfMyQ24t1wiD7KPuwU/0BCHUuORqn\r\n6WMpMeBbTTCuaRvvNvZdG5JIZ2GkZRn/XUDUSBi4l0WDfiCc2mcr7BQbGkMnQhOw\r\ncfkkK+cCgYEA4wzqMPKoGZ5uPSnyZpyxLwke8Mu0kFdvgq+wMhpNKq+ZqN1mq/nx\r\n6G7TiSbxF6Kqsht8lnWGVs3+psqcMTQPDklUKM6cVxbJrXNZqYENwsMqKqdBmRXR\r\nPPIWfjht5GSxCdMX0Pefo8qsB1nkC2+62lDPu6D3FUk3iDasUBj/cuMCgYEA2AOU\r\nA3POMiO8MstzvhCYo471WM7QmuORDETlQw9dt9OC0u9RMjJuAhHDl618onfo3ByP\r\nuKkUN4zdZ7fjG0B0pwjP92H763BtWSzXc4tJz4YzAo5zkPxtt5MLGb2eG1n3xsm7\r\n7CVlPNU9C0xf5gQM0ddW8GrqX2lszFkZY76alhMCgYEAr2xMCROCs4CH9fPR2Fwa\r\nPZgTcsJAuQEFI/iv7pYJpwBTfXfKGvebYxU1lRMkVTmWHtRD10/oQmsX5DBIq29o\r\nboZTYs/3VQZDPiMQVHlkc2Us0BW4BhooNqlonY7lwP/XFRsmnIqlqfwuG+Pk4L0r\r\npf+n8HS2UpjmMfTj/2LBAzcCgYEAtkdesQMZrgmll59CzdGnW+0Yb5YlRW5eSWIh\r\nq9LdnG8o5+H2PEt9tNVUnTtR/q78mjCnvoU+gBmoAwuS4r4jMYgoJXJTaDr4qtVC\r\nAUg6QpnVlYSrVF8OHmhAZ7owHphukxpML1rm8MxntI8AJVKplrEFtd4iY9zMaCuP\r\nVzHRtG0CgYEAm/BRJG7eVtBwzSKMJzdFgyIZFPZTrgkaZtnxrOarCkHwWbOW9i3y\r\nRBO4QuoVTU4XMUrQxQPDQLZ/Feo08qNuNSnbp3yTeQRIHhBnGqY2YjiRAIVPReDl\r\nCY9RafOlspqXqxQIEtz7rSS7Ezn46G158LvXGI+/1qHPxlejU/7uswc=\r\n-----END RSA PRIVATE KEY-----\r\n"
}Decrypts data with Morio's internal key pair
The data you want to decrypt
| iv required | string |
| ct required | string |
{- "iv": "f098ed647cae1e2ddfc53240c786c3ab",
- "ct": "43a24de68ca4e8625692e3b3dc8e586d5e146531d49a70c727bac838d57bcda0"
}{- "data": "This is secret"
}Encrypts data with Morio's internal key pair
The data you want to encrypt
| data required | string |
{- "data": "This is secret"
}{- "iv": "f098ed647cae1e2ddfc53240c786c3ab",
- "ct": "43a24de68ca4e8625692e3b3dc8e586d5e146531d49a70c727bac838d57bcda0"
}Rotate the Morio Root Token. Requires the operator role, as well as the current Morio Root Token.
The current Morio Root Token
| mrt | string = 68 characters ^mrt\.[0-9a-z]+$ |
{- "mrt": "mrt.14887e49a38949f0d82915f4becdf7d700e3dcfacf64fcec00681a5f74b1a600"
}{- "result": "success",
- "root_token": {
- "about": "This is the Morio root token. You can use it to authenticate before any authentication providers have been set up. Store it in a safe space, as it will never be shown again.",
- "value": "mrt.7297ef89ed8c855ffc6786e0377bb7bf5e0137dcbc367494aebd39782747ab43"
}
}This loads all feature flags and their current setting.
Since only non-default feature flags are part of the setting, this endpoint is what enables the UI to generate the settings wizard for all available feature flags.
{- "DISABLE_IDP_APIKEY": false,
- "DISABLE_IDP_LDAP": false,
- "DISABLE_IDP_LOCAL": false,
- "DISABLE_IDP_MRT": false,
- "DISABLE_IDP_OIDC": false,
- "DISABLE_SERVICE_UI": false,
- "ENFORCE_HTTP_MTLS": false,
- "ENFORCE_SERVICE_CACHE": false,
- "RESEED_ON_RELOAD": false
}Since stream processors are dynamically loaded, and can have their own settings, this endpoint allows to retrieve these settings exposed by any loaded stream processors.
This endpoint is what enables the UI to generate the settings wizard for the loaded stream processors.
{- "metrics": {
- "settings": {
- "topics": [
- "metrics"
], - "cache": {
- "dflt": true,
- "title": "Cache metrics data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not cache metrics (disable)"
}, - {
- "val": true,
- "label": "Cache recent metrics",
- "about": "Caching metrics allows consulting them through the dashboards provided by Morio's UI service"
}
]
}, - "ttl": {
- "dflt": 1,
- "title": "Maximum age of cached metrics",
- "about": "Metrics in the cache will expire after this amount of time",
- "labelBL": "In hours",
- "type": "number"
}, - "cap": {
- "dflt": 300,
- "title": "Maximum number of sets per metricset",
- "about": "This is a hard safety limit regardless of cache age or polling interval.",
- "type": "number"
}, - "eventify": {
- "dflt": true,
- "title": "Eventify metrics",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not eventify metrics (disable)"
}, - {
- "val": true,
- "label": "Auto-create events based on metrics",
- "about": "Eventifying metrics allows for event-driven automation and monitoring based on audit information"
}
]
}, - "log_unhandled": {
- "dflt": false,
- "title": "Log unhandled metrics data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not log unhandled metrics data (disable)"
}, - {
- "val": true,
- "label": "Log unhandled metrics data",
- "about": "This allows you to see the kind of metrics data that is not being treated by this stream processor. It is intended as a debug tool for stream processor developers and will generate a lot of notes."
}
]
}
}, - "modules": {
- "morio-tap": {
- "name": "Metrics stream plugin: morio-tap",
- "about": "This stream processor plugin will process metrics data from the morio-tap module.",
- "settings": {
- "test": {
- "dflt": 666,
- "title": "Just some number",
- "about": "This is a test for module-based settings in stream processors",
- "type": "number"
}
}
}
}
}, - "logs": {
- "title": "Log stream processor",
- "about": "This stream processor will process log data flowing through your Morio collection.\n\nIt can cache recent log data, as well as eventify them for event-driven automation.\nIt also supports dynamic loading of module-specific logic.",
- "settings": {
- "topics": [
- "logs"
], - "cache": {
- "dflt": true,
- "title": "Cache log data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not cache log data (disable)"
}, - {
- "val": true,
- "label": "Cache recent log data",
- "about": "Caching log data allows consulting it through the dashboards provided by Morio's UI service"
}
]
}, - "ttl": {
- "dflt": 4,
- "title": "Maximum age of cached logs",
- "about": "Logs in the cache will expire after this amount of time",
- "labelBL": "In hours",
- "type": "number"
}, - "cap": {
- "dflt": 25,
- "title": "Maximum number of log lines per logset",
- "about": "This is a hard safety limit regardless of cache age.",
- "labelBL": "In log lines",
- "type": "number"
}, - "eventify": {
- "dflt": true,
- "title": "Eventify log data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not eventify log data (disable)"
}, - {
- "val": true,
- "label": "Auto-create events based on log data",
- "about": "Eventifying log data allows for event-driven automation and monitoring based on your logs"
}
]
}, - "log_unhandled": {
- "dflt": false,
- "title": "Log unhandled audit data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not log unhandled audit data (disable)"
}, - {
- "val": true,
- "label": "Log unhandled audit data",
- "about": "This allows you to see the kind of audit data that is not being treated by this stream processor. It is intended as a debug tool for stream processor developers and will generate a lot of notes."
}
]
}
}, - "modules": {
- "linux-system": {
- "name": "Logs stream plugin: linux-system",
- "about": "This stream processor plugin will process log data from the linux-system module."
}
}
}, - "inventory": {
- "title": "Inventory stream processor",
- "about": "This stream processor will process data from various topics to build out an inventory of your infrastructure.\n\nIt can only be enabled or disabled, and requires no configuration.",
- "settings": {
- "topics": [
- "audit",
- "inventory",
- "metrics"
]
}
}, - "events": {
- "title": "Event data stream processor",
- "about": "This stream processor will process event data flowing through your Morio collection.\n\nIt can cache recent events, and supports dynamic loading of module-specific logic.",
- "settings": {
- "topics": [
- "events"
], - "cache": {
- "dflt": true,
- "title": "Cache event data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not cache event data (disable)"
}, - {
- "val": true,
- "label": "Cache recent event data",
- "about": "Caching event data allows consulting it through the dashboards provided by Morio's UI service"
}
]
}, - "cap": {
- "dflt": 250,
- "title": "Maximum number of events to cache",
- "about": "This is a hard limit.",
- "labelBL": "In cached events",
- "type": "number"
}
}
}, - "checks": {
- "title": "Health checks stream processor",
- "about": "This stream processor will process health check data flowing through your Morio collection.\n\nIt can cache recent health check data, as well as eventify them for event-driven automation.\nIt also supports verifying the expiry of TLS certificates.\n",
- "settings": {
- "topics": [
- "checks"
], - "cache": {
- "dflt": true,
- "title": "Cache health check data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not cache health check data (disable)"
}, - {
- "val": true,
- "label": "Cache recent health check",
- "about": "Caching health check data allows consulting it through the dashboards provided by Morio's UI service"
}
]
}, - "ttl": {
- "dflt": 2,
- "title": "Maximum age of cached health checks",
- "about": "Health check data in the cache will expire after this amount of time",
- "labelBL": "In hours",
- "type": "number"
}, - "eventify": {
- "dflt": true,
- "title": "Eventify health check data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not eventify health check data (disable)"
}, - {
- "val": true,
- "label": "Auto-create events based on health check data",
- "about": "Eventifying health check data allows for event-driven automation and monitoring based on health check information"
}
]
}, - "up_values": {
- "dflt": [
- 1,
- "green",
- "up"
], - "title": "Up values",
- "about": "All of the different health check return values that should be considered 'up'",
- "type": "labels"
}, - "certificate_check": {
- "dflt": true,
- "title": "Verify certificate expiry",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not verify certificate expiry"
}, - {
- "val": true,
- "label": "Verify certificate expiry",
- "about": "Check certificate expiry, and create an event when expiry approaches"
}
]
}, - "certificate_days": {
- "dflt": 21,
- "title": "Days before certificate expiry to escalate",
- "about": "How many days before certificates expire would you like to raise an event?",
- "labelBL": "In days",
- "type": "number"
}
}
}, - "audit": {
- "title": "Audit data stream processor",
- "about": "This stream processor will process audit data flowing through your Morio collection.\n\nIt can cache recent audit events, as well as eventify them for event-driven automation.\nIt also supports dynamic loading of module-specific logic.",
- "settings": {
- "topics": [
- "audit"
], - "cache": {
- "dflt": true,
- "title": "Cache audit data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not cache audit data (disable)"
}, - {
- "val": true,
- "label": "Cache recent audit data",
- "about": "Caching audit data allows consulting it through the dashboards provided by Morio's UI service"
}
]
}, - "eventify": {
- "dflt": true,
- "title": "Eventify audit data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not eventify audit data (disable)"
}, - {
- "val": true,
- "label": "Auto-create events based on audit data",
- "about": "Eventifying audit data allows for event-driven automation and monitoring based on audit information"
}
]
}, - "ttl": {
- "dflt": 2,
- "title": "fixme",
- "type": "number"
}, - "log_unhandled": {
- "dflt": false,
- "title": "Log unhandled audit data",
- "type": "list",
- "list": [
- {
- "val": false,
- "label": "Do not log unhandled audit data (disable)"
}, - {
- "val": true,
- "label": "Log unhandled audit data",
- "about": "This allows you to see the kind of audit data that is not being treated by this stream processor. It is intended as a debug tool for stream processor developers and will generate a lot of notes."
}
]
}
}, - "modules": {
- "linux-system": {
- "name": "Audit module: linux-system",
- "about": "This stream processor plugin will process audit data from the linux-system module."
}
}
}
}This is a proxy endpoint for the Docker API on the host system that returns list of all containers available on the host system.
To only get the running containers, use the /docker/containers endpoint instead.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns the list of containers currently running on the hoste sytem.
To get all containers, use the /docker/allcontainers endpoint instead.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns information on the used and available storage on the host sytem.
This endpoint is named after the the df command on Linux.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns the list of Docker images available on the host system.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns general information about the Docker daemon on the host system.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns a list of Docker networks on the host system.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns information on the version of Docker that is running on the host system.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns information on the container with the ID passed as a parameter in the URL.
This endpoint is equivalent to running the inspect command on a container in the Docker CLI.
Note that Docker accepts an ID or (unambigious) name as input.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns logs from the container with the ID passed as a parameter in the URL.
This endpoint is equivalent to running the logs command on a container in the Docker CLI.
Note that Docker accepts an ID or (unambigious) name as input.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns stats based on resource usage from the container with the ID passed as a parameter in the URL.
These stats come from a container'se inspect command in the Docker CLI.
Note that Docker accepts an ID or (unambigious) name as input.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns information on the image with the ID passed as a parameter in the URL.
This endpoint is equivalent to running the inspect command on an image in the Docker CLI.
Note that Docker accepts an ID or (unambigious) name as input.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This is a proxy endpoint for the Docker API on the host system that returns information on the network with the ID passed as a parameter in the URL.
This endpoint is equivalent to running the inspect command on a network in the Docker CLI.
Note that Docker accepts an ID or (unambigious) name as input.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a kill command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a pause command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a restart command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a start command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a stop command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This changes, or attempts to change, the container state by issuing a unpause command.
| id required | string The ID (or name) of the relevant docker object |
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}Exports Morio's cryptographic key data.
This endpoint is only accessible to the root user.
{- "keys": {
- "data": "{\"iv\":\"51c5f343bf74a26d483f9da100969ae6\",\"ct\":\"d8eef05f08c2cbc25ef650ed096f9a73a06c3cf0fd59e7440eb70bd8596467f1bd0e94faca78e73be02f1276a51f1c1b589145702529ec91d8528ccc4474031b1ffa6923e96910d2cd815c7de13b16f65f52cf739c8be83170349bcacdf6e82a60bbb6b03b5c637bdd2a412dfe094d3ec7a045bb4037b22caa793e96f516d7e336ae0e70ea70725ffc99495c733353a82ad4a628f57da81765997cd728901c13d2343562c82dd99971fd7b84e1c1465dfec0ff82de3535eacf8d07827a814f1a6d855cdb4eead03904c56d5fb9de706c0b18fa0b6dfa45c29da7c9395be9a4f33891a73e7446dc03b5cae153d2cdb3bd3eac955f117f323061b77de9c612fc3037756f141d883d1423459ae0d977ed10c2bab0168cf2765029ab3d5633d21d738e6a55f41ca8ef4a1c76706588f54e07ab99952a1b622a8b55fa3406cbfc562c047ee29cca3b9a5a97f8e8562bd0d5ac0f40b9f358b508cedb58349598ea80740dc10ba6e5e6ce578d2f1bcdc33ff7756951daa2d9c1d035bd9d44ffa8c636971e3a652e6c09c535dc7ada15747dbc5686ba8a98879c68e1431b942b2cc0638731097a75ac4880a73868febdcd7e054030c0fc07c9e778df07b7206c06432f7cb711ff9c859d84cc598835810449a6ab7399bf044a2cf070227e0f113a3a76a9f1c582f98a023f55fb0805ce175be61c52424f362abaaeb22ec24f40fa6db89aa0c27f2720a25909bc18e250eda39222337dabb35b15e17676703e2f2d32c7ef58ccffa2d2f5be4aa14e98dd4aa8638cb809fba63e38718d6e3fafe104722b15602c603c50eee49fa42396162bd620b9062fddb95a312d0c8ced4e7c8c9d7cd25358e1e4a72b88c34692744020703e7605138832dc27bca82be102a8038c3c086091fb4252c33c0c4e1749fdd6a19e1cfce2257826d6bc922d368bf2eae0cfb28f209bf60be109b05b697ee979ab9899e9a15a5df846c90a01503e51639acb8a9ea3fe17a616d98e57eca2fc0438e9b8198b5e6f51e72415880b89d68eebc261b455decbbc8020fc27153bc80236a3851cfab68f989354f461ade607ddabcfc2e048a0ab60e21a24047a55317223a5d27f1a5210c6bd7784b37269ca8239ac0e6a23555fd6f41009bcfe3610eae95bb9edef4db05b384f98e1a1b7422ac063fc6a78836c9809ec1072d68ab78bfd92b5f9e37576adc72bb0b3faf8271cf719cda895eac35d97a06f089847e9174992b5117ae35b7247aa12e835e96f524e1caad33d74112f560a3c95d6aef18d0d80ade8c2937991f5584978c6411334f99de801599e28fbf4ee1c13b2ddddceec686ac1b9705b1c8c9d30d42df18cb59d968c67559ce63ab9148bcbc97b825634fc41f07f4a9c31b9cb30f945fa567b6fd105c2d3595e23f36d9067a82e8b72973ac06bd67197a42f2cfd55b5b0700afd0897fdaddf72cd165eb678bfc6629db8991ae70ca2c945ba2880b26149ebaad96d8b93ad829b939c887bc51ac29b89cf483311f9724da392ad5464229c6ae5d9f2f83389c447cd9c2e444905409ecb8700a6372609444408262e36d398492469ecbe947948ba98fc07a034d3c92467d7326a124a9e88f0faef27b2badcecdfef01ccb37214ab54dca0c341b4e747c5726d030617d12c45162f86ffacff18357be8126ec1ea7306ee031e758ae555519fe9b97a5728418addb57e00cf889abf3024b4569e4c7926411957947195551dbec6b023c1c553dce26307e0a40b23894a132f2a6cbeb4bcddb57df9f1974833f9a610605b3364713394e3953bb664003e9de3d39a0f1821178cb344617c8f886e5662a47d6801c765a0437e577fbe18ddb97d8e8c92b3794b7a9a7afa3d7f391161bdf38cdf635038f0139b2ad491ce7d6755f61ed2b9a14db52b1c88e37c680aadec519746b062ab7646281afad870430cba21d61254f248da640ba93a521c2b4335f063b6049468b006b37e7aa3e45155aa44d13b1b21aa211430b0f973351e074460aa79081d0b4c0c05bc2de6434f93b90dba6811c734b8334169403f36ee4bb78fa3313b57a5ad1b81754a1bc8c93ef01d2670e9abc9ca7d0e3b13f6da16980103df0f0ad64fab9d53f40a21f790f45de40eca52f00eedb2a23aed01d4b3ec6c5c6e8672a83ed5c73345fa0354fbe999c8d380914f85c4d2a8842f6ad5def7d10ff541a8333bde0d17aebf660f762b1e416eebbca3a88b57299e555e1567e1614b65c0ddcd9afaa10f58e4c1f096462018a3cd492d4dada35e1ac79f413811f483a62ba646d5570c1ef06683ff1e93edeac1bebd09bcdb66a126f94941b1186281f6407077b9cd77eeeed7db20018e4dfd18d51d3f0d8cc6ac8603c869df502c1d8f4b583ffc9c0d37e4302734228b7ab621b4a149f610052698ab68b55ad49aacbe6d5160d60fd381675b04f0bb9754601c8b7c25e1fd51c73fd55e2c53287bbe587c4fbf978e4890c35ee5e369261e65500837903069b15fd8638ae478e5e18513c09ffb36ba377e1a0b4200ccf1bd48c57a55d2e0bfa4307f35bfebdc0906afe017fd81fc2b359624cd43031873ffcb9b41db1585414dde90abe90d6fce7951c5f26cecf91b187e18886293af3b7843c9b1f418022c208272eee1fe27dfb901f3655120ef2d9995a408fdcd7cafd09cf366b49cddab1038e7291930f93a09b77ac9a95b9a7d408a5af94e4117f7efa7d45536f09bba0e9473bdf78d6b1a81ddbf77b58d0cfbe9f7c50a1d6c69c789e2bf8edbbd2788fd517849e69487a1950f40235e9a20074d8452db0b5fef57d6f8cc633bcee7566254cc9182091e6824f73ef32686b06b0eed9afc7a0b53e7982e0148d097b61d6b4040cfda1463959fca2f759885f5e1fc564dc8bb6244ccaf7707a4c9ebc00eef664c9cc73a6fa5f36aa9bc175b6f261af78104f03eabb9e45f25e6abf3edb465a4a72014488c3190c70608bb1394a43f06dcac87e33992ccd149c6db38144804d510271eb4f7896c390b45c7179e60cc8991db633a8277ea2796a133c2ce2c070a7996aa0bc789d528f5d42c65627481cd7152b8545555512ee22438d6906470c98aa15ce313e331a818acd4a5744d55605e735f2bb8ebbf23503db7fb036bf84808d871db4165e0fedc04203333f2b6295f8f9307cf62eb3d4872feb6d36b4d68472da91ec13c562b12012d4fc5e2d03818507a257ebb2e38c469fbe730be5f7fb10b6ec5c6661354cea27218da228e69298a65c6d74169eccc04f219f4d0791eea51168a60479ac04fa6aaa68c876d1ff5804a3dd1657ea8b535ed64effaa3f7d38e3be6c97e7bbd5d4a7467e2ff4ed9ec282388e93d766e1bec0239e4530db0b81d981260d2afcf86eed6ee27d30e7c0e112377e400d26a880e892f9bd58490aed073ef3ed977c11ee1af4777033efa9889ffc809e431a3d05a12b7ebea13a6242d003c3335768459e163097c62e4c99b7d5db0b0df431178d6e8d74101df87d503a50c4954967ca5ae628c0fb266d3413a21bbd2af0cd5ec8351b8b355e951e0826bc24e3ac2194407d95645fd3c6efd255c80877ec0cd2fe0cb311528099bd8c42c013893168fabd7834fff47c1ab767cd5307858c9bc599f6816101326c2eb9ffa5e9e1dd4e0aaf15cf1daeaeb691c067e9c6753117a63cabac3e6ed7f043171cefe68a3c81c6e1cb64e838f02cf2bb7f00bd341dcf16b9944beeff21705f3f0c135e9ca7f8cbaf7974e85de7d7aedcbc1ed1afa92181b81046c26d34e469f449f63d93241153be72fd14e01cd442bb0408a4c5351238208f8fba6e80a3a41583e823471ba55efac8b0ac78e929b497e4acbe343705ccff14e07b27edc9191940e849bc95e55f0f30f9e7345d39b84b7c6c2119215b83dff879b612e2e18f98694cc5c5f479913a576181c6594525fff31d97e9d9d5036fe5ea4bacd0bb430836aa0a4d01060ec1c4dcb14f65b22732577f303d528e7dd96ccf11f6e5114529151687e8c14597812f00c9e57610d3ab75e6de3ade5e055b035129f804f4e3a141cec9aa9cff42060b3c54b956aacf6380854256519acdc34e154f3fb546fe2c5db99b1f6d90694583340ad3d0d936ad7e26bd579be1953e87d5951b62a0f9d7c596536841a36b4d709a0f50ab80798540e01033321c9256191c6565a7f9d52385a08472b5c225deba98f469ab2e0bd9a674ae36314ad747bc7ceb397a9a7ca548145e5b49ea3f1327467f97fb872b17a7a5857ec68aa6500f535911b138328fe7271648d91a089cd360c2232952f8b39ee05a1176b5c5e83c0c1c641655aaae676fe80b52fe550c08eaab93a4af64fba25ffb4adb8aa10f693b504af7760242607ae01b5927841d2c7279421a6f928c5fc650e2517b2667bd83a5682d4021fb0b3504f410d9217a089c3f1295610cafe7bbb48f12050833ce50e8c103c1f82463ff3aa21ef798c2fcbc511905c496f46ee093ffcb5dafbc8b4e8d5e9d3b03c6d63baf2ae53aeda4ba3b9a57e4f9f66144e01ea6b38d792b0adbcf1a7554e6bb4cd0dc7523baf4805dc50c8117209c1da71d932437831f19243eecfe536c1e697e0125ffc28d8d2484b193e109bb95630357fa7dd83b8d28c6ed2b64e7fb5f0d20a27a7f835e61a704e4a2001acb501e9f4e617cde5c53d2655e4b14f176aaf17d35d00511a331d61fe0092ca15bb73c317f6dfcfe2ffdd6b4eaea3faec6d4991eb2c47f488ed355d9950f7cc3d2d248483c83908ab87d4af218c482b36f3935869c49439901b17c04206e6f342af8dc4c339f4d6222fbb97ce4e0ce2de08e7fba3f36ee7978d4424232a1c1f060d0462531d72ec0120f1c6ddc34a554298875bcfd91578c86024e26a4915dd769a1497f289f57550ad37d845a8059bf6a04e851383655da1b03b6518bbac49ad4f7b7d91ffb08c5506a0d23618c8b635d3351921e53b6cef89f300fdf750c2ef25bad39b330d9561a2126cd891da9d1929ce57db8cfcc32a8ff27615aa86a91a0721af8a6a38382fb88b759435e69cf47d66482b40f2e8cd3b6f286be4aa47935bacd41b92c24e247726afa671320025aa8fedd714a7a3f83eefce2594e6882a7122cf32e19a392a8befdf0b11c8115837401e6065a028fb86bf589b2263dc1df57ff9191706ef94c9bce88974d40c37a6c3e389427a87920bf511221d928cb2b8c8902ff87915db1ae87fab0483d02ab3af9b5c85c56172157e14d0a602bd41070430617c5b9b4f46250de63bb6e3af5ebeaa439556d01912fd5b9385430e67ff27e0e423dd394465242b178ee5db5c1445c84b7b0ed43989d40965db20e15a2c61753590475ae5f172fc32c3d27479677f4473d2b88e113930bf4a4ddf619493b59b9220ed99a8759af4314806ac57bd085dec90d5ee84e2d764dd4f813a1c8d7346ac132865a6c101f16f1e3a8c929d175676893010bb73e03cd8320d943f697d3898092778f1dd7af14cc8299c891ee7d67835faf788105e9ab4b207589ab3a2057c0f119f72565aeefb64fca6c553dc815890dd641576ac2f08a1304930a15676e4f3d1bbe9a874a3155d09cd51b6877847a97daa6f1cb2fd8e57a14bf0938753a4c17e4ba081bc4c1495fad6f0eb1169b375ba2406e543d8f37856949f845303a8515058e594a62fb4d8cf5570aa2ac168dd80b0dcf5ed02828d4f5f47fa9f16e156d8224281608042148763112012e17192b02df6b4425a8c8395b51af67de1d54be9c942057425387c59397fc2b880f3274b8bee22cf30a4948245c4f1dacdd68d74f2180fddf9344b1d0a4345e5a273210a330d703d64f240a21c2c69faafe597792d83c004972dcc1ad32001b6de02e9b0951230e84bed0b9325a213b222b5ed30f63254d4dbded210e085f94f7b7c6094fc067db41ee1af9aaa39c4199570c5f678998e9faaf2b1656f42ef94cb1ba21e4a3ab0fba8eddbdbab4eef05a21b34b27a47668c87e812fac50b3b8dfba5a064bbbbb7f0b981aa9dba79a3448ffcb35036a0a1b9159fc23f2151e1d8d1f24d84419a13b458f21416ffa31c2bd437389222e203345164636566dd7d2d4b3897279e332927003301c6e4c32bb23ba05cb4a55a76233236cfbc18c9d29cae486ad4321e42dc902e7f9b4a807e381c7bc090ad1fef0fcbdc91d38d5511329550fbf8876e311245cd04be064201b75f591f3a34126bb34b3f0d22848bc921490c56a29e5db1db3098d784e74ba0d2ae637c19c229992cc7e1b3e94d664ddc30b698b08e00cf467a466b6a997bef8ddf507eb2fd0074106deccb4d75b609a456c761c19431b2c43e1099c5074f6f5c89f1ae7a275d097465f0204c517cef30a525c5eff5ce6f6f6134bbc42b70843005615471f16ccd7c0c1cd34d1673799c56b8a8bf7505454fbdc060aeb7128b825e8c891642bad2820ae365a131054f220bf759abe00e87e7e950d18254b07f67e2c053a49d0b06f2b650ed73c3f93e4d7af130eba927724c70aa046d02b04592548407d79b01aab6e5fd1d141beab472a870cd6a4f6facefae337b25c22e9a1861a4ca5a71d250bcb306db8a46fbc4ab568111de70a4ed4f4b62cf9e466b734857beda61d56dfb6183a76b25479a8cc296740b889e01848f12b3566ae23652573e390e3c29b9bdc5663b0b4cd2d48f4e20804de36aef7bd9281c5fcf32b5bfbc80eb18268dd4a3f7c2bba6cdb3193ce0bfd8b372a929da8845d1f7636726e7d21c494285a470db355e7e058f52a1226a90b7f949c64a025d62a8d69077c9c109d09ead3ad6be9b36d94ad5c032c3b67903445f996c665108458ab4606452196162e149171bedea49535282a3b23b941c8bb40478e05cea23c3c5cdd4ec538fe68f01840d7f107648fd68bffd765de1826059c2de19d02b7bce263013f6723fbd174d743c76229356c293fc7666e506867860c9cc340bd5dbe2e4d93f9b2d903d669b41968606a54c5f71e5d6b92a8e48e0e48e65f2f13979572bdea0512267e6a98c3bbaf267cf0855bdb3a4e0a443b028a9548fb24832c5deaab02ead28432a6615a9bb96a972ee5a6773b428cdd3b351765f6329203a6b73b758f594afe055bfed1b085635d63c520f35f181c290064e0316b03696409b1cbcad2d2a988329759a13be3e671a681155e4ae637c4110997df819641102ad766342581b49e6ead051d2e2172649460f7cf5d4fb1f41c73289a2f4616eb703504ff2b17fd8a3556a85a81bf7b2b77fcd070d9761a5c93d3c4bf0f050f18b7c9a5c2b250dcc6b6f17ac25952b98690a5f2d2000f2a843da0045c267db72b99cc97ac8b9fbe1cd6fcc17a423278956d4af58afbc5825d70d533e5766b477d8a8b1bf7eaefb335a74241c5eddf844d9e1265706f117d2c1eff328fae33fbf2d2f2b8409d95b63053ccd56eae82153d7b05b15bd77e9b9dd03ab454ba1ee3aa44973ae5403ed657e9a5ed822012033b5a53e325d9c4342f6799b55960fbbb2f05d97b4859fcb5d0833d02e79f9ae8fbb333ea1d6c0474a86d744eac69aac4f0c0b8d3e6b872bf60df29c84d475ad67efa78ae69c6e8bda7e974af959c6f53ed1b516cf131b0645eb9ee9e9a71abf48c2dd492fdc711ed4a8c4f3242b1a397a8fa371d9eb8053df011d3ea44cefa4facccbb41bebce1d0ffab573de31ea0861d41ae7c84bf387c4be66af332ac39a4760def8c5c85a7cade0005e68280377497cf52af5d4201d2fc64b4047a6491abe24b0c9d97f753ddcd0a37bef327860a3064fe92e24aeed149fd1e015737d6815d2f2dd0ecc42c1a784c622f7c89c5b09a89b69367f8099e3b3a5d96386860cba986569bcfc67532739f1cb050172a4d4c973ac86875874e75a9105a4cd612da6a1c3d1ea0e7e0c5a2ebecd38fd2252abbaffbdd57c4563aa3dad5e974961d324d4b4808abb88a32128b73666f9396a977f40927449bae43f19b577b0a7b8a64e1b609b178a4a16e1f1942d59499eed76e5eb5e366a81128532abf67a39392dd5fe9af0de591b2301990b47cbb7a53be91a72ffa30348208d12c37afc953da7e3632c3df7028e53a6af8a3578c123cae5793739ffd9c9656573be094498cdef43fbb2747372c58986802ab2f486bb23a95d9a49c5df2a0542be6ca106c5b6499be2273704324f174b983a5767ecae81cbb5ba94e16f9c1465c245a02f93420e667b51e74ad664f8ea735461b8a10e25a15392b55f9af4d8c2f15101764d667ca220ef73308782d2c960c4484d7ff20c8e700fb5779d8a38653e0fecd49d81b89d542e2ea578b0dc755fcb44b121cbe5b08415e7722afe249d7a5530c53570e8e576bd703c736a4ce047ce041d088e921a68a2a454085113e04352e9118aefc0f8ffd162658b3baa320af0e0c9d140e4c0e93dc9b7dfee09c7c7e7538ceaed7e995d2ee6e1b897a7fd2b6c6dd3066c264be79189308929c798f3d9b2e02e8272c52041e20b5bf37824ff914f566730f43b5e95d72c2934dabe2fecc0cd826efdb7f96599a42e83924eeaaa5a94ed4877689f4627cff50c52c06d845b83b5d0b6c0b2ae53c73a88385059dc9554de26789a944e2141c18e2c5636910cfcb7226a20d7dc8f8b95e0d66d30130377e474fac503d4ee2908b7964e66bfb5fb08b4e995a59595cf50dc7a50cc7fb4686b9b9f504dd670522417f3567006ec27907d3c8fa1151d3f309cb82cc0bf48a6cf4c3bf1391ad58734ab1b3c18529b96b66144db43e25ea1582b7e08256507234101c8156d987f600ca60082ce6d68c12e5d0ba5b7c862b37544958c2b0bd1075454054d79ed8482fad1d7f055237ec474657924ab3d772515775fcf10f60082ae1759593b8598ab412d7d07f335cd75149650947d648dc0fc421463cc13155c8dc3c4cc8e367c0fbc6edf9fe1efc9041401e3bc80ecaced83919a16a14b5cc154abd6ea9c7b7fba156d768f438c6689230ee8ca4d85fc90b8a231789d8893fe37748b22e45026f4d31b019443e0b75cd2537d59b8e1afada92b8cfa3afb12d46ba9132228cf0ff3d82affd184dc0f540abd99610678f0c5665d8d32c786b0028413d7495478a72b36ca386e87e747758fc9a3bc878598e219231112ee2aefe2db2e79a1786cb7d40adcd7feb485a57022688f157aa92a3270ae70d1aa4a82d4865f428705e0a6292ac241499ad73b75fbb98333a15b7a6b75825422de7388ed49635ad30533ea2f913e47926866db165bb7505dc7ab36b115b567bc747dd47913bb56ab2c7ab2c89dffc45061ceb8fde6593618358371198583f52cd23a33504d67ea323a1f87607d7a56aa262d3501271af3c49ffe1129706871cb3739cb95970488999adda5e0b504cc543ef6716f9de556839178875d0ca2c4cef933486508917b441ad12a789bf61d71c9c7a4b94d58187c3842f91c7ab1227aabce235dea3b2d92e7b5d7715398d5c120bcf52543e6ca17a78fa3c534521651573fc32bd9775f976262c14fce2dfcf60e51d5e48127cfd022f3f064bc63ecc0989a341c4377265d81011d995aaa81037225a781b5a2557da34366a77dfc67d9dceac2857183935e1df270bcdec1e60517abf5acc9913c1574ed07c6c0c9e335b037811e694c587db9d8a5dc55c7734a2cde98f1acd9c067bab9a8bb480bb44688634c88f20a300bc0e5e0b3c7d325e67b6ba36a8f87b2260c6617a1f3ea770a1490216b40ef42ad812d4fa2f5e17b04d4041b562e6df65d79ab1631e69872b43077b91d525ad81945b9b1a9394d6175567011d65020d55d7263807a4dc139faa029211433c55721cabe0de9abbdbe6e0e15f81f23bbb1255315c63045858e1fe99f40dff36c6e5096272978b5150d9802b87cf62322039c92d714e9610a3a6e8eca7fb00295081108b82ece04efcc64ae8ee11fc9918fb20e184bec76bdf3ee0f25ddd055f901e049fec5339a806b0910621c61c767a675bf5b1ee0b05f90161336533626e243f643958b18588c850695d3ca15f18fcaa851599125dd814160a998fa94dbbbcbe56b8eff8c4e69f58987f66c5590043c4404e9bb11f93eda9e0f665e3fa3db146d2a70b3056a3070e0087276b8240d8b3327832b952eb4e40b2ea4d9d9e2900d4f46df6db27a30a07181d64c059d850942529e7450aa3ca1919489375ffef7f473e96e26f43b1cb25f3f22b4c651a0fd70c0520f28df94404685083346b174a431914fd4390161daca2f9a6ecacb986f812ce165b04e356f9a9559c378ceef80d2849efb63e1c2af3a984aece5674c3e5462787275828c8ac80ecdcafd9eb1c41287b95c36d40e2fd57cf318b9e5c947c51a8f65854cf6227b8cf1380f422264c852134b14a5bdf34ed2dc62fbfe7f2a0b8e96292c6a7d18623e090da6da78d885d04f2f43d130aab65a782f41254163cf95d6ec7273e25ecef18c6161569030f8f9e891b73d04f7811eb037246701ef9c1543bd2fd0bb75b64ddd8b89e502b587db2ea614a70ad7793b04bda8c556bb6dff7232c66e72900b5cd5d15404acea7af240fb56b2f6a543b0c7e316225588dafe5edf9667bd8465f650a8fd553288a749cabe5bf5ca97c8368f516930e9bb5f5e43e09d244e6485e6b9f82f095671fe2d91e61a1b930da01cf304cd4ea3d987c75fee4d3450b05a5046781c2f9b00b6850047412af3853eb0f2f31f98c63c8c50eee0827e2ccc39052a2ed85fb9265f39487a4e743723cf49b99f775eb65addfbb065a5b734b93f0eb587a56a4ef9cdd89aa56cc8eae333f4c836276dac5f9917c96651ee106862d280706e98321802002b10bce5f41f2bbd1bd646ddbfe01a7eacc4d70ff674249bb710b5771e322f309e2059daf7899e5d53ccf70063eb5ecff91ed37f875dbc4e6fd7f49961fa182a9e5451f98a529e0449e3669d4d2e9115dc2a9fabc0f95193c563f5d23f51bd138168b067e11d17fc6e6ada36af94066920718fad5b6f5e9b5f242cc791675be34f810185a49a1188c354ac8bc667a3373a5926007c86961e741c5174c7829e1d12ea6c41506df233614f4e254734d2aaa88a93973f4cd3ca39b954f4706a4de2ba147e868d13803b1c8c7f0946c307caaa33198e6ee3f130d84ef8d435f8807b21880ce7762a2b0a059653c9e5ade96abe23317ec9f6d77140eb5106f412151aca92d05555b6d2e8a8f9640c597f2c1452ead38ab01419cde0149a52e3611f1b463d59c439ae4e6359489aea53cd57dd0102d6ff229a585b00797ef482533cccdf0d1be85a2890d2750f271d39e3e811e385e06461b43906a2444e3135d0a77857fe77b4c0ee29df1b8d7bd28a3d655cfa588350d5380bcdf9c9c95f532f648d54185274ab3919c4b34b7dfa4ec9045f9c220e497d8dc16e0187e83e90809d3097e3d922489b8ccd6a94c92bce69e43c058ea94231d8984d09e61d4e51f052906b6900eea341db9c14877698e01a932b556e67bc771501562a63569bf6131899fa90394a8aab540524737d798c4018ab80a9051a01e14aa0269749c4d1e2740fc5c4d74c68447b1a05f593912791999018144ea40a197159b7dc0c69f7b644499f93828e854e71d763e94afebbcd0bfc2bb0d7517759a21fcdae6063368b99821191a098f51448a68003ab4edae2cab967b115c32193c883111cffb894f2f082340ca488433c8d1daf90e4bff44a5bf1da3f1971862feca4eb623030b14fbfe5859969e42181e3fa5f613298f1d6d8ed17ed3d8f5c23d89287b09656d2d59d803411911beabf5a0b9a6a2ecdefe43f429ed214551f4db908ded23fc475f8a16972e2332e3cdde70117b8025cbf4a082c52d11068eca5b51513207824b37540e7a41daeb32b5d3c85bf5a3e4756cc185e7a529b0ce3bfac7a01a0d96e56ae197ffcea342ca38089b33a344812d1deb7ac9faa914690e64328a2ad543452014106b23be36d566cd5ff702fa1c4558f298760ff6b1de1391ea417103c58572d794740fb21a979749b29eae74611b417a1858ed078667f3b097817dbb3d56ad368f9ba1e19efe08c450e5d4188d30eb22db6fa214a84bc734e05241027a9ea6ad8a8ffe09371f8295d1ea4c9fb2f851726543b02f2db7f03e8cb5d172849bdb7e5e222f4682b925451a39035249778c89b82ca02a653debb6c6f07fe2907118d289a67ad20ca5d6ee31c20204591bca807801366fe77229d880993c6a0067a23f8a760e03cf8e899b02544428577766abd960d8066a52d0967ebdd15c66fb83b4adf5d15742dc0632652caefea09053d3cd9ffaae750e2bc082d34564fdd5eb2ee37acb51c8478aa3c2391aafef14cc1896d2080cf3d91f2ab2a68986553ca7d86cf913e66f69787934813339fdd38892684f22b7a4ffbd4f3df69e112b95cbb3f2178e2d05be4ffdbee037264204a603b92a3009adc94dd3e0ae7043437a9847187c5ca953daed70733e9257627dcc4fcb63c5ca4f06171d63255b43614e9397ccc298eb6575ab3616c3ca8ec5c01a0f8a666ec77610391c59b7ad600d4796360f32ca380dc01fb4aecabdf8d9daa1e1b679087d7672bebffd8f224f3b5d22969a3453cb2c90a0e093427ab21d25289dd3211847e73cad83b073038bf31a819e566cd60a40bc3861ca8807047ea6c1c225f7418a0350d89f079d321fef4b3a838e27ee850ec852edba6c38e9378329d17811cbe5e39c6ab1f8c5bfe6dba1958dac2aef11eec341abe1b78b67046f17c036e30f1c924f50a7bfd15643f287420c380c8dfcd7296b7134f20cf0c22759a23d17ef94aa2834eb81df564e901b7884b9b717779b4daffde45d573f5cfb20cfdc1334d23fe92f5961f25a50b840b4eeba2781e67fa77219d454cf78f0ab592313b065b4992d19c94c53d8fb620c3cd7ff6974eee0126846ade5d3e4be8564e01db76dd9ef76126774ee10fece94a4959919353494effa00188e00648566083dc51ac83d08ca9d27eaa656704a17fe62181189c4ab317392645a3ac14a592082ebdd499e6be29285781177d54214f65979336aa68d02c2e9da240d2d5a3d6688d7204566ee9aa1dd08cd3051244fcaaef9442eb23793940807d28f99eb1106cd8740379dd5bbfa366a1eec7abdf9a7cd9153fdfc3f3f107b0c26efbdb485ba1f852f7ea8ff2619de307ad770183f6a7dd8d4b1478cf830ff25db875d4755958a1f116ee7f28f84c02212b645a4bf26dc7bce8ea080743de39cbeff54d05e541e8e092452aeaafec49b8f38b8ad8021ab024f51729335b07009521dc4beb3eaafd94dfae6d8a7ebc89698e9c3ec5c0a308e92db32de55aee7351978e0efac951fbb611a8c3531ce5e9f62986e47c8d35f86627ce0cf211dcdc0b889a8b2e41d1f10ab213bf828edecaa973482b47af029e73213519f317ded8ace96bd1df38ee26ff305abbc8604389ee72354285a0fbe6d65c08c9a03dd274f1bbac9b2629c1a31b6a4f43d6b90a0ca94e3bfc2535a3e33ac897747938180ad7edf6910cabf325a90e94001bf72e4d4e44a19a8fc874ad6275da1a7469e10aac16e61fedf046b267d2fb4ed09982457f05af4998ef5a8dc6559a741d1fec9b45a2f25114f68f28f685b8a9ffab4e5befe362b107adb2b3e3df5ef5f7e249e81c61e904bd73884ac8d2ff8f4c01e337cc8014ca5173c2b72e18fa7df7bd79539b9b6a7ab7770da84ed63b5bb945e67a12a499e32065398a0380115094a2f96f736c7e1433e332fa03442c28b4fe776c6b31d863653b3168d85d4248739513b1482702bc44500d1f01e7476f5edfe16b9469d0ce2b1afa1117005d91c5d11d0f504459a5afcc7827505a7266cc9b5ae65ae23556b33c1439e3529658c798ae966d86c3b94f47b21380474ef11b37c61db0f232556e35933747f38711120054d1d103c835147332362b7abfcf70f43c380ba782478445c247ce1c8b0e1af47f09716734d06b740553d65bddd9c5266e962ff209818e608e2db478705eb023a0b6f34dbe6215e718ff75962343dd19164d0ff6127631d685d3e5b6316e48b048f7cb8cce0ab699e28a2655a60ca033b7d7a9a164c94eb40967ebbd5db9320880782b196a8e16dde19a2501ccd280888004f58c5fab84f8a734d1c2d01890c3956a5f982206745f79356bc6b68c331729a8bbc2617c65645897d9312df649d08d73621bf5b8143e2733d60982ec97fddce3827d9bdca9136d47fc724dce39be243c97c1e4e408eac2c468648a842ef33b00fb516541497d81d694b0a2e393ce42902ea49bec9a477f67a8b8f9636b035351b5fd8b3aab2c588d1c383a31d28fb5e0984355cc6f1bba231e646d84d430650f66e651e16b3c0b85627cff027c37c7e3c0651322d17eb65d1cf30183919ea7f88bdce98d37075e3d9deb2bf8e710fdbe15a87c52c5e8eba7012608ed0ad5581b367e33e74ca9d973b88ecc8bbfb8b5a40a37903dd1ad3973ba8fd4de9ce9613d4acf2238c1a589dfca2a6a5390bfaab82781a56b078f4cec90c57b257e52105bee3dbec2210e176984317434c57fac19b21e3b23b13ca925908d68dfb6a601ddbade72cf7f1eb9f785a91ea196add5baf2ac72035362b4dab1c4619e77228b4c31d564dec0233b1c5a195d8d38cce899a5e771f8728e4879aa6790bfc75aaa49269c9de7b1e120fb4ca931588304a2cc985a6b30ec71a59f08d1e9db93de0fdb054b821a625e60c028900eed91b029b7260eabc4c42c99f6c7c2c90799ea50bf630bb54d0b2e245fb12659b85d0e041a717cba83ebe59db54feb82d3db4774b39b2708b84bfde8e41032b1f9afc0ff8e4d338b747c7f79ee043354391bf935c270292ec0517efc1e657977256aef370067dea62653bd82ec76c112039fa97c332afe0ea44e60920959c66a14ee3029db7ed1ccc8643162f7fc3da8dad2a0a586959dd7c53708e816c2706a94a06b625cabde8a64265a2a4d64524335c0e186b7bd18b1afe58fc863a66db53048e4aa2a08063137fcaec2ddbbf3b3638d5f09dc9ef22ab48287213d32bb0a14ae4580f3d7b6ad426c77b2c056e49570e148fe4606bff55bfbbf52a6eb3b7066664c34657e088d19becf1a0ee72934f75dcc84352d7081bddc18a05485a8d57f51a5000d75c1fafeff7ff04c301edada029c81df83f169f8dae9d19839c22d4cdacda2c3397ad5c9fe516a629ec2824d0dbf3b539d08cb79e18fe68955a5d817de8a51764ab3b9fcbcb7888a5e99f4c311f5906ea6a3f59f87beca07101cdcbf620634017be63c9f8841a0cba3b50efa306c59742d0c87756aca6ae48be64e17e60fdf0d347897d7d9285ddeb717da994c02c55c1486de7e219efd3587bcaf986c6fa7cd8326a58c511c2c9728d0704fbea26887053c7168518962776e7da5f9848ae0c6e0f5f3ea6474d9c28b6ae8d309d96e7b60958f42346c3a3c9398f4fd74a2e9332e38de6da322e01b774200e5cbabde0b7125c3a89aadb1ba41910f5e41993e06a8d63d4a6fcd7afeedc843bc0fa9785c02fdfb1b0092d19d0e50680e2ca6be96db75995c81553e20849558cfa617a0b9a88af9d171a455ca9901a1ca309243643062ca6a9da3dd736f32b94e06469b49f736094d1789d855448f0aad704ecd0b2c63025ab34b627c3065b2c1d1b0d6cc9fe4a056d5acc4e111d2dde05009e90a4ef7f58d445a30a0a465598d48f441f8c80646e3586e09142c74468c56c04e94d4c5285470a9f88bd1720abddb11851dc53d42d7ba987ccd06e1c75d181c0817f9331a35b529dc711be2818a9e0a633f4663dbc41b3f94b5872ca215f58701a9fd61643ef61c0bba9cfa0d3ee84fdeb1e34e66bf1f80b28c56621a06cf0ff90b40fb4dfb10a123971da72bf711a665cce405e4ae0a2298ff2c3858dd6a3023c719299bff67d769bc5860f1bd076f71656b7ba44ed27106f0d8e9b05267025e0cf3857685197cc65cdef8fb8c69e1a1df51a4616d5bbabf2b300348c3ec30600ea19078470f0f84dbdbd64d66760ad46d48ca1e6264883494979854ec872eb011cb87739ed252f681b2f3f72223a966829d11b0eb294d71247cf7492af8e4d3319cd70c4d0db579ba2a9755ca9c19d34c7b1b3eb91ce4ff539e3d1a8e66401f42a53cbce261c82d9c4d9754da81ec2ee72ec877a864fb0491780325352891e06956429531fb89c5572e39d6ffe9ec0ab027065758631bb1961c636816e370eab34e3f365c3ec7da5d49c6ac5bd65e2ae58a4d5e463ba6ec8b7bbaa31b748d3e4d99075d25e538dfdf7a79623ed1a75aa9d70f5e26c7dd9099188efb7e2f2d9b895907371ff8dec4b3452290e3c5056e51348948bdeff55cb9f7e6bd7bbd93508dd38e6e5a07662967ad1ca632cffca3ce71f3b0d446eb5d33d1ff2ff329f30664f7fa415b4ce6efcf94b4abccc2ab17fde87722c7c7a120ac7c8fb16d467b69b398317e53091a7bbe43316b40e66a0f33469ce2163d11d079791270bbd01bee841e7cf31fd60e27c0c649895b0f532900ae83e2bada50a42a3434c9238d0535f35d4cbf95c4b716165ad6a16cc687e1caba1f1e78d39f4e50dfc5574742f28b55e77bbb9f56d07bc5a500d8051a3422072a663d4f62aabec365f00ee18e462e81948fe5301b2a65199d0c1e6add2e4316fbf4408bd35760dee0448ccf52d1a84e3becf2808622e972e787668525926e81926b72f6d9264c19c19905c5c6e00dc3134a8faef5251ea8a49c5effeb70a481ca426e7c99b3a004f773a412a51173139f388b2d6f83baa3c7aed025b68df3a3b66cbc6e2f7e8828de1120fac023d9ad57121f2a9bbdb87f1d72e778141bb3a3e4d4a33b5c30147edbf06651b6e5ac64defa9bc59e7430d491265de51058ee2397507c30ffe5b67ade8f4b2694a491c2363aa5978954fe4d75c48bee86c86ddb5ecb936e13240370a6e47773a5503d4779db266075a40ce9853faecb81fad2fd129058feb9b16338f0152e6a414e4e80c7470ad37ec6ce0d56306923feb5a5d849bd80c40ea93452702aa4b40a0335e362e66fca4f4959201aa85ee4b256be0a90d0c4de41e33902288624d7523129dc278eedfb2a9eb468893633f2a57380d06de399db57f2ff5d510a0a91bfffcdea3732ce445247f641727631d12ef055dbbebaed92714fc42728e6c0205d98704dbdc6cdc14508ec4aa06e20da8265c8f58578a56370e60e4c147e029f2662666e704920b0d535e216835bdc4400ad74e7694245e50fc8c249d8a7f6aa4ddd2878d336bbf94fc5430cd2cbcb34111bac78af385acdb93a3894578412f28f0c789b093ad778e17654faaa3e4a3421036693319d02999beace339a6e41c895fa5e72ca7f2907412db0c1c9f858a8c53b0581b104f9f3614b6f99ee67867dd914ddbb2d84ce482daeac2cad019e6a8bb5f774ac39873180578f492c7bd5d554bb0bbc528bb6f31298543fa1ecc647b53f8d27280048a8a4ce908f90529d14aafdeae06f482ad804ed369782516ea8b7d72214c25f2fdad841e02dd2ac4dd4b6d0896f97cdd1100076f91973f2731630d9f805013b79d5b516aa0c428df92eef6f33fe5e209ff3f1b8a8002fcb3702abd227a0f73789d32d0888d235c03df4566cfe951980ef268c9d44d614a901d24d2e6487ef11a69d743443a08def1b7b72fbd81800d11ddfae45e031e4adba239744208555aa3ffdc15f785dfa72f667152dd7f4cd21cc88dd7f66d771910171ea625d691176cf7ecddfe01d5aea19aed57d47bc6c17d15d392cea10459ca5faeadf8f79ec1ea0b10b02f6848e6ed0a57f3c23312fcb76cf9f165466dd6dba8c020dabd1cfc1c2d68d4719b031cac3f45d30649e6ea64c1cd3f87df5711633df649f71d8bf47904a2a887684b099a7128fb25e222400fe0ced53e4df22d6853535f4ab90e412f3dbb46983ea194c6bdb142a5cf45521215e9cbc5332cd089d6f64ce9f954cf55d9a1dda8325d9afb317fab18541219e4bc1c585354bede3b088d82df1151e8b3d49f6da07710f0008ea02005bc7b0fdb34bff1ca259c7616f2ebe6f582c31cf351c43266ee90ad0bf2be8cd9d36e46cc90754789b96ea1c7b8fc7c0cdfca301c6b064e4095ad98e855d98fcccfd279ed06f89ed1781b1820a52bd49051cd37973541aca67263d526ed86baeda5dbbf628eabe22f70702b0c427665086bb10137facec54e55b5fd6ea8bf38e4a4523079879ac50522a6fea07e27166297e0587da748a24f693704477bce21ef9b8b3163c73646fcad8cb22dd13b096502267f112a5548c2e177de732938f37c7e43fde969934e3b3089e3ab2ee03a882129aa25364121f6431d6eb2cbedaaec5603a52373473a22c0c4782cc6131898470d4a36996714408e42ec8726c2fc56a83456258b656997f415f107fd49a53fd8188d1f95a19f3be423828940eb147de677f108dad350e72bb8849443a936b20f82a061c8068613d12f1ebeb682a51ced1ddce8f47a59e6d92411297de38c92aa6c403660b2e31329c9d1e39e6f497f8c94a6b4e025d40ab198f865b8e4f0ac2c225b688844b7e8410c756ffd362961cd80a23ed9504066ed5a7efc41c5c5022b620984b5bf8c8c815587fffa14f3a9944d28669359304d0abc2e45c1034ae3a883d818ef89a93b6eb62909ec10e23b70aa32a316a0500b031882155db62c6194d1e106c1c0163e86a6a11794d1316d27913168659e018a335c6ec9e3577592afc16bf5de1b930e3e8fe3856fafab9bb9b899a2c3f0f5716578da331d5724b1286a29086db72dc5198f138156df8c60bf9a3392e454cfcea02dd4bae5688e3f9d7b4639a811c691b4b41d3401bc05da0ca825ace1facc2ea6a512a4ffbeda666cf116e1edade39fe56c89e26adfe7ce8f4a1cf70e2fee6e7b3cb6ae1c17e45388a0d2128214dc8b5b080d012efb2d0cd64508fef2734bfcc6c40718aa2a5ea9776780a479348411abf4983500f2024989a03719039f037a54b0de5bd46e56dc1276fdb0e69c6067115d0b380c92bba103d84a2f1e548fe283a0926fe059feb796ab22c309a905aabff1b1f3bf9938145925e09379ca34829396b0d53852a1b66e5322fae2c8270628081c2cb050723b603fd4a6c7b70318677803bc22ebeb95576add6529b4b40db3ccb405798d9e785f3fd7565f41312e07b3f99f03a1e868741862dd083095cbc908011e7f8a165597c9530e90d5f3f5e943e8a0667e54f22acea290125299f04b18c0dbe4b71a211d524e596f2b2341bee1a4cd96f562fda626d4a64d5f7d6ee40da38555fa380275f14838e6fac1ab2508c4d89244bf9fcbe882a5d0939463fd541fa9ba3882a4f8186f631770752f1367015a07ff6f1d9b50a35241eba081057dffb1f8ac91b6a57cc9d9d0c10d3ef4a536248c14eb7da9fca7e49f8b1d3da972cddfad85b43ba2e67e94837f8734fde93c6d129fb9aa266efa309ed33dc3427a3f5081ef847407cd6bfbc28bf32ad33e6fc4840ffca07b2399e42277d8f0b5cfeec5e0a00560b096fff1e9fbad9e002475dbbb1c7e05655e45c1459e9ac87869b6320f030a17e51077cd546d4c39cc452cbe0e2cb0ff98674e0f432d388ef7424e758154fb973836e3bea14f560c7ee4c0a87616b8222bbf155c8ee44c66542a3a20133d9e7f6ffc2de8eed16066d5229d41800abb8bc4fc40adc630c73fffdc370716360f729359bcf87e482739bd928a560428204e2ed16605527206b3ca33c39798ab17206e94349d3c5f64e2b1a8f95c099686b949948201d292e21eb70b53c0d7cd02724e01d1233cc008af02e3c1728705f4d7b252e6d71098a29b501a2bad5a98ab28ade87758f60fda0a4fefaad4999f8f4791cf18a6159e7351e7aa5868acc9119e069a3a58234489adee09e20d538ad6e32896c213acce3d83ba0f41756e7ef9859ad18d74f82ca4cfad0e87d192d411f3a43dfa4e8bb5dbdbc0c063dcc8901f8dafd892e57dbfd0fb10886dcd855ec665f8ede6507974f3c8eb9bc0607fe234a5fcd0c676744864f88c2658a8ebac5a50e7ca0d9d96ef5eb1caebadb320f2da946af1f47ce599f4471015948dbe14ec7fd3c14c98ddd63d95d9e1e88d54ad3b02e483f6be77e36dfdcd90dfb0c74d93a82e2219a2f4c17f792ae42a56955f97c481aca6ed2896d18945167f6b28ce4a27d3c89cd2317fcbabcb4228542c30492778b328606a3a2644516061a496f595b13ecc0ea73f09f5052d5723ddf4ebf43794c02429f6a5bba68c79a0b21be83e28bf16969003f5cbe6e3cc77f4cd03bc4bee61710e9f63c8211f9b5782c2a48b663f3ef523e97d885a69a697fb0780d26b1607e8ac7c8a4a0ae4272f36d882510dd6a359ece57c48783d29698cf06caf4f63ec829406fa063a0c0e92bacf295cd33e098b586cbc369c16c3d4eccb990698b730288b0d801b5a3c1c1f4ee89379c39bc7e0991cb5153ff4be4e216cc3476764ea2e6a7f5651a17b510993b900e02d70b3402704055979dddd1e5282261bf17d566c8e6f09404affcdd375c353f22cd4204551311a6b615e735242d3b71b1364c178cf4ecd7c55c2d949c72d892c8acec034bd253ef7263bc6e11dcd56c8b97a078fd43b16470bb9cabc458b0ad57d3726f7f4d983797781d09551d10549be73fbd1c77ab67152dd538620deed02577dbe5af9706b2ac4eb73438442263e3d5c1be8fb51b0cbf506ae4249b99e898c02442d8dd5eea5017c2b08f5b2aff2ccb8c04ae3d30a81cc87da3cc86b8032caa88efb52b390d8b4360238dd4f112e71eb71355fd30a96ca811e22ce9064ffd88fa4a1b63afe7fe68fee4b85865e6c28239ad070c8843a3c19c1100b7a39200ae269f6f74189f0989f02dce653a8021196452ffc2a3d6c4bfc1ed8303b5162cd8d9ddf0a750f1db589ceb9624577d71dd025a39ec71dfc94852c8a763e9b513f33c30c088f0a190e3c139d72a2eda0a40e95efc3b34390c47eeda2603ae0ca45fb0c0b5ba261274d6300c2eee36782a7db4f87d6858004f44de1929cdac2f1db7059938e55812f846e011e53ee350af2e964721798e7975eb663949d87c0a2bf1ee68d149f322aa73582047cb6a6c6a28650062859820a5a3e5c5f9394a85eb7a999420ca4961318ceee15d64cbece9d9c0114bb3473e7bc813abcdb905da1f4e09079e39b1224107a44eceaa1ae6f741fcb1829356ded30593585fc84894b3e74715b86b9c7e1bc6d3e0d9410af5a4b0725e73e9da13d43786247a33cdc84132a1a757c4435eedf44cba6ac89d3938fa39a1712d276848c87c1d75963726f0f35a7cc5d806f614377ffc249e11044d7a55be2177761ac12b1c7af5536c50b5d1843c6cb03b1ebe73e9cdb64f426b3d3570d621db0c3f0339881917eb54cdeec0dae96f20a05d48e52e6d4dc95ffc564cd155f61b364921d86267364c2738c52fbd58f41498d137faa3f24798f927779c474e4efb19afe905218a68c5c2a72f8a77c4635ff644881d8490f345f7d85c4dbace9860ba3dba9f772f4168269f2a7bcf81b89c5e28a45c64ca851cb0285c03f3ca88a163b40ccca772155d1b9358f54483c1fe9da3b8030ae5a0fedc441f21bc5966ca762f83b437ca7b49482ab9c33fb1c7ee20565733b847dd35c9179bb266c70fcfa7231c66526bbaf50c854d0dc515be9139d09fe4793991d299fbb3a19e682505b52b1a62777132863895c76903faac45ae53cbe73cfa076b4bd7b147f6a58c24c6a9264be052fb5ce2693104d13338bd24e669ba5ed9c9890aa583f9799cc8b99d45fbf2557010b0e4f3a82c3eb7ba80728908c38f4933925e61236020a9e993b0d3d76c229163a1f4a187faa094731b353d82039657786d4ce73c1d37aea2d959d395a6047616cf4bd0a7132fcb1784b105a8b615094b6d1d47cd070823029005e57ddfa94be51f4ea93071ba5ec324b285b5e0072e996fe4558af8671f608129f7de4f000abf9b7135c8e1fef678b5c2933f1c3c1b61489876ceca4261847eba037929358b8be795f926622101453f5e949fcbc79cb8412ba50eeec27a6adbd3323de14269b6e9b753a14dbf9339de67632a47d7424bba91ebd6fce4badff59fb3661ff68e80847112322cd5f9e581a4671f8cdc1456b3320178636882ce09d741f224ac1c8146ea96ca7f3599edda018ad39f60540411a241ea7e1b43253e8eb34d780b7cbe5c6035d6e9e2848f40df48bdbe94643cc8d8f543822cb7cdd7bd633e642b330e615d2c70fcf1fb5dc1c4ada21d41d0967430bd94f2e462415885acb639dc9c584a3ec28d82e56517cf30106ca06b3ae54736a9a509d174fa160f5093350e567171a0fea06b745361e20df61f8c320a607a0896637039cc998b1664cf897d08bf0567a2ca29506ae3a232dcc6545029852b5a19629fe5436577e769392c4b33332fee78c209ce66e38de0f4c5ba11555986d2cdb6e1715592ebb406d3d5a09526dfb1dcd5640057c52274e769d3fc09d2a8657b9a3ddd961e10e1ffc513f44decb7a6528705945e3be05ff4218bf6412d527345a76903fa8f987d6a921aeb1c0da2c82c40f23b38516334067f2d27de2303869c1fea685af33e11e39b8800e505e8a03e5dffe95b035bd4664d6b24b071de96cb4f288515896f772038718de5c2c326e403cc9f96799a8aadc003f608b4be40d249f3890729ef90246c82d60a27b52eed494f5cf7bdc275e906ea446f901ce38c7131ced100a8a21b82a4e741163c3489f14aee2b70887f96d43fc03f4775e6a38f594a08be9daca5b36028a4aeda8c659f2590b468e6c140b16fcf960177b23d4c4ddf4d80a9bdb35c51dfced0c57333f9351721fa64de0f84a9382cbf3e227e17dcdd6c855cc61c5fc58a8778486312faba2e453d0568260fc9dbf0780bf63727f106e8dcdab4f01db543ebf719ad8fed3218c1eca27691f66c78d7d7282a12010a69dd379be5f190f66a06a81f088b11313c8a8925e832ffed708a2004cf11587bd479ba5c32c75d6b8d71dd523b571654d8c45cc85bf52f65f2d3c9e932eea22e46952af862f5d4aedf29295ff7429bae1964651d224136ad38a3cd143aa40f75fa38708728aa31694b8e4e7304325a31abf7a44c3372ad3c0ca737ff203e103532e23539172f92ba3f580e7eb9cd591e474e63557e07f4010d63234263f5826946cff3ff17670be3eb3c29dc3ca80f14149afe96e338b77f2095c8a9ccab32bf7fd5451a41718e5cae9dbe78ba003594be6cd01f620157f1f8d407f503fae4bee8a54d4876a8bf43be235d90b078763aca8884eae4fcfdf2eae02aa0090d892b73257a12f69463249bdce28a324b7a4e15c7b1e5e9536135c3f4ea1580d5e8e7f7ce114a8b0c43bfeab3db06a793e224f66d96849001ce21388c5d4455f35bc48ba5f209ccf0f88c7b96ef6dcaf2e6ff06adf82d1be6b1d3e9209211117ac83a9cd80b56a1bac1ae815efc3c8ce4dc0001ca350057397546f8ff1f19702619d55991ce37edcb3d6268c4a463e733f03f3570d6aa1d4138817021c3b6cfcb9df2ad1486b07a6ead5e33ef256d0b9c99cb943e4dea418cf069b65fa1341a946c49ee01f58419ab122e166208b0c4d272cc92f81407e83f08042f079395b65ad35a23bb7b1901eff6cfeba150e73650e30c522d5a093cb5ff08b4390e254cd0f875b237e18016864b4519b7f5ddabc6e55be59c7955470ccf717bb17fea7c377baf34ffb1637f44b5ab98426bde375d494a4e529fc5a9f2b26911365fed0c25c90149d96c01759063e82b415c17f0053caad83692d32528e2d1182d472c8b40b75af077cc31eb377b16a9df9b991bf703a73ae61db3b34205c46b1c72c88d23846797d76d2d192e6776c36eca50aa88e66d963ba027b8d828e596d3a831983d4352b5ee3897738adb2d5eebc1704b5bdad828468d707343d7a8a4cae708b65106fd8454e0c897f873d21ac8fc4a87f52f6de8435f6fcb47665013518036e7850bf23f702dc510f66cb54d9de8c549291e4c9bf838bb51dcba66313c7cdd18235be245f0b47e4f5af6ea1901bcb23dd9ee14ff225936902b06939a69f194a66b307d603e809508bfb46d3417b951720f42a800fa9e1c1a0f9614e346850401e4e53a83b8e70f121223f0ab613ee6a4711aa2bfb6a3ef1da838338ab1d641c0d68fc5fd3e0b54f149e3f3106187f2869d0442bd77a2c5bb942addcd760ed2a52ba31525cb77534be0b21b700c13f76b0177da41c5c0aa3ea654880a6d51f5224e3f3583c2e7286255028029c9b1b4687e701ee99e5e4d48a7a081e4ac7f3d00291d94acdf8efb7cf18f72a286043b2cf5876f29ef1c158681682fdcc271647e871e0321abe7a5fa875e666151cd3c918407692b183348c9f894381bee8b5532c0ec1297392b0910556d457425662560832d8f80b103ff7534aa4323cd23f632be46df643d276624d5832e87376ea0b5aeb0eefa95dfa7de79010206bcfccc8eb928076658a21765a42d39057325c74d735b31701243c90bded8f507dcdbd9b03f0e4d0f24d48f798e211bf105c42e0bedc1005cd599904271ed92f9e6282044266188b7d5f7e2c29503d9960f50f3604ca69d88628b7dbe4891016205e1a4584df59264cb70c95c53523ce087cc493a808f15a1232ba4c8e6d7d2df844a1c2e7dc011ce88382fe7ed82badcfc85f6d2443decd0fdbfbaaf543f2b74913d3a3d3f6f6b3d531b44cf6810272d6492449b9820ef17406f8eb2883b6d8ec90d534bbc2812355a9bfda6f0384050ead49c0dd88dc2522e7326ec6d204a2af57e87794eb21a43e29ec81ae1914781c11ce96f1e7d3e50c570c6ce1f04c27ff42c3f3c3522e4fbf2abbe5946d12406f6dc7a16ffcffd950744156b8a009d39c6b496b5d015c67d3df525a65892a357a62de8e2d8e77fdbc6266a4307c04204bd63a6efee72d3beb3082ddfac34787895b7aac867d948210c2867a253ed12867b2ce706fa9ca42167e1f1633386f3b26bfe7528b32bc46b6f36e1f30751af3d93231d15359486c89e3a2d203413032d8100a81567d2a6adae7217f550bec3a33b3e72d41c9c2b6c706339f2cf7b1bd0b516d271f8a459779bb4eb23933647b04727cf2f1aa0b078f93e31b16c121934c62db96ba80d367889e9ed8d24d0952ce0ec30ce713e8008f3bc84fa102d3e15cceb479f39d8ec6789ad21a211bb1df4fb1d723c193fdb21ec1fb4570a79d91f5bf99f75f2fb27d4edabb7c68627f9004e9c40f5298095e206f6c3ab5bbc95d2246d2230a9f7e910fe39f115da94ff1aee7a45fac486bf111f986c951a3e31b8dad26aa5767e400f00cd13767633b13bdff7b7af12e62e0d6346c6496804b189a1cdddf49b1cc05df02b4c07a6e67e88d090b75d486a383cca8d14c353386e19\"}",
- "key": "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIJrTBXBgkqhkiG9w0BBQ0wSjApBgkqhkiG9w0BBQwwHAQIPAN75riWFpoCAggA\nMAwGCCqGSIb3DQIJBQAwHQYJYIZIAWUDBAEqBBBdSHvgJxfhTc1YPTPA/40tBIIJ\nUL6wSlfGahITNLbxQCa6ocwQkXsbyJKdMspAmXPdrf71yA7QDLFxoiOHXPUyhgGS\nakJoboSNPccKCmaEtYjlnKZA0NlajyDlzDexc8YxAWus+34ruZm2Dx7mMT4W2WFx\nbAM9hpuVRkD9tA2oZ0kT4OCk+nx9VHCkJMEfGs9plC9sZbt2zNL4uqFwA2dvvx5r\ngFt2cMUQTwtf7re8T/Szet17dPbam+S4kUy0NTwkIFgsB26Wn9OhCPMZgvScy+bf\nVTDKWZoQ0sx4c+T6wMcZGOS758df8G6VEv7RSsGpcu+QfWNpUbAoxkE+bf2ggVxV\nj429hmNoGRYx2c4eOii5AEtADekWVFP9p81hg4lW2Xo1Xmv7ckHh4OIDWxbhOMS5\njB7GoM9TS3LQ4CuIRyPE8kL9ib2p8r/08PcwBoLpTNBXvSZ/NP4G52A4Yah16Zkd\nC859N1Z/yT+zyteNMppyj1xjkAgrtUWB7e9za9mnROwfFCLWYxh2sRJijV0Ii241\nDycI6z7EmHLRGOVD0XMIYC10JQ4vzII3YNT5nyfVQsg+UqMUi54MKZCwe7wtR70E\nse9h1pkkSuEjqamCquhQNGFANhsi8jLzz3MvIHq5VXrDO5v3pxWA69niw6+PH1Ni\nC/w+KeNQqSOTjIO8hBXWg4+tCDWhbhRcZmkaVdR59TXlhzi3rkxIjvuaCiiva3AZ\n0zwBjCBGTZb7TWc5SK9h7UI3n5Z5lHCORUaSwE0NoUj/ywtiuRwAzRomOtupEfJw\nCGXJHVjZBxPW1XlU93Uek5wGiFTrP26mdVY4Eowk4H+o5duCvVavq4FRUI0VRgjQ\nDFABBnfQIm8obuvYEIMMqwWVEq1/zrTqSMp954I3o0x0rFUfwRLs0Mjlc4BuIM51\ntdMKG03MoNnn7Iai5JooVUZ2INeseaPiTD5JU/EA2ucnjl1NUNs16MRPLbtp1AWE\nNrEHu4Wj+/rYfqN3Q5O+xJg0hHUgzDjli6lT09b3ZgllqhQZxU3SkdfCJ3Qh1px7\n7S+uJANRa4tQsv5wzv5Mo1kq738AJ224pgBxVcEyK+0WEn0TfLMoEwQH4cqLmC5v\n3yWbWH67dQCk3jL2KMm/4psWn67JJEBRfKsmnY6n/nZfmaTEETFWIQbJNdbw2rST\nSJGVpY2ksxdACtQpdO4zHw73P1/0FD09JzksTQSAIOD4jKsYDPLIgi+bhDCloc+6\n2R0sIwAN1zRL4thxQI75ro224xWVbqnEvfkSZJpD9IkBoFAqbwW7aFWd0GYdiUdz\norOWfwNaezDiOPTLw/dqPbAQCyH3o4eqs6D+RMLA9pJuEgHpVSwCmLKzljMmUs4U\nAhHzlKpjPLWzR3kirz7N/uGK4aqGAdCxYcl87taYSJ0eY9V+ggC1J2LbRla3Wdet\nkOFNtlv9m6z3Jtp1uwwQONLOxTs4spc5HhnsHVlQAFToVdYMUHbw3NoZN3ti5VEm\nUjuvgYRhfrNg5ACX4fqIYGBOAOqYnltGZfwipVxUhIYtS47PpHxVyosFVzgZA6ZA\nJf/ifINpLA3AWCp1vWGiqjbENtDfreSA/p6fU6rgPegV4opie1liRlYk5srRHKZM\nc1rPP4aLzPc5G13MPKKdTLIC0OmJ5GfFW/kebnZyey2o8dfZ1A61Kqy+4b0zshJW\nb3LT7j2jIcqMxEJ1gUO8XS8pPPSn7sqnww7LIyTcE4j/xr0+L0a71PjILyv5bNCP\nL4zFf/YkIxFizgrJcObZBzxvwLlo0lX84J1v1Zo5hXEC/1cNLzz3J26voVwgzjB7\n+XJu/K2imtzFHtMQjuvISTmHfzFfeUKS1RHShsqcViSUU0Xk45XUB5bllMJ1laBK\nipIQz+7SzGqP5dBsVWjjPBg+fFuiSgFgefuNqkt9PcyF1EjJE9TThwXs+Aq/QRKH\n0O1xSpZ8trXFfUi0oQEWl7iFMe2X0NJKHcNCSFIYr7CGNGlXZ22xrRF7bGWakXYz\n//xHzBae6MWaA1F3YmjDPp5k1fzVz698acKbN3gIi+S57VuUSwuCnnr8vccwx0Dq\nDNGw0PIQj1SGZHXai09bGpB7HtmZSTbaUOJ/mhjj0SyJd8zCeD326xIpJx8Hgxy7\n8hl9Q4NOINWLLF5G645zBdLD3yrt/k8miXLJCj8ScCfV8vDRiv0uc/Ds9BaDsEvq\nfMN/wAJLw7Z+STcNpdmN1Ktgt9XfkqYzB7FU81GxKljOfSyqCZ/IJHEtN3gNGSmA\nzVNVqLfvypfJJ2tkU77l2AVMTuWwOZQcPOPhFGv/okwLXZp/7Uf9TvhrCaa5LtS2\n3oaGA9RmtQQHdRtDN/jrMpIPtQ90ICcj/bIavIfvTAR+g2uNxVz7fjGarBQGoGX6\n6Fc+n6pWbdWiMXXeI1Uk09Nk5xBy1s5AOJsJWgvBV9s4N3miHTWmajb67+p9qhBj\nUrkVAyTsLnMapMBpW9P7WsQSAdxULCzEowXTnmyvkxbyfDVGur9wQlCl9X4GkZf3\nWiOLKpGDl5vnYGqRQUT9b0MNaK7uGKa21OPgLhWbeVufggVb0MeQVtnwvIRaUN3W\n5cfkinnbT8EpEFb4qNJ53d9XZa1/RtWo7Uuq7MupNoaf0xpP5z6DwGRawyeuoXNj\niEfisHIHeJmnrQE09z7LS5LYHp0d1L4D+fIxdNFc2iqjl3J+arMz/MlU2+kEwQHO\nNWbBHwpQklPJ1xbO7mF13ThjRv46f3r//YlkR8ywIahc/pmzNj4PQjBHVdQEN7DQ\nZyWoIOc/dz75htSAbcS30VsdwhVOZawlxscBIeis8XlB2vPY/aoIhhZ2T6qECYPK\nwYVpqxmpNUkKCtvbEQfsrMkZPChNqndu0taqXBq3wCz6aQYFg3I93syyzaK4HdhS\n/WJ9T3BHoEiXrK/FkpAZ0JIp6z+D8rHRgrj4SA1e6zMHiFq4GkJzvEhSF3jwDNkL\nByzNKHfA4Ks2+RSIgLuc+UqnpN03uk3c6XhY7Kg9GG37g5TVdtodl0SpDhBaKq/4\nAtcOQZjhh/XI2c6Ca1ZNjI61g35nCTFcw8fogM91dc65Q8L1mRpiqTuLPUypG6xM\nu7zVoJxV1jTCZIYxnfwaWALy+5HniAEJKqhdRx83bw59ezaUbLr60GNB6XacBGI2\nso/l+UzAkIDPTzRHzuSJUpu92cMtTLxLqPgpPOStWTJI\n-----END ENCRYPTED PRIVATE KEY-----\n",
- "seal": {
- "hash": "655806c8f1a6dd94f3f7d42cf82520df9e39a5f7a140bc45e3c453552479264fc98b2d3aaa6b22246d7fcf23fea98a71eaadcaa82630bc30647d127c009817c5",
- "salt": "6db1932f0babfdb5e91a3737ca83647b556575dbb9506e18325a7c5dd989037b"
}
}
}FIXME: This and other inventory endpoints are not yet documented since it's a work in progress.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}Creates a software package in the inventory.
The package data
| id required | string |
| name | string |
| version | string |
{- "id": "openssh|2.13.2",
- "name": "openssh",
- "version": "2.13.2"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reads a Software Package from the inventory.
| id required | string The id of the software package in the inventory |
{- "id": "openssh|2.13.2",
- "name": "openssh",
- "version": "2.13.2"
}Updates a software package in the inventory.
Note that you probably should not use this, and instead create a new entry.
| id required | string The id of the software package in the inventory |
The package data
| name | string |
| version | string |
{- "name": "openssh",
- "version": "2.13.2"
}{- "id": "openssh|2.13.2",
- "name": "openssh",
- "version": "2.13.2"
}Removes the software package with id id from the inventory.
| id required | string The id of the software package in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a operating system in the inventory.
The os data
| id required | string |
| name | string |
| version | string |
{- "id": "debian|15.1.4",
- "name": "debian",
- "version": "15.1.4"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reads a Operating System from the inventory.
| id required | string The id of the operation system in the inventory |
{- "id": "debian|15.1.4",
- "name": "debian",
- "version": "15.1.4"
}Updates a operating system in the inventory.
Note that you probably should not use this, and instead create a new entry.
| id required | string The id of the operation system in the inventory |
The os data
| name | string |
| version | string |
{- "name": "debian",
- "version": "15.1.4"
}{- "id": "debian|15.1.4",
- "name": "debian",
- "version": "15.1.4"
}Removes the operating system with id id from the inventory.
| id required | string The id of the operation system in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a IP in the inventory.
The IP data
| ip required | string |
{- "ip": "192.168.1.1",
- "version": "ipv4"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Updates a ip in the inventory.
Note that you probably should not use this, and instead create a new entry.
| ip required | string The ip of the host in the inventory |
The ip data
| ip | string |
| version | string |
{- "ip": "192.168.1.1",
- "version": "ipv4"
}{- "ip": "192.168.1.1",
- "version": "ipv4"
}Removes the ip with ip ip from the inventory.
| ip required | string The ip of the host in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a mac address in the inventory.
The mac address
| mac required | string |
{- "mac": "12:34:56:78:90:ab"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Updates a mac address in the inventory.
Note that you probably should not use this, and instead create a new entry.
| mac required | string The mac address of the host in the inventory |
The mac address
| mac | string |
{- "mac": "12:34:56:78:90:ab"
}{- "mac": "12:34:56:78:90:ab"
}Removes the mac with mac address mac from the inventory.
| mac required | string The mac address of the host in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a mod address in the inventory.
The mod address
| mod required | string |
| data | string |
{- "mod": "module"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Updates a mod address in the inventory.
Note that you probably should not use this, and instead create a new entry.
| mod required | string The mod name of the host in the inventory |
The mod name
| mod | string |
{- "mod": "module"
}{- "mod": "module"
}Removes the mod with mod name mod from the inventory.
| mod required | string The mod name of the host in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a module variable in the inventory.
The module variable data
| id required | string |
| val | string |
| info | string |
| mod | string |
{- "id": "module|4.13",
- "val": "moduleval",
- "info": "moduleinfo",
- "mod": "module"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reads a Module Variable from the inventory.
| id required | string The id of the module variable in the inventory |
{- "id": "module|4.13",
- "val": "moduleval",
- "info": "moduleinfo",
- "mod": "module"
}Updates a module variable in the inventory.
Note that you probably should not use this, and instead create a new entry.
| id required | string The id of the module variable in the inventory |
The module variable data
| val | string |
| info | string |
| mod | string |
{- "val": "moduleval",
- "info": "moduleinfo",
- "mod": "module"
}{- "id": "module|4.13",
- "val": "moduleval",
- "info": "moduleinfo",
- "mod": "module"
}Removes the module variable with id id from the inventory.
| id required | string The id of the module variable in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a host variable in the inventory.
The host variable data
| id required | number <float> |
| key | string |
| val | string |
| info | string |
| host | string |
{- "id": 1,
- "key": "key1",
- "val": "hostval",
- "info": "hostinfo",
- "host": "192.168.52.132"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reads a Host Variable from the inventory.
| id required | number <float> The id of the host variable in the inventory |
{- "id": 1,
- "key": "key1",
- "val": "hostval",
- "info": "hostinfo",
- "host": "192.168.52.132"
}Updates a host variable in the inventory.
Note that you probably should not use this, and instead create a new entry.
| id required | number <float> The id of the host variable in the inventory |
The host variable data
| key | string |
| val | string |
| info | string |
| host | string |
{- "key": "key1",
- "val": "hostval",
- "info": "hostinfo",
- "host": "192.168.52.132"
}{- "id": 1,
- "key": "key1",
- "val": "hostval",
- "info": "hostinfo",
- "host": "192.168.52.132"
}Removes the host variable with id id from the inventory.
| id required | number <float> The id of the host variable in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Creates a module file in the inventory.
The module file data
| id required | number <float> |
| mod | string |
| folder | string |
| file | string |
| content | string |
| source | string |
{- "id": 1,
- "mod": "module",
- "folder": "folder",
- "file": "file.txt",
- "content": "content",
- "source": "source"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Reads a Module File from the inventory.
| id required | number <float> The id of the module file in the inventory |
{- "id": 1,
- "mod": "module",
- "folder": "folder",
- "file": "file.txt",
- "content": "content",
- "source": "source"
}Updates a module file in the inventory.
Note that you probably should not use this, and instead create a new entry.
| id required | number <float> The id of the module file in the inventory |
The module file data
| mod | string |
| folder | string |
| file | string |
| content | string |
| source | string |
{- "mod": "module",
- "folder": "folder",
- "file": "file.txt",
- "content": "content",
- "source": "source"
}{- "id": 1,
- "mod": "module",
- "folder": "folder",
- "file": "file.txt",
- "content": "content",
- "source": "source"
}Removes the module file with id id from the inventory.
| id required | number <float> The id of the module file in the inventory |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Writes a value to key key in the KV store.
Values will be serialized as JSON, so you can write strucutured data.
This endpoint will use the remainder of the URL path after /kv/keys/ as the key. Examples:
/kv/keys/example the key is example/kv/keys/example/of/a/nested/key the key is example/of/a/nested/key/kv/keys/example/of/a/nested/key?with=query=params the key is example/of/a/nested/key/kv/keys/example/of/a/nested/key#with-anchor-data the key is example/of/a/nested/keyWhile you can use any approach to structure the keyspace, using a pseudo-directory structure like is often beneficial to keep access policies intuitive.
The prefix kv/keys/morio/internal/ is reserved for internal Morio use.
You can read these keys, but attempting to write to a key with this prefix
via the API wil result in a schema violation.
| key required | string The key in the KV store |
The value to write
boolean or Array of any or number or string or object | |
Any of boolean | |
{- "value": "My value"
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Removes the key key from the KV store.
| key required | string The key in the KV store |
{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}Returns all keys and values in the KV store
{- "my key": "My value",
- "some other key": "some other value",
- "better_name": 12,
- "PIPELINE_RESULT": {
- "status": "success",
- "duration": 123
}
}Will validate settings so you can deploy them with confidence.
The Morio settings you want to validate
object | |
object | |
object | |
| connector | object |
object | |
object | |
object | |
object or string | |
object | |
| tap | object |
{- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}{- "valid": true,
- "deployable": false,
- "errors": [ ],
- "warnings": [
- "Node 1 runs Morio, but is not in ephemeral mode, its settings would be overwritten"
], - "info": [
- "Settings passed schema validation",
- "Validating node 1: morio-node1.tokyo.morio.it",
- "Node 1 resolves to: 10.123.12.15",
- "Node 1 is reachable over HTTPS"
], - "validated_settings": {
- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}
}Will validate preseed settings so you can deploy them with confidence.
The Morio preseed settings you want to validate
| url | string |
| git | object |
object or object or object or string | |
Array of objects or objects or objects or strings | |
object | |
Array of objects or objects or objects or strings | |
Array of objects or objects or objects or strings | |
Array of objects or objects or objects or strings |
{- "base": {
- "github": {
- "owner": "morio",
- "repo": "preseed",
- "file_path": "settings/standalone.yaml",
- "ref": "main",
- "token": "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"
}
}, - "overlays": [
- "settings/overlays/idp-ad.yaml",
- "settings/overlays/idp-apikey.yaml",
- "settings/overlays/idp-local.yaml",
- "settings/overlays/idp-mrt.yaml"
]
}{- "valid": true,
- "deployable": false,
- "errors": [ ],
- "warnings": [
- "Node 1 runs Morio, but is not in ephemeral mode, its settings would be overwritten"
], - "info": [
- "Settings passed schema validation",
- "Validating node 1: morio-node1.tokyo.morio.it",
- "Node 1 resolves to: 10.123.12.15",
- "Node 1 is reachable over HTTPS"
], - "validated_settings": {
- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}
}This will handle the initial setup of Morio. Or rather, it will ask Morio Core to do so after validation.
This endpoint does not require authentication. However, it is only available in ephemeral Mode. In other words, once Morio is set up, this endpoint becomes unavailable.
The Morio settings to use for the initial setup
object | |
object | |
object | |
| connector | object |
object | |
object | |
object | |
object or string | |
object | |
| tap | object |
{- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}{- "result": "success",
- "uuids": {
- "node": "40361cd8-a149-4675-bd46-11a2b48acd04",
- "cluster": "26e66c95-c342-49fc-8e3a-f5ca69b392ba"
}, - "root_token": {
- "about": "This is the Morio root token. You can use it to authenticate before any authentication providers have been set up. Store it in a safe space, as it will never be shown again.",
- "value": "mrt.7297ef89ed8c855ffc6786e0377bb7bf5e0137dcbc367494aebd39782747ab43"
}
}Returns the current settings.
Note that Morio will encrypt all secrets and remove them from the settings. So this endpoint returns data that is safe to backup.
{- "cluster": {
- "name": "Morio Unit Tests",
- "broker_nodes": [
- "unit.test.morio.it"
]
}, - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "TEST_SECRET_1": "{\"iv\":\"4b16f0efa70cdcad568441143b0ebbea\",\"ct\":\"28262a424d8b3378b2ac78c7074deeec\"}",
- "TEST_SECRET_2": "{\"iv\":\"bc0fb68aa6f37cc4eda8fca6a50d7448\",\"ct\":\"cc786dfb1c5fe6dd4ad389855a206d57\"}",
- "LDAP_BIND_SECRET": "{\"iv\":\"8b185698a44410657ce84ba6a35b82ce\",\"ct\":\"7ed3e4c461455f3a4a8b44f834935b6b\"}"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "mrt",
- "label": "Morio Account"
}, - "ldap": {
- "provider": "ldap",
- "verify_certificate": false,
- "id": "ldap",
- "label": "LDAP",
- "about": "Test LDAP server",
- "server": {
- "url": "ldap://ldap:10389",
- "bindDN": "uid=admin,ou=system",
- "bindCredentials": "{{{ LDAP_BIND_SECRET }}}",
- "searchBase": "ou=Users,dc=ldap,dc=unit,dc=test,dc=morio,dc=it",
- "searchFilter": "(&(objectclass=person)(uid={{username}}))"
}, - "username_field": "uid",
- "rbac": {
- "manager": {
- "attribute": "employeetype",
- "regex": "^manager$"
}, - "operator": {
- "attribute": "employeetype",
- "regex": "^admin$"
}
}
}
}
}
}This will take a full set of new Morio settings and, after validation, pass them to core to be applied.
Note that this endpoint requires you to post the full settings, so when making updates, make sure to leave nothing behind.
The new Morio settings
object | |
object | |
object | |
| connector | object |
object | |
object | |
object | |
object or string | |
object | |
| tap | object |
{- "name": "Morio Standalone Example",
- "broker_nodes": [
- "morio-node1.tokyo.morio.it"
], - "tokens": {
- "flags": {
- "HEADLESS_MORIO": false,
- "DISABLE_ROOT_TOKEN": false
}, - "secrets": {
- "AD_PASSWORD": "aa;S009)) _S asd0AS"
}
}, - "iam": {
- "providers": {
- "apikey": {
- "provider": "apikey",
- "id": "apikey",
- "label": "API Key"
}, - "mrt": { },
- "local": {
- "provider": "local",
- "id": "local",
- "label": "Morio Account"
}, - "ad": {
- "provider": "ldap",
- "id": "ad",
- "about": "Morio Tokyo branch on-prem Active Directory",
- "server": {
- "url": "ldaps://dc1.tokyo.morio.it",
- "bindDN": "CN=morio-ldap,OU=Users,DC=tokyo,DC=morio,DC=it",
- "bindCredentials": "{{{ AD_PASSWORD }}}",
- "searchBase": "OU=Users-EU,DC=tokyo,DC=morio,DC=it",
- "searchFilter": "(&(objectClass=user)(samaccountname={{username}}))"
}, - "username_field": "samaccountname",
- "label": "Active Directory",
- "rbac": {
- "user": {
- "attribute": "samaccountname",
- "regex": "."
}, - "root": {
- "attribute": "samaccountname",
- "regex": "^(?:joostdecock|sorchanidhubhghaill)$"
}
}, - "verify_certificate": true
}
}
}, - "ui": {
- "visibility": {
- "mrt": "icon",
- "local": "icon",
- "apikey": "icon"
}, - "order": [
- "ad",
- "local",
- "apikey",
- "mrt"
]
}
}{- "status": 400,
- "title": "This request violates the data schema",
- "detail": "The request data failed validation against the Morio data schema. This means the request is invalid."
}{- "MORIO_API_JWT_EXPIRY": "12h",
- "MORIO_API_LOG_LEVEL": "trace",
- "MORIO_API_PORT": 3000,
- "MORIO_API_PREFIX": "/-/api",
- "MORIO_BROKER_ADMIN_API_PORT": 9644,
- "MORIO_BROKER_KAFKA_API_EXTERNAL_PORT": 9092,
- "MORIO_BROKER_KAFKA_API_INTERNAL_PORT": 19092,
- "MORIO_BROKER_LOG_LEVEL": "warn",
- "MORIO_BROKER_REST_API_PORT": 8082,
- "MORIO_BROKER_TOPICS": [
- "_redpanda.audit_log",
- "audit",
- "checks",
- "events",
- "logs",
- "metrics",
- "notifications",
- "cron.hourly",
- "cron.daily",
- "cron.weekly",
- "cron.monthly"
], - "MORIO_BROKER_UID": 101,
- "MORIO_CA_CERTIFICATE_LIFETIME_DFLT": "750h",
- "MORIO_CA_CERTIFICATE_LIFETIME_MAX": "17544h",
- "MORIO_CA_CERTIFICATE_LIFETIME_MIN": "5m",
- "MORIO_CA_PORT": 9000,
- "MORIO_CA_UID": 1000,
- "MORIO_CONFIG_ROOT": "/home/jdecock/git/morio/data/config",
- "MORIO_CONNECTOR_UID": 1000,
- "MORIO_CONSOLE_PORT": 8080,
- "MORIO_CONSOLE_PREFIX": "console",
- "MORIO_CORE_CLUSTER_HEARTBEAT_INTERVAL": 30,
- "MORIO_CORE_CLUSTER_HEARTBEAT_MAX_RTT": 150,
- "MORIO_CORE_CLUSTER_STATE_CACHE_TTL": 20,
- "MORIO_CORE_CONFIG_FOLDER": "/etc/morio",
- "MORIO_CORE_CRON_DAILY": 24,
- "MORIO_CORE_CRON_HOURLY": 1,
- "MORIO_CORE_CRON_MONTHLY": 720,
- "MORIO_CORE_CRON_WEEKLY": 720,
- "MORIO_CORE_LOG_LEVEL": "debug",
- "MORIO_CORE_PORT": 3007,
- "MORIO_CORE_PREFIX": "/-/core",
- "MORIO_CORE_SERVICE_CERTIFICATE_RENEWAL_DAYS": 135,
- "MORIO_CORE_UUID_FINGERPRINT_LENGTH": 6,
- "MORIO_DATA_ROOT": "/home/jdecock/git/morio/data/data",
- "MORIO_DB_HTTP_PORT": 4001,
- "MORIO_DB_RAFT_PORT": 4002,
- "MORIO_DOCKER_SOCKET": "/var/run/docker.sock",
- "MORIO_DOWNLOADS_FOLDER": "downloads",
- "MORIO_INTERMEDIATE_CA_COMMON_NAME": "Morio Intermediate Certificate Authority",
- "MORIO_INTERMEDIATE_CA_VALID_YEARS": 5,
- "MORIO_LOGS_ROOT": "/home/jdecock/git/morio/data/logs",
- "MORIO_NETWORK": "morionet",
- "MORIO_NETWORK_MTU": 1500,
- "MORIO_NETWORK_SUBNET": "192.168.144.32/28",
- "MORIO_PROXY_ACCESS_LOG_FILEPATH": "/var/log/morio/traefik.access.log",
- "MORIO_PROXY_LOG_FILEPATH": "/var/log/morio/traefik.log",
- "MORIO_PROXY_LOG_FORMAT": "json",
- "MORIO_PROXY_LOG_LEVEL": "DEBUG",
- "MORIO_REPOS_FOLDER": "repos",
- "MORIO_ROOT_CA_COMMON_NAME": "Morio Root Certificate Authority",
- "MORIO_ROOT_CA_VALID_YEARS": 20,
- "MORIO_UI_PORT": 3010,
- "MORIO_UI_TIMEOUT_URL_CHECK": 1500,
- "MORIO_UNIT_TEST_HOST": "unit.test.morio.it",
- "MORIO_VERSION": "0.2.0",
- "MORIO_X509_C": "BE",
- "MORIO_X509_CN": "Morio",
- "MORIO_X509_L": "Brussels",
- "MORIO_X509_O": "CERT-EU",
- "MORIO_X509_OU": "Engineering Team",
- "MORIO_X509_ST": "Brussels",
- "NODE_ENV": "development"
}This will trigger reseeding of the settings, followed by a (soft) restart of Morio
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}This will cause a soft restart of core, re-bootstrapping itself based on the settings on disk.
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}