
Execute a GraphQL query in order to retrieve a JSON object with the results. The query is passed in the "query" property of the JSON request body.
| URL Parameters | |
|---|---|
| trace* | The name of a trace event to enable during this operation. Trace event output goes into the server log. | 
| output? | Specify the form of output. Allowed values: object,explain(return explain output from a plan).
        Default:object. | 
| timestamp? | A timestamp returned in the ML-Effective-Timestampheader of a previous request. Use this parameter to
        fetch results based on the database contents at a fixed point-in-time.
        For more details, see
 Performing Point-in-Time Operations in the REST Application Developer's Guide. | 
| database? | Perform this operation on the named content database instead of the default content database associated with the REST API instance. Using an alternative database requires the "eval-in" privilege; for details, see Security Requirements in the REST Application Developer's Guide. | 
| Request Headers | |
|---|---|
| Accept* | The expected MIME type of the response. The only permitted value is application/json. | 
| Content-type | Required. The MIME type of the request and is always application/graphql. | 
| Response Headers | |
|---|---|
| Content-type | The MIME type of the data in the response body. The MIME type
        corresponds to the type requested by the Accept header. A charset=utf-8declaration is appended to the
        response MIME type which is alwaysapplication/json. | 
| ML-Effective-Timestamp | The system timestamp at which this operation was performed. You
        can use the value in the timestampparameter of a
        subsequent request. For more details, see
 Performing Point-in-Time Operations in the REST Application Developer's Guide. | 
Upon success, MarkLogic Server returns status 200 (OK) and the response body contains the requested data.
rest-reader role, or the
      following privilege:
      http://marklogic.com/xdmp/privileges/rest-reader
Using the trace parameter requires the rest-tracer role,
        or the following privilege:
http://marklogic.com/xdmp/privileges/rest-tracer
The request body must contain the JSON representation of a GraphQL request including a "query" property with the GraphQL query string. For more details, see POST requests in the GraphQL documentation.
      The automatically generated implicit GraphQL schemas are based on schemas
      and views defined within the database. The default name of a query for a
      view in a schema is schemaName_viewName. So for the
      "employees" view in the "corporate" schema, the default query name would
      be "corporate_employees".
    
When the output parameter value is object, MarkLogic returns a JSON object with result data and/or error information. For more details, see the GraphQL HTTP specification.
Note that, per the GraphQL specification, a GraphQL GET request should simply have the query string as the parameter. However, this endpoint expects a JSON object with the GraphQL request just like a POST request.
Basic Query Example
Suppose a TDE template defines an "employees" view in the "corporate" schema with the columns "name", "birthdate", and "title" for the Documents database, then a GraphQL query string might be: "query employeesQuery { corporate_employees { employeeNumber name birthdate title } }"
For that query, the JSON body of the request would be:
{
    "query": "query employeesQuery { corporate_employees { employeeNumber name birthdate title } }"
}
The following cURL command would send this request:
curl --anyauth --user user:password --request POST 'http://localhost:8000/v1/rows/graphql' --header 'Content-type: application/graphql' \
    --data-raw '{ "query": "query employees { corporate_employees { employeeNumber name birthdate title } }" }'
And the response would look something like the following:
{
    "data": {
        "corporate_employees": [
            {
                "employeeNumber": 1
                "name": "Joe Worker",
                "birthdate": "07/04/1995",
                "title": "Senior Widget Maker"
            },{
                "employeeNumber": 2
                "name": "Jane Supervisor",
                "birthdate": "11/02/1999",
                "title": "Chief Widget Officer"
            }
         ]
    }
}
 Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.