@Override
	public List<RouterOperation> getRouterOperations(OpenAPI openAPI) {
		GenericResponseService genericResponseService = applicationContext.getBean(GenericResponseService.class);
		List<RouterOperation> routerOperationList = new ArrayList<>();
		functionCatalogOptional.ifPresent(
				functionCatalog -> {
					Set<String> names = functionCatalog.getNames(null);
					for (String name : names) {
						if (!RoutingFunction.FUNCTION_NAME.equals(name) && applicationContext.containsBean(name)) {
							FunctionInvocationWrapper function = functionCatalog.lookup(name);
							if (function.isFunction()) {
								for (RequestMethod requestMethod : functionRequestMethods) {
									RouterOperation routerOperation = buildRouterOperation(name, " function", requestMethod, routerOperationList);
									buildRequest(openAPI, name, function, requestMethod, routerOperation);
									ApiResponses apiResponses = buildResponses(openAPI, function, defaultMediaTypes, genericResponseService);
									routerOperation.getOperationModel().responses(apiResponses);
									if (StringUtils.isEmpty(prefix)) {
										if (GET.equals(requestMethod))
											routerOperation.setPath(AntPathMatcher.DEFAULT_PATH_SEPARATOR + name + AntPathMatcher.DEFAULT_PATH_SEPARATOR + "{" + name + "}");
										else
											routerOperation.setPath(AntPathMatcher.DEFAULT_PATH_SEPARATOR + name);
									}
									else {
										if (GET.equals(requestMethod))
											routerOperation.setPath(prefix + AntPathMatcher.DEFAULT_PATH_SEPARATOR + name + AntPathMatcher.DEFAULT_PATH_SEPARATOR + "{" + name + "}");
										else
											routerOperation.setPath(prefix + AntPathMatcher.DEFAULT_PATH_SEPARATOR + name);
									}

									RouterOperation userRouterOperation = this.getRouterFunctionPaths(name, requestMethod);
									if (userRouterOperation != null)
										mergeRouterOperation(routerOperation, userRouterOperation);
								}
							}
							else if (function.isConsumer()) {
								for (RequestMethod requestMethod : consumerRequestMethods) {
									RouterOperation routerOperation = buildRouterOperation(name, " consumer", requestMethod, routerOperationList);
									buildRequest(openAPI, name, function, requestMethod, routerOperation);
									ApiResponses apiResponses = new ApiResponses();
									ApiResponse apiResponse = new ApiResponse();
									apiResponse.setContent(new Content());
									apiResponses.put(String.valueOf(HttpStatus.ACCEPTED.value()), apiResponse.description(HttpStatus.ACCEPTED.getReasonPhrase()));
									getRouterOperationsCommon(name, requestMethod, routerOperation, apiResponses);
								}
							}
							else if (function.isSupplier()) {
								for (RequestMethod requestMethod : supplierRequestMethods) {
									RouterOperation routerOperation = buildRouterOperation(name, " supplier", requestMethod, routerOperationList);
									ApiResponses apiResponses = buildResponses(openAPI, function, new String[] { springDocConfigProperties.getDefaultProducesMediaType() }, genericResponseService);
									getRouterOperationsCommon(name, requestMethod, routerOperation, apiResponses);
								}
							}
						}
					}
				}
		);
		return routerOperationList;
	}
Instantiates a new Spring cloud function provider.

@param functionCatalogOptional   the function catalog
@param springDocConfigProperties the spring doc config properties
springdoc-openapi-starter-common/src/main/java/org/springdoc/core/providers/SpringCloudFunctionProvider.java