---
title:  GET /gemfire-api/v1
---

<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You 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.
-->

List all available resources (regions) in the <%=vars.product_name%> cluster.

## Resource URL

``` pre
http://<hostname_or_http-service-bind-address>:<http-service-port>/gemfire-api/v1
```

## Parameters

None.

## Example Request

``` pre
GET /gemfire/v1/
Accept: application/json
```

## Example Success Response

``` pre
Response Payload: application/json

200 OK
Server: Apache-Coyote/1.1
Location: http://localhost:8080/gemfire-api/v1
Content-Type: application/json
Transfer-Encoding: chunked 
Date: Sat, 18 Jan 2014 20:05:47 GMT
 {
    "regions": [
        {
            "name": "customers",
            "type": "REPLICATE",
            "key-constraint": "java.lang.String",
            "value-constraint": "org.apache.geode.pdx.PdxInstance"
        },
        {
            "name": "items",
            "type": "REPLICATE",
            "key-constraint": null,
            "value-constraint": null
        },
        {
            "name": "orders",
            "type": "PARTITION",
            "key-constraint": null,
            "value-constraint": null
        },
        {
            "name": "primitiveKVStore",
            "type": "PARTITION",
            "key-constraint": null,
            "value-constraint": null
        },
        {
            "name": "empty_region",
            "type": "EMPTY",
            "key-constraint": "java.lang.String",
            "value-constraint": "org.apache.geode.pdx.PdxInstance"
        }
    ]
}
```

## Error Codes

| Status Code               | Description                                     |
|---------------------------|-------------------------------------------------|
| 404 NOT FOUND             | No regions were found at the provided endpoint. |
| 500 INTERNAL SERVER ERROR | Encountered error at server.                    |


