action maif_put_global_config { label: "Update the global configuration" description: "Update the global configuration" provider: maif method: PUT path: "/api/globalconfig" encoding: json input: { type: "object" description: "The global config object of Otoroshi, used to customize settings of the current Otoroshi instance" required: ["alertsEmails", "alertsWebhooks", "analyticsWebhooks", "apiReadOnly", "autoLinkToDefaultGroup", "endlessIpAddresses", "ipFiltering", "limitConcurrentRequests", "maxConcurrentRequests", "perIpThrottlingQuota", "streamEntityOnly", "throttlingQuota", "u2fLoginOnly", "useCircuitBreakers"] properties: { alertsEmails: { type: "array" description: "Email addresses that will receive all Otoroshi alert events" items: { type: "string" format: "email" } } alertsWebhooks: { type: "array" description: "Webhook that will receive all Otoroshi alert events" items: { type: "object" description: "A callback URL where events are posted" required: ["url", "headers"] properties: { headers: { type: "object" description: "Headers to authorize the call or whatever" } url: { type: "string" format: "uri" description: "The URL where events are posted" } } } } analyticsWebhooks: { type: "array" description: "Webhook that will receive all internal Otoroshi events" items: { type: "object" additionalProperties: true } } apiReadOnly: { type: "boolean" description: "If enabled, Admin API won't be able to write/update/delete entities" } autoLinkToDefaultGroup: { type: "boolean" description: "If not defined, every new service descriptor will be added to the default group" } backofficeAuth0Config: { type: "object" description: "Configuration for Auth0 domain" required: ["callbackUrl", "clientId", "clientSecret", "domain"] properties: { callbackUrl: { type: "string" description: "Auth0 callback URL" } clientId: { type: "string" description: "Auth0 client id" } clientSecret: { type: "string" description: "Auth0 client secret" } domain: { type: "string" description: "Auth0 domain" } } } cleverSettings: { type: "object" description: "Configuration for CleverCloud client" required: ["consumerKey", "consumerSecret", "orgaId", "secret", "token"] properties: { consumerKey: { type: "string" description: "CleverCloud consumer key" } consumerSecret: { type: "string" description: "CleverCloud consumer token" } orgaId: { type: "string" description: "CleverCloud organization id" } secret: { type: "string" description: "CleverCloud oauth secret" } token: { type: "string" description: "CleverCloud oauth token" } } } elasticReadsConfig: { type: "object" description: "The configuration for elastic access" required: ["clusterUri", "headers", "index", "password", "type", "user"] properties: { clusterUri: { type: "string" description: "URL of the elastic cluster" } headers: { type: "object" description: "Additionnal http headers" } index: { type: "string" description: "Index for events. Default is otoroshi-events" } password: { type: "string" description: "Optional password" } type: { type: "string" description: "Type of events. Default is event" } user: { type: "string" description: "Optional user" } } } elasticWritesConfigs: { type: "array" description: "Configs. for Elastic writes" items: { type: "object" additionalProperties: true } } endlessIpAddresses: { type: "array" description: "IP addresses for which any request to Otoroshi will respond with 128 Gb of zeros" items: { type: "string" format: "ipv4" } } ipFiltering: { type: "object" description: "The filtering configuration block for a service of globally." required: ["blacklist", "whitelist"] properties: { blacklist: { type: "array" description: "Blacklisted IP addresses" items: { type: "string" format: "ipv4" } } whitelist: { type: "array" description: "Whitelisted IP addresses" items: { type: "string" format: "ipv4" } } } } limitConcurrentRequests: { type: "boolean" description: "If enabled, Otoroshi will reject new request if too much at the same time" } lines: { type: "array" description: "Possibles lines for Otoroshi" items: { type: "string" } } mailerSettings: { type: "object" description: "Configuration for mailgun api client" required: ["apiKey", "domain"] properties: { apiKey: { type: "string" description: "Mailgun mailer api key" } apiKeyPrivate: { type: "string" description: "Mailjet mailer private api key" } apiKeyPublic: { type: "string" description: "Mailjet mailer public api key" } domain: { type: "string" description: "Mailgun mailer domain" } eu: { type: "boolean" description: "Mailgun mailer, use EU tenant api" } header: { type: "object" description: "Generic mailer headers" } type: { type: "string" description: "Type of the mailer: console, generic, mailgun, mailjet" } url: { type: "string" description: "Generic mailer url" } } } maxConcurrentRequests: { type: "integer" format: "int64" description: "The number of authorized request processed at the same time" } maxHttp10ResponseSize: { type: "integer" format: "int64" description: "The max size in bytes of an HTTP 1.0 response" } maxLogsSize: { type: "integer" format: "int32" description: "Number of events kept locally" } middleFingers: { type: "boolean" description: "Use middle finger emoji as a response character for endless HTTP responses" } perIpThrottlingQuota: { type: "integer" format: "int64" description: "Authorized number of calls per second globally per IP address, measured on 10 seconds" } privateAppsAuth0Config: { type: "object" additionalProperties: true } streamEntityOnly: { type: "boolean" description: "HTTP will be streamed only. Doesn't work with old browsers" } throttlingQuota: { type: "integer" format: "int64" description: "Authorized number of calls per second globally, measured on 10 seconds" } u2fLoginOnly: { type: "boolean" description: "If enabled, login to backoffice through Auth0 will be disabled" } useCircuitBreakers: { type: "boolean" description: "If enabled, services will be authorized to use circuit breakers" } } } output: { type: "object" description: "The global config object of Otoroshi, used to customize settings of the current Otoroshi instance" required: ["alertsEmails", "alertsWebhooks", "analyticsWebhooks", "apiReadOnly", "autoLinkToDefaultGroup", "endlessIpAddresses", "ipFiltering", "limitConcurrentRequests", "maxConcurrentRequests", "perIpThrottlingQuota", "streamEntityOnly", "throttlingQuota", "u2fLoginOnly", "useCircuitBreakers"] properties: { alertsEmails: { type: "array" description: "Email addresses that will receive all Otoroshi alert events" items: { type: "string" format: "email" } } alertsWebhooks: { type: "array" description: "Webhook that will receive all Otoroshi alert events" items: { type: "object" description: "A callback URL where events are posted" required: ["url", "headers"] properties: { headers: { type: "object" description: "Headers to authorize the call or whatever" } url: { type: "string" format: "uri" description: "The URL where events are posted" } } } } analyticsWebhooks: { type: "array" description: "Webhook that will receive all internal Otoroshi events" items: { type: "object" additionalProperties: true } } apiReadOnly: { type: "boolean" description: "If enabled, Admin API won't be able to write/update/delete entities" } autoLinkToDefaultGroup: { type: "boolean" description: "If not defined, every new service descriptor will be added to the default group" } backofficeAuth0Config: { type: "object" description: "Configuration for Auth0 domain" required: ["callbackUrl", "clientId", "clientSecret", "domain"] properties: { callbackUrl: { type: "string" description: "Auth0 callback URL" } clientId: { type: "string" description: "Auth0 client id" } clientSecret: { type: "string" description: "Auth0 client secret" } domain: { type: "string" description: "Auth0 domain" } } } cleverSettings: { type: "object" description: "Configuration for CleverCloud client" required: ["consumerKey", "consumerSecret", "orgaId", "secret", "token"] properties: { consumerKey: { type: "string" description: "CleverCloud consumer key" } consumerSecret: { type: "string" description: "CleverCloud consumer token" } orgaId: { type: "string" description: "CleverCloud organization id" } secret: { type: "string" description: "CleverCloud oauth secret" } token: { type: "string" description: "CleverCloud oauth token" } } } elasticReadsConfig: { type: "object" description: "The configuration for elastic access" required: ["clusterUri", "headers", "index", "password", "type", "user"] properties: { clusterUri: { type: "string" description: "URL of the elastic cluster" } headers: { type: "object" description: "Additionnal http headers" } index: { type: "string" description: "Index for events. Default is otoroshi-events" } password: { type: "string" description: "Optional password" } type: { type: "string" description: "Type of events. Default is event" } user: { type: "string" description: "Optional user" } } } elasticWritesConfigs: { type: "array" description: "Configs. for Elastic writes" items: { type: "object" additionalProperties: true } } endlessIpAddresses: { type: "array" description: "IP addresses for which any request to Otoroshi will respond with 128 Gb of zeros" items: { type: "string" format: "ipv4" } } ipFiltering: { type: "object" description: "The filtering configuration block for a service of globally." required: ["blacklist", "whitelist"] properties: { blacklist: { type: "array" description: "Blacklisted IP addresses" items: { type: "string" format: "ipv4" } } whitelist: { type: "array" description: "Whitelisted IP addresses" items: { type: "string" format: "ipv4" } } } } limitConcurrentRequests: { type: "boolean" description: "If enabled, Otoroshi will reject new request if too much at the same time" } lines: { type: "array" description: "Possibles lines for Otoroshi" items: { type: "string" } } mailerSettings: { type: "object" description: "Configuration for mailgun api client" required: ["apiKey", "domain"] properties: { apiKey: { type: "string" description: "Mailgun mailer api key" } apiKeyPrivate: { type: "string" description: "Mailjet mailer private api key" } apiKeyPublic: { type: "string" description: "Mailjet mailer public api key" } domain: { type: "string" description: "Mailgun mailer domain" } eu: { type: "boolean" description: "Mailgun mailer, use EU tenant api" } header: { type: "object" description: "Generic mailer headers" } type: { type: "string" description: "Type of the mailer: console, generic, mailgun, mailjet" } url: { type: "string" description: "Generic mailer url" } } } maxConcurrentRequests: { type: "integer" format: "int64" description: "The number of authorized request processed at the same time" } maxHttp10ResponseSize: { type: "integer" format: "int64" description: "The max size in bytes of an HTTP 1.0 response" } maxLogsSize: { type: "integer" format: "int32" description: "Number of events kept locally" } middleFingers: { type: "boolean" description: "Use middle finger emoji as a response character for endless HTTP responses" } perIpThrottlingQuota: { type: "integer" format: "int64" description: "Authorized number of calls per second globally per IP address, measured on 10 seconds" } privateAppsAuth0Config: { type: "object" additionalProperties: true } streamEntityOnly: { type: "boolean" description: "HTTP will be streamed only. Doesn't work with old browsers" } throttlingQuota: { type: "integer" format: "int64" description: "Authorized number of calls per second globally, measured on 10 seconds" } u2fLoginOnly: { type: "boolean" description: "If enabled, login to backoffice through Auth0 will be disabled" } useCircuitBreakers: { type: "boolean" description: "If enabled, services will be authorized to use circuit breakers" } } } }