

# ExecuteOpenCypherExplainQuery
<a name="API_ExecuteOpenCypherExplainQuery"></a>

Executes an openCypher `explain` request. See [The openCypher explain feature](https://docs.aws.amazon.com/neptune/latest/userguide/access-graph-opencypher-explain.html) for more information.

When invoking this operation in a Neptune cluster that has IAM authentication enabled, the IAM user or role making the request must have a policy attached that allows the [neptune-db:ReadDataViaQuery](https://docs.aws.amazon.com/neptune/latest/userguide/iam-dp-actions.html#readdataviaquery) IAM action in that cluster.

Note that the [neptune-db:QueryLanguage:OpenCypher](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html#iam-neptune-condition-keys) IAM condition key can be used in the policy document to restrict the use of openCypher queries (see [Condition keys available in Neptune IAM data-access policy statements](https://docs.aws.amazon.com/neptune/latest/userguide/iam-data-condition-keys.html)).

## Request Syntax
<a name="API_ExecuteOpenCypherExplainQuery_RequestSyntax"></a>

```
POST /opencypher/explain HTTP/1.1
Content-type: application/json

{
   "explain": "string",
   "query": "string",
   "parameters": "string"
}
```

## URI Request Parameters
<a name="API_ExecuteOpenCypherExplainQuery_RequestParameters"></a>

The request does not use any URI parameters.

## Request Body
<a name="API_ExecuteOpenCypherExplainQuery_RequestBody"></a>

The request accepts the following data in JSON format.

 ** [explain](#API_ExecuteOpenCypherExplainQuery_RequestSyntax) **   <a name="neptunedata-ExecuteOpenCypherExplainQuery-request-explain"></a>
The openCypher `explain` mode. Can be one of: `static`, `dynamic`, or `details`.  
Type: String  
Valid Values: `static | dynamic | details`   
Required: Yes

 ** [query](#API_ExecuteOpenCypherExplainQuery_RequestSyntax) **   <a name="neptunedata-ExecuteOpenCypherExplainQuery-request-query"></a>
The openCypher query string.  
Type: String  
Required: Yes

 ** [parameters](#API_ExecuteOpenCypherExplainQuery_RequestSyntax) **   <a name="neptunedata-ExecuteOpenCypherExplainQuery-request-parameters"></a>
The openCypher query parameters.  
Type: String  
Required: No

## Response Syntax
<a name="API_ExecuteOpenCypherExplainQuery_ResponseSyntax"></a>

```
HTTP/1.1 200

results
```

## Response Elements
<a name="API_ExecuteOpenCypherExplainQuery_ResponseElements"></a>

If the action is successful, the service sends back an HTTP 200 response.

The response returns the following as the HTTP body.

 ** [results](#API_ExecuteOpenCypherExplainQuery_ResponseSyntax) **   <a name="neptunedata-ExecuteOpenCypherExplainQuery-response-results"></a>
A text blob containing the openCypher `explain` results.

## Errors
<a name="API_ExecuteOpenCypherExplainQuery_Errors"></a>

For information about the errors that are common to all actions, see [Common Error Types](CommonErrors.md).

 ** BadRequestException **   
Raised when a request is submitted that cannot be processed.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the bad request.
HTTP Status Code: 400

 ** CancelledByUserException **   
Raised when a user cancelled a request.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 500

 ** ClientTimeoutException **   
Raised when a request timed out in the client.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 408

 ** ConcurrentModificationException **   
Raised when a request attempts to modify data that is concurrently being modified by another process.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 500

 ** ConstraintViolationException **   
Raised when a value in a request field did not satisfy required constraints.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** FailureByQueryException **   
Raised when a request fails.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 500

 ** IllegalArgumentException **   
Raised when an argument in a request is not supported.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** InvalidArgumentException **   
Raised when an argument in a request has an invalid value.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** InvalidNumericDataException **   
Raised when invalid numerical data is encountered when servicing a request.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** InvalidParameterException **   
Raised when a parameter value is not valid.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that includes an invalid parameter.
HTTP Status Code: 400

 ** MalformedQueryException **   
Raised when a query is submitted that is syntactically incorrect or does not pass additional validation.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the malformed query request.
HTTP Status Code: 400

 ** MemoryLimitExceededException **   
Raised when a request fails because of insufficient memory resources. The request can be retried.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that failed.
HTTP Status Code: 500

 ** MissingParameterException **   
Raised when a required parameter is missing.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in which the parameter is missing.
HTTP Status Code: 400

 ** ParsingException **   
Raised when a parsing issue is encountered.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** PreconditionsFailedException **   
Raised when a precondition for processing a request is not satisfied.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

 ** QueryLimitExceededException **   
Raised when the number of active queries exceeds what the server can process. The query in question can be retried when the system is less busy.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request which exceeded the limit.
HTTP Status Code: 500

 ** QueryLimitException **   
Raised when the size of a query exceeds the system limit.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that exceeded the limit.
HTTP Status Code: 400

 ** QueryTooLargeException **   
Raised when the body of a query is too large.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that is too large.
HTTP Status Code: 400

 ** TimeLimitExceededException **   
Raised when the an operation exceeds the time limit allowed for it.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that could not be processed for this reason.
HTTP Status Code: 500

 ** TooManyRequestsException **   
Raised when the number of requests being processed exceeds the limit.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request that could not be processed for this reason.
HTTP Status Code: 429

 ** UnsupportedOperationException **   
Raised when a request attempts to initiate an operation that is not supported.    
 ** code **   
The HTTP status code returned with the exception.  
 ** detailedMessage **   
A detailed message describing the problem.  
 ** requestId **   
The ID of the request in question.
HTTP Status Code: 400

## See Also
<a name="API_ExecuteOpenCypherExplainQuery_SeeAlso"></a>

For more information about using this API in one of the language-specific AWS SDKs, see the following:
+  [AWS Command Line Interface V2](https://docs.aws.amazon.com/goto/cli2/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for .NET V4](https://docs.aws.amazon.com/goto/DotNetSDKV4/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for C\$1\$1](https://docs.aws.amazon.com/goto/SdkForCpp/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for Go v2](https://docs.aws.amazon.com/goto/SdkForGoV2/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for Java V2](https://docs.aws.amazon.com/goto/SdkForJavaV2/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for JavaScript V3](https://docs.aws.amazon.com/goto/SdkForJavaScriptV3/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for Kotlin](https://docs.aws.amazon.com/goto/SdkForKotlin/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for PHP V3](https://docs.aws.amazon.com/goto/SdkForPHPV3/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for Python](https://docs.aws.amazon.com/goto/boto3/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 
+  [AWS SDK for Ruby V3](https://docs.aws.amazon.com/goto/SdkForRubyV3/neptunedata-2023-08-01/ExecuteOpenCypherExplainQuery) 