Complete Contact Record
curl --request GET \
--url https://api.operata.io/v1/data/{contactId} \
--header 'Authorization: Basic <encoded-value>'const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.operata.io/v1/data/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.operata.io/v1/data/{contactId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.operata.io/v1/data/{contactId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}" ],\n \"softphoneSummary\": {\n \"contactId\": \"db248964-dad8-4da8-8ca4-8094d2d254c5\",\n \"agentUserName\": \"james\",\n \"agentCity\": \"Sydney\",\n \"agentRegion\": \"New South Wales\",\n \"agentCountry\": \"Australia\",\n \"agentISP\": \"Google LLC\",\n \"agentExternalIPAddress\": \"35.197.161.176\",\n \"agentLocalIPAddress\": \"192.168.1.12\",\n \"networkType\": \"wlan\",\n \"protocol\": \"udp\",\n \"port\": 52500,\n \"browser\": {\n \"name\": \"Chrome\",\n \"version\": \"81.0.4044.122\"\n },\n \"operataClientInfo\": {\n \"operataClientId\": \"xxxxx\",\n \"group\": \"ACME Limited\"\n },\n \"iceServers\": [\n {\n \"country\": \"Australia\",\n \"city\": \"Sydney\",\n \"region\": \"New South Wales\",\n \"protocol\": \"udp\",\n \"port\": \"3478\",\n \"turnIpAddress\": \"turnnlb-93f2de0c97c4316b.elb.ap-southeast-2.amazonaws.com.\"\n }\n ],\n \"operataCustomAttributes\": [\n {\n \"key\": \"Operata_App_ID\",\n \"value\": \"\"\n },\n {\n \"key\": \"Location\",\n \"value\": \"Default\"\n },\n {\n \"key\": \"Provider\",\n \"value\": \"\"\n }\n ],\n \"networkPerformanceMetrics\": {\n \"jitter\": {\n \"min\": 1,\n \"avg\": 12,\n \"max\": 30\n },\n \"rtt\": {\n \"min\": 63,\n \"avg\": 66,\n \"max\": 77\n },\n \"packetLoss\": {\n \"min\": 0,\n \"avg\": 1,\n \"max\": 2\n },\n \"mos\": {\n \"min\": 4.265032286010377,\n \"avg\": 0.9612324864117338,\n \"max\": 4.400265513005151\n },\n \"totals\": {\n \"bytesReceived\": 447283,\n \"bytesSent\": 480531,\n \"packetsLost\": 0,\n \"packetsSent\": 0,\n \"packetsReceived\": 0\n }\n }\n },\n \"jabraSummary\": {\n \"agent\": \"gina\",\n \"analytics\": {\n \"crossTalkTotal\": \"9.40\",\n \"crossTalkTotalPct\": 10.08,\n \"rxSpeechTotal\": \"73.48\",\n \"rxSpeechTotalPct\": 78.82,\n \"silenceTotal\": \"10.35\",\n \"silenceTotalPct\": 11.1,\n \"totalSeconds\": \"93.23\",\n \"txSpeechTotal\": \"0.00\",\n \"txSpeechTotalPct\": 0\n },\n \"contactId\": \"db248964-dad8-4da8-8ca4-8094d2d254c5\",\n \"deviceInfo\": {\n \"deviceConnection\": \"USB\",\n \"deviceName\": \"Jabra Engage 50\",\n \"errStatus\": 0,\n \"firmwareVersion\": \"1.24.0\",\n \"serialNumber\": \"000098577437\"\n },\n \"status\": {\n \"audioExposure\": {\n \"avg\": 49,\n \"max\": 56,\n \"min\": 69\n },\n \"backgroundNoise\": {\n \"avg\": 89,\n \"max\": 60,\n \"min\": 21\n },\n \"boomArm\": {},\n \"muteCount\": 2,\n \"volUpDownCount\": 4\n },\n \"timestamp\": \"2020-09-07T22:31:28.245Z\"\n },\n \"contactTraceSummary\": {\n \"AWSAccountId\": \"08123456789\",\n \"AWSContactTraceRecordFormatVersion\": \"2017-03-10\",\n \"Agent\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7bxasasas/agent/f33f0475-5491-4add-a50a-a9b05b35b656\",\n \"AfterContactWorkDuration\": 3,\n \"AfterContactWorkEndTimestamp\": \"2020-08-10T00:16:39Z\",\n \"AfterContactWorkStartTimestamp\": \"2020-08-10T00:16:36Z\",\n \"AgentInteractionDuration\": 16,\n \"ConnectedToAgentTimestamp\": \"2020-08-10T00:16:20Z\",\n \"CustomerHoldDuration\": 0,\n \"LongestHoldDuration\": 0,\n \"NumberOfHolds\": 0,\n \"RoutingProfile\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0/routing-profile/a25ae2ec-b30d-4fe7-9ecc-7b560d851ec6\",\n \"Name\": \"Joey_RP\"\n },\n \"Username\": \"joey\"\n },\n \"AgentConnectionAttempts\": 1,\n \"Attributes\": {},\n \"Channel\": \"VOICE\",\n \"ConnectedToSystemTimestamp\": \"2020-08-10T00:16:09Z\",\n \"ContactId\": \"8b23a256-1c29-4769-a5a3-65b5d09da0e8\",\n \"CustomerEndpoint\": {\n \"Address\": \"+61430036126\",\n \"Type\": \"TELEPHONE_NUMBER\"\n },\n \"DisconnectTimestamp\": \"2020-08-10T00:16:36Z\",\n \"InitiationMethod\": \"INBOUND\",\n \"InitiationTimestamp\": \"2020-08-10T00:16:09Z\",\n \"InstanceARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0\",\n \"LastUpdateTimestamp\": \"2020-08-10T00:17:43Z\",\n \"MediaStreams\": [\n {\n \"Type\": \"AUDIO\"\n }\n ],\n \"Queue\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0/queue/bc2e05c0-71f6-4804-81f4-23d0e5591f27\",\n \"DequeueTimestamp\": \"2020-08-10T00:16:20Z\",\n \"Duration\": 7,\n \"EnqueueTimestamp\": \"2020-08-10T00:16:13Z\",\n \"Name\": \"Operata Service\"\n },\n \"Recording\": {\n \"Location\": \"path.to.recording/connect/path/2020/08/10/8b23a256-1c29-4769-a5a3-65b5d09da0e8_20200810T00:16_UTC.wav\",\n \"Status\": \"AVAILABLE\",\n \"Type\": \"AUDIO\"\n },\n \"Recordings\": [\n {\n \"Location\": \"path.to.recording/connect/path/2020/08/10/8b23a256-1c29-4769-a5a3-65b5d09da0e8_20200810T00:16_UTC.wav\",\n \"MediaStreamType\": \"AUDIO\",\n \"Status\": \"AVAILABLE\",\n \"StorageType\": \"S3\"\n }\n ],\n \"SystemEndpoint\": {\n \"Address\": \"+61390685102\",\n \"Type\": \"TELEPHONE_NUMBER\"\n }\n },\n \"softphoneEvents\": {\n \"initiated\": \"2020-09-07T22:29:23.213Z\",\n \"incoming\": \"2020-09-07T22:29:33.213Z\",\n \"connecting\": \"2020-09-07T22:29:39.213Z\",\n \"connected\": \"2020-09-07T22:29:40.213Z\",\n \"disconnected\": \"2020-09-07T22:31:23.213Z\",\n \"ended\": {\n \"party\": \"Agent\",\n \"timestamp\": \"2020-09-07T22:31:23.213Z\"\n }\n },\n \"operataBillingSummary\": {\n \"agentInteractionDurationRoundedMin\": 1,\n \"agentInteractionDurationActualSec\": 16,\n \"operataStatsDurationRoundedMin\": 2,\n \"operataStatsDurationSec\": 103\n },\n \"contactDurationSummary\": {\n \"contactDurationRoundedMin\": 1,\n \"contactDurationActualSec\": 27\n }\n}""<html>\n\n<head>\n\t<title>401 Authorization Required</title>\n</head>\n\n<body>\n\t<center>\n\t\t<h1>401 Authorization Required</h1>\n\t</center>\n\t<hr>\n\t<center>nginx/1.19.2</center>\n</body>\n\n</html>""Call Summary record could not be found"Endpoints — Contacts
Get complete contact record
Fetch every Operata field captured for a single contact — softphone summary, Contact Trace Record (CTR), contact flow, headset analytics, and per-leg event timestamps.
GET
/
v1
/
data
/
{contactId}
Complete Contact Record
curl --request GET \
--url https://api.operata.io/v1/data/{contactId} \
--header 'Authorization: Basic <encoded-value>'const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.operata.io/v1/data/{contactId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.operata.io/v1/data/{contactId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.operata.io/v1/data/{contactId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}" ],\n \"softphoneSummary\": {\n \"contactId\": \"db248964-dad8-4da8-8ca4-8094d2d254c5\",\n \"agentUserName\": \"james\",\n \"agentCity\": \"Sydney\",\n \"agentRegion\": \"New South Wales\",\n \"agentCountry\": \"Australia\",\n \"agentISP\": \"Google LLC\",\n \"agentExternalIPAddress\": \"35.197.161.176\",\n \"agentLocalIPAddress\": \"192.168.1.12\",\n \"networkType\": \"wlan\",\n \"protocol\": \"udp\",\n \"port\": 52500,\n \"browser\": {\n \"name\": \"Chrome\",\n \"version\": \"81.0.4044.122\"\n },\n \"operataClientInfo\": {\n \"operataClientId\": \"xxxxx\",\n \"group\": \"ACME Limited\"\n },\n \"iceServers\": [\n {\n \"country\": \"Australia\",\n \"city\": \"Sydney\",\n \"region\": \"New South Wales\",\n \"protocol\": \"udp\",\n \"port\": \"3478\",\n \"turnIpAddress\": \"turnnlb-93f2de0c97c4316b.elb.ap-southeast-2.amazonaws.com.\"\n }\n ],\n \"operataCustomAttributes\": [\n {\n \"key\": \"Operata_App_ID\",\n \"value\": \"\"\n },\n {\n \"key\": \"Location\",\n \"value\": \"Default\"\n },\n {\n \"key\": \"Provider\",\n \"value\": \"\"\n }\n ],\n \"networkPerformanceMetrics\": {\n \"jitter\": {\n \"min\": 1,\n \"avg\": 12,\n \"max\": 30\n },\n \"rtt\": {\n \"min\": 63,\n \"avg\": 66,\n \"max\": 77\n },\n \"packetLoss\": {\n \"min\": 0,\n \"avg\": 1,\n \"max\": 2\n },\n \"mos\": {\n \"min\": 4.265032286010377,\n \"avg\": 0.9612324864117338,\n \"max\": 4.400265513005151\n },\n \"totals\": {\n \"bytesReceived\": 447283,\n \"bytesSent\": 480531,\n \"packetsLost\": 0,\n \"packetsSent\": 0,\n \"packetsReceived\": 0\n }\n }\n },\n \"jabraSummary\": {\n \"agent\": \"gina\",\n \"analytics\": {\n \"crossTalkTotal\": \"9.40\",\n \"crossTalkTotalPct\": 10.08,\n \"rxSpeechTotal\": \"73.48\",\n \"rxSpeechTotalPct\": 78.82,\n \"silenceTotal\": \"10.35\",\n \"silenceTotalPct\": 11.1,\n \"totalSeconds\": \"93.23\",\n \"txSpeechTotal\": \"0.00\",\n \"txSpeechTotalPct\": 0\n },\n \"contactId\": \"db248964-dad8-4da8-8ca4-8094d2d254c5\",\n \"deviceInfo\": {\n \"deviceConnection\": \"USB\",\n \"deviceName\": \"Jabra Engage 50\",\n \"errStatus\": 0,\n \"firmwareVersion\": \"1.24.0\",\n \"serialNumber\": \"000098577437\"\n },\n \"status\": {\n \"audioExposure\": {\n \"avg\": 49,\n \"max\": 56,\n \"min\": 69\n },\n \"backgroundNoise\": {\n \"avg\": 89,\n \"max\": 60,\n \"min\": 21\n },\n \"boomArm\": {},\n \"muteCount\": 2,\n \"volUpDownCount\": 4\n },\n \"timestamp\": \"2020-09-07T22:31:28.245Z\"\n },\n \"contactTraceSummary\": {\n \"AWSAccountId\": \"08123456789\",\n \"AWSContactTraceRecordFormatVersion\": \"2017-03-10\",\n \"Agent\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7bxasasas/agent/f33f0475-5491-4add-a50a-a9b05b35b656\",\n \"AfterContactWorkDuration\": 3,\n \"AfterContactWorkEndTimestamp\": \"2020-08-10T00:16:39Z\",\n \"AfterContactWorkStartTimestamp\": \"2020-08-10T00:16:36Z\",\n \"AgentInteractionDuration\": 16,\n \"ConnectedToAgentTimestamp\": \"2020-08-10T00:16:20Z\",\n \"CustomerHoldDuration\": 0,\n \"LongestHoldDuration\": 0,\n \"NumberOfHolds\": 0,\n \"RoutingProfile\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0/routing-profile/a25ae2ec-b30d-4fe7-9ecc-7b560d851ec6\",\n \"Name\": \"Joey_RP\"\n },\n \"Username\": \"joey\"\n },\n \"AgentConnectionAttempts\": 1,\n \"Attributes\": {},\n \"Channel\": \"VOICE\",\n \"ConnectedToSystemTimestamp\": \"2020-08-10T00:16:09Z\",\n \"ContactId\": \"8b23a256-1c29-4769-a5a3-65b5d09da0e8\",\n \"CustomerEndpoint\": {\n \"Address\": \"+61430036126\",\n \"Type\": \"TELEPHONE_NUMBER\"\n },\n \"DisconnectTimestamp\": \"2020-08-10T00:16:36Z\",\n \"InitiationMethod\": \"INBOUND\",\n \"InitiationTimestamp\": \"2020-08-10T00:16:09Z\",\n \"InstanceARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0\",\n \"LastUpdateTimestamp\": \"2020-08-10T00:17:43Z\",\n \"MediaStreams\": [\n {\n \"Type\": \"AUDIO\"\n }\n ],\n \"Queue\": {\n \"ARN\": \"arn:aws:connect:ap-southeast-2:08123456789:instance/ce9ff856-215b-4927-8953-c69f7b9193b0/queue/bc2e05c0-71f6-4804-81f4-23d0e5591f27\",\n \"DequeueTimestamp\": \"2020-08-10T00:16:20Z\",\n \"Duration\": 7,\n \"EnqueueTimestamp\": \"2020-08-10T00:16:13Z\",\n \"Name\": \"Operata Service\"\n },\n \"Recording\": {\n \"Location\": \"path.to.recording/connect/path/2020/08/10/8b23a256-1c29-4769-a5a3-65b5d09da0e8_20200810T00:16_UTC.wav\",\n \"Status\": \"AVAILABLE\",\n \"Type\": \"AUDIO\"\n },\n \"Recordings\": [\n {\n \"Location\": \"path.to.recording/connect/path/2020/08/10/8b23a256-1c29-4769-a5a3-65b5d09da0e8_20200810T00:16_UTC.wav\",\n \"MediaStreamType\": \"AUDIO\",\n \"Status\": \"AVAILABLE\",\n \"StorageType\": \"S3\"\n }\n ],\n \"SystemEndpoint\": {\n \"Address\": \"+61390685102\",\n \"Type\": \"TELEPHONE_NUMBER\"\n }\n },\n \"softphoneEvents\": {\n \"initiated\": \"2020-09-07T22:29:23.213Z\",\n \"incoming\": \"2020-09-07T22:29:33.213Z\",\n \"connecting\": \"2020-09-07T22:29:39.213Z\",\n \"connected\": \"2020-09-07T22:29:40.213Z\",\n \"disconnected\": \"2020-09-07T22:31:23.213Z\",\n \"ended\": {\n \"party\": \"Agent\",\n \"timestamp\": \"2020-09-07T22:31:23.213Z\"\n }\n },\n \"operataBillingSummary\": {\n \"agentInteractionDurationRoundedMin\": 1,\n \"agentInteractionDurationActualSec\": 16,\n \"operataStatsDurationRoundedMin\": 2,\n \"operataStatsDurationSec\": 103\n },\n \"contactDurationSummary\": {\n \"contactDurationRoundedMin\": 1,\n \"contactDurationActualSec\": 27\n }\n}""<html>\n\n<head>\n\t<title>401 Authorization Required</title>\n</head>\n\n<body>\n\t<center>\n\t\t<h1>401 Authorization Required</h1>\n\t</center>\n\t<hr>\n\t<center>nginx/1.19.2</center>\n</body>\n\n</html>""Call Summary record could not be found"Returns every Operata field captured for a single Amazon Connect contact: softphone summary, Contact Trace Record (CTR), contact flow modules, headset analytics, and per-leg event timestamps. You’ll typically have the
Telemetry continues to arrive for a short window after the contact ends. Fetching immediately may return a
See Errors for shared codes such as
contactId from List contact summaries.
Endpoint
GET https://api.operata.io/v1/data/{contactId}
Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
contactId | string | yes | The Amazon Connect Contact ID for the call. |
Response
200 OK with one object containing every captured block for the contact. A block is absent when its telemetry hasn’t arrived yet.
{
"contactFlowSummary": [
{
"contactFlowModuleType": "SetLoggingBehavior",
"timestamp": "2026-05-18T10:14:09.833Z"
}
],
"softphoneSummary": {
"contactId": "db248964-dad8-4da8-8ca4-8094d2d254c5",
"agentUserName": "agent_42",
"agentCity": "Sydney",
"agentRegion": "New South Wales",
"agentCountry": "Australia",
"agentISP": "Google LLC",
"agentExternalIPAddress": "35.197.161.176",
"agentLocalIPAddress": "192.168.1.12",
"networkType": "wlan",
"protocol": "udp",
"port": 52500,
"browser": { "name": "Chrome", "version": "124.0.6367.119" },
"operataClientInfo": {
"operataClientId": "client_acme",
"group": "ACME Limited"
},
"networkPerformanceMetrics": {
"jitter": { "min": 1, "avg": 12, "max": 30 },
"rtt": { "min": 63, "avg": 66, "max": 77 },
"packetLoss": { "min": 0, "avg": 1, "max": 2 },
"mos": { "min": 4.27, "avg": 4.32, "max": 4.40 }
}
},
"jabraSummary": {
"contactId": "db248964-dad8-4da8-8ca4-8094d2d254c5",
"agent": "agent_42",
"deviceInfo": {
"deviceName": "Jabra Engage 50",
"deviceConnection": "USB",
"firmwareVersion": "1.24.0",
"serialNumber": "000098577437"
},
"analytics": {
"totalSeconds": "93.23",
"txSpeechTotalPct": 0,
"rxSpeechTotalPct": 78.82,
"crossTalkTotalPct": 10.08,
"silenceTotalPct": 11.10
},
"timestamp": "2026-05-18T10:16:28.245Z"
},
"contactTraceSummary": {
"ContactId": "db248964-dad8-4da8-8ca4-8094d2d254c5",
"Channel": "VOICE",
"InitiationMethod": "INBOUND",
"InitiationTimestamp": "2026-05-18T10:14:09Z",
"DisconnectTimestamp": "2026-05-18T10:16:36Z",
"Agent": {
"Username": "agent_42",
"AgentInteractionDuration": 16
},
"Queue": { "Name": "billing-tier-1", "Duration": 7 }
},
"softphoneEvents": {
"initiated": "2026-05-18T10:14:09.213Z",
"connecting": "2026-05-18T10:14:19.213Z",
"connected": "2026-05-18T10:14:20.213Z",
"disconnected": "2026-05-18T10:16:23.213Z"
},
"operataBillingSummary": {
"agentInteractionDurationRoundedMin": 1,
"agentInteractionDurationActualSec": 16,
"operataStatsDurationRoundedMin": 2,
"operataStatsDurationSec": 103
},
"contactDurationSummary": {
"contactDurationRoundedMin": 1,
"contactDurationActualSec": 27
}
}
| Field | Type | Description |
|---|---|---|
softphoneSummary | object | Browser-side telemetry from the Agent Experience Collector. See Machine, browser, network. |
contactFlowSummary | array | Ordered list of contact-flow modules the contact passed through, with timestamps. |
contactTraceSummary | object | The Amazon Connect Contact Trace Record. See Contact trace records. |
jabraSummary | object | Headset analytics for Jabra devices. See Headset logs. Absent for non-Jabra headsets. |
softphoneEvents | object | Lifecycle timestamps for the contact: initiated, connecting, connected, disconnected, ended. |
operataBillingSummary | object | Durations Operata uses for billing rollups. |
contactDurationSummary | object | Total contact duration in seconds and rounded minutes. |
softphoneSummary without the headset or contact-flow blocks — retry a few seconds later to get the complete record.
Example
curl -u "$OPERATA_GROUP_ID:$OPERATA_API_TOKEN" \
"https://api.operata.io/v1/data/db248964-dad8-4da8-8ca4-8094d2d254c5"
const groupId = process.env.OPERATA_GROUP_ID;
const apiToken = process.env.OPERATA_API_TOKEN;
const auth = Buffer.from(`${groupId}:${apiToken}`).toString("base64");
const contactId = "db248964-dad8-4da8-8ca4-8094d2d254c5";
const response = await fetch(`https://api.operata.io/v1/data/${contactId}`, {
headers: { Authorization: `Basic ${auth}` },
});
const record = await response.json();
import os, requests
contact_id = "db248964-dad8-4da8-8ca4-8094d2d254c5"
response = requests.get(
f"https://api.operata.io/v1/data/{contact_id}",
auth=(os.environ["OPERATA_GROUP_ID"], os.environ["OPERATA_API_TOKEN"]),
)
response.raise_for_status()
record = response.json()
Errors
| Status | Code | When | Recover |
|---|---|---|---|
| 404 | not_found | No contact with contactId exists for this Operata account, or telemetry has not landed yet. | Confirm the ID against List contact summaries. If the contact ended within the last minute, retry after a short delay. |
401 unauthorized, 429 rate_limited, and the 5xx family.
Related
- List contact summaries — find a
contactIdacross a time window. - Get detailed contact stats — second-by-second metrics for the same contact.
- Contact trace records — field reference for the CTR block.
- Headset logs — field reference for the
jabraSummaryblock.
Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Path Parameters
Amazon Connect Contact ID for the call
Response
200
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
⌘I