changeset 2768:9dd8c203a54a

Updated docs for the upcoming NGINX Plus release.
author Yaroslav Zhuravlev <yar@nginx.com>
date Wed, 22 Sep 2021 13:47:23 +0300
parents c56adb7148a4
children 16f6fa718be2
files xml/en/docs/http/ngx_http_api_module.xml xml/en/docs/http/ngx_http_api_module_head.xml xml/en/docs/http/ngx_http_auth_jwt_module.xml xml/en/docs/stream/ngx_stream_upstream_hc_module.xml xml/ru/docs/http/ngx_http_auth_jwt_module.xml xml/ru/docs/stream/ngx_stream_upstream_hc_module.xml yaml/nginx_api.yaml
diffstat 7 files changed, 356 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/xml/en/docs/http/ngx_http_api_module.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/en/docs/http/ngx_http_api_module.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -110,21 +110,21 @@
 a supported API <link id="api_version">version</link> in the URI.
 Examples of API requests with this configuration:
 <example>
-http://127.0.0.1/api/6/
-http://127.0.0.1/api/6/nginx
-http://127.0.0.1/api/6/connections
-http://127.0.0.1/api/6/http/requests
-http://127.0.0.1/api/6/http/server_zones/server_backend
-http://127.0.0.1/api/6/http/caches/cache_backend
-http://127.0.0.1/api/6/http/upstreams/backend
-http://127.0.0.1/api/6/http/upstreams/backend/servers/
-http://127.0.0.1/api/6/http/upstreams/backend/servers/1
-http://127.0.0.1/api/6/http/keyvals/one?key=arg1
-http://127.0.0.1/api/6/stream/
-http://127.0.0.1/api/6/stream/server_zones/server_backend
-http://127.0.0.1/api/6/stream/upstreams/
-http://127.0.0.1/api/6/stream/upstreams/backend
-http://127.0.0.1/api/6/stream/upstreams/backend/servers/1
+http://127.0.0.1/api/7/
+http://127.0.0.1/api/7/nginx
+http://127.0.0.1/api/7/connections
+http://127.0.0.1/api/7/http/requests
+http://127.0.0.1/api/7/http/server_zones/server_backend
+http://127.0.0.1/api/7/http/caches/cache_backend
+http://127.0.0.1/api/7/http/upstreams/backend
+http://127.0.0.1/api/7/http/upstreams/backend/servers/
+http://127.0.0.1/api/7/http/upstreams/backend/servers/1
+http://127.0.0.1/api/7/http/keyvals/one?key=arg1
+http://127.0.0.1/api/7/stream/
+http://127.0.0.1/api/7/stream/server_zones/server_backend
+http://127.0.0.1/api/7/stream/upstreams/
+http://127.0.0.1/api/7/stream/upstreams/backend
+http://127.0.0.1/api/7/stream/upstreams/backend/servers/1
 </example>
 </para>
 
@@ -155,14 +155,14 @@
 All API requests should contain a supported API version in the URI.
 If the request URI equals the location prefix,
 the list of supported API versions is returned.
-The current API version is “<literal>6</literal>”.
+The current API version is “<literal>7</literal>”.
 </para>
 
 <para>
 The optional “<literal>fields</literal>” argument in the request line
 specifies which fields of the requested objects will be output:
 <example>
-http://127.0.0.1/api/6/nginx?fields=version,build
+http://127.0.0.1/api/7/nginx?fields=version,build
 </example>
 </para>
 
@@ -208,6 +208,15 @@
 <list type="bullet">
 
 <listitem>
+The <literal>codes</literal> data
+in <literal>responses</literal> for each HTTP
+<link id="def_nginx_http_upstream">upstream</link>,
+<link id="def_nginx_http_server_zone">server zone</link>, and
+<link id="def_nginx_http_location_zone">location zone</link>
+were added in <link id="api_version">version</link> 7.
+</listitem>
+
+<listitem>
 The <link id="stream_limit_conns_">/stream/limit_conns/</link> data
 were added in <link id="api_version">version</link> 6.
 </listitem>
@@ -2284,7 +2293,7 @@
 <tag-name>
 <literal>responses</literal></tag-name>
 <tag-desc>
-The total number of responses sent to clients and the number of responses with status codes “<literal>1xx</literal>”, “<literal>2xx</literal>”, “<literal>3xx</literal>”, “<literal>4xx</literal>”, and “<literal>5xx</literal>”.<list type="tag">
+The total number of responses sent to clients, the number of responses with status codes “<literal>1xx</literal>”, “<literal>2xx</literal>”, “<literal>3xx</literal>”, “<literal>4xx</literal>”, and “<literal>5xx</literal>”, and the number of responses per each status code.<list type="tag">
 <tag-name>
 <literal>1xx</literal> (<literal>integer</literal>)
 </tag-name>
@@ -2316,6 +2325,18 @@
 The number of responses with “<literal>5xx</literal>” status codes.
 </tag-desc>
 <tag-name>
+<literal>codes</literal></tag-name>
+<tag-desc>
+The number of responses per each status code.<list type="tag">
+<tag-name>
+<literal>codeNumber</literal> (<literal>integer</literal>)
+</tag-name>
+<tag-desc>
+The number of responses with this particular status code.
+</tag-desc>
+</list>
+</tag-desc>
+<tag-name>
 <literal>total</literal> (<literal>integer</literal>)
 </tag-name>
 <tag-desc>
@@ -2353,6 +2374,12 @@
     "3xx" : 4522,
     "4xx" : 907,
     "5xx" : 266,
+    "codes" : {
+      "200" : 699482,
+      "301" : 4522,
+      "404" : 907,
+      "503" : 266
+    },
     "total" : 705177
   },
   "discarded" : 1513,
@@ -2372,7 +2399,7 @@
 <tag-name>
 <literal>responses</literal></tag-name>
 <tag-desc>
-The total number of responses sent to clients and the number of responses with status codes “<literal>1xx</literal>”, “<literal>2xx</literal>”, “<literal>3xx</literal>”, “<literal>4xx</literal>”, and “<literal>5xx</literal>”.<list type="tag">
+The total number of responses sent to clients, the number of responses with status codes “<literal>1xx</literal>”, “<literal>2xx</literal>”, “<literal>3xx</literal>”, “<literal>4xx</literal>”, and “<literal>5xx</literal>”, and the number of responses per each status code.<list type="tag">
 <tag-name>
 <literal>1xx</literal> (<literal>integer</literal>)
 </tag-name>
@@ -2404,6 +2431,18 @@
 The number of responses with “<literal>5xx</literal>” status codes.
 </tag-desc>
 <tag-name>
+<literal>codes</literal></tag-name>
+<tag-desc>
+The number of responses per each status code.<list type="tag">
+<tag-name>
+<literal>codeNumber</literal> (<literal>integer</literal>)
+</tag-name>
+<tag-desc>
+The number of responses with this particular status code.
+</tag-desc>
+</list>
+</tag-desc>
+<tag-name>
 <literal>total</literal> (<literal>integer</literal>)
 </tag-name>
 <tag-desc>
@@ -2440,6 +2479,12 @@
     "3xx" : 4522,
     "4xx" : 907,
     "5xx" : 266,
+    "codes" : {
+      "200" : 112674,
+      "301" : 4522,
+      "404" : 2504,
+      "503" : 266
+    },
     "total" : 705177
   },
   "discarded" : 1513,
@@ -2847,6 +2892,18 @@
 The number of responses with “<literal>5xx</literal>” status codes.
 </tag-desc>
 <tag-name>
+<literal>codes</literal></tag-name>
+<tag-desc>
+The number of responses per each status code.<list type="tag">
+<tag-name>
+<literal>codeNumber</literal> (<literal>integer</literal>)
+</tag-name>
+<tag-desc>
+The number of responses with this particular status code.
+</tag-desc>
+</list>
+</tag-desc>
+<tag-name>
 <literal>total</literal> (<literal>integer</literal>)
 </tag-name>
 <tag-desc>
@@ -3006,6 +3063,11 @@
           "3xx" : 0,
           "4xx" : 915,
           "5xx" : 6,
+          "codes" : {
+            "200" : 666310,
+            "404" : 915,
+            "503" : 6
+          },
           "total" : 667231
         },
         "sent" : 251946292,
@@ -3038,6 +3100,8 @@
           "3xx" : 0,
           "4xx" : 0,
           "5xx" : 0,
+          "codes" : {
+          },
           "total" : 0
         },
         "sent" : 0,
--- a/xml/en/docs/http/ngx_http_api_module_head.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/en/docs/http/ngx_http_api_module_head.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -110,21 +110,21 @@
 a supported API <link id="api_version">version</link> in the URI.
 Examples of API requests with this configuration:
 <example>
-http://127.0.0.1/api/6/
-http://127.0.0.1/api/6/nginx
-http://127.0.0.1/api/6/connections
-http://127.0.0.1/api/6/http/requests
-http://127.0.0.1/api/6/http/server_zones/server_backend
-http://127.0.0.1/api/6/http/caches/cache_backend
-http://127.0.0.1/api/6/http/upstreams/backend
-http://127.0.0.1/api/6/http/upstreams/backend/servers/
-http://127.0.0.1/api/6/http/upstreams/backend/servers/1
-http://127.0.0.1/api/6/http/keyvals/one?key=arg1
-http://127.0.0.1/api/6/stream/
-http://127.0.0.1/api/6/stream/server_zones/server_backend
-http://127.0.0.1/api/6/stream/upstreams/
-http://127.0.0.1/api/6/stream/upstreams/backend
-http://127.0.0.1/api/6/stream/upstreams/backend/servers/1
+http://127.0.0.1/api/7/
+http://127.0.0.1/api/7/nginx
+http://127.0.0.1/api/7/connections
+http://127.0.0.1/api/7/http/requests
+http://127.0.0.1/api/7/http/server_zones/server_backend
+http://127.0.0.1/api/7/http/caches/cache_backend
+http://127.0.0.1/api/7/http/upstreams/backend
+http://127.0.0.1/api/7/http/upstreams/backend/servers/
+http://127.0.0.1/api/7/http/upstreams/backend/servers/1
+http://127.0.0.1/api/7/http/keyvals/one?key=arg1
+http://127.0.0.1/api/7/stream/
+http://127.0.0.1/api/7/stream/server_zones/server_backend
+http://127.0.0.1/api/7/stream/upstreams/
+http://127.0.0.1/api/7/stream/upstreams/backend
+http://127.0.0.1/api/7/stream/upstreams/backend/servers/1
 </example>
 </para>
 
@@ -155,14 +155,14 @@
 All API requests should contain a supported API version in the URI.
 If the request URI equals the location prefix,
 the list of supported API versions is returned.
-The current API version is “<literal>6</literal>”.
+The current API version is “<literal>7</literal>”.
 </para>
 
 <para>
 The optional “<literal>fields</literal>” argument in the request line
 specifies which fields of the requested objects will be output:
 <example>
-http://127.0.0.1/api/6/nginx?fields=version,build
+http://127.0.0.1/api/7/nginx?fields=version,build
 </example>
 </para>
 
@@ -208,6 +208,15 @@
 <list type="bullet">
 
 <listitem>
+The <literal>codes</literal> data
+in <literal>responses</literal> for each HTTP
+<link id="def_nginx_http_upstream">upstream</link>,
+<link id="def_nginx_http_server_zone">server zone</link>, and
+<link id="def_nginx_http_location_zone">location zone</link>
+were added in <link id="api_version">version</link> 7.
+</listitem>
+
+<listitem>
 The <link id="stream_limit_conns_">/stream/limit_conns/</link> data
 were added in <link id="api_version">version</link> 6.
 </listitem>
--- a/xml/en/docs/http/ngx_http_auth_jwt_module.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/en/docs/http/ngx_http_auth_jwt_module.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -9,7 +9,7 @@
 <module name="Module ngx_http_auth_jwt_module"
         link="/en/docs/http/ngx_http_auth_jwt_module.html"
         lang="en"
-        rev="11">
+        rev="12">
 
 <section id="summary">
 
@@ -18,11 +18,10 @@
 implements client authorization by validating the provided
 <link url="https://tools.ietf.org/html/rfc7519">JSON Web Token</link> (JWT)
 using the specified keys.
-JWT claims can be encoded in a
-<link url="https://tools.ietf.org/html/rfc7515">JSON Web Signature</link> (JWS)
-or
+The module supports
+<link url="https://tools.ietf.org/html/rfc7515">JSON Web Signature</link> (JWS),
 <link url="https://tools.ietf.org/html/rfc7516">JSON Web Encryption</link> (JWE)
-(1.19.7) structure.
+(1.19.7), and Nested JWT (1.21.0).
 The module can be used for
 <link url="http://openid.net/specs/openid-connect-core-1_0.html">OpenID Connect</link>
 authentication.
@@ -114,6 +113,10 @@
 dir&mdash;direct use of a shared symmetric key as the content encryption key
 </listitem>
 
+<listitem>
+RSA-OAEP, RSA-OAEP-256, RSA-OAEP-384, RSA-OAEP-512 (1.21.0)
+</listitem>
+
 </list>
 </para>
 
@@ -241,6 +244,18 @@
 Parameter value can contain variables.
 </para>
 
+<para>
+Several <literal>auth_jwt_key_file</literal> directives
+can be specified on the same level (1.21.1):
+<example>
+auth_jwt_key_file conf/keys.json;
+auth_jwt_key_file conf/key.jwk;
+</example>
+If at least one of the specified keys cannot be loaded or processed,
+nginx will return the
+<http-status code="500" text="Internal Server Error"/> error.
+</para>
+
 </directive>
 
 
@@ -279,6 +294,15 @@
     }
 }
 </example>
+Several <literal>auth_jwt_key_request</literal> directives
+can be specified on the same level (1.21.1):
+<example>
+auth_jwt_key_request /jwks_uri;
+auth_jwt_key_request /jwks2_uri;
+</example>
+If at least one of the specified keys cannot be loaded or processed,
+nginx will return the
+<http-status code="500" text="Internal Server Error"/> error.
 </para>
 
 </directive>
@@ -305,7 +329,9 @@
 
 
 <directive name="auth_jwt_type">
-<syntax><value>signed</value> | <value>encrypted</value></syntax>
+<syntax><value>signed</value> |
+        <value>encrypted</value> |
+        <value>nested</value></syntax>
 <default>signed</default>
 <context>http</context>
 <context>server</context>
@@ -315,8 +341,37 @@
 
 <para>
 Specifies which type of JSON Web Token to expect:
-JWS (<literal>signed</literal>) or
-JWE (<literal>encrypted</literal>).
+JWS (<literal>signed</literal>),
+JWE (<literal>encrypted</literal>),
+or signed and then encrypted
+Nested JWT (<literal>nested</literal>) (1.21.0).
+</para>
+
+</directive>
+
+
+<directive name="auth_jwt_require">
+<syntax><value>value</value> ...</syntax>
+<default/>
+<context>http</context>
+<context>server</context>
+<context>location</context>
+<context>limit_except</context>
+<appeared-in>1.21.2</appeared-in>
+
+<para>
+Defines additional conditions for JWT validation.
+The value can contain text, variables, and their combination.
+The authentication will succeed only
+if all the values are not empty and are not equal to “0”.
+<example>
+map $jwt_claim_iss $valid_jwt_iss {
+    "good" 1;
+}
+...
+
+auth_jwt_require $valid_jwt_iss;
+</example>
 </para>
 
 </directive>
@@ -357,6 +412,15 @@
 </para>
 </tag-desc>
 
+<tag-name id="var_jwt_payload"><var>$jwt_payload</var></tag-name>
+<tag-desc>
+returns the decrypted top-level payload
+of <literal>nested</literal>
+or <literal>encrypted</literal> tokens (1.21.2).
+For nested tokens returns the enclosed JWS token.
+For encrypted tokens returns JSON with claims.
+</tag-desc>
+
 </list>
 </para>
 
--- a/xml/en/docs/stream/ngx_stream_upstream_hc_module.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/en/docs/stream/ngx_stream_upstream_hc_module.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -9,7 +9,7 @@
 <module name="Module ngx_stream_upstream_hc_module"
         link="/en/docs/stream/ngx_stream_upstream_hc_module.html"
         lang="en"
-        rev="5">
+        rev="6">
 
 <section id="summary">
 
@@ -154,14 +154,23 @@
 </tag-desc>
 
 <tag-name id="health_check_mandatory">
-<literal>mandatory</literal>
+<literal>mandatory</literal> [<literal>persistent</literal>]
 </tag-name>
 <tag-desc>
+<para>
 sets the initial “checking” state for a server
 until the first health check is completed (1.11.7).
 Client connections are not passed to servers in the “checking” state.
 If the parameter is not specified,
 the server will be initially considered healthy.
+</para>
+
+<para id="health_check_persistent">
+The <literal>persistent</literal> parameter (1.21.1)
+sets the initial “up” state for a server after reload
+if the server was considered healthy before reload.
+</para>
+
 </tag-desc>
 
 <tag-name id="health_check_match">
--- a/xml/ru/docs/http/ngx_http_auth_jwt_module.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/ru/docs/http/ngx_http_auth_jwt_module.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -9,7 +9,7 @@
 <module name="Модуль ngx_http_auth_jwt_module"
         link="/ru/docs/http/ngx_http_auth_jwt_module.html"
         lang="ru"
-        rev="11">
+        rev="12">
 
 <section id="summary">
 
@@ -18,11 +18,10 @@
 предоставляет возможность авторизации клиента с проверкой предоставляемого
 <link url="https://tools.ietf.org/html/rfc7519">JSON Web Token</link> (JWT)
 при помощи указанных ключей.
-JWT claims могут быть зашифрованы в структуре
-<link url="https://tools.ietf.org/html/rfc7515">JSON Web Signature</link> (JWS)
-или
+Модуль поддерживает
+<link url="https://tools.ietf.org/html/rfc7515">JSON Web Signature</link> (JWS),
 <link url="https://tools.ietf.org/html/rfc7516">JSON Web Encryption</link> (JWE)
-(1.19.7).
+(1.19.7) и Nested JWT (1.21.0).
 Модуль может использоваться для настройки аутентификации
 <link url="http://openid.net/specs/openid-connect-core-1_0.html">OpenID Connect</link>.
 </para>
@@ -98,7 +97,7 @@
 </para>
 
 <para>
-Алгоритмы JWE для управления ключом (1.19.7):
+Алгоритмы JWE для управления ключом (1.19.9):
 <list type="bullet">
 
 <listitem>
@@ -114,6 +113,10 @@
 в качестве ключа шифрования содержимого
 </listitem>
 
+<listitem>
+RSA-OAEP, RSA-OAEP-256, RSA-OAEP-384, RSA-OAEP-512 (1.21.0)
+</listitem>
+
 </list>
 </para>
 
@@ -241,6 +244,18 @@
 В значении параметра допустимо использование переменных.
 </para>
 
+<para>
+На одном уровне может быть указано
+несколько директив <literal>auth_jwt_key_file</literal> (1.21.1):
+<example>
+auth_jwt_key_file conf/keys.json;
+auth_jwt_key_file conf/key.jwk;
+</example>
+Если хотя бы один из указанных ключей не может быть загружен или обработан,
+nginx вернёт ошибку
+<http-status code="500" text="Internal Server Error"/>.
+</para>
+
 </directive>
 
 
@@ -279,6 +294,15 @@
     }
 }
 </example>
+На одном уровне может быть указано
+несколько директив <literal>auth_jwt_key_request</literal> (1.21.1):
+<example>
+auth_jwt_key_request /jwks_uri;
+auth_jwt_key_request /jwks2_uri;
+</example>
+Если хотя бы один из указанных ключей не может быть загружен или обработан,
+nginx вернёт ошибку
+<http-status code="500" text="Internal Server Error"/>.
 </para>
 
 </directive>
@@ -302,8 +326,11 @@
 
 </directive>
 
+
 <directive name="auth_jwt_type">
-<syntax><value>signed</value> | <value>encrypted</value></syntax>
+<syntax><value>signed</value> |
+        <value>encrypted</value> |
+        <value>nested</value></syntax>
 <default>signed</default>
 <context>http</context>
 <context>server</context>
@@ -313,8 +340,37 @@
 
 <para>
 Задаёт ожидаемый тип JSON Web Token:
-JWS (<literal>signed</literal>) или
-JWE (<literal>encrypted</literal>).
+JWS (<literal>signed</literal>),
+JWE (<literal>encrypted</literal>)
+или подписанный и затем зашифрованный
+Nested JWT (<literal>nested</literal>) (1.21.0).
+</para>
+
+</directive>
+
+
+<directive name="auth_jwt_require">
+<syntax><value>значение</value> ...</syntax>
+<default/>
+<context>http</context>
+<context>server</context>
+<context>location</context>
+<context>limit_except</context>
+<appeared-in>1.21.2</appeared-in>
+
+<para>
+Задаёт дополнительные условия для проверки JWT.
+В качестве значения можно использовать текст, переменные и их комбинации.
+Для успешной аутентификации необходимо, чтобы
+значение всех строковых параметров было непустое или не равно “0”.
+<example>
+map $jwt_claim_iss $valid_jwt_iss {
+    "good" 1;
+}
+...
+
+auth_jwt_require $valid_jwt_iss;
+</example>
 </para>
 
 </directive>
@@ -355,6 +411,15 @@
 </para>
 </tag-desc>
 
+<tag-name id="var_jwt_payload"><var>$jwt_payload</var></tag-name>
+<tag-desc>
+возвращает расшифрованную полезную нагрузку (payload) верхнего уровня
+для <literal>вложенных</literal>
+или <literal>зашифрованных</literal> токенов (1.21.2).
+Для вложенных токенов возвращает внутренний JWS токен.
+Для зашифрованных токенов возвращает JSON с claims.
+</tag-desc>
+
 </list>
 </para>
 
--- a/xml/ru/docs/stream/ngx_stream_upstream_hc_module.xml	Tue Jul 13 13:44:05 2021 +0100
+++ b/xml/ru/docs/stream/ngx_stream_upstream_hc_module.xml	Wed Sep 22 13:47:23 2021 +0300
@@ -9,7 +9,7 @@
 <module name="Модуль ngx_stream_upstream_hc_module"
         link="/ru/docs/stream/ngx_stream_upstream_hc_module.html"
         lang="ru"
-        rev="5">
+        rev="6">
 
 <section id="summary">
 
@@ -154,14 +154,22 @@
 </tag-desc>
 
 <tag-name id="health_check_mandatory">
-<literal>mandatory</literal>
+<literal>mandatory</literal> [<literal>persistent</literal>]
 </tag-name>
 <tag-desc>
+<para>
 устанавливает исходное состояние “checking” для сервера
 до завершения первой проверки работоспособности (1.11.7).
 На серверы в состоянии “checking” клиентские соединения передаваться не будут.
 Если параметр не указан,
 то исходно сервер будет считаться работоспособным.
+</para>
+
+<para id="health_check_persistent">
+Параметр <literal>persistent</literal> (1.21.1)
+устанавливает исходное состояние “up” для сервера после перезагрузки nginx
+в случае, если до перезагрузки сервер считался работоспособным.
+</para>
 </tag-desc>
 
 <tag-name id="health_check_match">
--- a/yaml/nginx_api.yaml	Tue Jul 13 13:44:05 2021 +0100
+++ b/yaml/nginx_api.yaml	Wed Sep 22 13:47:23 2021 +0300
@@ -1,6 +1,6 @@
 swagger: '2.0'
 info:
-  version: '6.0'
+  version: '7.0'
   title: NGINX Plus REST API
   description: NGINX Plus REST
     [API](https://nginx.org/en/docs/http/ngx_http_api_module.html)
@@ -9,7 +9,7 @@
     key-value pairs management for
     [http](https://nginx.org/en/docs/http/ngx_http_keyval_module.html) and
     [stream](https://nginx.org/en/docs/stream/ngx_stream_keyval_module.html).
-basePath: /api/6
+basePath: /api/7
 tags:
   - name: General Info
   - name: Processes
@@ -2384,6 +2384,11 @@
           3xx: 4614
           4xx: 934
           5xx: 1535
+          codes:
+            200: 727270
+            301: 4614
+            404: 930
+            503: 1535
           total: 734373
         discarded: 2020
         received: 180157219
@@ -2397,6 +2402,11 @@
           3xx: 45383
           4xx: 2504
           5xx: 4419
+          codes:
+            200: 112674
+            301: 45383
+            404: 2504
+            503: 4419
           total: 164980
         discarded: 20326
         received: 51575327
@@ -2413,10 +2423,11 @@
         type: integer
         description: The total number of client requests received from clients.
       responses:
-        description: The total number of responses sent to clients and the
+        description: The total number of responses sent to clients, the
           number of responses with status codes
           “<code>1xx</code>”, “<code>2xx</code>”, “<code>3xx</code>”,
-          “<code>4xx</code>”, and “<code>5xx</code>”.
+          “<code>4xx</code>”, and “<code>5xx</code>”, and
+          the number of responses per each status code.
         type: object
         readOnly: true
         properties:
@@ -2440,6 +2451,15 @@
             type: integer
             description: The number of responses with “<code>5xx</code>” status codes.
             readOnly: true
+          codes:
+            type: object
+            description: The number of responses per each status code.
+            readOnly: true
+            properties:
+              codeNumber:
+                type: integer
+                description: The number of responses with this particular status code.
+                readOnly: true
           total:
             type: integer
             description: The total number of responses sent to clients.
@@ -2463,6 +2483,11 @@
         3xx: 4522
         4xx: 907
         5xx: 266
+        codes:
+          200: 699482
+          301: 4522
+          404: 907
+          503: 266
         total: 705177
       discarded: 1513
       received: 172711587
@@ -2484,6 +2509,11 @@
           3xx: 4614
           4xx: 934
           5xx: 1535
+          codes:
+            200: 727290
+            301: 4614
+            404: 934
+            503: 1535
           total: 734373
         discarded: 2020
         received: 180157219
@@ -2496,6 +2526,11 @@
           3xx: 45383
           4xx: 2504
           5xx: 4419
+          codes:
+            200: 112674
+            301: 45383
+            404: 2504
+            503: 4419
           total: 164980
         discarded: 20326
         received: 51575327
@@ -2508,10 +2543,11 @@
         type: integer
         description: The total number of client requests received from clients.
       responses:
-        description: The total number of responses sent to clients and the
+        description: The total number of responses sent to clients, the
           number of responses with status codes
           “<code>1xx</code>”, “<code>2xx</code>”, “<code>3xx</code>”,
-          “<code>4xx</code>”, and “<code>5xx</code>”.
+          “<code>4xx</code>”, and “<code>5xx</code>”, and
+          the number of responses per each status code.
         type: object
         readOnly: true
         properties:
@@ -2535,6 +2571,15 @@
             type: integer
             description: The number of responses with “<code>5xx</code>” status codes.
             readOnly: true
+          codes:
+            type: object
+            description: The number of responses per each status code.
+            readOnly: true
+            properties:
+              codeNumber:
+                type: integer
+                description: The number of responses with this particular status code.
+                readOnly: true
           total:
             type: integer
             description: The total number of responses sent to clients.
@@ -2557,6 +2602,11 @@
         3xx: 4522
         4xx: 907
         5xx: 266
+        codes:
+          200: 112674
+          301: 4522
+          404: 2504
+          503: 266
         total: 705177
       discarded: 1513
       received: 172711587
@@ -2860,6 +2910,10 @@
               3xx: 0
               4xx: 915
               5xx: 6
+              codes:
+                200: 666310
+                404: 915
+                503: 6
               total: 667231
             sent: 251946292
             received: 19222475454
@@ -2887,6 +2941,7 @@
               3xx: 0
               4xx: 0
               5xx: 0
+              codes: {}
               total: 0
             sent: 0
             received: 0
@@ -2921,6 +2976,10 @@
               3xx: 0
               4xx: 915
               5xx: 6
+              codes:
+                200: 666310
+                404: 915
+                503: 6
               total: 667231
             sent: 251946292
             received: 19222475454
@@ -2948,6 +3007,7 @@
               3xx: 0
               4xx: 0
               5xx: 0
+              codes: {}
               total: 0
             sent: 0
             received: 0
@@ -3021,6 +3081,10 @@
               3xx: 0
               4xx: 915
               5xx: 6
+              codes:
+                200: 666310
+                404: 915
+                503: 6
               total: 667231
             sent: 251946292
             received: 19222475454
@@ -3049,6 +3113,7 @@
               3xx: 0
               4xx: 0
               5xx: 0
+              codes: {}
               total: 0
             sent: 0
             received: 0
@@ -3157,6 +3222,15 @@
             type: integer
             description: The number of responses with “<code>5xx</code>” status codes.
             readOnly: true
+          codes:
+            type: object
+            description: The number of responses per each status code.
+            readOnly: true
+            properties:
+              codeNumber:
+                type: integer
+                description: The number of responses with this particular status code.
+                readOnly: true
           total:
             type: integer
             description: The total number of responses obtained from this server.