---
title:  GET /geode/v1/{region}/keys
---

<!--
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 keys for the specified region.

## Resource URL

``` pre
http://<hostname_or_http-service-bind-address>:<http-service-port>/geode/v1/{region}/{keys}
```

## Parameters

None.

## Example Request

``` pre
GET /geode/v1/orders/keys
```

## Example Success Response

``` pre
Response Payload: application/json

200 OK
Server: Apache-Coyote/1.1
Location: http://localhost:8080/geode/v1/orders/keys
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat, 18 Jan 2014 21:20:05 GMT
{    "keys": [
        "1",
        "2",
        "3"
    ]
}
```

## Error Codes

| Status Codes              | Description                                                                                                                      |
|---------------------------|----------------------------------------------------------------------------------------------------------------------------------|
| 404 NOT FOUND             | Specified region does not exist.                                                                                                 |
| 405 METHOD NOT ALLOWED    | Returned if any HTTP request method other than GET (for example, POST, PUT, DELETE, etc.) is used.                               |
| 500 INTERNAL SERVER ERROR | Error encountered at <%=vars.product_name%> server. Check the HTTP response body for a stack trace of the exception. |


