{ "openapi" : "3.0.0", "info" : { "version" : "1.5.0-dev", "title" : "Otoroshi Admin API", "description" : "Admin API of the Otoroshi reverse proxy", "contact" : { "name" : "Otoroshi Team", "email" : "oss@maif.fr" }, "license" : { "name" : "Apache 2.0", "url" : "http://www.apache.org/licenses/LICENSE-2.0.html" } }, "tags" : [ { "name" : "configuration", "description" : "Everything about Otoroshi global configuration" }, { "name" : "import", "description" : "Everything about Otoroshi import/export" }, { "name" : "templates", "description" : "Everything about Otoroshi entities templates" }, { "name" : "environments", "description" : "Everything about Otoroshi Environments" }, { "name" : "groups", "description" : "Everything about Otoroshi service groups" }, { "name" : "apikeys", "description" : "Everything about Otoroshi api keys" }, { "name" : "services", "description" : "Everything about Otoroshi service descriptors" }, { "name" : "stats", "description" : "Everything about Otoroshi stats" }, { "name" : "snowmonkey", "description" : "Everything about Otoroshi Snow Monkey" }, { "name" : "health", "description" : "Everything about Otoroshi health status" }, { "name" : "jwt-verifiers", "description" : "Everything about Otoroshi global JWT token verifiers" }, { "name" : "auth-config", "description" : "Everything about Otoroshi global auth. module config" }, { "name" : "scripts", "description" : "Everything about Otoroshi request transformer scripts" }, { "name" : "certificates", "description" : "Everything about Otoroshi SSL/TLS certificates" }, { "name" : "validation-authorities", "description" : "Everything about Otoroshi validation authorities" }, { "name" : "data-exporter-configs", "description" : "Everything about Otoroshi data exporters" } ], "externalDocs" : { "description" : "Find out more about Otoroshi", "url" : "https://maif.github.io/otoroshi/" }, "servers" : [ { "url" : "http://otoroshi-api.oto.tools/" } ], "paths" : { "/new/apikey" : { "get" : { "deprecated" : false, "tags" : [ "templates" ], "summary" : "Get a template of an Otoroshi Api Key", "description" : "Get a template of an Otoroshi Api Key. The generated entity is not persisted", "operationId" : "initiateApiKey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/new/service" : { "get" : { "deprecated" : false, "tags" : [ "templates" ], "summary" : "Get a template of an Otoroshi service descriptor", "description" : "Get a template of an Otoroshi service descriptor. The generated entity is not persisted", "operationId" : "initiateService", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/new/group" : { "get" : { "deprecated" : false, "tags" : [ "templates" ], "summary" : "Get a template of an Otoroshi service group", "description" : "Get a template of an Otoroshi service group. The generated entity is not persisted", "operationId" : "initiateServiceGroup", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/lines" : { "get" : { "deprecated" : false, "tags" : [ "environments" ], "summary" : "Get all environments", "description" : "Get all environments provided by the current Otoroshi instance", "operationId" : "allLines", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Environment" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/lines/{line}/services" : { "get" : { "deprecated" : false, "tags" : [ "environments" ], "summary" : "Get all services for an environment", "description" : "Get all services for an environment provided by the current Otoroshi instance", "operationId" : "servicesForALine", "parameters" : [ { "in" : "path", "name" : "line", "required" : true, "description" : "The environment where to find services", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Service" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/apikeys/{clientId}/quotas" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get the quota state of an api key", "description" : "Get the quota state of an api key", "operationId" : "apiKeyQuotas", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Quotas" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Reset the quota state of an api key", "description" : "Reset the quota state of an api key", "operationId" : "resetApiKeyQuotas", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Quotas" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/apikeys/{clientId}/group" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get the group of an api key", "description" : "Get the group of an api key", "operationId" : "apiKeyGroup", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/apikeys/{clientId}" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get an api key", "description" : "Get an api key for a specified service descriptor", "operationId" : "apiKey", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Update an api key", "description" : "Update an api key for a specified service descriptor", "operationId" : "updateApiKey", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Update an api key with a diff", "description" : "Update an api key for a specified service descriptor with a diff", "operationId" : "patchApiKey", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Delete an api key", "description" : "Delete an api key for a specified service descriptor", "operationId" : "deleteApiKey", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/apikeys" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get all api keys for the group of a service", "description" : "Get all api keys for the group of a service", "operationId" : "apiKeys", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Create a new api key for a service", "description" : "", "operationId" : "createApiKey", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The api key service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "/api/groups/{groupId}/apikeys/{clientId}/quotas" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get the quota state of an api key", "description" : "Get the quota state of an api key", "operationId" : "apiKeyFromGroupQuotas", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Quotas" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Reset the quota state of an api key", "description" : "Reset the quota state of an api key", "operationId" : "resetApiKeyFromGroupQuotas", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Quotas" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/groups/{groupId}/apikeys/{clientId}" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get an api key", "description" : "Get an api key for a specified service group", "operationId" : "apiKeyFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Update an api key", "description" : "Update an api key for a specified service group", "operationId" : "updateApiKeyFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Update an api key with a diff", "description" : "Update an api key for a specified service descriptor with a diff", "operationId" : "patchApiKeyFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Delete an api key", "description" : "Delete an api key for a specified service group", "operationId" : "deleteApiKeyFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } }, { "in" : "path", "name" : "clientId", "required" : true, "description" : "the api key id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/groups/{groupId}/apikeys" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get all api keys for the group of a service", "description" : "Get all api keys for the group of a service", "operationId" : "apiKeysFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Create a new api key for a group", "description" : "Create a new api key for a group", "operationId" : "createApiKeyFromGroup", "parameters" : [ { "in" : "path", "name" : "groupId", "required" : true, "description" : "The api key group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "/api/apikeys" : { "get" : { "deprecated" : false, "tags" : [ "apikeys" ], "summary" : "Get all api keys", "description" : "Get all api keys", "operationId" : "allApiKeys", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/template" : { "get" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Get a service descriptor error template", "description" : "Get a service descriptor error template", "operationId" : "serviceTemplate", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorTemplate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Update an error template to a service descriptor", "description" : "Update an error template to a service descriptor", "operationId" : "updateServiceTemplate", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorTemplate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorTemplate" } } } } }, "post" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Create a service descriptor error template", "description" : "Update a service descriptor targets", "operationId" : "createServiceTemplate", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorTemplate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ErrorTemplate" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Delete a service descriptor error template", "description" : "Delete a service descriptor error template", "operationId" : "deleteServiceTemplate", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}/targets" : { "get" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Get a service descriptor targets", "description" : "Get a service descriptor targets", "operationId" : "serviceTargets", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Add a target to a service descriptor", "description" : "Add a target to a service descriptor", "operationId" : "serviceAddTarget", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Target" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Update a service descriptor targets", "description" : "Update a service descriptor targets", "operationId" : "updateServiceTargets", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Delete a service descriptor target", "description" : "Delete a service descriptor target", "operationId" : "serviceDeleteTarget", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services/{serviceId}" : { "get" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Get a service descriptor", "description" : "Get a service descriptor", "operationId" : "service", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Update a service descriptor", "description" : "Update a service descriptor", "operationId" : "updateService", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Update a service descriptor with a diff", "description" : "Update a service descriptor with a diff", "operationId" : "patchService", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Delete a service descriptor", "description" : "Delete a service descriptor", "operationId" : "deleteService", "parameters" : [ { "in" : "path", "name" : "serviceId", "required" : true, "description" : "The service id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/services" : { "get" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Get all services", "description" : "Get all services", "operationId" : "allServices", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Service" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Create a new service descriptor", "description" : "Create a new service descriptor", "operationId" : "createService", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Service" } } } } } }, "/api/groups/{serviceGroupId}/services" : { "get" : { "deprecated" : false, "tags" : [ "services" ], "summary" : "Get all services descriptor for a group", "description" : "Get all services descriptor for a group", "operationId" : "serviceGroupServices", "parameters" : [ { "in" : "path", "name" : "serviceGroupId", "required" : true, "description" : "The service group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ApiKey" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/groups/{serviceGroupId}" : { "get" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Get a service group", "description" : "Get a service group", "operationId" : "serviceGroup", "parameters" : [ { "in" : "path", "name" : "serviceGroupId", "required" : true, "description" : "The service group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Update a service group", "description" : "Update a service group", "operationId" : "updateGroup", "parameters" : [ { "in" : "path", "name" : "serviceGroupId", "required" : true, "description" : "The service group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Update a service group with a diff", "description" : "Update a service group with a diff", "operationId" : "patchGroup", "parameters" : [ { "in" : "path", "name" : "serviceGroupId", "required" : true, "description" : "The service group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Delete a service group", "description" : "Delete a service group", "operationId" : "deleteGroup", "parameters" : [ { "in" : "path", "name" : "serviceGroupId", "required" : true, "description" : "The service group id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/groups" : { "get" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Get all service groups", "description" : "Get all service groups", "operationId" : "allServiceGroups", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Group" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "groups" ], "summary" : "Create a new service group", "description" : "Create a new service group", "operationId" : "createGroup", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } } }, "/api/verifiers" : { "get" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Get all global JWT verifiers", "description" : "Get all global JWT verifiers", "operationId" : "findAllGlobalJwtVerifiers", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Create one global JWT verifiers", "description" : "Create one global JWT verifiers", "operationId" : "createGlobalJwtVerifier", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } } }, "/api/verifiers/{verifierId}" : { "get" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Get one global JWT verifiers", "description" : "Get one global JWT verifiers", "operationId" : "findGlobalJwtVerifiersById", "parameters" : [ { "in" : "path", "name" : "verifierId", "required" : true, "description" : "The jwt verifier id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Delete one global JWT verifiers", "description" : "Delete one global JWT verifiers", "operationId" : "deleteGlobalJwtVerifier", "parameters" : [ { "in" : "path", "name" : "verifierId", "required" : true, "description" : "The jwt verifier id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Update one global JWT verifiers", "description" : "Update one global JWT verifiers", "operationId" : "updateGlobalJwtVerifier", "parameters" : [ { "in" : "path", "name" : "verifierId", "required" : true, "description" : "The jwt verifier id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "jwt-verifiers" ], "summary" : "Update one global JWT verifiers", "description" : "Update one global JWT verifiers", "operationId" : "patchGlobalJwtVerifier", "parameters" : [ { "in" : "path", "name" : "verifierId", "required" : true, "description" : "The jwt verifier id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalJwtVerifier" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/auths" : { "get" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Get all global auth. module configs", "description" : "Get all global auth. module configs", "operationId" : "findAllGlobalAuthModules", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Create one global auth. module config", "description" : "Create one global auth. module config", "operationId" : "createGlobalAuthModule", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } } }, "/api/auths/{id}" : { "get" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Get one global auth. module configs", "description" : "Get one global auth. module configs", "operationId" : "findGlobalAuthModuleById", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Delete one global auth. module config", "description" : "Delete one global auth. module config", "operationId" : "deleteGlobalAuthModule", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Update one global auth. module config", "description" : "Update one global auth. module config", "operationId" : "updateGlobalAuthModule", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } }, "patch" : { "deprecated" : false, "tags" : [ "auth-config" ], "summary" : "Update one global auth. module config", "description" : "Update one global auth. module config", "operationId" : "patchGlobalAuthModule", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "oneOf" : [ { "$ref" : "#/components/schemas/LdapAuthModuleConfig" }, { "$ref" : "#/components/schemas/InMemoryAuthModuleConfig" }, { "$ref" : "#/components/schemas/GenericOauth2ModuleConfig" } ] } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/scripts/_compile" : { "post" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Compile a script", "description" : "Compile a script", "operationId" : "compileScript", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ScriptCompilationResult" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } } }, "/api/scripts/{scriptId}" : { "get" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Get a script", "description" : "Get a script", "operationId" : "findScriptById", "parameters" : [ { "in" : "path", "name" : "scriptId", "required" : true, "description" : "The script id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Update a script", "description" : "Update a script", "operationId" : "updateScript", "parameters" : [ { "in" : "path", "name" : "scriptId", "required" : true, "description" : "The script id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Update a script with a diff", "description" : "Update a script with a diff", "operationId" : "patchScript", "parameters" : [ { "in" : "path", "name" : "scriptId", "required" : true, "description" : "The script id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Delete a script", "description" : "Delete a script", "operationId" : "deleteScript", "parameters" : [ { "in" : "path", "name" : "scriptId", "required" : true, "description" : "The script id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/scripts" : { "get" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Get all scripts", "description" : "Get all scripts", "operationId" : "findAllScripts", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Script" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "scripts" ], "summary" : "Create a new script", "description" : "Create a new script", "operationId" : "createScript", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Script" } } } } } }, "/api/data-exporter-configs/_template" : { "get" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Get all data exporter configs", "description" : "Get all data exporter configs", "operationId" : "DataExporterTemplate", "parameters" : [ { "in" : "query", "name" : "type", "required" : false, "description" : "The data exporter config type", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/data-exporter-configs/_bulk" : { "post" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Create a new data exporter configs", "description" : "Create a new data exporter configs", "operationId" : "createBulkDataExporterConfigs", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "description" : "The bulk response", "type" : "object", "properties" : { "status" : { "type" : "string", "enum" : [ "201" ], "description" : "Status" }, "created" : { "type" : "boolean", "example" : true, "description" : "Whether the action was carried out correctly or not" }, "id" : { "type" : "boolean", "example" : true, "description" : "Data exporter id" } } } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/ndjson" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "put" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Update a data exporter configs", "description" : "Update a data exporter configs", "operationId" : "updateBulkDataExporterConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "description" : "The bulk response", "type" : "object", "properties" : { "status" : { "type" : "string", "enum" : [ "200" ], "description" : "Status" }, "updated" : { "type" : "boolean", "example" : true, "description" : "Whether the action was carried out correctly or not" }, "id" : { "type" : "boolean", "example" : true, "description" : "Data exporter id" } } } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/ndjson" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Update a data exporter configs with a diff", "description" : "Update a data exporter configs with a diff", "operationId" : "patchBulkDataExporterConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "description" : "The bulk response", "type" : "object", "properties" : { "status" : { "type" : "string", "enum" : [ "200" ], "description" : "Status" }, "updated" : { "type" : "boolean", "example" : true, "description" : "Whether the action was carried out correctly or not" }, "id" : { "type" : "boolean", "example" : true, "description" : "Data exporter id" } } } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/ndjson" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Delete a data exporter config", "description" : "Delete a data exporter config", "operationId" : "deletebulkDataExporterConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "description" : "The bulk response", "type" : "object", "properties" : { "status" : { "type" : "string", "enum" : [ "200" ], "description" : "Status" }, "deleted" : { "type" : "boolean", "example" : true, "description" : "Whether the action was carried out correctly or not" }, "id" : { "type" : "boolean", "example" : true, "description" : "Data exporter id" } } } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/ndjson" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/data-exporter-configs/{dataExporterConfigId}" : { "get" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Get a data exporter config", "description" : "Get a data exporter config", "operationId" : "findDataExporterConfigById", "parameters" : [ { "in" : "path", "name" : "dataExporterConfigId", "required" : true, "description" : "The data exporter config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Update a data exporter config", "description" : "Update a data exporter config", "operationId" : "updateDataExporterConfig", "parameters" : [ { "in" : "path", "name" : "dataExporterConfigId", "required" : true, "description" : "The data exporter config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Update a data exporter config with a diff", "description" : "Update a data exporter config with a diff", "operationId" : "patchDataExporterConfig", "parameters" : [ { "in" : "path", "name" : "dataExporterConfigId", "required" : true, "description" : "The data exporter config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } }, "delete" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Delete a data exporter config", "description" : "Delete a data exporter config", "operationId" : "deleteDataExporterConfig", "parameters" : [ { "in" : "path", "name" : "dataExporterConfigId", "required" : true, "description" : "The data exporter config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/data-exporter-configs" : { "get" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Get all data exporter configs", "description" : "Get all data exporter configs", "operationId" : "findAllDataExporters", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "data-exporter-configs" ], "summary" : "Create a new data exporter config", "description" : "Create a new data exporter config", "operationId" : "createDataExporterConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/DataExporterConfig" } } } } } }, "/api/certificates" : { "get" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Get all certificates", "description" : "Get all certificates", "operationId" : "allCerts", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Certificate" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Create one certificate", "description" : "Create one certificate", "operationId" : "createCert", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } } }, "/api/certificates/{id}" : { "get" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Get one certificate by id", "description" : "Get one certificate by id", "operationId" : "oneCert", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Delete one certificate by id", "description" : "Delete one certificate by id", "operationId" : "deleteCert", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The certificate id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Update one certificate by id", "description" : "Update one certificate by id", "operationId" : "putCert", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The certificate id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "certificates" ], "summary" : "Update one certificate by id", "description" : "Update one certificate by id", "operationId" : "patchCert", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The certificate id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Certificate" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/client-validators" : { "get" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Get all validation authoritiess", "description" : "Get all validation authoritiess", "operationId" : "findAllClientValidators", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Create one validation authorities", "description" : "Create one validation authorities", "operationId" : "createClientValidator", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } } }, "/api/client-validators/{id}" : { "get" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Get one validation authorities by id", "description" : "Get one validation authorities by id", "operationId" : "findClientValidatorById", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The auth. config id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Delete one validation authorities by id", "description" : "Delete one validation authorities by id", "operationId" : "deleteClientValidator", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The validation authorities id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Deleted" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Update one validation authorities by id", "description" : "Update one validation authorities by id", "operationId" : "updateClientValidator", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The validation authorities id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "validation-authorities" ], "summary" : "Update one validation authorities by id", "description" : "Update one validation authorities by id", "operationId" : "patchClientValidator", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The validation authorities id", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ValidationAuthority" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/snowmonkey/config" : { "get" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Get current Snow Monkey config", "description" : "Get current Snow Monkey config", "operationId" : "getSnowMonkeyConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SnowMonkeyConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Update current Snow Monkey config", "description" : "Update current Snow Monkey config", "operationId" : "updateSnowMonkey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SnowMonkeyConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Update current Snow Monkey config", "description" : "Update current Snow Monkey config", "operationId" : "patchSnowMonkey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/SnowMonkeyConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Group" } } } } } }, "/api/snowmonkey/outages" : { "get" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Get all current Snow Monkey ourages", "description" : "Get all current Snow Monkey ourages", "operationId" : "getSnowMonkeyOutages", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Outage" } } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "delete" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Reset Snow Monkey Outages for the day", "description" : "Reset Snow Monkey Outages for the day", "operationId" : "resetSnowMonkey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Done" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/snowmonkey/_start" : { "post" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Start the Snow Monkey", "description" : "Start the Snow Monkey", "operationId" : "startSnowMonkey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Done" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/snowmonkey/_stop" : { "post" : { "deprecated" : false, "tags" : [ "snowmonkey" ], "summary" : "Stop the Snow Monkey", "description" : "Stop the Snow Monkey", "operationId" : "stopSnowMonkey", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Done" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/live/{id}" : { "get" : { "deprecated" : false, "tags" : [ "stats" ], "summary" : "Get live feed of otoroshi stats", "description" : "Get live feed of global otoroshi stats (global) or for a service {id}", "operationId" : "serviceLiveStats", "parameters" : [ { "in" : "path", "name" : "id", "required" : true, "description" : "The service id or global for otoroshi stats", "schema" : { "type" : "string" } } ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Stats" } }, "text/event-stream" : { "schema" : { "$ref" : "#/components/schemas/Stats" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/live" : { "get" : { "deprecated" : false, "tags" : [ "stats" ], "summary" : "Get global otoroshi stats", "description" : "Get global otoroshi stats", "operationId" : "globalLiveStats", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Stats" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] } }, "/api/globalconfig" : { "get" : { "deprecated" : false, "tags" : [ "configuration" ], "summary" : "Get the full configuration of Otoroshi", "description" : "Get the full configuration of Otoroshi", "operationId" : "globalConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "put" : { "deprecated" : false, "tags" : [ "configuration" ], "summary" : "Update the global configuration", "description" : "Update the global configuration", "operationId" : "putGlobalConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalConfig" } } } } }, "patch" : { "deprecated" : false, "tags" : [ "configuration" ], "summary" : "Update the global configuration with a diff", "description" : "Update the global configuration with a diff", "operationId" : "patchGlobalConfig", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/GlobalConfig" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Patch" } } } } } }, "/api/otoroshi.json" : { "get" : { "deprecated" : false, "tags" : [ "import" ], "summary" : "Export the full state of Otoroshi", "description" : "Export the full state of Otoroshi", "operationId" : "fullExport", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ImportExport" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ] }, "post" : { "deprecated" : false, "tags" : [ "import" ], "summary" : "Import the full state of Otoroshi", "description" : "Import the full state of Otoroshi", "operationId" : "fullImport", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Done" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ImportExport" } } } } } }, "/api/import" : { "post" : { "deprecated" : false, "tags" : [ "import" ], "summary" : "Import the full state of Otoroshi as a file", "description" : "Import the full state of Otoroshi as a file", "operationId" : "fullImportFromFile", "parameters" : [ ], "responses" : { "401" : { "description" : "You have to provide an Api Key. Api Key can be passed with 'Otoroshi-Client-Id' and 'Otoroshi-Client-Secret' headers, or use basic http authentication" }, "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/Done" } } } } }, "security" : [ { "otoroshi_auth" : [ ] } ], "requestBody" : { "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/ImportExport" } } } } } }, "/health" : { "get" : { "deprecated" : false, "tags" : [ "health" ], "summary" : "Return current Otoroshi health", "description" : "Import the full state of Otoroshi as a file", "operationId" : "health", "parameters" : [ ], "responses" : { "400" : { "description" : "Bad resource format. Take another look to the swagger, or open an issue :)" }, "404" : { "description" : "Resource not found or does not exist" }, "200" : { "description" : "Successful operation", "content" : { "application/json" : { "schema" : { "$ref" : "#/components/schemas/OtoroshiHealth" } } } } } } } }, "components" : { "securitySchemes" : { "otoroshi_auth" : { "type" : "http", "scheme" : "basic" } }, "schemas" : { "ApiKey" : { "description" : "An Otoroshi Api Key. An Api Key is defined for a group of services to allow usage of the same Api Key for multiple services.", "type" : "object", "required" : [ "clientId", "clientSecret", "clientName", "authorizedEntities", "enabled" ], "properties" : { "clientId" : { "type" : "string", "example" : "a string value", "description" : "The unique id of the Api Key. Usually 16 random alpha numerical characters, but can be anything" }, "clientSecret" : { "type" : "string", "example" : "a string value", "description" : "The secret of the Api Key. Usually 64 random alpha numerical characters, but can be anything" }, "clientName" : { "type" : "string", "example" : "a string value", "description" : "The name of the api key, for humans ;-)" }, "authorizedEntities" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "example" : [ "a string value" ], "description" : "The group/service ids (prefixed by group_ or service_ on which the key is authorized" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not the key is enabled. If disabled, resources won't be available to calls using this key" }, "throttlingQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per second, measured on 10 seconds" }, "dailyQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per day" }, "monthlyQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per month" }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Bunch of metadata for the key" } } }, "Auth0Config" : { "description" : "Configuration for Auth0 domain", "type" : "object", "required" : [ "clientId", "clientSecret", "domain", "callbackUrl" ], "properties" : { "clientId" : { "type" : "string", "example" : "a string value", "description" : "Auth0 client id" }, "clientSecret" : { "type" : "string", "example" : "a string value", "description" : "Auth0 client secret" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "Auth0 domain" }, "callbackUrl" : { "type" : "string", "example" : "a string value", "description" : "Auth0 callback URL" } } }, "Canary" : { "description" : "The configuration of the canary mode for a service descriptor", "type" : "object", "required" : [ "enabled", "traffic", "targets", "root" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Use canary mode for this service" }, "traffic" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Ratio of traffic that will be sent to canary targets." }, "targets" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" }, "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" }, "root" : { "type" : "string", "example" : "a string value", "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" } } }, "CleverSettings" : { "description" : "Configuration for CleverCloud client", "type" : "object", "required" : [ "consumerKey", "consumerSecret", "token", "secret", "orgaId" ], "properties" : { "consumerKey" : { "type" : "string", "example" : "a string value", "description" : "CleverCloud consumer key" }, "consumerSecret" : { "type" : "string", "example" : "a string value", "description" : "CleverCloud consumer token" }, "token" : { "type" : "string", "example" : "a string value", "description" : "CleverCloud oauth token" }, "secret" : { "type" : "string", "example" : "a string value", "description" : "CleverCloud oauth secret" }, "orgaId" : { "type" : "string", "example" : "a string value", "description" : "CleverCloud organization id" } } }, "ClientConfig" : { "description" : "The configuration of the circuit breaker for a service descriptor", "type" : "object", "required" : [ "useCircuitBreaker", "retries", "maxErrors", "retryInitialDelay", "backoffFactor", "callTimeout", "globalTimeout", "sampleInterval" ], "properties" : { "useCircuitBreaker" : { "type" : "boolean", "example" : true, "description" : "Use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !" }, "retries" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify how many times the client will try to fetch the result of the request after an error before giving up." }, "maxErrors" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify how many errors can pass before opening the circuit breaker" }, "retryInitialDelay" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor" }, "backoffFactor" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify the factor to multiply the delay for each retry" }, "callTimeout" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify how long each call should last at most in milliseconds" }, "globalTimeout" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify how long the global call (with retries) should last at most in milliseconds" }, "sampleInterval" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted" } } }, "Deleted" : { "type" : "object", "required" : [ "deleted" ], "properties" : { "deleted" : { "type" : "boolean", "example" : true } } }, "Done" : { "type" : "object", "required" : [ "done" ], "properties" : { "done" : { "type" : "boolean", "example" : true } } }, "Environment" : { "type" : "string", "example" : "prod", "description" : "The name of the environment for service descriptors" }, "ErrorTemplate" : { "description" : "Error templates for a service descriptor", "type" : "object", "required" : [ "serviceId", "template40x", "template50x", "templateBuild", "templateMaintenance", "messages" ], "properties" : { "serviceId" : { "type" : "string", "example" : "a string value", "description" : "The Id of the service for which the error template is enabled" }, "template40x" : { "type" : "string", "example" : "a string value", "description" : "The html template for 40x errors" }, "template50x" : { "type" : "string", "example" : "a string value", "description" : "The html template for 50x errors" }, "templateBuild" : { "type" : "string", "example" : "a string value", "description" : "The html template for build page" }, "templateMaintenance" : { "type" : "string", "example" : "a string value", "description" : "The html template for maintenance page" }, "messages" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Map for custom messages" } } }, "ExposedApi" : { "description" : "The Open API configuration for your service (if one)", "type" : "object", "required" : [ "exposeApi" ], "properties" : { "exposeApi" : { "type" : "boolean", "example" : true, "description" : "Whether or not the current service expose an API with an Open API descriptor" }, "openApiDescriptorUrl" : { "type" : "string", "format" : "uri", "example" : "http://www.google.com", "description" : "The URL of the Open API descriptor" } } }, "GlobalConfig" : { "type" : "object", "required" : [ "streamEntityOnly", "autoLinkToDefaultGroup", "limitConcurrentRequests", "maxConcurrentRequests", "useCircuitBreakers", "apiReadOnly", "u2fLoginOnly", "ipFiltering", "throttlingQuota", "perIpThrottlingQuota", "analyticsWebhooks", "alertsWebhooks", "alertsEmails", "endlessIpAddresses" ], "description" : "The global config object of Otoroshi, used to customize settings of the current Otoroshi instance", "properties" : { "lines" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Possibles lines for Otoroshi" }, "streamEntityOnly" : { "type" : "boolean", "example" : true, "description" : "HTTP will be streamed only. Doesn't work with old browsers" }, "autoLinkToDefaultGroup" : { "type" : "boolean", "example" : true, "description" : "If not defined, every new service descriptor will be added to the default group" }, "limitConcurrentRequests" : { "type" : "boolean", "example" : true, "description" : "If enabled, Otoroshi will reject new request if too much at the same time" }, "maxConcurrentRequests" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of authorized request processed at the same time" }, "maxHttp10ResponseSize" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The max size in bytes of an HTTP 1.0 response" }, "useCircuitBreakers" : { "type" : "boolean", "example" : true, "description" : "If enabled, services will be authorized to use circuit breakers" }, "apiReadOnly" : { "type" : "boolean", "example" : true, "description" : "If enabled, Admin API won't be able to write/update/delete entities" }, "u2fLoginOnly" : { "type" : "boolean", "example" : true, "description" : "If enabled, login to backoffice through Auth0 will be disabled" }, "ipFiltering" : { "$ref" : "#/components/schemas/IpFiltering" }, "throttlingQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per second globally, measured on 10 seconds" }, "perIpThrottlingQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per second globally per IP address, measured on 10 seconds" }, "elasticWritesConfigs" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/ElasticConfig" }, "description" : "Configs. for Elastic writes" }, "elasticReadsConfig" : { "$ref" : "#/components/schemas/ElasticConfig", "description" : "Config. for elastic reads" }, "analyticsWebhooks" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Webhook" }, "description" : "Webhook that will receive all internal Otoroshi events" }, "alertsWebhooks" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Webhook" }, "description" : "Webhook that will receive all Otoroshi alert events" }, "alertsEmails" : { "type" : "array", "items" : { "type" : "string", "format" : "email", "example" : "admin@otoroshi.io" }, "description" : "Email addresses that will receive all Otoroshi alert events" }, "endlessIpAddresses" : { "type" : "array", "items" : { "type" : "string", "format" : "ipv4", "example" : "192.192.192.192" }, "description" : "IP addresses for which any request to Otoroshi will respond with 128 Gb of zeros" }, "middleFingers" : { "type" : "boolean", "example" : true, "description" : "Use middle finger emoji as a response character for endless HTTP responses" }, "maxLogsSize" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Number of events kept locally" }, "cleverSettings" : { "$ref" : "#/components/schemas/CleverSettings", "description" : "Optional CleverCloud configuration" }, "mailerSettings" : { "$ref" : "#/components/schemas/MailerSettings", "description" : "Optional mailer configuration" }, "backofficeAuth0Config" : { "$ref" : "#/components/schemas/Auth0Config", "description" : "Optional configuration for the backoffice Auth0 domain" }, "privateAppsAuth0Config" : { "$ref" : "#/components/schemas/Auth0Config", "description" : "Optional configuration for the private apps Auth0 domain" } } }, "Group" : { "description" : "An Otoroshi service group is just a group of service descriptor. It is useful to be able to define Api Keys for the whole group", "type" : "object", "required" : [ "id", "name" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "The unique id of the group. Usually 64 random alpha numerical characters, but can be anything" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of the group" }, "description" : { "type" : "string", "example" : "a string value", "description" : "The descriptoin of the group" } } }, "HealthCheck" : { "description" : "The configuration for checking health of a service. Otoroshi will perform GET call on the URL to check if the service is still alive", "type" : "object", "required" : [ "enabled" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not healthcheck is enabled on the current service descriptor" }, "url" : { "type" : "string", "format" : "uri", "example" : "http://www.google.com", "description" : "The URL to check" } } }, "OtoroshiHealth" : { "description" : "The structure that represent current Otoroshi health", "type" : "object", "required" : [ "label", "otoroshi", "datastore" ], "properties" : { "otoroshi" : { "type" : "string", "enum" : [ "healthy", "unhealthy", "down" ] }, "datastore" : { "type" : "string", "enum" : [ "healthy", "unhealthy", "unreachable" ] } } }, "ImportExport" : { "description" : "The structure that can be imported to or exported from Otoroshi. It represent the memory state of Otoroshi", "type" : "object", "required" : [ "label", "dateRaw", "date", "stats", "config", "admins", "simpleAdmins", "serviceGroups", "apiKeys", "serviceDescriptors", "errorTemplates" ], "properties" : { "label" : { "type" : "string", "example" : "a string value" }, "dateRaw" : { "type" : "integer", "format" : "int64", "example" : 123 }, "date" : { "type" : "string", "format" : "date-time", "example" : "2017-07-21T17:32:28Z" }, "stats" : { "$ref" : "#/components/schemas/ImportExportStats", "description" : "Current global stats at the time of export" }, "config" : { "$ref" : "#/components/schemas/GlobalConfig", "description" : "Current global config at the time of export" }, "appConfig" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Current env variables at the time of export" }, "admins" : { "type" : "array", "items" : { "description" : "Administrator using FIDO U2F device to access Otoroshi", "type" : "object", "required" : [ "username", "label", "password", "createdAt", "registration" ], "properties" : { "username" : { "type" : "string", "example" : "a string value", "description" : "The email address of the user" }, "label" : { "type" : "string", "example" : "a string value", "description" : "The label for the user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "The hashed password of the user" }, "createdAt" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The creation date of the user" }, "registration" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The U2F registration slug" } } }, "description" : "Current U2F admin at the time of export" }, "simpleAdmins" : { "type" : "array", "items" : { "description" : "Administrator using just login/password tuple to access Otoroshi", "type" : "object", "required" : [ "username", "label", "password", "createdAt" ], "properties" : { "username" : { "type" : "string", "example" : "a string value", "description" : "The email address of the user" }, "label" : { "type" : "string", "example" : "a string value", "description" : "The label for the user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "The hashed password of the user" }, "createdAt" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The creation date of the user" } } }, "description" : "Current simple admins at the time of export" }, "serviceGroups" : { "type" : "array", "items" : { "description" : "An Otoroshi service group is just a group of service descriptor. It is useful to be able to define Api Keys for the whole group", "type" : "object", "required" : [ "id", "name" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "The unique id of the group. Usually 64 random alpha numerical characters, but can be anything" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of the group" }, "description" : { "type" : "string", "example" : "a string value", "description" : "The descriptoin of the group" } } }, "description" : "Current service groups at the time of export" }, "apiKeys" : { "type" : "array", "items" : { "description" : "An Otoroshi Api Key. An Api Key is defined for a group of services to allow usage of the same Api Key for multiple services.", "type" : "object", "required" : [ "clientId", "clientSecret", "clientName", "authorizedEntities", "enabled" ], "properties" : { "clientId" : { "type" : "string", "example" : "a string value", "description" : "The unique id of the Api Key. Usually 16 random alpha numerical characters, but can be anything" }, "clientSecret" : { "type" : "string", "example" : "a string value", "description" : "The secret of the Api Key. Usually 64 random alpha numerical characters, but can be anything" }, "clientName" : { "type" : "string", "example" : "a string value", "description" : "The name of the api key, for humans ;-)" }, "authorizedEntities" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "example" : [ "a string value" ], "description" : "The group/service ids (prefixed by group_ or service_ on which the key is authorized" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not the key is enabled. If disabled, resources won't be available to calls using this key" }, "throttlingQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per second, measured on 10 seconds" }, "dailyQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per day" }, "monthlyQuota" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Authorized number of calls per month" }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Bunch of metadata for the key" } } }, "description" : "Current apik keys at the time of export" }, "serviceDescriptors" : { "type" : "array", "items" : { "description" : "An otoroshi service descriptor. Represent a forward HTTP call on a domain to another location with some optional api management mecanism", "type" : "object", "required" : [ "id", "groups", "name", "env", "domain", "subdomain", "targets", "root", "enabled", "privateApp", "forceHttps", "maintenanceMode", "buildMode", "enforceSecureCommunication" ], "properties" : { "id" : { "type" : "string", "format" : "uuid", "example" : "110e8400-e29b-11d4-a716-446655440000", "description" : "A unique random string to identify your service" }, "groups" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "example" : [ "a string value" ], "description" : "Each service descriptor is attached to groups. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of your service. Only for debug and human readability purposes" }, "env" : { "type" : "string", "example" : "a string value", "description" : "The line on which the service is available. Based on that value, the name of the line will be appended to the subdomain. For line prod, nothing will be appended. For example, if the subdomain is 'foo' and line is 'preprod', then the exposed service will be available at 'foo.preprod.mydomain'" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "The domain on which the service is available." }, "subdomain" : { "type" : "string", "example" : "a string value", "description" : "The subdomain on which the service is available" }, "targets" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" }, "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" }, "root" : { "type" : "string", "example" : "a string value", "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" }, "matchingRoot" : { "type" : "string", "example" : "a string value", "description" : "The root path on which the service is available" }, "localHost" : { "type" : "string", "example" : "a string value", "description" : "The host used localy, mainly localhost:xxxx" }, "localScheme" : { "type" : "string", "example" : "a string value", "description" : "The scheme used localy, mainly http" }, "redirectToLocal" : { "type" : "boolean", "example" : true, "description" : "If you work locally with Otoroshi, you may want to use that feature to redirect one particuliar service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist" }, "userFacing" : { "type" : "boolean", "example" : true, "description" : "The fact that this service will be seen by users and cannot be impacted by the Snow Monkey" }, "privateApp" : { "type" : "boolean", "example" : true, "description" : "When enabled, user will be allowed to use the service (UI) only if they are registered users of the private apps domain" }, "forceHttps" : { "type" : "boolean", "example" : true, "description" : "Will force redirection to https:// if not present" }, "maintenanceMode" : { "type" : "boolean", "example" : true, "description" : "Display a maintainance page when a user try to use the service" }, "buildMode" : { "type" : "boolean", "example" : true, "description" : "Display a construction page when a user try to use the service" }, "enforceSecureCommunication" : { "type" : "boolean", "example" : true, "description" : "When enabled, Otoroshi will try to exchange headers with downstream service to ensure no one else can use the service from outside" }, "sendOtoroshiHeadersBack" : { "type" : "boolean", "example" : true, "description" : "When enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ..." }, "xForwardedHeaders" : { "type" : "boolean", "example" : true, "description" : "Send X-Forwarded-* headers" }, "overrideHost" : { "type" : "boolean", "example" : true, "description" : "Host header will be overriden with Host of the target" }, "secComExcludedPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "URI patterns excluded from secured communications" }, "publicPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "By default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use '/.*'" }, "privatePatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "If you define a public pattern that is a little bit too much, you can make some of public URL private again" }, "ipFiltering" : { "$ref" : "#/components/schemas/IpFiltering" }, "api" : { "$ref" : "#/components/schemas/ExposedApi" }, "healthCheck" : { "$ref" : "#/components/schemas/HealthCheck" }, "clientConfig" : { "$ref" : "#/components/schemas/ClientConfig" }, "Canary" : { "$ref" : "#/components/schemas/Canary" }, "statsdConfig" : { "$ref" : "#/components/schemas/StatsdConfig" }, "chaosConfig" : { "$ref" : "#/components/schemas/ChaosConfig" }, "jwtVerifier" : { "oneOf" : [ { "$ref" : "#/components/schemas/LocalJwtVerifier" }, { "$ref" : "#/components/schemas/RefJwtVerifier" } ] }, "secComSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Just a bunch of random properties" }, "matchingHeaders" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that MUST be present on client request to route it. Useful to implement versioning" }, "additionalHeaders" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that will be added to each client request. Useful to add authentication" }, "authConfigRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to a global auth module config" }, "transformerRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to a request transformer" }, "clientValidatorRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to validation authority" }, "cors" : { "$ref" : "#/components/schemas/CorsSettings" }, "redirection" : { "$ref" : "#/components/schemas/RedirectionSettings" }, "gzip" : { "$ref" : "#/components/schemas/Gzip" }, "headersVerification" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that will be verified after routing." } } }, "description" : "Current service descriptors at the time of export" }, "errorTemplates" : { "type" : "array", "items" : { "description" : "Error templates for a service descriptor", "type" : "object", "required" : [ "serviceId", "template40x", "template50x", "templateBuild", "templateMaintenance", "messages" ], "properties" : { "serviceId" : { "type" : "string", "example" : "a string value", "description" : "The Id of the service for which the error template is enabled" }, "template40x" : { "type" : "string", "example" : "a string value", "description" : "The html template for 40x errors" }, "template50x" : { "type" : "string", "example" : "a string value", "description" : "The html template for 50x errors" }, "templateBuild" : { "type" : "string", "example" : "a string value", "description" : "The html template for build page" }, "templateMaintenance" : { "type" : "string", "example" : "a string value", "description" : "The html template for maintenance page" }, "messages" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Map for custom messages" } } }, "description" : "Current error templates at the time of export" } } }, "ImportExportStats" : { "description" : "Global stats for the current Otoroshi instances", "type" : "object", "required" : [ "calls", "dataIn", "dataOut" ], "properties" : { "calls" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Number of calls to Otoroshi globally" }, "dataIn" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The amount of data sent to Otoroshi globally" }, "dataOut" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The amount of data sent from Otoroshi globally" } } }, "IpFiltering" : { "description" : "The filtering configuration block for a service of globally.", "type" : "object", "required" : [ "whitelist", "blacklist" ], "properties" : { "whitelist" : { "type" : "array", "items" : { "type" : "string", "format" : "ipv4", "example" : "192.192.192.192" }, "description" : "Whitelisted IP addresses" }, "blacklist" : { "type" : "array", "items" : { "type" : "string", "format" : "ipv4", "example" : "192.192.192.192" }, "description" : "Blacklisted IP addresses" } } }, "MailerSettings" : { "description" : "Configuration for mailgun api client", "type" : "object", "required" : [ "apiKey", "domain" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "Type of the mailer: console, generic, mailgun, mailjet" }, "eu" : { "type" : "boolean", "example" : true, "description" : "Mailgun mailer, use EU tenant api" }, "apiKey" : { "type" : "string", "example" : "a string value", "description" : "Mailgun mailer api key" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "Mailgun mailer domain" }, "apiKeyPublic" : { "type" : "string", "example" : "a string value", "description" : "Mailjet mailer public api key" }, "apiKeyPrivate" : { "type" : "string", "example" : "a string value", "description" : "Mailjet mailer private api key" }, "url" : { "type" : "string", "example" : "a string value", "description" : "Generic mailer url" }, "header" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Generic mailer headers" } } }, "Patch" : { "description" : "A set of changes described in JSON Patch format: http://jsonpatch.com/ (RFC 6902)", "type" : "array", "items" : { "type" : "object", "required" : [ "op", "path" ], "properties" : { "op" : { "type" : "string", "enum" : [ "add", "replace", "remove", "copy", "test" ] }, "path" : { "type" : "string", "example" : "a string value" }, "value" : { } } } }, "Quotas" : { "description" : "Quotas state for an api key on a service group", "type" : "object", "required" : [ "authorizedCallsPerSec", "currentCallsPerSec", "remainingCallsPerSec", "authorizedCallsPerDay", "currentCallsPerDay", "remainingCallsPerDay", "authorizedCallsPerMonth", "currentCallsPerMonth", "remainingCallsPerMonth" ], "properties" : { "authorizedCallsPerSec" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of authorized calls per second" }, "currentCallsPerSec" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The current number of calls per second" }, "remainingCallsPerSec" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The remaining number of calls per second" }, "authorizedCallsPerDay" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of authorized calls per day" }, "currentCallsPerDay" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The current number of calls per day" }, "remainingCallsPerDay" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The remaining number of calls per day" }, "authorizedCallsPerMonth" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of authorized calls per month" }, "currentCallsPerMonth" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The current number of calls per month" }, "remainingCallsPerMonth" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of authorized calls per month" } } }, "Service" : { "description" : "An otoroshi service descriptor. Represent a forward HTTP call on a domain to another location with some optional api management mecanism", "type" : "object", "required" : [ "id", "groups", "name", "env", "domain", "subdomain", "targets", "root", "enabled", "privateApp", "forceHttps", "maintenanceMode", "buildMode", "enforceSecureCommunication" ], "properties" : { "id" : { "type" : "string", "format" : "uuid", "example" : "110e8400-e29b-11d4-a716-446655440000", "description" : "A unique random string to identify your service" }, "groups" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "example" : [ "a string value" ], "description" : "Each service descriptor is attached to groups. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of your service. Only for debug and human readability purposes" }, "env" : { "type" : "string", "example" : "a string value", "description" : "The line on which the service is available. Based on that value, the name of the line will be appended to the subdomain. For line prod, nothing will be appended. For example, if the subdomain is 'foo' and line is 'preprod', then the exposed service will be available at 'foo.preprod.mydomain'" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "The domain on which the service is available." }, "subdomain" : { "type" : "string", "example" : "a string value", "description" : "The subdomain on which the service is available" }, "targets" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/Target" }, "description" : "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures" }, "root" : { "type" : "string", "example" : "a string value", "description" : "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar" }, "matchingRoot" : { "type" : "string", "example" : "a string value", "description" : "The root path on which the service is available" }, "localHost" : { "type" : "string", "example" : "a string value", "description" : "The host used localy, mainly localhost:xxxx" }, "localScheme" : { "type" : "string", "example" : "a string value", "description" : "The scheme used localy, mainly http" }, "redirectToLocal" : { "type" : "boolean", "example" : true, "description" : "If you work locally with Otoroshi, you may want to use that feature to redirect one particuliar service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist" }, "userFacing" : { "type" : "boolean", "example" : true, "description" : "The fact that this service will be seen by users and cannot be impacted by the Snow Monkey" }, "privateApp" : { "type" : "boolean", "example" : true, "description" : "When enabled, user will be allowed to use the service (UI) only if they are registered users of the private apps domain" }, "forceHttps" : { "type" : "boolean", "example" : true, "description" : "Will force redirection to https:// if not present" }, "maintenanceMode" : { "type" : "boolean", "example" : true, "description" : "Display a maintainance page when a user try to use the service" }, "buildMode" : { "type" : "boolean", "example" : true, "description" : "Display a construction page when a user try to use the service" }, "enforceSecureCommunication" : { "type" : "boolean", "example" : true, "description" : "When enabled, Otoroshi will try to exchange headers with downstream service to ensure no one else can use the service from outside" }, "sendOtoroshiHeadersBack" : { "type" : "boolean", "example" : true, "description" : "When enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ..." }, "xForwardedHeaders" : { "type" : "boolean", "example" : true, "description" : "Send X-Forwarded-* headers" }, "overrideHost" : { "type" : "boolean", "example" : true, "description" : "Host header will be overriden with Host of the target" }, "secComExcludedPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "URI patterns excluded from secured communications" }, "publicPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "By default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use '/.*'" }, "privatePatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "If you define a public pattern that is a little bit too much, you can make some of public URL private again" }, "ipFiltering" : { "$ref" : "#/components/schemas/IpFiltering" }, "api" : { "$ref" : "#/components/schemas/ExposedApi" }, "healthCheck" : { "$ref" : "#/components/schemas/HealthCheck" }, "clientConfig" : { "$ref" : "#/components/schemas/ClientConfig" }, "Canary" : { "$ref" : "#/components/schemas/Canary" }, "statsdConfig" : { "$ref" : "#/components/schemas/StatsdConfig" }, "chaosConfig" : { "$ref" : "#/components/schemas/ChaosConfig" }, "jwtVerifier" : { "oneOf" : [ { "$ref" : "#/components/schemas/LocalJwtVerifier" }, { "$ref" : "#/components/schemas/RefJwtVerifier" } ] }, "secComSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Just a bunch of random properties" }, "matchingHeaders" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that MUST be present on client request to route it. Useful to implement versioning" }, "additionalHeaders" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that will be added to each client request. Useful to add authentication" }, "authConfigRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to a global auth module config" }, "transformerRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to a request transformer" }, "clientValidatorRef" : { "type" : "string", "example" : "a string value", "description" : "A reference to validation authority" }, "cors" : { "$ref" : "#/components/schemas/CorsSettings" }, "redirection" : { "$ref" : "#/components/schemas/RedirectionSettings" }, "gzip" : { "$ref" : "#/components/schemas/Gzip" }, "headersVerification" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Specify headers that will be verified after routing." } } }, "SimpleAdmin" : { "description" : "Administrator using just login/password tuple to access Otoroshi", "type" : "object", "required" : [ "username", "label", "password", "createdAt" ], "properties" : { "username" : { "type" : "string", "example" : "a string value", "description" : "The email address of the user" }, "label" : { "type" : "string", "example" : "a string value", "description" : "The label for the user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "The hashed password of the user" }, "createdAt" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The creation date of the user" } } }, "Stats" : { "description" : "Live stats for a service or globally", "type" : "object", "required" : [ "calls", "dataIn", "dataOut", "rate", "duration", "overhead", "dataInRate", "dataOutRate", "concurrentHandledRequests" ], "properties" : { "calls" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Number of calls on the specified service or globally" }, "dataIn" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The amount of data sent to the specified service or Otoroshi globally" }, "dataOut" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The amount of data sent from the specified service or Otoroshi globally" }, "rate" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The rate of data sent from and to the specified service or Otoroshi globally" }, "duration" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The average duration for a call" }, "overhead" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The average overhead time induced by Otoroshi for each call" }, "dataInRate" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The rate of data sent to the specified service or Otoroshi globally" }, "dataOutRate" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The rate of data sent from the specified service or Otoroshi globally" }, "concurrentHandledRequests" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The number of concurrent request currently" } } }, "StatsdConfig" : { "description" : "The configuration for statsd metrics push", "type" : "object", "required" : [ "host", "port", "datadog" ], "properties" : { "host" : { "type" : "string", "example" : "a string value", "description" : "The host of the StatsD agent" }, "port" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The port of the StatsD agent" }, "datadog" : { "type" : "boolean", "example" : true, "description" : "Datadog agent" } } }, "Target" : { "description" : "A Target is where an HTTP call will be forwarded in the end from a service domain", "type" : "object", "required" : [ "host", "scheme" ], "properties" : { "host" : { "type" : "string", "format" : "hostname", "example" : "www.google.com", "description" : "The host on which the HTTP call will be forwarded. Can be a domain name, or an IP address. Can also have a port" }, "scheme" : { "type" : "string", "example" : "a string value", "description" : "The protocol used for communication. Can be http or https" } } }, "U2FAdmin" : { "description" : "Administrator using FIDO U2F device to access Otoroshi", "type" : "object", "required" : [ "username", "label", "password", "createdAt", "registration" ], "properties" : { "username" : { "type" : "string", "example" : "a string value", "description" : "The email address of the user" }, "label" : { "type" : "string", "example" : "a string value", "description" : "The label for the user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "The hashed password of the user" }, "createdAt" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The creation date of the user" }, "registration" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The U2F registration slug" } } }, "Webhook" : { "description" : "A callback URL where events are posted", "type" : "object", "required" : [ "url", "headers" ], "properties" : { "url" : { "type" : "string", "format" : "uri", "example" : "http://www.google.com", "description" : "The URL where events are posted" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Headers to authorize the call or whatever" } } }, "BadResponse" : { "description" : "An HTTP response that is not supposed to be returned by a service", "type" : "object", "required" : [ "status", "body", "headers" ], "properties" : { "status" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The HTTP status for the response" }, "body" : { "type" : "string", "example" : "a string value", "description" : "The body of the HTTP response" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The HTTP headers of the response" } } }, "LargeRequestFaultConfig" : { "description" : "Config for large request injection fault", "type" : "object", "required" : [ "ratio", "additionalRequestSize" ], "properties" : { "ratio" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" }, "additionalRequestSize" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The size added to the request body in bytes. Added payload will be spaces only." } } }, "LargeResponseFaultConfig" : { "description" : "Config for large response injection fault", "type" : "object", "required" : [ "ratio", "additionalResponseSize" ], "properties" : { "ratio" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" }, "additionalRequestSize" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The size added to the response body in bytes. Added payload will be spaces only." } } }, "LatencyInjectionFaultConfig" : { "description" : "Config for large latency injection fault", "type" : "object", "required" : [ "ratio", "from", "to" ], "properties" : { "ratio" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" }, "from" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The start range of latency added to the request" }, "to" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The end range of latency added to the request" } } }, "BadResponsesFaultConfig" : { "description" : "Config for bad requests injection fault", "type" : "object", "required" : [ "ratio", "responses" ], "properties" : { "ratio" : { "type" : "integer", "format" : "double", "example" : 42.2, "description" : "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0" }, "responses" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/BadResponse" }, "description" : "The possibles responses" } } }, "ChaosConfig" : { "description" : "Configuration for the faults that can be injected in requests", "type" : "object", "required" : [ "enabled" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not this config is enabled" }, "largeRequestFaultConfig" : { "$ref" : "#/components/schemas/LargeRequestFaultConfig" }, "largeResponseFaultConfig" : { "$ref" : "#/components/schemas/LargeResponseFaultConfig" }, "latencyInjectionFaultConfig" : { "$ref" : "#/components/schemas/LatencyInjectionFaultConfig" }, "badResponsesFaultConfig" : { "$ref" : "#/components/schemas/BadResponsesFaultConfig" } } }, "OutageStrategy" : { "type" : "string", "enum" : [ "OneServicePerGroup", "AllServicesPerGroup" ] }, "SnowMonkeyConfig" : { "description" : "Configuration for the faults that can be injected in requests. The name Snow Monkey is an hommage to Netflix's Chaos Monkey 😉", "type" : "object", "required" : [ "enabled", "outageStrategy", "includeUserFacingDescriptors", "dryRun", "timesPerDay", "startTime", "stopTime", "outageDurationFrom", "outageDurationTo", "targetGroups", "chaosConfig" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not this config is enabled" }, "outageStrategy" : { "$ref" : "#/components/schemas/OutageStrategy", "description" : "" }, "includeUserFacingDescriptors" : { "type" : "boolean", "example" : true, "description" : "Whether or not user facing apps. will be impacted by Snow Monkey" }, "dryRun" : { "type" : "boolean", "example" : true, "description" : "Whether or not outages will actualy impact requests" }, "timesPerDay" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Number of time per day each service will be outage" }, "startTime" : { "type" : "string", "format" : "time", "example" : "17:32:28.000", "description" : "Start time of Snow Monkey each day" }, "stopTime" : { "type" : "string", "format" : "time", "example" : "17:32:28.000", "description" : "Stop time of Snow Monkey each day" }, "outageDurationFrom" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Start of outage duration range" }, "outageDurationTo" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "End of outage duration range" }, "targetGroups" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Groups impacted by Snow Monkey. If empty, all groups will be impacted" }, "chaosConfig" : { "$ref" : "#/components/schemas/ChaosConfig" } } }, "Outage" : { "description" : "An outage by the Snow Monkey on a service", "type" : "object", "required" : [ "descriptorId", "descriptorName", "until", "duration" ], "properties" : { "descriptorId" : { "type" : "string", "example" : "a string value", "description" : "The service impacted by outage" }, "descriptorName" : { "type" : "string", "example" : "a string value", "description" : "The name of service impacted by outage" }, "until" : { "type" : "string", "format" : "time", "example" : "17:32:28.000", "description" : "The end of the outage" }, "duration" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The duration of the outage" } } }, "RefJwtVerifier" : { "description" : "Reference to a global JWT verifier", "type" : "object", "required" : [ "type", "id", "enabled" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "A string with value 'ref'" }, "id" : { "type" : "string", "example" : "a string value", "description" : "The id of the GlobalJWTVerifier" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Is it enabled" } } }, "LocalJwtVerifier" : { "description" : "A JWT verifier used only for the current service descriptor", "type" : "object", "required" : [ "type", "enabled", "strict", "source", "algoSettings", "strategy" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "A string with value 'local'" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Is it enabled" }, "strict" : { "type" : "boolean", "example" : true, "description" : "Does it fail if JWT not found" }, "source" : { "oneOf" : [ { "$ref" : "#/components/schemas/InQueryParam" }, { "$ref" : "#/components/schemas/InHeader" }, { "$ref" : "#/components/schemas/InCookie" } ] }, "algoSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] }, "strategy" : { "oneOf" : [ { "$ref" : "#/components/schemas/PassThrough" }, { "$ref" : "#/components/schemas/Sign" }, { "$ref" : "#/components/schemas/Transform" } ] } } }, "InQueryParam" : { "description" : "JWT location in a query param", "type" : "object", "required" : [ "type", "name" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value InQueryParam" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the query param" } } }, "InHeader" : { "description" : "JWT location in a header", "type" : "object", "required" : [ "type", "name", "remove" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value InHeader" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the header" }, "remove" : { "type" : "string", "example" : "a string value", "description" : "Remove regex inside the value, like 'Bearer '" } } }, "InCookie" : { "description" : "JWT location in a cookie", "type" : "object", "required" : [ "type", "name" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value InCookie" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the cookie" } } }, "HSAlgoSettings" : { "description" : "Settings for an HMAC + SHA signing algorithm", "type" : "object", "required" : [ "type", "size", "secret" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value HSAlgoSettings" }, "size" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Size for SHA function. can be 256, 384 or 512" }, "secret" : { "type" : "string", "example" : "a string value", "description" : "The secret value for the HMAC function" } } }, "RSAlgoSettings" : { "description" : "Settings for an HMAC + SHA signing algorithm", "type" : "object", "required" : [ "type", "size", "publicKey" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value RSAlgoSettings" }, "size" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Size for SHA function. can be 256, 384 or 512" }, "publicKey" : { "type" : "string", "example" : "a string value", "description" : "The public key for the RSA function" }, "privateKey" : { "type" : "string", "example" : "a string value", "description" : "The private key for the RSA function" } } }, "ESAlgoSettings" : { "description" : "Settings for an EC + SHA signing algorithm", "type" : "object", "required" : [ "type", "size", "publicKey" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value ESAlgoSettings" }, "size" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Size for SHA function. can be 256, 384 or 512" }, "publicKey" : { "type" : "string", "example" : "a string value", "description" : "The public key for the RSA function" }, "privateKey" : { "type" : "string", "example" : "a string value", "description" : "The private key for the RSA function" } } }, "JWKSAlgoSettings" : { "description" : "Settings for a JWK set", "type" : "object", "required" : [ "type", "size", "publicKey" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value JWKSAlgoSettings" }, "url" : { "type" : "string", "example" : "a string value", "description" : "The url for the http call" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The headers for the http call" }, "timeout" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The timeout of the http call" }, "ttl" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The ttl of the keyset" }, "kty" : { "type" : "string", "example" : "a string value", "description" : "The type of key: RSA or EC" } } }, "MappingSettings" : { "description" : "Settings to change fields of a JWT token", "type" : "object", "required" : [ "map", "values", "remove" ], "properties" : { "map" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Fields to rename" }, "values" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Fields to set" }, "remove" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Fields to remove" } } }, "TransformSettings" : { "description" : "Settings to transform a JWT token and its location", "type" : "object", "required" : [ "location", "mappingSettings" ], "properties" : { "location" : { "oneOf" : [ { "$ref" : "#/components/schemas/InQueryParam" }, { "$ref" : "#/components/schemas/InHeader" }, { "$ref" : "#/components/schemas/InCookie" } ] }, "mappingSettings" : { "$ref" : "#/components/schemas/MappingSettings" } } }, "VerificationSettings" : { "description" : "Settings to verify the value of JWT token fields", "type" : "object", "required" : [ "fields" ], "properties" : { "fields" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Fields to verify with their values" }, "mappingSettings" : { "$ref" : "#/components/schemas/MappingSettings" } } }, "PassThrough" : { "description" : "Strategy where only signature and field values are verified", "type" : "object", "required" : [ "type", "verificationSettings" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value PassThrough" }, "verificationSettings" : { "$ref" : "#/components/schemas/VerificationSettings" } } }, "Sign" : { "description" : "Strategy where signature and field values are verified, and then token si re-signed", "type" : "object", "required" : [ "type", "verificationSettings", "algoSettings" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value Sign" }, "verificationSettings" : { "$ref" : "#/components/schemas/VerificationSettings" }, "algoSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] } } }, "Transform" : { "description" : "Strategy where signature and field values are verified, trasnformed and then token si re-signed", "type" : "object", "required" : [ "type", "verificationSettings", "algoSettings" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "String with value Transform" }, "verificationSettings" : { "$ref" : "#/components/schemas/VerificationSettings" }, "transformSettings" : { "$ref" : "#/components/schemas/TransformSettings" }, "algoSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] } } }, "GlobalJwtVerifier" : { "description" : "A JWT verifier used by multiple service descriptor", "type" : "object", "required" : [ "type", "id", "name", "desc", "enabled", "strict", "source", "algoSettings", "strategy" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "Verifier id" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Verifier name" }, "desc" : { "type" : "string", "example" : "a string value", "description" : "Verifier description" }, "enabled" : { "type" : "boolean", "example" : true, "description" : "Is it enabled" }, "strict" : { "type" : "boolean", "example" : true, "description" : "Does it fail if JWT not found" }, "source" : { "oneOf" : [ { "$ref" : "#/components/schemas/InQueryParam" }, { "$ref" : "#/components/schemas/InHeader" }, { "$ref" : "#/components/schemas/InCookie" } ] }, "algoSettings" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ] }, "strategy" : { "oneOf" : [ { "$ref" : "#/components/schemas/PassThrough" }, { "$ref" : "#/components/schemas/Sign" }, { "$ref" : "#/components/schemas/Transform" } ] } } }, "GenericOauth2ModuleConfig" : { "description" : "Settings to authenticate users using a generic OAuth2 provider", "type" : "object", "required" : [ "type", "id", "name", "desc", "sessionMaxAge", "clientId", "clientSecret", "authorizeUrl", "tokenUrl", "userInfoUrl", "loginUrl", "logoutUrl", "callbackUrl", "accessTokenField", "nameField", "emailField", "otoroshiDataField" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "Type of settings. value is oauth2" }, "id" : { "type" : "string", "example" : "a string value", "description" : "Unique id of the config" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the config" }, "desc" : { "type" : "string", "example" : "a string value", "description" : "Description of the config" }, "sessionMaxAge" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Max age of the session" }, "clientId" : { "type" : "string", "example" : "a string value", "description" : "OAuth Client id" }, "clientSecret" : { "type" : "string", "example" : "a string value", "description" : "OAuth Client secret" }, "authorizeUrl" : { "type" : "string", "example" : "a string value", "description" : "OAuth authorize URL" }, "tokenUrl" : { "type" : "string", "example" : "a string value", "description" : "OAuth token URL" }, "userInfoUrl" : { "type" : "string", "example" : "a string value", "description" : "OAuth userinfo to get user profile" }, "loginUrl" : { "type" : "string", "example" : "a string value", "description" : "OAuth login URL" }, "logoutUrl" : { "type" : "string", "example" : "a string value", "description" : "OAuth logout URL" }, "callbackUrl" : { "type" : "string", "example" : "a string value", "description" : "Otoroshi callback URL" }, "scope" : { "type" : "string", "example" : "a string value", "description" : "The scope of the token" }, "claims" : { "type" : "string", "example" : "a string value", "description" : "The claims of the token" }, "accessTokenField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get access token" }, "nameField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get name from user profile" }, "emailField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get email from user profile" }, "otoroshiDataField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get otoroshi metadata from. You can specify sub fields using | as separator" }, "oidConfig" : { "type" : "string", "example" : "a string value", "description" : "URL of the OIDC config. file" }, "useJson" : { "type" : "boolean", "example" : true, "description" : "Use JSON or URL Form Encoded as payload with the OAuth provider" }, "useCookies" : { "type" : "boolean", "example" : true, "description" : "Use for redirection to actual service" }, "readProfileFromToken" : { "type" : "boolean", "example" : true, "description" : "The user profile will be read from the JWT token in id_token" }, "jwtVerifier" : { "oneOf" : [ { "$ref" : "#/components/schemas/HSAlgoSettings" }, { "$ref" : "#/components/schemas/RSAlgoSettings" }, { "$ref" : "#/components/schemas/ESAlgoSettings" }, { "$ref" : "#/components/schemas/JWKSAlgoSettings" } ], "description" : "Algo. settings to verify JWT token" } } }, "InMemoryAuthModuleConfig" : { "description" : "Settings to authenticate users using the in memory user store", "type" : "object", "required" : [ "type", "id", "name", "desc", "users", "sessionMaxAge" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "Type of settings. value is basic" }, "id" : { "type" : "string", "example" : "a string value", "description" : "Unique id of the config" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the config" }, "desc" : { "type" : "string", "example" : "a string value", "description" : "Description of the config" }, "sessionMaxAge" : { "type" : "string", "example" : "a string value", "description" : "Max age of the session" }, "users" : { "type" : "array", "items" : { "$ref" : "#/components/schemas/InMemoryUser" }, "description" : "List of users" } } }, "LdapAuthModuleConfig" : { "description" : "Settings to authenticate users using a generic OAuth2 provider", "type" : "object", "required" : [ "type", "id", "name", "desc", "sessionMaxAge", "serverUrl", "searchBase", "userBase", "groupFilter", "searchFilter", "adminUsername", "adminPassword", "nameField", "emailField", "metadataField" ], "properties" : { "type" : { "type" : "string", "example" : "a string value", "description" : "Type of settings. value is ldap" }, "id" : { "type" : "string", "example" : "a string value", "description" : "Unique id of the config" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the config" }, "desc" : { "type" : "string", "example" : "a string value", "description" : "Description of the config" }, "sessionMaxAge" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Max age of the session" }, "serverUrl" : { "type" : "string", "example" : "a string value", "description" : "URL of the ldap server" }, "searchBase" : { "type" : "string", "example" : "a string value", "description" : "LDAP search base" }, "userBase" : { "type" : "string", "example" : "a string value", "description" : "LDAP user base DN" }, "groupFilter" : { "type" : "string", "example" : "a string value", "description" : "Filter for groups" }, "searchFilter" : { "type" : "string", "example" : "a string value", "description" : "Filter for users" }, "adminUsername" : { "type" : "string", "example" : "a string value", "description" : "The admin username" }, "adminPassword" : { "type" : "string", "example" : "a string value", "description" : "The admin password" }, "nameField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get name from user profile" }, "emailField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get email from user profile" }, "otoroshiDataField" : { "type" : "string", "example" : "a string value", "description" : "Field name to get otoroshi metadata from. You can specify sub fields using | as separator" } } }, "CorsSettings" : { "description" : "The configuration for cors support", "type" : "object", "required" : [ "enabled", "allowOrigin", "exposeHeaders", "allowHeaders", "allowMethods", "excludedPatterns", "maxAge", "allowCredentials" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not cors is enabled" }, "allowOrigin" : { "type" : "string", "example" : "a string value", "description" : "The cors allowed origin" }, "exposeHeaders" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "The cors exposed header" }, "allowHeaders" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "The cors allowed headers" }, "allowMethods" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "The cors allowed methods" }, "excludedPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "The cors excluded patterns" }, "maxAge" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Cors max age" }, "allowCredentials" : { "type" : "boolean", "example" : true, "description" : "Allow to pass credentials" } } }, "RedirectionSettings" : { "description" : "The configuration for redirection per service", "type" : "object", "required" : [ "enabled", "to", "code" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether or not redirection is enabled" }, "to" : { "type" : "string", "example" : "a string value", "description" : "The location for redirection" }, "code" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "The http redirect code" } } }, "InMemoryUser" : { "description" : "A user", "type" : "object", "required" : [ "name", "password", "email", "metadata" ], "properties" : { "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the user" }, "email" : { "type" : "string", "example" : "a string value", "description" : "Email of the user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "Password of the user (BCrypt hash)" }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Metadata of the user" } } }, "LdapUser" : { "description" : "A user", "type" : "object", "required" : [ "name", "email", "metadata" ], "properties" : { "name" : { "type" : "string", "example" : "a string value", "description" : "Name of the user" }, "email" : { "type" : "string", "example" : "a string value", "description" : "Email of the user" }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Metadata of the user" } } }, "Gzip" : { "description" : "Configuration for gzip of service responses", "type" : "object", "required" : [ "enabled", "excludedPatterns", "whiteList", "blackList", "bufferSize", "chunkedThreshold", "compressionLevel" ], "properties" : { "enabled" : { "type" : "boolean", "example" : true, "description" : "Whether gzip compression is enabled or not" }, "excludedPatterns" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Patterns that are excluded from gzipping" }, "whiteList" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Whitelisted mime types. Wildcard supported" }, "blackList" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Blacklisted mime types. Wildcard supported" }, "bufferSize" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Size of the GZip buffer" }, "chunkedThreshold" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "Threshold for chunking data" }, "compressionLevel" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Compression level. From 0 to 9" } } }, "Script" : { "description" : "A script to transformer otoroshi requests ", "type" : "object", "required" : [ "id", "name", "desc", "code" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "The id of the script" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of the script" }, "desc" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The description of the script" }, "code" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The code of the script" } } }, "ScriptCompilationResult" : { "description" : "The result of the compilation of a Script", "type" : "object", "required" : [ "done" ], "properties" : { "done" : { "type" : "boolean", "example" : true, "description" : "Is the task done or not" }, "error" : { "$ref" : "#/components/schemas/ScriptCompilationError" } } }, "ScriptCompilationError" : { "description" : "The error of the compilation of a Script", "type" : "object", "required" : [ "line", "column", "file", "rawMessage", "message" ], "properties" : { "line" : { "type" : "string", "example" : "a string value", "description" : "The line of the error" }, "column" : { "type" : "string", "example" : "a string value", "description" : "The column of the error" }, "file" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The file where the error is located" }, "rawMessage" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The raw message from the compiler" }, "message" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "The message to display for the error" } } }, "Certificate" : { "description" : "A SSL/TLS X509 certificate", "type" : "object", "required" : [ "id", "chain", "privateKey", "caRef", "domain", "selfSigned", "ca", "valid", "autoRenew", "subject", "from", "to" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "Id of the certificate" }, "chain" : { "type" : "string", "example" : "a string value", "description" : "Certificate chain of trust in PEM format" }, "privateKey" : { "type" : "string", "example" : "a string value", "description" : "PKCS8 private key in PEM format" }, "caRef" : { "type" : "string", "example" : "a string value", "description" : "Reference for a CA certificate in otoroshi" }, "autoRenew" : { "type" : "string", "example" : "a string value", "description" : "Allow Otoroshi to renew the certificate (if self signed)" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "Domain of the certificate (read only)" }, "selfSigned" : { "type" : "string", "example" : "a string value", "description" : "Certificate is self signed read only)" }, "ca" : { "type" : "string", "example" : "a string value", "description" : "Certificate is a CA (read only)" }, "valid" : { "type" : "string", "example" : "a string value", "description" : "Certificate is valid (read only)" }, "subject" : { "type" : "string", "example" : "a string value", "description" : "Subject of the certificate (read only)" }, "from" : { "type" : "string", "example" : "a string value", "description" : "Start date of validity" }, "to" : { "type" : "string", "example" : "a string value", "description" : "End date of validity" } } }, "ValidationAuthority" : { "description" : "Settings to access a validation authority server", "type" : "object", "required" : [ "id", "name", "description", "url", "host", "goodTtl", "badTtl", "method", "path", "timeout", "noCache", "alwaysValid", "headers" ], "properties" : { "id" : { "type" : "string", "example" : "a string value", "description" : "The id of the settings" }, "name" : { "type" : "string", "example" : "a string value", "description" : "The name of the settings" }, "description" : { "type" : "string", "example" : "a string value", "description" : "The description of the settings" }, "url" : { "type" : "string", "example" : "a string value", "description" : "The URL of the server" }, "host" : { "type" : "string", "example" : "a string value", "description" : "The host of the server" }, "goodTtl" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The TTL for valid access response caching" }, "badTtl" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The TTL for invalid access response caching" }, "method" : { "type" : "string", "example" : "a string value", "description" : "The HTTP method" }, "path" : { "type" : "string", "example" : "a string value", "description" : "The URL path" }, "timeout" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "The call timeout" }, "noCache" : { "type" : "boolean", "example" : true, "description" : "Avoid caching responses" }, "alwaysValid" : { "type" : "boolean", "example" : true, "description" : "Bypass http calls, every certificates are valids" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "HTTP call headers" } } }, "KafkaConfig" : { "description" : "The configuration for kafka access", "type" : "object", "required" : [ "servers" ], "properties" : { "servers" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "URLs of the kafka servers" }, "keyPass" : { "type" : "string", "example" : "a string value", "description" : "Optional keypass" }, "keyStore" : { "type" : "string", "example" : "a string value", "description" : "Optional path to keystore" }, "trustore" : { "type" : "string", "example" : "a string value", "description" : "Optional path to trustore" }, "topic" : { "type" : "string", "example" : "a string value", "description" : "Optional kafka topic (otoroshi-events by default)" } } }, "ElasticConfig" : { "description" : "The configuration for elastic access", "type" : "object", "required" : [ "clusterUri", "index", "type", "user", "password", "headers" ], "properties" : { "clusterUri" : { "type" : "string", "example" : "a string value", "description" : "URL of the elastic cluster" }, "index" : { "type" : "string", "example" : "a string value", "description" : "Index for events. Default is otoroshi-events" }, "type" : { "type" : "string", "example" : "a string value", "description" : "Type of events. Default is event" }, "user" : { "type" : "string", "example" : "a string value", "description" : "Optional user" }, "password" : { "type" : "string", "example" : "a string value", "description" : "Optional password" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Additionnal http headers" } } }, "whebhookConfig" : { "description" : "The configuration for webhook", "type" : "object", "required" : [ "servers" ], "properties" : { "url" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "URLs of the webhook" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Optional headers" } } }, "PulsarDataExporterConfig" : { "description" : "The configuration for kafka access", "type" : "object", "required" : [ "uri", "tenant", "namespace", "topic" ], "properties" : { "uri" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "URI of the pulsar server" }, "tenant" : { "type" : "string", "example" : "a string value", "description" : "Tenant" }, "namespace" : { "type" : "string", "example" : "a string value", "description" : "Namespace" }, "topic" : { "type" : "string", "example" : "a string value", "description" : "Topic" } } }, "FileDataExporterConfig" : { "type" : "object", "required" : [ "path" ], "properties" : { "path" : { "type" : "string", "example" : "a string value", "description" : "Path to file" } } }, "MailerGenericExporterConfig" : { "type" : "object", "required" : [ "type" ], "properties" : { "type" : { "type" : "string", "enum" : [ "generic" ], "description" : "Type of mailer" }, "url" : { "type" : "string", "example" : "a string value", "description" : "Url of mailer" }, "headers" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Optional headers" }, "to" : { "type" : "array", "items" : { "type" : "string", "example" : "a string value" }, "description" : "Email adresses of recipents" } } }, "MailerConsoleExporterConfig" : { "type" : "object", "properties" : { "type" : { "type" : "string", "enum" : [ "generic" ], "description" : "Type of mailer" } } }, "MailerMailgunExporterConfig" : { "type" : "object", "required" : [ "type" ], "properties" : { "type" : { "type" : "string", "enum" : [ "mailgun" ], "description" : "Type of mailer" }, "eu" : { "type" : "boolean", "example" : true, "description" : "Whether the mailgun server is european" }, "apiKey" : { "type" : "string", "example" : "a string value", "description" : "Mailgun apiKey" }, "domain" : { "type" : "string", "example" : "a string value", "description" : "Mailgun domain" }, "to" : { "type" : "array", "items" : { "type" : "string", "format" : "email", "example" : "admin@otoroshi.io" }, "description" : "Email adresses of recipents" } } }, "MailerMailjetExporterConfig" : { "type" : "object", "required" : [ "type" ], "properties" : { "type" : { "type" : "string", "enum" : [ "mailjet" ], "description" : "Type of mailer" }, "apiKeyPublic" : { "type" : "string", "example" : "a string value", "description" : "Mailjet public apiKey" }, "apiKeyPrivate" : { "type" : "string", "example" : "a string value", "description" : "Mailjet private apiKey" }, "to" : { "type" : "array", "items" : { "type" : "string", "format" : "email", "example" : "admin@otoroshi.io" }, "description" : "Email adresses of recipents" } } }, "MailerSendgridExporterConfig" : { "type" : "object", "required" : [ "type" ], "properties" : { "type" : { "type" : "string", "enum" : [ "sendgrid" ], "description" : "Type of mailer" }, "apiKeyPublic" : { "type" : "string", "example" : "a string value", "description" : "Sendgrid apiKey" }, "to" : { "type" : "array", "items" : { "type" : "string", "format" : "email", "example" : "admin@otoroshi.io" }, "description" : "Email adresses of recipents" } } }, "ConsoleDataExporterConfig" : { "type" : "object", "properties" : { } }, "CustomDataExporterConfig" : { "type" : "object", "required" : [ "ref", "config" ], "properties" : { "ref" : { "type" : "string", "example" : "a string value", "description" : "Script Ref" }, "config" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Custom data exporter config" } } }, "DataExporterConfig" : { "description" : "Settings to export Otorshi events", "type" : "object", "properties" : { "enabled" : { "type" : "string", "example" : "a string value", "description" : "Boolean" }, "typ" : { "type" : "string", "enum" : [ "kafka", "pulsar", "file", "mailer", "elastic", "console", "custom" ], "description" : "Type of data exporter" }, "id" : { "type" : "string", "example" : "a string value", "description" : "Id" }, "name" : { "type" : "string", "example" : "a string value", "description" : "Name" }, "desc" : { "type" : "string", "example" : "a string value", "description" : "Description" }, "metadata" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "Metadata" }, "location" : { "$ref" : "#/components/schemas/Location", "description" : "location" }, "bufferSize" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "buffer size" }, "jsonWorkers" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "nb workers" }, "sendWorkers" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "send workers" }, "groupSize" : { "type" : "integer", "format" : "int32", "example" : 123123, "description" : "Group size" }, "groupDuration" : { "type" : "integer", "format" : "int64", "example" : 123, "description" : "duration" }, "filtering" : { "$ref" : "#/components/schemas/Filtering", "description" : "filtering" }, "projection" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" }, "description" : "projection" }, "config" : { "oneOf" : [ { "$ref" : "#/components/schemas/ElasticConfig" }, { "$ref" : "#/components/schemas/KafkaConfig" }, { "$ref" : "#/components/schemas/PulsarDataExporterConfig" }, { "$ref" : "#/components/schemas/FileDataExporterConfig" }, { "$ref" : "#/components/schemas/MailerGenericExporterConfig" }, { "$ref" : "#/components/schemas/MailerConsoleExporterConfig" }, { "$ref" : "#/components/schemas/MailerMailgunExporterConfig" }, { "$ref" : "#/components/schemas/MailerMailjetExporterConfig" }, { "$ref" : "#/components/schemas/MailerSendgridExporterConfig" }, { "$ref" : "#/components/schemas/ConsoleDataExporterConfig" }, { "$ref" : "#/components/schemas/CustomDataExporterConfig" } ], "description" : "Data Exporter config" } } }, "Location" : { "type" : "object", "required" : [ "tenant", "teams" ], "properties" : { "tenant" : { "type" : "string", "example" : "a string value", "description" : "Tenant id" }, "teams" : { "type" : "array", "items" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" } }, "description" : "Team ids" } } }, "Filtering" : { "type" : "object", "required" : [ "include, exclude" ], "properties" : { "include" : { "type" : "array", "items" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" } }, "description" : "Including pattern" }, "exclude" : { "type" : "array", "items" : { "type" : "object", "example" : { "key" : "value" }, "additionalProperties" : { "type" : "string" } }, "description" : "Excluding pattern" } } } } } }