private static void exportActuatorEndpoints(final File dataPath) {
        var parentPath = new File(dataPath, "actuators");
        if (parentPath.exists()) {
            FileUtils.deleteQuietly(parentPath);
        }
        if (!parentPath.mkdirs()) {
            LOGGER.debug("Unable to create directory");
        }

        LOGGER.info("Checking REST endpoints...");
        var subTypes = ReflectionUtils.findClassesWithAnnotationsInPackage(List.of(RestControllerEndpoint.class), "org");
        collectRestActuators(subTypes, parentPath, RestControllerEndpoint.class);

        
        var restActuators = ReflectionUtils.findSubclassesInPackage(BaseCasRestActuatorEndpoint.class, "org.apereo.cas");
        collectRestActuators(restActuators, parentPath, Endpoint.class);

        LOGGER.info("Checking endpoints...");
        subTypes = ReflectionUtils.findClassesWithAnnotationsInPackage(List.of(Endpoint.class), "org");
        subTypes.forEach(clazz -> {
            var properties = new ArrayList<Map<?, ?>>();
            var endpoint = getEndpoint(clazz);

            if (endpoint != null) {
                LOGGER.debug("Checking endpoints (READ) for [{}]", clazz.getName());
                var methods = findAnnotatedMethods(clazz, ReadOperation.class);
                methods.forEach(Unchecked.consumer(method -> {
                    var read = method.getAnnotation(ReadOperation.class);
                    var map = new LinkedHashMap<>();
                    map.put("method", RequestMethod.GET.name());
                    map.put("path", endpoint.getKey());
                    map.put("name", endpoint.getKey());
                    map.put("endpointType", endpoint.getValue());
                    collectActuatorEndpointMethodMetadata(method, map, endpoint.getKey());
                    if (read.produces().length > 0) {
                        map.put("produces", read.produces());
                    }
                    properties.add(map);
                }));

                LOGGER.debug("Checking endpoints (WRITE) for [{}]", clazz.getName());
                methods = findAnnotatedMethods(clazz, WriteOperation.class);
                methods.forEach(Unchecked.consumer(method -> {
                    var write = method.getAnnotation(WriteOperation.class);
                    var map = new LinkedHashMap<>();
                    map.put("method", RequestMethod.POST.name());
                    map.put("path", endpoint.getKey());
                    map.put("name", endpoint.getKey());
                    map.put("endpointType", Endpoint.class.getSimpleName());
                    collectActuatorEndpointMethodMetadata(method, map, endpoint.getKey());
                    if (write.produces().length > 0) {
                        map.put("produces", write.produces());
                    }
                    properties.add(map);
                }));

                LOGGER.debug("Checking endpoints (DELETE) for [{}]", clazz.getName());
                methods = findAnnotatedMethods(clazz, DeleteOperation.class);
                methods.forEach(Unchecked.consumer(method -> {
                    var delete = method.getAnnotation(DeleteOperation.class);
                    var map = new LinkedHashMap<>();
                    map.put("method", RequestMethod.DELETE.name());
                    map.put("path", endpoint.getKey());
                    map.put("name", endpoint.getKey());
                    map.put("endpointType", endpoint.getValue());
                    collectActuatorEndpointMethodMetadata(method, map, endpoint.getKey());
                    if (delete.produces().length > 0) {
                        map.put("produces", delete.produces());
                    }
                    properties.add(map);
                }));
            }
            if (!properties.isEmpty()) {
                var destination = new File(parentPath, endpoint.getKey());
                if (!destination.mkdirs()) {
                    LOGGER.debug("Unable to create directory [{}]", destination);
                }

                var configFile = new File(destination, "config.yml");
                CasConfigurationMetadataCatalog.export(configFile, properties);
            }
        });
    }
This is {@link CasDocumentationApplication}.

@author Misagh Moayyed
@since 6.4.0
docs/cas-server-documentation-processor/src/main/java/org/apereo/cas/documentation/CasDocumentationApplication.java