Query - Query Twins
Executes a query that allows traversing relationships and filtering by property values. Status codes:
- 200 OK
 - 400 Bad Request
- BadRequest - The continuation token is invalid.
 - SqlQueryError - The query contains some errors.
 - TimeoutError - The query execution timed out after 60 seconds. Try simplifying the query or adding conditions to reduce the result size.
 
 - 429 Too Many Requests
 - QuotaReachedError - The maximum query rate limit has been reached.
 
POST https://digitaltwins-hostname/query?api-version=2023-10-31
		URI Parameters
| Name | In | Required | Type | Description | 
|---|---|---|---|---|
| 
						 api-version 
					 | 
					query | True | 
			 string  | 
					
						 The requested API version.  | 
				
Request Header
| Name | Required | Type | Description | 
|---|---|---|---|
| max-items-per-page | 
			 integer  | 
	
		 The maximum number of items to retrieve per request. The server may choose to return less than the requested number.  | 
|
| traceparent | 
			 string  | 
	
		 Identifies the request in a distributed tracing system.  | 
|
| tracestate | 
			 string  | 
	
		 Provides vendor-specific trace identification information and is a companion to traceparent.  | 
Request Body
| Name | Type | Description | 
|---|---|---|
| continuationToken | 
			 string  | 
	
		 A token which is used to retrieve the next set of results from a previous query.  | 
| query | 
			 string  | 
	
		 The query to execute. This value is ignored if a continuation token is provided.  | 
Responses
| Name | Type | Description | 
|---|---|---|
| 200 OK | 
		 Success Headers query-charge: number  | 
|
| Other Status Codes | 
		 Default response. Headers x-ms-error-code: string  | 
Security
oauth2
					Type: 
					oauth2
					Flow: 
					implicit
					Authorization URL: 
					https://login.microsoftonline.com/common/oauth2/authorize?resource=0b07f429-9f4b-4714-9392-cc5e8e80c8b0
			
Examples
| Query for digital twins | 
| Query for digital twins through a relationship | 
| Retrieve paged query results | 
Query for digital twins
Sample request
POST https://digitaltwins-hostname/query?api-version=2023-10-31
{
  "query": "SELECT * FROM DIGITALTWINS WHERE temp = 79"
}
Sample response
{
  "value": [
    {
      "$dtId": "Twin-01",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        }
      },
      "name": "Sample01",
      "temp": 79,
      "comfortIndex": 50
    },
    {
      "$dtId": "Twin-02",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:29:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:29:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:29:00.1234567Z",
          "sourceTime": "2022-05-31T12:00:00.000125009Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:29:00.1234567Z"
        }
      },
      "name": "Sample02",
      "temp": 79,
      "comfortIndex": 50
    },
    {
      "$dtId": "Twin-03",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:31:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:31:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:31:00.1234567Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:31:00.1234567Z"
        }
      },
      "name": "Sample03",
      "temp": 79,
      "comfortIndex": 50
    }
  ],
  "continuationToken": "<token>"
}
				Query for digital twins through a relationship
Sample request
POST https://digitaltwins-hostname/query?api-version=2023-10-31
{
  "query": "SELECT Widget, Gadget FROM DIGITALTWINS Widget JOIN Gadget RELATED Widget.Contains WHERE Widget.$dtId = 'Twin-01'"
}
Sample response
{
  "value": [
    {
      "Widget": {
        "$dtId": "Twin-01",
        "$metadata": {
          "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
          "$model": "dtmi:com:example:Sample;1",
          "name": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "temp": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "comfortIndex": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          }
        },
        "name": "Sample01",
        "temp": 79,
        "comfortIndex": 50
      },
      "Gadget": {
        "$dtId": "Twin-02",
        "$metadata": {
          "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
          "$model": "dtmi:com:example:Sample;1",
          "name": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "temp": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "comfortIndex": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          }
        },
        "name": "Sample02",
        "temp": 79,
        "comfortIndex": 50
      }
    },
    {
      "Widget": {
        "$dtId": "Twin-01",
        "$metadata": {
          "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
          "$model": "dtmi:com:example:Sample;1",
          "name": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "temp": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "comfortIndex": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          }
        },
        "name": "Sample01",
        "temp": 79,
        "comfortIndex": 50
      },
      "Gadget": {
        "$dtId": "Twin-10",
        "$metadata": {
          "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
          "$model": "dtmi:com:example:Sample;1",
          "name": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "temp": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          },
          "comfortIndex": {
            "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
          }
        },
        "name": "Sample10",
        "temp": 79,
        "comfortIndex": 50
      }
    }
  ]
}
				Retrieve paged query results
Sample request
POST https://digitaltwins-hostname/query?api-version=2023-10-31
{
  "continuationToken": "<continuationToken from previous query>"
}
Sample response
{
  "value": [
    {
      "$dtId": "Twin-04",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        }
      },
      "name": "Sample04",
      "temp": 79,
      "comfortIndex": 50
    },
    {
      "$dtId": "Twin-05",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        }
      },
      "name": "Sample05",
      "temp": 79,
      "comfortIndex": 50
    },
    {
      "$dtId": "Twin-06",
      "$metadata": {
        "$lastUpdateTime": "2022-02-28T00:30:00.1234567Z",
        "$model": "dtmi:com:example:Sample;1",
        "name": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "temp": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        },
        "comfortIndex": {
          "lastUpdateTime": "2022-02-28T00:30:00.1234567Z"
        }
      },
      "name": "Sample06",
      "temp": 79,
      "comfortIndex": 50
    }
  ]
}
				Definitions
| Name | Description | 
|---|---|
| Error | 
							 Error definition.  | 
					
| 
							Error | 
						
							 Error response.  | 
					
| 
							Inner | 
						
							 A more specific error description than was provided by the containing error.  | 
					
| 
							Query | 
						
							 The results of a query operation and an optional continuation token.  | 
					
| 
							Query | 
						
							 A query specification containing either a query statement or a continuation token from a previous query result.  | 
					
Error
Error definition.
| Name | Type | Description | 
|---|---|---|
| code | 
			 string  | 
	
		 Service specific error code which serves as the substatus for the HTTP error code.  | 
| details | 
			 Error[]  | 
	
		 Internal error details.  | 
| innererror | 
		 An object containing more specific information than the current object about the error.  | 
|
| message | 
			 string  | 
	
		 A human-readable representation of the error.  | 
ErrorResponse 
			
			Error response.
| Name | Type | Description | 
|---|---|---|
| error | 
		 The error details.  | 
InnerError 
			
			A more specific error description than was provided by the containing error.
| Name | Type | Description | 
|---|---|---|
| code | 
			 string  | 
	
		 A more specific error code than was provided by the containing error.  | 
| innererror | 
		 An object containing more specific information than the current object about the error.  | 
QueryResult 
			
			The results of a query operation and an optional continuation token.
| Name | Type | Description | 
|---|---|---|
| continuationToken | 
			 string  | 
	
		 A token which can be used to construct a new QuerySpecification to retrieve the next set of results.  | 
| value | 
			 object[]  | 
	
		 The query results.  | 
QuerySpecification 
			
			A query specification containing either a query statement or a continuation token from a previous query result.
| Name | Type | Description | 
|---|---|---|
| continuationToken | 
			 string  | 
	
		 A token which is used to retrieve the next set of results from a previous query.  | 
| query | 
			 string  | 
	
		 The query to execute. This value is ignored if a continuation token is provided.  |