This is the reference documentation for Morio's Management API. It is auto-generated from this API's OpenAPI v3 specification.
List CA certificates
Returns the root and intermediate certificates of the Morio CA, along with the root certificate's fingerprint.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
Get public key
Returns Morio's internal public key. This can be used to validate Morio's JWTs
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
Get public key.pem
Returns Morio's internal public key as a PEM file. This can be used to validate Morio's JWTs
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
-----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-----
List downloads
Returns a list of files in the download folder that can be downloaded from the API
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
[- "/downloads/certs",
- "/downloads/certs/root.pem",
- "/downloads/certs/intermediate.pem",
- "/downloads/certs/db.pem",
- "/downloads/certs/console.pem",
- "/downloads/certs/broker.pem"
]
List identity providers
Returns information about the available identity providers (IDPs). Useful for frontend integration.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
]
}
}
List JWKS
Returns information to verify the JSON Web Tokens (JWT) were issued by this Morio deployment. Useful for integration with exteral services. See RFC 7517
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
]
}
Get info on rate limits
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.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "ip": "10.13.22.6",
- "hits": 6,
- "reset_time": "2024-09-12T09:37:49.723Z",
- "reset_seconds": 899
}
Get status
Returns information about how Morio is doing. Useful for monitoring.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "info": {
- "about": "Morio Management API",
- "name": "@morio/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": "@morio/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
}
}
}
API Healthcheck
Returns status code 204 if the API is up. No response body or data is returned. Useful for a quick healhcheck.
Authorizations:
Responses
Response samples
- 401
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Validate settings
Will validate settings so you can deploy them with confidence.
Authorizations:
Request Body schema: application/jsonrequired
The Morio settings you want to validate
object | |
object | |
connector | object |
object | |
object | |
object | |
object or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
]
}
}
}
Validate preseed settings
Will validate preseed settings so you can deploy them with confidence.
Authorizations:
Request Body schema: application/jsonrequired
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) or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
]
}
}
}
Set up Morio
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.
Authorizations:
Request Body schema: application/jsonrequired
The Morio settings to use for the initial setup
object | |
object | |
connector | object |
object | |
object | |
object | |
object or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 200
- 400
- 401
- 409
- 429
- 500
{- "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"
}
}
List local accounts
Returns the list of accounts. Needs at least the manager
role.
- When using the endpoint with the
manager
role, the list will include all accounts created by the current user. - When using the endpoint with a higher role (
operator
,engineer
, or evenroot
), the list will include all accounts.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
[- {
- "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"
}
]
Create local account
Creates a local Morio account. The account needs to be activated via the invite code/url.
Authorizations:
Request Body schema: application/jsonrequired
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 |
Responses
Request samples
- Payload
{- "username": "testAccount1722234021332",
- "about": "This account was created as part of a test",
- "provider": "local",
- "role": "user"
}
Response samples
- 200
- 400
- 401
- 409
- 429
- 500
{- "username": "testAccount1722068362387",
- "about": "This account was created as part of a test",
- "provider": "local",
- "role": "user",
- "invite": "e7d7b6427378f9ddde77775160ac91dda8eea6c5ef0491c8",
}
Activate local account
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.
Authorizations:
Request Body schema: application/jsonrequired
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 |
Responses
Request samples
- Payload
{- "username": "testAccount1722234284869",
- "invite": "251bdac3a4ffadaef194cdc18b97be9a0f9951ce65a10ae1",
- "provider": "local"
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "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"
}
Activate local account MFA
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.
Authorizations:
Request Body schema: application/jsonrequired
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 |
Responses
Request samples
- Payload
{- "username": "testAccount1722234633560",
- "invite": "055319ca21a36ac7b7a008694bb48cf6b882242a5f78b97d",
- "provider": "local",
- "token": "171589",
- "password": "kAsflASD8900)()lmn#LE$Q0-"
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "scratch_codes": [
- "06858bad92373bfd4746b6128c5ab769f7b12a652101eeec1741e4dc7432fe99",
- "d21da1e5e7cf70b1044f11e06a39135fab248f7f4d849d964c81a7e9e72d498f",
- "7c68b780d1c77d17d292780acc44564e374262c58193daf867c6011cce4a9bab"
]
}
List API keys
Returns the list of API keys.
- When using the endpoint with the
user
role, the list will include all API keys created by the current user. - When using the endpoint with the
manager
role, the list will include all API keys belonging to accounts created by the current user. - When using the endpoint with a higher role (
operator
,engineer
, or evenroot
), the list will include all API keys.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
[- {
- "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"
}
]
Create API key
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.
Authorizations:
Request Body schema: application/jsonrequired
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 |
Responses
Request samples
- Payload
{ }
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{ }
Rotate API key
Updates an existing API key.
Authorizations:
path Parameters
id required | string <uuid> The API key ID (a UUID) |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{- "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"
}
Enable API key
Updates an existing API key.
Authorizations:
path Parameters
id required | string <uuid> The API key ID (a UUID) |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{- "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"
}
Disable API key
Updates an existing API key.
Authorizations:
path Parameters
id required | string <uuid> The API key ID (a UUID) |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{- "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"
}
Delete API key
Removes a Morio API key.
Authorizations:
path Parameters
id required | string <uuid> The API key ID (a UUID) |
Responses
Response samples
- 400
- 401
- 403
- 429
- 500
{- "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."
}
List identity providers
Returns information about the available identity providers (IDPs). Useful for frontend integration.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
]
}
}
List JWKS
Returns information to verify the JSON Web Tokens (JWT) were issued by this Morio deployment. Useful for integration with exteral services. See RFC 7517
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
]
}
Authenticate
Generates a JSON Web Token that can be used for subsequential API access.
Authorizations:
Request Body schema: application/jsonrequired
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 |
Responses
Request samples
- Payload
{- "provider": "apikey",
- "data": {
- "api_key": "724098e3-930a-4c93-9fac-9a55decfb735",
- "api_key_secret": "c0502771315e8239462adcccab7b6867e6d2742e3675c7aacac369f43a8f27b836292009b6badb7bc7a293b10e3275d2"
}
}
Response samples
- 200
- 400
- 401
- 403
- 409
- 429
- 500
{- "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"
}
}
Renew JWT
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.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
{- "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"
}
Who am I?
This will return info about the currently authenticated account
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
{- "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"
}
}
Build .deb package
This will trigger the build of a .deb client package.
Note that this will start an ephemeral container to start the build. This API endpoint will not wait for the build to complete before retuning.
Authorizations:
Request Body schema: application/jsonrequired
The configuration for building the .deb
client package
Package required | string |
Source required | string |
Section required | string Value: "utils" |
Priority required | string Value: "required,important,standard,optional,extra" |
Architecture required | string |
Essential required | string Value: "no" |
Depends required | Array of any |
Installed-Size required | number <float> |
Maintainer required | string |
Changed-By required | string |
Uploaders required | Array of any |
Homepage required | string |
Description required | string |
DetailedDescription required | string |
Vcs-Git required | string |
Version required | string |
Revision required | number <float> |
Responses
Request samples
- Payload
{- "Package": "morio-client",
- "Source": "morio-client",
- "Section": "utils",
- "Priority": "optional",
- "Architecture": "amd64",
- "Essential": "no",
- "Depends": [
- [
- "auditbeat",
- ">= 8.12"
], - [
- "filebeat",
- ">= 8.12"
], - [
- "metricbeat",
- ">= 8.12"
]
], - "Installed-Size": 5000,
- "Maintainer": "CERT-EU <services@cert.europa.eu>",
- "Changed-By": "Joost De Cock <joost.decock@cert.europa.eu>",
- "Uploaders": [
- "Joost De Cock <joost.decock@cert.europa.eu>"
], - "Description": "The Morio client collects and ships observability data to a Morio instance.",
- "DetailedDescription": "Deploy this Morio client (based on Elastic Beats) on your endpoints,\nand collect their data on one or more centralized Morio instances\nfor analysis, further processing, downstream routing & filtering,\nor event-driven automation.",
- "Vcs-Git": "https://github.com/certeu/morio -b main [clients/linux]",
- "Version": "0.2.0",
- "Revision": 1
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "result": "ok",
- "status": "building",
- "settings": {
- "Package": "morio-client",
- "Source": "morio-client",
- "Section": "utils",
- "Priority": "optional",
- "Architecture": "amd64",
- "Essential": "no",
- "Installed-Size": 5000,
- "Maintainer": "CERT-EU <services@cert.europa.eu>",
- "Changed-By": "Joost De Cock <joost.decock@cert.europa.eu>",
- "Description": "The Morio client collects and ships observability data to a Morio instance.\n Deploy this Morio client (based on Elastic Beats) on your endpoints,\n and collect their data on one or more centralized Morio instances\n for analysis, further processing, downstream routing & filtering,\n or event-driven automation.",
- "Vcs-Git": "https://github.com/certeu/morio -b main [clients/linux]",
- "Version": "0.2.0-1"
}
}
Get .deb package defaults
This will return the default values to create a new .deb client package.
Note that configuration of a .deb
package needs to be correct or the package will not function.
You can adapt these defaults (that's why we provide them), but should consult the Debian documnentation on packaging.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
{- "Package": "morio-client",
- "Source": "morio-client",
- "Section": "utils",
- "Priority": "optional",
- "Architecture": "amd64",
- "Essential": "no",
- "Depends": [
- [
- "auditbeat",
- ">= 8.12"
], - [
- "filebeat",
- ">= 8.12"
], - [
- "metricbeat",
- ">= 8.12"
]
], - "Installed-Size": 5000,
- "Maintainer": "CERT-EU <services@cert.europa.eu>",
- "Changed-By": "Joost De Cock <joost.decock@cert.europa.eu>",
- "Uploaders": [
- "Joost De Cock <joost.decock@cert.europa.eu>"
], - "Description": "The Morio client collects and ships observability data to a Morio instance.",
- "DetailedDescription": "Deploy this Morio client (based on Elastic Beats) on your endpoints,\nand collect their data on one or more centralized Morio instances\nfor analysis, further processing, downstream routing & filtering,\nor event-driven automation.",
- "Vcs-Git": "https://github.com/certeu/morio -b main [clients/linux]",
- "Version": "0.2.0",
- "Revision": 1
}
List CA certificates
Returns the root and intermediate certificates of the Morio CA, along with the root certificate's fingerprint.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
Get public key
Returns Morio's internal public key. This can be used to validate Morio's JWTs
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
{- "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"
}
Get public key.pem
Returns Morio's internal public key as a PEM file. This can be used to validate Morio's JWTs
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
- 503
-----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-----
Generate X.509 certificate
Generates an X.509 certificate, issued by Morio's internal Certificate Authority
Authorizations:
Request Body schema: application/jsonrequired
The Morio settings you want to validate
object | |||||||||||||||
|
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
}
Decrypt data
Decrypts data with Morio's internal key pair
Authorizations:
Request Body schema: application/jsonrequired
The data you want to decrypt
iv required | string |
ct required | string |
Responses
Request samples
- Payload
{- "iv": "f098ed647cae1e2ddfc53240c786c3ab",
- "ct": "43a24de68ca4e8625692e3b3dc8e586d5e146531d49a70c727bac838d57bcda0"
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "data": "This is secret"
}
Encrypt data
Encrypts data with Morio's internal key pair
Authorizations:
Request Body schema: application/jsonrequired
The data you want to encrypt
data required | string |
Responses
Request samples
- Payload
{- "data": "This is secret"
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "iv": "f098ed647cae1e2ddfc53240c786c3ab",
- "ct": "43a24de68ca4e8625692e3b3dc8e586d5e146531d49a70c727bac838d57bcda0"
}
Rotate Root Token
Rotate the Morio Root Token. Requires the operator
role, as well as the current Morio Root Token.
Authorizations:
Request Body schema: application/jsonrequired
The current Morio Root Token
mrt | string = 68 characters ^mrt\.[0-9a-z]+$ |
Responses
Request samples
- Payload
{- "mrt": "mrt.14887e49a38949f0d82915f4becdf7d700e3dcfacf64fcec00681a5f74b1a600"
}
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{- "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"
}
}
List containers
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
List running containers
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Get storage metrics
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
List images
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Get Docker info
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
List networks
This is a proxy endpoint for the Docker API on the host system that returns a list of Docker networks on the host system.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Get Docker version
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.
Authorizations:
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Inspect container
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.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Get logs
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.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Get usage stats
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.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Inspect image
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.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Inspect network
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.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Kill container
This changes, or attempts to change, the container state by issuing a kill
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Pause container
This changes, or attempts to change, the container state by issuing a pause
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Restart container
This changes, or attempts to change, the container state by issuing a restart
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Start container
This changes, or attempts to change, the container state by issuing a start
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Stop container
This changes, or attempts to change, the container state by issuing a stop
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Unpause container
This changes, or attempts to change, the container state by issuing a unpause
command.
Authorizations:
path Parameters
id required | string The ID (or name) of the relevant docker object |
Responses
Response samples
- 401
- 409
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Export key data
Exports Morio's cryptographic key data.
This endpoint is only accessible to the root user.
Authorizations:
Responses
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
}
}
}
Validate settings
Will validate settings so you can deploy them with confidence.
Authorizations:
Request Body schema: application/jsonrequired
The Morio settings you want to validate
object | |
object | |
connector | object |
object | |
object | |
object | |
object or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
]
}
}
}
Validate preseed settings
Will validate preseed settings so you can deploy them with confidence.
Authorizations:
Request Body schema: application/jsonrequired
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) or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
Response samples
- 200
- 400
- 401
- 429
- 500
{- "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"
]
}
}
}
Set up Morio
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.
Authorizations:
Request Body schema: application/jsonrequired
The Morio settings to use for the initial setup
object | |
object | |
connector | object |
object | |
object | |
object | |
object or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 200
- 400
- 401
- 409
- 429
- 500
{- "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"
}
}
Get settings
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.
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
{- "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$"
}
}
}
}
}
}
Apply settings
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.
Authorizations:
Request Body schema: application/jsonrequired
The new Morio settings
object | |
object | |
connector | object |
object | |
object | |
object | |
object or string | |
object |
Responses
Request samples
- Payload
{- "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"
]
}
}
Response samples
- 400
- 401
- 429
- 500
{- "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."
}
Response samples
- 200
- 401
- 429
- 500
{- "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"
}
Reload the API
This will cause the API to re-initialize itself, including reaching out the Morio Core to re-load the settings.
This is an internal route that is exposed to allow for troubleshooting. You probably don't want to use this.
Authorizations:
Responses
Response samples
- 401
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Reseed Morio
This will trigger reseeding of the settings, followed by a (soft) restart of Morio
Authorizations:
Responses
Response samples
- 401
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Restart Morio
This will cause a soft restart of core, re-bootstrapping itself based on the settings on disk.
Authorizations:
Responses
Response samples
- 401
- 429
- 500
{- "status": 401,
- "title": "Authentication required",
- "detail": "The request was not properly authenticated."
}
Write key
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:
- For
/kv/keys/example
the key isexample
- For
/kv/keys/example/of/a/nested/key
the key isexample/of/a/nested/key
- For
/kv/keys/example/of/a/nested/key?with=query=params
the key isexample/of/a/nested/key
- For
/kv/keys/example/of/a/nested/key#with-anchor-data
the key isexample/of/a/nested/key
While 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.
Authorizations:
path Parameters
key required | string The key in the KV store |
Request Body schema: application/jsonrequired
The value to write
boolean or Array of any or number or string or object | |
Any of boolean |
Responses
Request samples
- Payload
{- "value": "My value"
}
Response samples
- 400
- 401
- 403
- 429
- 500
{- "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."
}
Delete key
Removes the key key
from the KV store.
Authorizations:
path Parameters
key required | string The key in the KV store |
Responses
Response samples
- 400
- 401
- 403
- 404
- 429
- 500
{- "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."
}
Dump KV data
Returns all keys and values in the KV store
Authorizations:
Responses
Response samples
- 200
- 401
- 429
- 500
{- "my key": "My value",
- "some other key": "some other value",
- "better_name": 12,
- "PIPELINE_RESULT": {
- "status": "success",
- "duration": 123
}
}