diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/pom.xml b/spring-boot-project/spring-boot-actuator-autoconfigure/pom.xml
index ab8b9bb38f..b54f924ec2 100644
--- a/spring-boot-project/spring-boot-actuator-autoconfigure/pom.xml
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/pom.xml
@@ -419,6 +419,11 @@
spring-integration-jmxtest
+
+ org.springframework.restdocs
+ spring-restdocs-mockmvc
+ test
+ org.springframework.securityspring-security-test
@@ -435,4 +440,157 @@
true
+
+
+ full
+
+
+ full
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+
+
+ ant-contrib
+ ant-contrib
+ 1.0b3
+
+
+ ant
+ ant
+
+
+
+
+ org.apache.ant
+ ant-nodeps
+ 1.8.1
+
+
+ org.tigris.antelope
+ antelopetasks
+ 3.2.10
+
+
+
+
+ set-up-maven-properties
+ prepare-package
+
+ run
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ package-docs-zip
+ package
+
+ run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.asciidoctor
+ asciidoctor-maven-plugin
+
+
+ generate-html-documentation
+ prepare-package
+
+ process-asciidoc
+
+
+ html
+
+
+
+ generate-pdf-documentation
+ prepare-package
+
+ process-asciidoc
+
+
+ pdf
+
+
+
+
+ index.adoc
+
+ ${version-type}
+ ${project.version}
+ ${project.build.directory}/generated-snippets/
+
+
+
+
+ org.asciidoctor
+ asciidoctorj-pdf
+ 1.5.0-alpha.11
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ attach-zip
+
+ attach-artifact
+
+
+
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-docs.zip
+ zip
+ docs
+
+
+
+
+
+
+
+
+
+
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/auditevents.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/auditevents.adoc
new file mode 100644
index 0000000000..3ecccb1f7b
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/auditevents.adoc
@@ -0,0 +1,45 @@
+[[audit-events]]
+= Audit Events (`auditevents`)
+
+The `auditevents` endpoint provides information about the application's audit events.
+
+
+
+[[audit-events-retrieving]]
+== Retrieving Audit Events
+
+To retrieve the audit events, make a `GET` request to `/application/auditevents` as shown
+in the following curl-based example:
+
+include::{snippets}auditevents/filtered/curl-request.adoc[]
+
+The preceding example retrieves `logout` events for the principal `alice` that occurred
+after 09:37 on 7 November 2017 in the UTC timezone. The resulting response is similar to
+the following::
+
+include::{snippets}auditevents/filtered/http-response.adoc[]
+
+
+
+[[audit-events-retrieving-query-parameters]]
+=== Query Parameters
+
+The endpoint uses query parameters to limit the events that it returns. The supported
+query parameters are shown in the following table:
+
+[cols="2,4"]
+include::{snippets}auditevents/filtered/request-parameters.adoc[]
+
+The `after` parameter is required. One or both of the `principal` and `type` parameters
+can also be used to further limit the results.
+
+
+
+[[audit-events-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of all of the audit events that matched the query. The
+structure of the response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}auditevents/after/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/beans.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/beans.adoc
new file mode 100644
index 0000000000..0d75d8ed60
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/beans.adoc
@@ -0,0 +1,29 @@
+[[beans]]
+= Beans (`beans`)
+
+The `beans` endpoint provides information about the application's beans.
+
+
+
+[[beans-retrieving]]
+== Retrieving the Beans
+
+To retrieve the beans, make a `GET` request to `/application/beans` as shown in the
+following curl-based example:
+
+include::{snippets}beans/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}beans/http-response.adoc[]
+
+
+
+[[beans-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's beans. The structure of the response is
+described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}beans/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/conditions.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/conditions.adoc
new file mode 100644
index 0000000000..cf492bece3
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/conditions.adoc
@@ -0,0 +1,30 @@
+[[conditions]]
+= Conditions Evaluation Report (`conditions`)
+
+The `conditions` endpoint provides information about the evaluation of conditions on
+configuration and auto-configuration classes.
+
+
+
+[[conditions-retrieving]]
+== Retrieving the Report
+
+To retrieve the report, make a `GET` request to `/application/conditions`, as shown in
+the following curl-based example:
+
+include::{snippets}conditions/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}conditions/http-response.adoc[]
+
+
+
+[[conditions-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's condition evaluation. The following
+table describes the structure of the response:
+
+[cols="3,1,3"]
+include::{snippets}conditions/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/configprops.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/configprops.adoc
new file mode 100644
index 0000000000..e1fb7e5eaf
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/configprops.adoc
@@ -0,0 +1,30 @@
+[[configprops]]
+= Configuration Properties (`configprops`)
+
+The `configprops` endpoint provides information about the application's
+`@ConfigurationProperties` beans.
+
+
+
+[[configprops-retrieving]]
+== Retrieving the `@ConfigurationProperties` Bean
+
+To retrieve the `@ConfigurationProperties` beans, make a `GET` request to
+`/application/configprops` as shown in the following curl-based example:
+
+include::{snippets}configprops/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}configprops/http-response.adoc[]
+
+
+
+[[configprops-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's `@ConfigurationProperties` beans. The
+structure of the response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}configprops/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/env.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/env.adoc
new file mode 100644
index 0000000000..3504806429
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/env.adoc
@@ -0,0 +1,55 @@
+[[env]]
+= Environment (`env`)
+
+The `env` endpoint provides information about the application's `Environment`.
+
+
+
+[[env-entire]]
+== Retrieving the Entire Environment
+
+To retrieve the entire environment, make a `GET` request to `/application/env` as shown in
+the following curl-based example:
+
+include::{snippets}env/all/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}env/all/http-response.adoc[]
+
+
+
+[[env-entire-response-structure]]
+=== Response Structure
+
+The response contains details of the application's `Environment`. The structure of the
+response is described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}env/all/response-fields.adoc[]
+
+
+
+[[env-single-property]]
+== Retrieving a Single Property
+
+To retrieve a single property, make a `GET` request to `/application/env/{property.name}`
+as shown in the following curl-based example:
+
+include::{snippets}env/single/curl-request.adoc[]
+
+The preceding example retrieves information about the property named
+`com.example.cache.max-size`. The resulting response is similar to the following:
+
+include::{snippets}env/single/http-response.adoc[]
+
+
+
+[[env-single-response-structure]]
+=== Response Structure
+
+The response contains details of the requested property. The structure of the response is
+described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}env/single/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/flyway.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/flyway.adoc
new file mode 100644
index 0000000000..fcbea2ad23
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/flyway.adoc
@@ -0,0 +1,29 @@
+[[flyway]]
+= Flyway (`flyway`)
+
+The `flyway` endpoint provides information about database migrations performed by Flyway.
+
+
+
+[[flyway-retrieving]]
+== Retrieving the Migrations
+
+To retrieve the migrations, make a `GET` request to `/application/flyway` as shown in the
+following curl-based example:
+
+include::{snippets}flyway/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}flyway/http-response.adoc[]
+
+
+
+[[flyway-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's Flyway migrations. The structure of the
+response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}flyway/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/health.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/health.adoc
new file mode 100644
index 0000000000..f7477cb071
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/health.adoc
@@ -0,0 +1,29 @@
+[[health]]
+= Health (`health`)
+
+The `health` endpoint provides detailed information about the health of the application.
+
+
+
+[[health-retrieving]]
+== Retrieving the Health
+
+To retrieve the health of the application, make a `GET` request to `/application/health`
+as shown in the following curl-based example:
+
+include::{snippets}health/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}health/http-response.adoc[]
+
+
+
+[[health-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the health of the application. The structure of the
+response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}health/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/heapdump.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/heapdump.adoc
new file mode 100644
index 0000000000..0de90a2ef0
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/heapdump.adoc
@@ -0,0 +1,20 @@
+[[heapdump]]
+= Heap Dump (`heapdump`)
+
+The `heapdump` endpoint provides a heap dump from the application's JVM.
+
+
+
+[[heapdump-retrieving]]
+== Retrieving the Heap dump
+
+To retrieve the heap dump, make a `GET` request to `/application/heapdump`. The response
+is binary data in https://docs.oracle.com/javase/8/docs/technotes/samples/hprof.html[
+HPROF] format and can be large. Typically, you should save the response to disk for
+subsequent analysis. When using curl this can be achieved using the `-O` option as shown
+in the following example:
+
+include::{snippets}heapdump/curl-request.adoc[]
+
+The preceding example results in a file named `heapdump` being written to the current
+working directory.
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/info.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/info.adoc
new file mode 100644
index 0000000000..a807567e49
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/info.adoc
@@ -0,0 +1,47 @@
+[[info]]
+= Info (`info`)
+
+The `info` endpoint provides general information about the application.
+
+
+
+[[info-retrieving]]
+== Retrieving the Info
+
+To retrieve the information about the application, make a `GET` request to
+`/application/info` as shown in the following curl-based example:
+
+include::{snippets}info/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}info/http-response.adoc[]
+
+
+
+[[info-retrieving-response-structure]]
+=== Response Structure
+
+The response contains general information about the application. Each section of the
+response is contributed by an `InfoContributor`. Spring Boot provides `build` and `git`
+contributions.
+
+
+
+[[info-retrieving-response-structure-build]]
+==== `build` Response Structure
+
+The structure of the `build` section of the response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}info/response-fields-beneath-build.adoc[]
+
+
+
+[[info-retrieving-response-structure-git]]
+==== `git` Response Structure
+
+The structure of the `git` section of the response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}info/response-fields-beneath-git.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/liquibase.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/liquibase.adoc
new file mode 100644
index 0000000000..6f3fbe93c6
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/liquibase.adoc
@@ -0,0 +1,30 @@
+[[liquibase]]
+= Liquibase (`liquibase`)
+
+The `liquibase` endpoint provides information about database change sets applied by
+Liquibase.
+
+
+
+[[liquibase-retrieving]]
+== Retrieving the Changes
+
+To retrieve the changes, make a `GET` request to `/application/liquibase` as shown in the
+following curl-based example:
+
+include::{snippets}liquibase/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}liquibase/http-response.adoc[]
+
+
+
+[[liquibase-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's Liquibase change sets. The structure of
+the response is described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}liquibase/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/logfile.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/logfile.adoc
new file mode 100644
index 0000000000..a9914e794a
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/logfile.adoc
@@ -0,0 +1,35 @@
+[[log-file]]
+= Log File (`logfile`)
+
+The `logfile` endpoint provides access to the contents of the application's log file.
+
+
+
+[[logfile-retrieving]]
+== Retrieving the Log File
+
+To retrieve the log file, make a `GET` request to `/application/logfile` as shown in the
+following curl-based example:
+
+include::{snippets}logfile/entire/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}logfile/entire/http-response.adoc[]
+
+
+
+[[logfile-retrieving-part]]
+== Retrieving Part of the Log File
+
+NOTE: Retrieving part of the log file is not supported when using Jersey.
+
+To retrieve part of the log file, make a `GET` request to `/application/logfile` using
+the `Range` header as shown in the following curl-based example:
+
+include::{snippets}logfile/range/curl-request.adoc[]
+
+The preceding example retrieves the first 1024 bytes of the log file. The resulting
+response is similar to the following:
+
+include::{snippets}logfile/range/http-response.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/loggers.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/loggers.adoc
new file mode 100644
index 0000000000..5c7bfc8fe4
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/loggers.adoc
@@ -0,0 +1,94 @@
+[[loggers]]
+= Loggers (`loggers`)
+
+The `loggers` endpoint provides access to the application's loggers and configuration of
+their levels.
+
+
+
+[[loggers-all]]
+== Retrieving all Loggers
+
+To retrieve the application's loggers, make a `GET` request to `/application/loggers` as
+shown in the following curl-based example:
+
+include::{snippets}loggers/all/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}loggers/all/http-response.adoc[]
+
+
+
+[[loggers-all-response-structure]]
+=== Response Structure
+
+The response contains details of the application's loggers. The structure of the response
+is described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}loggers/all/response-fields.adoc[]
+
+
+
+[[loggers-single]]
+== Retrieving a Single Logger
+
+To retrieve a single logger, make a `GET` request to `/application/loggers/{logger.name}`
+as shown in the following curl-based example:
+
+include::{snippets}loggers/single/curl-request.adoc[]
+
+The preceding example retrieves information about the logger named `com.example`. The
+resulting response is similar to the following:
+
+include::{snippets}loggers/single/http-response.adoc[]
+
+
+
+[[loggerse-single-response-structure]]
+=== Response Structure
+
+The response contains details of the requested logger. The structure of the response is
+described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}loggers/single/response-fields.adoc[]
+
+
+
+
+[[loggers-setting-level]]
+== Setting a Log Level
+
+To set the level of a logger, make a `POST` request to
+`/application/loggers/{logger.name}` with a JSON body that specifies the configured level
+for the logger as shown in the following curl-based example:
+
+include::{snippets}loggers/set/curl-request.adoc[]
+
+The preceding example sets the `configuredLevel` of the `com.example` logger to `DEBUG`.
+
+
+
+[[loggers-setting-level-request-structure]]
+=== Request Structure
+
+The request specifies the desired level of the logger. The structure of the request is
+described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}loggers/set/request-fields.adoc[]
+
+
+
+[[loggers-clearing-level]]
+== Clearing a Log Level
+
+To clear the level of a logger, make a `POST` request to
+`/application/loggers/{logger.name}` with a JSON body containing an empty object as shown
+in the following curl-based example:
+
+include::{snippets}loggers/clear/curl-request.adoc[]
+
+The preceding example clears the configured level of the `com.example` logger.
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/metrics.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/metrics.adoc
new file mode 100644
index 0000000000..c67cccec77
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/metrics.adoc
@@ -0,0 +1,80 @@
+[[metrics]]
+= Metrics (`metrics`)
+
+The `metrics` endpoint provides access to application metrics.
+
+
+
+[[metrics-retrieving-names]]
+== Retrieving Metric Names
+
+To retrieve the names of the available metrics, make a `GET` request to
+`/application/metrics` as shown in the following curl-based example:
+
+include::{snippets}metrics/names/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}metrics/names/http-response.adoc[]
+
+
+
+[[metrics-retrieving-names-response-structure]]
+=== Response Structure
+
+The response contains details of the metric names. The structure of the response is
+described in the following table:
+
+[cols="3,1,2"]
+include::{snippets}metrics/names/response-fields.adoc[]
+
+
+
+[[metrics-retrieving-metric]]
+== Retrieving a Metric
+
+To retrieve a metric, make a `GET` request to `/application/metrics/{metric.name}` as
+shown in the following curl-based example:
+
+include::{snippets}metrics/metric/curl-request.adoc[]
+
+The preceding example retrieves information about the metric named `jvm.memory.max`. The
+resulting response is similar to the following:
+
+include::{snippets}metrics/metric/http-response.adoc[]
+
+
+
+[[metrics-retrieving-metric-query-parameters]]
+=== Query Parameters
+
+The endpoint uses query parameters to <> into a metric
+using its tags. The single supported query parameter is shown in the following table:
+
+[cols="2,4"]
+include::{snippets}metrics/metric-with-tags/request-parameters.adoc[]
+
+
+
+[[metrics-retrieving-metric-response-structure]]
+=== Response structure
+
+The response contains details of the metric. The structure of the response is described in
+the following table:
+
+include::{snippets}metrics/metric/response-fields.adoc[]
+
+
+[[metrics-drilling-down]]
+== Drilling Down
+
+To drill down into a metric, make a `GET` request to `/application/metrics/{metric.name}`
+using the `tag` query parameter as shown in the following curl-based example:
+
+include::{snippets}metrics/metric-with-tags/curl-request.adoc[]
+
+The preceding example retrieves the `jvm.memory.max` metric where the `area` tag has a
+value of `nonheap` and the `id` attribute has a value of `Code Cache`. The resulting
+response is similar to the following:
+
+include::{snippets}metrics/metric-with-tags/http-response.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/prometheus.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/prometheus.adoc
new file mode 100644
index 0000000000..a69895fc28
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/prometheus.adoc
@@ -0,0 +1,19 @@
+[[prometheus]]
+= Prometheus (`prometheus`)
+
+The `prometheus` endpoint provides Spring Boot application's metrics in the format
+required for scraping by a Prometheus server.
+
+
+
+[[prometheus-retrieving]]
+== Retrieving the Metrics
+
+To retrieve the metrics, make a `GET` request to `/application/prometheus` as shown in the
+following curl-based example:
+
+include::{snippets}prometheus/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}prometheus/http-response.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/scheduledtasks.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/scheduledtasks.adoc
new file mode 100644
index 0000000000..2b38868023
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/scheduledtasks.adoc
@@ -0,0 +1,30 @@
+[[scheduled-tasks]]
+= Scheduled Tasks (`scheduledtasks`)
+
+The `scheduledtasks` endpoint provides information about the application's scheduled
+tasks.
+
+
+
+[[scheduled-tasks-retrieving]]
+== Retrieving the Scheduled Tasks
+
+To retrieve the scheduled tasks, make a `GET` request to `/application/scheduledtasks`,
+as shown in the following curl-based example:
+
+include::{snippets}scheduled-tasks/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}scheduled-tasks/http-response.adoc[]
+
+
+
+[[scheduled-tasks-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the application's scheduled tasks. The following table
+describes the structure of the response:
+
+[cols="2,1,3"]
+include::{snippets}scheduled-tasks/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/sessions.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/sessions.adoc
new file mode 100644
index 0000000000..d43933bc5c
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/sessions.adoc
@@ -0,0 +1,84 @@
+[[sessions]]
+= Sessions (`sessions`)
+
+The `sessions` endpoint provides information about the application's HTTP sessions that
+are managed by Spring Session.
+
+
+
+[[sessions-retrieving]]
+== Retrieving Sessions
+
+To retrieve the sessions, make a `GET` request to `/application/sessions` as shown in the
+following curl-based example:
+
+include::{snippets}sessions/username/curl-request.adoc[]
+
+The preceding examples retrieves all of the sessions for the user with the username
+`alice`.
+
+The resulting response is similar to the following:
+
+include::{snippets}sessions/username/http-response.adoc[]
+
+
+
+[[sessions-retrieving-query-parameters]]
+=== Query Parameters
+
+The endpoint uses query parameters to limit the sessions that it returns. The single
+required query parameter is shown in the following table:
+
+[cols="2,4"]
+include::{snippets}sessions/username/request-parameters.adoc[]
+
+
+
+[[sessions-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the matching sessions. The structure of the response is
+described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}sessions/username/response-fields.adoc[]
+
+
+
+[[sessions-retrieving-id]]
+== Retrieving a Single Session
+
+To retrieve a single session, make a `GET` request to `/application/sessions/{id}` as
+shown in the following curl-based example:
+
+include::{snippets}sessions/id/curl-request.adoc[]
+
+The preceding example retrieves the session with the id
+`4db5efcc-99cb-4d05-a52c-b49acfbb7ea9`. The resulting response is similar to the
+following:
+
+include::{snippets}sessions/id/http-response.adoc[]
+
+
+
+[[sessions-retrieving-id-response-structure]]
+=== Response Structure
+
+The response contains details of the requested session. The structure of the response is
+described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}sessions/id/response-fields.adoc[]
+
+
+
+[[sessions-deleting]]
+== Deleting a Session
+
+To delete a session, make a `DELETE` request to `/application/sessions/{id}` as shown in
+the following curl-based example:
+
+include::{snippets}sessions/delete/curl-request.adoc[]
+
+The preceding example deletes the session with the id
+`4db5efcc-99cb-4d05-a52c-b49acfbb7ea9`.
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/shutdown.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/shutdown.adoc
new file mode 100644
index 0000000000..aa141dcd4c
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/shutdown.adoc
@@ -0,0 +1,29 @@
+[[shutdown]]
+= Shutdown (`shutdown`)
+
+The `shutdown` endpoint is used to shut down the application.
+
+
+
+[[shutdown-shutting-down]]
+== Shutting Down the Application
+
+To shut down the application, make a `POST` request to `/application/shutdown` as shown in
+the following curl-based example:
+
+include::{snippets}shutdown/curl-request.adoc[]
+
+A response similar to the following is produced:
+
+include::{snippets}shutdown/http-response.adoc[]
+
+
+
+[[shutdowm-shutting-down-response-structure]]
+=== Response Structure
+
+The response contains details of the result of the shutdown request. The structure of the
+response is described in the following table:
+
+[cols="3,1,3"]
+include::{snippets}shutdown/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/status.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/status.adoc
new file mode 100644
index 0000000000..c9e6248957
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/status.adoc
@@ -0,0 +1,29 @@
+[[status]]
+= Status (`status`)
+
+The `status` endpoint provides an overview of the status of the application.
+
+
+
+[[status-retrieving]]
+== Retrieving the Status
+
+To retrieve the status of the application, make a `GET` request to `/application/status`
+as shown in the following curl-based example:
+
+include::{snippets}status/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}status/http-response.adoc[]
+
+
+
+[[status-retrieving-response-structure]]
+=== Response Structure
+
+The response contains the status of the application. The structure of the response is
+described in the following table:
+
+[cols="2,1,3"]
+include::{snippets}status/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/threaddump.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/threaddump.adoc
new file mode 100644
index 0000000000..9f840b713f
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/endpoints/threaddump.adoc
@@ -0,0 +1,29 @@
+[[threaddump]]
+= Thread Dump (`threaddump`)
+
+The `threaddump` endpoint provides a thread dump from the application's JVM.
+
+
+
+[[threaddump-retrieving]]
+== Retrieving the Thread Dump
+
+To retrieve the thread dump, make a `GET` request to `/application/threaddump` as shown
+in the following curl-based example:
+
+include::{snippets}threaddump/curl-request.adoc[]
+
+The resulting response is similar to the following:
+
+include::{snippets}threaddump/http-response.adoc[]
+
+
+
+[[threaddump-retrieving-response-structure]]
+=== Response Structure
+
+The response contains details of the JVM's threads. The structure of the response is
+described in the following table:
+
+[cols="3,1,2"]
+include::{snippets}threaddump/response-fields.adoc[]
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/index.adoc b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000000..36fecfe2e1
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/asciidoc/index.adoc
@@ -0,0 +1,65 @@
+= Spring Boot Actuator Web API Documentation
+Andy Wilkinson
+:doctype: book
+:toc: left
+:toclevels: 4
+:source-highlighter: prettify
+:numbered:
+:icons: font
+:hide-uri-scheme:
+
+This API documentation describes Spring Boot Actuators web endpoints.
+
+
+
+[[overview]]
+== Overview
+
+
+
+[[overview-endpoint-urls]]
+=== URLs
+
+By default, all web endpoints are available beneath the path `/application` with URLs of
+the form `/application/{id}`. The `/application` base path can be configured using the
+`management.endpoints.web.base-path` property, as shown in the following example:
+
+[source,properties,indent=0]
+----
+ management.endpoints.web.base-path=/manage
+----
+
+The preceding `application.properties` example changes the form of the endpoint URLs from
+`/application/{id}` to `/manage/{id}`. For example, the URL `info` endpoint would become
+`/manage/info`.
+
+
+
+[[overview-timestamps]]
+=== Timestamps
+
+All timestamps that are consumed by the endpoints, either as query parameters or in the
+request body, must be formatted as an offset date and time as specified in
+https://en.wikipedia.org/wiki/ISO_8601[ISO 8601].
+
+
+
+include::endpoints/auditevents.adoc[leveloffset=+1]
+include::endpoints/beans.adoc[leveloffset=+1]
+include::endpoints/conditions.adoc[leveloffset=+1]
+include::endpoints/configprops.adoc[leveloffset=+1]
+include::endpoints/env.adoc[leveloffset=+1]
+include::endpoints/flyway.adoc[leveloffset=+1]
+include::endpoints/health.adoc[leveloffset=+1]
+include::endpoints/heapdump.adoc[leveloffset=+1]
+include::endpoints/info.adoc[leveloffset=+1]
+include::endpoints/liquibase.adoc[leveloffset=+1]
+include::endpoints/logfile.adoc[leveloffset=+1]
+include::endpoints/loggers.adoc[leveloffset=+1]
+include::endpoints/metrics.adoc[leveloffset=+1]
+include::endpoints/prometheus.adoc[leveloffset=+1]
+include::endpoints/scheduledtasks.adoc[leveloffset=+1]
+include::endpoints/sessions.adoc[leveloffset=+1]
+include::endpoints/shutdown.adoc[leveloffset=+1]
+include::endpoints/status.adoc[leveloffset=+1]
+include::endpoints/threaddump.adoc[leveloffset=+1]
\ No newline at end of file
diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/AbstractEndpointDocumentationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/AbstractEndpointDocumentationTests.java
new file mode 100644
index 0000000000..88bc790ff4
--- /dev/null
+++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/endpoint/web/documentation/AbstractEndpointDocumentationTests.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2012-2017 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.actuate.autoconfigure.endpoint.web.documentation;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.flywaydb.core.internal.util.StringUtils;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.runner.RunWith;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
+import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
+import org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration;
+import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
+import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
+import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+import org.springframework.restdocs.JUnitRestDocumentation;
+import org.springframework.restdocs.mockmvc.MockMvcRestDocumentation;
+import org.springframework.restdocs.operation.preprocess.ContentModifyingOperationPreprocessor;
+import org.springframework.restdocs.operation.preprocess.OperationPreprocessor;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+/**
+ * Abstract base class for tests that generate endpoint documentation using Spring REST
+ * Docs.
+ *
+ * @author Andy Wilkinson
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(properties = { "spring.jackson.serialization.indent_output=true",
+ "management.endpoints.web.expose=*" })
+public abstract class AbstractEndpointDocumentationTests {
+
+ @Rule
+ public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation();
+
+ protected MockMvc mockMvc;
+
+ @Autowired
+ private WebApplicationContext applicationContext;
+
+ @Before
+ public void before() {
+ this.mockMvc = MockMvcBuilders.webAppContextSetup(this.applicationContext)
+ .apply(MockMvcRestDocumentation
+ .documentationConfiguration(this.restDocumentation).uris())
+ .build();
+ }
+
+ protected String describeEnumValues(Class extends Enum>> enumType) {
+ return StringUtils
+ .collectionToCommaDelimitedString(Stream.of(enumType.getEnumConstants())
+ .map((constant) -> "`" + constant.name() + "`")
+ .collect(Collectors.toList()));
+ }
+
+ protected OperationPreprocessor limit(String key) {
+ return limit(key, (candidate) -> true);
+ }
+
+ @SuppressWarnings("unchecked")
+ protected OperationPreprocessor limit(String key, Predicate filter) {
+ return new ContentModifyingOperationPreprocessor((content, mediaType) -> {
+ ObjectMapper objectMapper = new ObjectMapper()
+ .enable(SerializationFeature.INDENT_OUTPUT);
+ try {
+ Map payload = objectMapper.readValue(content, Map.class);
+ Object entry = payload.get(key);
+ if (entry instanceof Map) {
+ payload.put(key, select((Map) entry, filter));
+ }
+ else {
+ payload.put(key, select((List