static void spec_adder()

in router/src/rest_routing/src/rest_routing_plugin.cc [291:1326]


static void spec_adder(RestApiComponent::JsonDocument &spec_doc) {
  auto &allocator = spec_doc.GetAllocator();

  {
    JsonPointer ptr(tags_append_tokens.data(), tags_append_tokens.size());

    ptr.Set(spec_doc,
            JsonValue(rapidjson::kObjectType)
                .AddMember("name", "routes", allocator)
                .AddMember("description", "Routes", allocator),
            allocator);
  }

  // /definitions/RoutingGlobalStatus
  const RestApiComponent::JsonPointer routing_status_def_ptr(
      routing_status_def_tokens.data(), routing_status_def_tokens.size());

  routing_status_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("totalMaxConnections",
                     "number of total connections allowed", allocator)
          .AddMember("currentMaxConnections",
                     "number of current total connections", allocator),
      allocator);

  std::string routing_status_def_ptr_str =
      json_pointer_stringfy(routing_status_def_ptr);

  // /definitions/RoutingGuidelinesDef
  const RestApiComponent::JsonPointer routing_guidelines_def_ptr(
      routing_guidelines_def.data(), routing_guidelines_def.size());

  routing_guidelines_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember("additionalProperties", "true", allocator),
      allocator);

  std::string routing_guidelines_def_ptr_str =
      json_pointer_stringfy(routing_guidelines_def_ptr);

  // /parameters/routeNameParam
  const RestApiComponent::JsonPointer route_name_param_ptr(
      route_name_param_tokens.data(), route_name_param_tokens.size());

  route_name_param_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("name", "routeName", allocator)
          .AddMember("in", "path", allocator)
          .AddMember("description", "name of a route", allocator)
          .AddMember("required", true, allocator)
          .AddMember("type", "string", allocator),
      allocator);

  std::string route_name_param_str =
      json_pointer_stringfy(route_name_param_ptr);

  // /definitions/RoutesHealth
  const RestApiComponent::JsonPointer routes_health_def_ptr(
      routes_health_def_tokens.data(), routes_health_def_tokens.size());

  routes_health_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember("isAlive",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "boolean", allocator),
                             allocator),
              allocator),
      allocator);

  std::string routes_health_def_ptr_str =
      json_pointer_stringfy(routes_health_def_ptr);

  // /definitions/RoutesStatus
  const RestApiComponent::JsonPointer routes_status_def_ptr(
      routes_status_def_tokens.data(), routes_status_def_tokens.size());

  routes_status_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember("activeConnections",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("totalConnections",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("blockedHosts",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator),
              allocator),
      allocator);

  std::string routes_status_def_ptr_str =
      json_pointer_stringfy(routes_status_def_ptr);

  // /definitions/RoutesConfig
  const RestApiComponent::JsonPointer routes_config_def_ptr(
      routes_config_def_tokens.data(), routes_config_def_tokens.size());

  routes_config_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember("bindAddress",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator),
                             allocator)
                  .AddMember("bindPort",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("clientConnectTimeoutInMs",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("destinationConnectTimeoutInMs",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("maxActiveConnections",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("maxConnectErrors",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator),
                             allocator)
                  .AddMember("protocol",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator),
                             allocator)
                  // these are stubbed now
                  //                  .AddMember("destinationClusterName",
                  //                             JsonValue(rapidjson::kObjectType)
                  //                                 .AddMember("type",
                  //                                 "string", allocator),
                  //                             allocator)
                  //                  .AddMember("destinationReplicasetName",
                  //                             JsonValue(rapidjson::kObjectType)
                  //                                 .AddMember("type",
                  //                                 "string", allocator),
                  //                             allocator)
                  .AddMember("socket",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator),
                             allocator)
                  .AddMember("routingStrategy",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator),
                             allocator)
                  .AddMember("mode",
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator),
                             allocator),
              allocator),
      allocator);

  std::string routes_config_def_ptr_str =
      json_pointer_stringfy(routes_config_def_ptr);

  // /definitions/RoutesSummary
  const RestApiComponent::JsonPointer routes_summary_def_ptr(
      routes_summary_def_tokens.data(), routes_summary_def_tokens.size());

  routes_summary_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember("properties",
                     JsonValue(rapidjson::kObjectType)
                         .AddMember("name",
                                    JsonValue(rapidjson::kObjectType)
                                        .AddMember("type", "string", allocator),
                                    allocator),
                     allocator),
      allocator);

  std::string routes_summary_def_ptr_str =
      json_pointer_stringfy(routes_summary_def_ptr);

  // /definitions/RoutesList
  const RestApiComponent::JsonPointer routes_list_def_ptr(
      routes_list_def_tokens.data(), routes_list_def_tokens.size());

  routes_list_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember(
                      "items",
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "array", allocator)
                          .AddMember(
                              "items",
                              JsonValue(rapidjson::kObjectType)
                                  .AddMember(
                                      "$ref",
                                      JsonValue(
                                          routes_summary_def_ptr_str.data(),
                                          routes_summary_def_ptr_str.size(),
                                          allocator),
                                      allocator),
                              allocator),
                      allocator),
              allocator),
      allocator);

  std::string routes_list_def_ptr_str =
      json_pointer_stringfy(routes_list_def_ptr);

  // /definitions/RoutesDestinationSummary
  const RestApiComponent::JsonPointer routes_destination_summary_def_ptr(
      routes_destination_summary_def_tokens.data(),
      routes_destination_summary_def_tokens.size());

  routes_destination_summary_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember("properties",
                     JsonValue(rapidjson::kObjectType)
                         .AddMember("name",
                                    JsonValue(rapidjson::kObjectType)
                                        .AddMember("type", "string", allocator),
                                    allocator),
                     allocator),
      allocator);

  std::string routes_destination_summary_def_ptr_str =
      json_pointer_stringfy(routes_destination_summary_def_ptr);

  // /definitions/RoutesDestinationList
  const RestApiComponent::JsonPointer routes_destination_list_def_ptr(
      routes_destination_list_def_tokens.data(),
      routes_destination_list_def_tokens.size());

  routes_destination_list_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember(
                      "items",
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "array", allocator)
                          .AddMember(
                              "items",
                              JsonValue(rapidjson::kObjectType)
                                  .AddMember(
                                      "$ref",
                                      JsonValue(
                                          routes_destination_summary_def_ptr_str
                                              .data(),
                                          routes_destination_summary_def_ptr_str
                                              .size(),
                                          allocator),
                                      allocator),
                              allocator),
                      allocator),
              allocator),
      allocator);

  std::string routes_destination_list_def_ptr_str =
      json_pointer_stringfy(routes_destination_list_def_ptr);

  // /definitions/RoutesBlockedHostSummary
  const RestApiComponent::JsonPointer routes_blockedhost_summary_def_ptr(
      routes_blockedhost_summary_def_tokens.data(),
      routes_blockedhost_summary_def_tokens.size());

  routes_blockedhost_summary_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember("properties",
                     JsonValue(rapidjson::kObjectType)
                         .AddMember("name",
                                    JsonValue(rapidjson::kObjectType)
                                        .AddMember("type", "string", allocator),
                                    allocator),
                     allocator),
      allocator);

  std::string routes_blockedhost_summary_def_ptr_str =
      json_pointer_stringfy(routes_blockedhost_summary_def_ptr);

  // /definitions/RoutesBlockedHostList
  const RestApiComponent::JsonPointer routes_blockedhost_list_def_ptr(
      routes_blockedhost_list_def_tokens.data(),
      routes_blockedhost_list_def_tokens.size());

  routes_blockedhost_list_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember(
                      "items",
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "array", allocator)
                          .AddMember(
                              "items",
                              JsonValue(rapidjson::kObjectType)
                                  .AddMember(
                                      "$ref",
                                      JsonValue(
                                          routes_blockedhost_summary_def_ptr_str
                                              .data(),
                                          routes_blockedhost_summary_def_ptr_str
                                              .size(),
                                          allocator),
                                      allocator),
                              allocator),
                      allocator),
              allocator),
      allocator);

  std::string routes_blockedhost_list_def_ptr_str =
      json_pointer_stringfy(routes_blockedhost_list_def_ptr);

  // /definitions/RoutesConnectionSummary
  const RestApiComponent::JsonPointer routes_connection_summary_def_ptr(
      routes_connection_summary_def_tokens.data(),
      routes_connection_summary_def_tokens.size());

  routes_connection_summary_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember(RestRoutingConnections::kKeyTimeStarted,
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator)
                                 .AddMember("format", "date-time", allocator)
                                 .AddMember("description",
                                            "timepoint when connection to "
                                            "server was initiated",
                                            allocator),
                             allocator)
                  .AddMember(
                      RestRoutingConnections::kKeyTimeConnectedToServer,
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "string", allocator)
                          .AddMember("format", "date-time", allocator)
                          .AddMember(
                              "description",
                              "timepoint when connection to server succeeded",
                              allocator),
                      allocator)
                  .AddMember(RestRoutingConnections::kKeyTimeLastSentToServer,
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "string", allocator)
                                 .AddMember("format", "date-time", allocator)
                                 .AddMember("description",
                                            "timepoint when there was last "
                                            "data sent from client to server",
                                            allocator),
                             allocator)
                  .AddMember(
                      RestRoutingConnections::kKeyTimeLastReceivedFromServer,
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "string", allocator)
                          .AddMember("format", "date-time", allocator)
                          .AddMember("description",
                                     "timepoint when there was last data sent "
                                     "from server to client",
                                     allocator),
                      allocator)
                  .AddMember(
                      RestRoutingConnections::kKeyBytesToServer,
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "integer", allocator)
                          .AddMember("description", "bytes sent to destination",
                                     allocator),
                      allocator)
                  .AddMember(RestRoutingConnections::kKeyBytesFromServer,
                             JsonValue(rapidjson::kObjectType)
                                 .AddMember("type", "integer", allocator)
                                 .AddMember("description",
                                            "bytes received from destination",
                                            allocator),
                             allocator)
                  .AddMember(
                      RestRoutingConnections::kKeyDestinationAddress,
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "string", allocator)
                          .AddMember(
                              "description",
                              "address of the destination of the connection",
                              allocator),
                      allocator)
                  .AddMember(
                      RestRoutingConnections::kKeySourceAddress,
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "string", allocator)
                          .AddMember("description",
                                     "address of the source of the connection",
                                     allocator),
                      allocator),
              allocator),
      allocator);

  std::string routes_connection_summary_def_ptr_str =
      json_pointer_stringfy(routes_connection_summary_def_ptr);

  // /definitions/RoutesConnectionList
  const RestApiComponent::JsonPointer routes_connection_list_def_ptr(
      routes_connection_list_def_tokens.data(),
      routes_connection_list_def_tokens.size());

  routes_connection_list_def_ptr.Set(
      spec_doc,
      JsonValue(rapidjson::kObjectType)
          .AddMember("type", "object", allocator)
          .AddMember(
              "properties",
              JsonValue(rapidjson::kObjectType)
                  .AddMember(
                      "items",
                      JsonValue(rapidjson::kObjectType)
                          .AddMember("type", "array", allocator)
                          .AddMember(
                              "items",
                              JsonValue(rapidjson::kObjectType)
                                  .AddMember(
                                      "$ref",
                                      JsonValue(
                                          routes_connection_summary_def_ptr_str
                                              .data(),
                                          routes_connection_summary_def_ptr_str
                                              .size(),
                                          allocator),
                                      allocator),
                              allocator),
                      allocator),
              allocator),
      allocator);

  std::string routes_connection_list_def_ptr_str =
      json_pointer_stringfy(routes_connection_list_def_ptr);

  // /paths/routingStatus
  {
    JsonPointer ptr(routing_status_path_tokens.data(),
                    routing_status_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routing", allocator),
                               allocator)
                    .AddMember("description",
                               "Get status of the routing plugin", allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "status of the routing plugin",
                                               allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routing_status_def_ptr_str
                                                        .data(),
                                                    routing_status_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /guidelines schema
  {
    JsonPointer ptr(routing_guidelines_schema_tokens.data(),
                    routing_guidelines_schema_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routing", allocator),
                               allocator)
                    .AddMember("description",
                               "Get routing guidelines document schema",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember(
                                        "description",
                                        "routing guidelines document schema",
                                        allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routing_guidelines_def_ptr_str
                                                        .data(),
                                                    routing_guidelines_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /guidelines
  {
    JsonPointer ptr(routing_guidelines_tokens.data(),
                    routing_guidelines_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routing", allocator),
                               allocator)
                    .AddMember("description", "Get routing guidelines document",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "routing guidelines document",
                                               allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routing_guidelines_def_ptr_str
                                                        .data(),
                                                    routing_guidelines_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/routesConfig
  {
    JsonPointer ptr(routes_config_path_tokens.data(),
                    routes_config_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get config of a route",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "config of a route", allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_config_def_ptr_str
                                                        .data(),
                                                    routes_config_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/routesStatus
  {
    JsonPointer ptr(routes_status_path_tokens.data(),
                    routes_status_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get status of a route",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "status of a route", allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_status_def_ptr_str
                                                        .data(),
                                                    routes_status_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/RoutesHealth
  {
    JsonPointer ptr(routes_health_path_tokens.data(),
                    routes_health_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get health of a route",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "health of a route", allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_health_def_ptr_str
                                                        .data(),
                                                    routes_health_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/RoutesDestinations
  {
    JsonPointer ptr(routes_destination_list_path_tokens.data(),
                    routes_destination_list_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get destinations of a route",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "destinations of a route",
                                               allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_destination_list_def_ptr_str
                                                        .data(),
                                                    routes_destination_list_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/RoutesConnections
  {
    JsonPointer ptr(routes_connection_list_path_tokens.data(),
                    routes_connection_list_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get connections of a route",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "connections of a route",
                                               allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_connection_list_def_ptr_str
                                                        .data(),
                                                    routes_connection_list_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/RoutesBlockedHosts
  {
    JsonPointer ptr(routes_blockedhost_list_path_tokens.data(),
                    routes_blockedhost_list_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description",
                               "Get blocked host list for a route", allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "blocked host list for a route",
                                               allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_blockedhost_list_def_ptr_str
                                                        .data(),
                                                    routes_blockedhost_list_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator)
                            .AddMember(
                                "404",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description", "route not found",
                                               allocator),
                                allocator),
                        allocator)
                //
                ,
                allocator)
            .AddMember(
                "parameters",
                JsonValue(rapidjson::kArrayType)
                    .PushBack(
                        JsonValue(rapidjson::kObjectType)
                            .AddMember("$ref",
                                       JsonValue(route_name_param_str.data(),
                                                 route_name_param_str.size(),
                                                 allocator),
                                       allocator),
                        allocator),
                allocator),
        allocator);
  }

  // /paths/routes/
  {
    JsonPointer ptr(routes_list_path_tokens.data(),
                    routes_list_path_tokens.size());

    ptr.Set(
        spec_doc,
        JsonValue(rapidjson::kObjectType)
            .AddMember(
                "get",
                JsonValue(rapidjson::kObjectType)
                    .AddMember("tags",
                               JsonValue(rapidjson::kArrayType)
                                   .PushBack("routes", allocator),
                               allocator)
                    .AddMember("description", "Get list of the routes",
                               allocator)
                    .AddMember(
                        "responses",
                        JsonValue(rapidjson::kObjectType)
                            .AddMember(
                                "200",
                                JsonValue(rapidjson::kObjectType)
                                    .AddMember("description",
                                               "list of the routes", allocator)
                                    .AddMember(
                                        "schema",
                                        JsonValue(rapidjson::kObjectType)
                                            .AddMember(
                                                "$ref",
                                                JsonValue(
                                                    routes_list_def_ptr_str
                                                        .data(),
                                                    routes_list_def_ptr_str
                                                        .size(),
                                                    allocator),
                                                allocator),
                                        allocator),
                                allocator),
                        allocator),
                allocator),
        allocator);
  }
}