With the Capabilities API, your application can detect outages and scheduled downtime for specific API capabilities. You can use this API to reduce downtime in your application by detecting when a capability is unavailable and then bypassing it. .
For example, if you use the Images API to resize images, you can use the Capabilities API to detect when the Images API is unavailable and skip the resize:
import com.google.appengine.api.capabilities.*;
CapabilitiesService service =
    CapabilitiesServiceFactory.getCapabilitiesService();
CapabilityStatus status = service.getStatus(Capability.IMAGES).getStatus();
if (status == CapabilityStatus.DISABLED) {
    // Images API is not available.
}
You can separately query for the availability of Datastore reads and writes. The following sample shows how to detect the availability of Datastore writes and, during downtime, provide a message to users:
CapabilityStatus status =
    service.getStatus(Capability.DATASTORE_WRITE).getStatus();
if (status == CapabilityStatus.DISABLED) {
    // Datastore is in read-only mode.
}
Using the Capabilities API in Java 8
Each Capability is represented as a static constant on the Capability class,
such as
Capability.DATASTORE_WRITE.
Each Capability has a state, which you can retrieve from
CapabilitiesService.getStatus(Capability).
Each state has a status, which is an enumeration reflecting a the availability
of a capability: either ENABLED or DISABLED. See below for the
list of services currently enabled in this API.
Supported capabilities
The API currently supports the following capabilities:
| Capability | Arguments to getStatus | 
|---|---|
| Availability of the blobstore | Capability.BLOBSTORE | 
| Datastore reads | Capability.DATASTORE | 
| Datastore writes | Capability.DATASTORE_WRITE | 
| Availability of the Images service | Capability.IMAGES | 
| Availability of the Mail service | Capability.MAIL | 
| Availability of the Memcache service | Capability.MEMCACHE | 
| Availability of the Task Queue service | Capability.TASKQUEUE | 
| Availability of the URL Fetch service | Capability.URL_FETCH |