curl --request GET \
--url https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"source": {
"id": "<string>",
"sourceId": "<string>",
"name": "<string>",
"executionType": "AGENT",
"status": "PENDING",
"agentId": "<string>",
"endpointUrl": "<string>",
"protocol": "MCP",
"auth": {
"type": "<string>",
"required": true,
"configured": true
},
"capabilities": {
"tools": [
"<string>"
],
"products": "supported",
"createMediaBuy": "supported",
"updateMediaBuy": "supported",
"signals": "supported"
},
"productMode": {
"agentCapabilityUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"declaredAgentMode": "WHOLESALE",
"bindingSelection": "WHOLESALE",
"effectiveMode": "WHOLESALE",
"reasons": [
"SOURCE_NOT_ACTIVE"
],
"paths": [
{
"path": "WHOLESALE",
"ready": true,
"reasons": [
"SOURCE_NOT_ACTIVE"
]
}
]
},
"health": {
"status": "healthy",
"condition": null,
"observationBudgetMs": null,
"lastError": "<string>",
"lastErrorCode": "<string>",
"lastErrorAt": "<string>",
"lastSuccessAt": "<string>",
"lastCheckedAt": "<string>"
},
"capabilityHealth": {
"inventory": {
"status": "healthy",
"observations": [
{
"observer": "<string>",
"status": "healthy",
"previousStatus": "healthy",
"condition": "timeout",
"observationBudgetMs": null,
"cause": "<string>",
"detail": "<string>",
"owner": "<string>",
"observedAt": "<string>",
"lastOkAt": "<string>"
}
]
},
"reporting": {
"status": "healthy",
"observations": [
{
"observer": "<string>",
"status": "healthy",
"previousStatus": "healthy",
"condition": "timeout",
"observationBudgetMs": null,
"cause": "<string>",
"detail": "<string>",
"owner": "<string>",
"observedAt": "<string>",
"lastOkAt": "<string>"
}
]
}
},
"verificationMode": "LIVE_SOURCE"
},
"requestRouting": null,
"reporting": {
"availability": "supported",
"health": "waiting",
"sourceProvenance": "acquired",
"obligations": [
{
"obligationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mediaBuyIds": [
"<string>"
],
"mediaBuyIdsTruncated": false,
"coverage": "full",
"periodStart": "2023-11-07T05:31:56Z",
"periodEnd": "2023-11-07T05:31:56Z",
"expectedAt": "2023-11-07T05:31:56Z",
"nextExpectedAt": "2023-11-07T05:31:56Z",
"requiredFinality": "snapshot",
"health": "waiting",
"missingFirstReport": true,
"issue": {
"id": "<string>",
"code": "REPORT_OVERDUE",
"responsibleParty": "seller",
"recommendedAction": "wait_for_retry"
},
"latestRevision": {
"revisionId": "<string>",
"kind": "snapshot",
"rowCount": 4503599627370495,
"controlTotalCount": 4503599627370495,
"dataThrough": "2023-11-07T05:31:56Z",
"observedAt": "2023-11-07T05:31:56Z"
}
}
],
"obligationsTruncated": false,
"relatedMediaBuyIds": [
"<string>"
],
"relatedMediaBuyIdsTruncated": false,
"lastSuccessfulRevision": {
"revisionId": "<string>",
"kind": "snapshot",
"rowCount": 4503599627370495,
"controlTotalCount": 4503599627370495,
"dataThrough": "2023-11-07T05:31:56Z",
"observedAt": "2023-11-07T05:31:56Z"
},
"freshness": "current",
"dataThrough": "2023-11-07T05:31:56Z",
"nextExpectedAt": "2023-11-07T05:31:56Z",
"actions": {
"refreshCanonicalStatus": {
"available": false,
"reason": "adapter_pending"
},
"readCurrentSellerStatus": {
"available": false,
"reason": "adapter_pending"
},
"replayRetainedRevision": {
"available": false,
"reason": "adapter_pending"
}
}
},
"window": {
"hours": 4503599627370495,
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"sampledActivityCount": 4503599627370495,
"activityTruncated": true,
"sampledTestRunCount": 4503599627370495
},
"performance": {
"requestCount": 4503599627370495,
"responseCount": 4503599627370495,
"exchangeCount": 4503599627370495,
"completedCount": 4503599627370495,
"failedCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"pendingCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"timeoutRate": 0.5,
"errorRate": 0.5,
"inputRequiredRate": 0.5,
"completedRate": 0.5,
"latencyStatus": "within_threshold",
"latencyThresholdMs": 4503599627370495,
"overThresholdCount": 4503599627370495,
"staleAsyncResponseCount": 4503599627370495,
"p50LatencyMs": 4503599627370495,
"p95LatencyMs": 4503599627370495,
"p99LatencyMs": 4503599627370495,
"unknownLatencyCount": 4503599627370495
},
"comparison": {
"previousWindow": {
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"exchangeCount": 4503599627370495,
"issueCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"errorRate": 0.5,
"p95LatencyMs": 4503599627370495,
"sampledActivityCount": 4503599627370495,
"activityTruncated": true
},
"issueDelta": 0,
"timeoutDelta": 0,
"errorRateDelta": 123,
"p95LatencyDeltaMs": 0,
"trend": "new_issue",
"summary": "<string>"
},
"timeline": [
{
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"exchangeCount": 4503599627370495,
"issueCount": 4503599627370495,
"failedCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"errorRate": 0.5,
"p95LatencyMs": 4503599627370495
}
],
"toolBreakdown": [
{
"tool": "<string>",
"exchangeCount": 4503599627370495,
"completedCount": 4503599627370495,
"failedCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495
}
],
"externalCallLanes": [
{
"taskType": "<string>",
"callCount": 4503599627370495,
"successCount": 4503599627370495,
"errorCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495,
"previous": {
"callCount": 4503599627370495,
"successCount": 4503599627370495,
"errorCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495
}
}
],
"transportRequests": {
"unavailable": true,
"totalCount": 4503599627370495,
"physicalRequestCount": 4503599627370495,
"logicalOperationCount": 4503599627370495,
"sourceAttributedCount": 4503599627370495,
"sharedAgentCount": 4503599627370495,
"displayedCount": 4503599627370495,
"hasMore": true,
"retentionDays": 4503599627370495,
"requests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"observedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"groupId": "<string>",
"debugId": "<string>",
"operationStage": "intent_accepted",
"attributionScope": "source",
"origin": "validation_test",
"destinationOrigin": "<string>",
"dispatchState": "not_dispatched",
"provenance": "interchange_preflight",
"requestKind": "<string>",
"httpMethod": "<string>",
"adcpTool": "<string>",
"protocolMethod": "<string>",
"outcome": "started",
"httpStatus": 0,
"latencyMs": 4503599627370495,
"errorClass": "<string>",
"failureDomain": "none",
"instrumentationGap": true,
"requestHeaders": {},
"requestBody": "<string>",
"requestBodyTruncated": true,
"responseHeaders": {},
"responseBody": "<string>",
"responseBodyTruncated": true,
"statusText": "<string>",
"replayOfTransportRequestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replayEligible": true,
"accountId": 0,
"mediaBuyId": 0,
"mediaBuyIdText": "<string>"
}
]
},
"discoveryParticipation": {
"calledCount": 4503599627370495,
"skippedCount": 4503599627370495,
"excludedCount": 4503599627370495,
"timedOutCount": 4503599627370495,
"skipReasons": [
{
"reason": "<string>",
"count": 4503599627370495
}
]
},
"outcomeMix": {
"returnedProductsCount": 4503599627370495,
"returnedNoProductsCount": 4503599627370495,
"failedCount": 4503599627370495,
"businessRejectedCount": 4503599627370495,
"pendingCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"timedOutCount": 4503599627370495,
"skippedCount": 4503599627370495
},
"demandImpact": {
"buyerRequestsAffected": 4503599627370495,
"missedProductOpportunityCount": 4503599627370495,
"notes": [
"<string>"
]
},
"recentActivity": [
{
"id": 0,
"timestamp": "2023-11-07T05:31:56Z",
"tool": "<string>",
"taskStatus": "<string>",
"activityType": "<string>",
"taskId": "<string>",
"operationId": "<string>",
"contextId": "<string>",
"idempotencyKey": "<string>",
"debugId": "<string>",
"traceparent": "<string>",
"requestId": "<string>",
"correlationId": "<string>",
"initiatorEmail": "<string>",
"origin": {
"kind": "sandbox_test",
"testRunUid": "<string>",
"testRunStatus": "passed",
"testRunToolName": "<string>",
"testRunCreatedAt": "2023-11-07T05:31:56Z"
},
"isIssue": true,
"summary": "<string>",
"details": {
"payload": {},
"relatedRequest": {
"timestamp": "2023-11-07T05:31:56Z",
"payload": {}
}
}
}
],
"diagnosis": {
"severity": "ok",
"owner": "seller",
"topCause": "<string>",
"failure": null,
"issues": [
{
"mode": "disabled_retired",
"severity": "warning",
"count": 4503599627370495,
"summary": "<string>"
}
],
"nextSteps": [
"<string>"
],
"developerHandoff": {
"sourceId": "<string>",
"sourceName": "<string>",
"agentId": "<string>",
"endpointUrl": "<string>",
"latestTaskId": "<string>",
"latestOperationId": "<string>",
"latestContextId": "<string>",
"latestIdempotencyKey": "<string>",
"latestDebugId": "<string>",
"latestCorrelationId": "<string>",
"correlationHeaders": {},
"latestError": "<string>"
}
},
"docs": [
{
"label": "<string>",
"url": "<string>"
}
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Get inventory source diagnostics
Get recent call health, latency, timeout, failure, and prior-window movement diagnostics for a storefront inventory source.
curl --request GET \
--url https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.interchange.io/api/v2/storefront/inventory-sources/{sourceId}/diagnostics', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"source": {
"id": "<string>",
"sourceId": "<string>",
"name": "<string>",
"executionType": "AGENT",
"status": "PENDING",
"agentId": "<string>",
"endpointUrl": "<string>",
"protocol": "MCP",
"auth": {
"type": "<string>",
"required": true,
"configured": true
},
"capabilities": {
"tools": [
"<string>"
],
"products": "supported",
"createMediaBuy": "supported",
"updateMediaBuy": "supported",
"signals": "supported"
},
"productMode": {
"agentCapabilityUid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"declaredAgentMode": "WHOLESALE",
"bindingSelection": "WHOLESALE",
"effectiveMode": "WHOLESALE",
"reasons": [
"SOURCE_NOT_ACTIVE"
],
"paths": [
{
"path": "WHOLESALE",
"ready": true,
"reasons": [
"SOURCE_NOT_ACTIVE"
]
}
]
},
"health": {
"status": "healthy",
"condition": null,
"observationBudgetMs": null,
"lastError": "<string>",
"lastErrorCode": "<string>",
"lastErrorAt": "<string>",
"lastSuccessAt": "<string>",
"lastCheckedAt": "<string>"
},
"capabilityHealth": {
"inventory": {
"status": "healthy",
"observations": [
{
"observer": "<string>",
"status": "healthy",
"previousStatus": "healthy",
"condition": "timeout",
"observationBudgetMs": null,
"cause": "<string>",
"detail": "<string>",
"owner": "<string>",
"observedAt": "<string>",
"lastOkAt": "<string>"
}
]
},
"reporting": {
"status": "healthy",
"observations": [
{
"observer": "<string>",
"status": "healthy",
"previousStatus": "healthy",
"condition": "timeout",
"observationBudgetMs": null,
"cause": "<string>",
"detail": "<string>",
"owner": "<string>",
"observedAt": "<string>",
"lastOkAt": "<string>"
}
]
}
},
"verificationMode": "LIVE_SOURCE"
},
"requestRouting": null,
"reporting": {
"availability": "supported",
"health": "waiting",
"sourceProvenance": "acquired",
"obligations": [
{
"obligationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"mediaBuyIds": [
"<string>"
],
"mediaBuyIdsTruncated": false,
"coverage": "full",
"periodStart": "2023-11-07T05:31:56Z",
"periodEnd": "2023-11-07T05:31:56Z",
"expectedAt": "2023-11-07T05:31:56Z",
"nextExpectedAt": "2023-11-07T05:31:56Z",
"requiredFinality": "snapshot",
"health": "waiting",
"missingFirstReport": true,
"issue": {
"id": "<string>",
"code": "REPORT_OVERDUE",
"responsibleParty": "seller",
"recommendedAction": "wait_for_retry"
},
"latestRevision": {
"revisionId": "<string>",
"kind": "snapshot",
"rowCount": 4503599627370495,
"controlTotalCount": 4503599627370495,
"dataThrough": "2023-11-07T05:31:56Z",
"observedAt": "2023-11-07T05:31:56Z"
}
}
],
"obligationsTruncated": false,
"relatedMediaBuyIds": [
"<string>"
],
"relatedMediaBuyIdsTruncated": false,
"lastSuccessfulRevision": {
"revisionId": "<string>",
"kind": "snapshot",
"rowCount": 4503599627370495,
"controlTotalCount": 4503599627370495,
"dataThrough": "2023-11-07T05:31:56Z",
"observedAt": "2023-11-07T05:31:56Z"
},
"freshness": "current",
"dataThrough": "2023-11-07T05:31:56Z",
"nextExpectedAt": "2023-11-07T05:31:56Z",
"actions": {
"refreshCanonicalStatus": {
"available": false,
"reason": "adapter_pending"
},
"readCurrentSellerStatus": {
"available": false,
"reason": "adapter_pending"
},
"replayRetainedRevision": {
"available": false,
"reason": "adapter_pending"
}
}
},
"window": {
"hours": 4503599627370495,
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"sampledActivityCount": 4503599627370495,
"activityTruncated": true,
"sampledTestRunCount": 4503599627370495
},
"performance": {
"requestCount": 4503599627370495,
"responseCount": 4503599627370495,
"exchangeCount": 4503599627370495,
"completedCount": 4503599627370495,
"failedCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"pendingCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"timeoutRate": 0.5,
"errorRate": 0.5,
"inputRequiredRate": 0.5,
"completedRate": 0.5,
"latencyStatus": "within_threshold",
"latencyThresholdMs": 4503599627370495,
"overThresholdCount": 4503599627370495,
"staleAsyncResponseCount": 4503599627370495,
"p50LatencyMs": 4503599627370495,
"p95LatencyMs": 4503599627370495,
"p99LatencyMs": 4503599627370495,
"unknownLatencyCount": 4503599627370495
},
"comparison": {
"previousWindow": {
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"exchangeCount": 4503599627370495,
"issueCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"errorRate": 0.5,
"p95LatencyMs": 4503599627370495,
"sampledActivityCount": 4503599627370495,
"activityTruncated": true
},
"issueDelta": 0,
"timeoutDelta": 0,
"errorRateDelta": 123,
"p95LatencyDeltaMs": 0,
"trend": "new_issue",
"summary": "<string>"
},
"timeline": [
{
"startedAt": "2023-11-07T05:31:56Z",
"endedAt": "2023-11-07T05:31:56Z",
"exchangeCount": 4503599627370495,
"issueCount": 4503599627370495,
"failedCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"errorRate": 0.5,
"p95LatencyMs": 4503599627370495
}
],
"toolBreakdown": [
{
"tool": "<string>",
"exchangeCount": 4503599627370495,
"completedCount": 4503599627370495,
"failedCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"rejectedCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495
}
],
"externalCallLanes": [
{
"taskType": "<string>",
"callCount": 4503599627370495,
"successCount": 4503599627370495,
"errorCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495,
"previous": {
"callCount": 4503599627370495,
"successCount": 4503599627370495,
"errorCount": 4503599627370495,
"timeoutCount": 4503599627370495,
"p95LatencyMs": 4503599627370495
}
}
],
"transportRequests": {
"unavailable": true,
"totalCount": 4503599627370495,
"physicalRequestCount": 4503599627370495,
"logicalOperationCount": 4503599627370495,
"sourceAttributedCount": 4503599627370495,
"sharedAgentCount": 4503599627370495,
"displayedCount": 4503599627370495,
"hasMore": true,
"retentionDays": 4503599627370495,
"requests": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"observedAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"groupId": "<string>",
"debugId": "<string>",
"operationStage": "intent_accepted",
"attributionScope": "source",
"origin": "validation_test",
"destinationOrigin": "<string>",
"dispatchState": "not_dispatched",
"provenance": "interchange_preflight",
"requestKind": "<string>",
"httpMethod": "<string>",
"adcpTool": "<string>",
"protocolMethod": "<string>",
"outcome": "started",
"httpStatus": 0,
"latencyMs": 4503599627370495,
"errorClass": "<string>",
"failureDomain": "none",
"instrumentationGap": true,
"requestHeaders": {},
"requestBody": "<string>",
"requestBodyTruncated": true,
"responseHeaders": {},
"responseBody": "<string>",
"responseBodyTruncated": true,
"statusText": "<string>",
"replayOfTransportRequestId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"replayEligible": true,
"accountId": 0,
"mediaBuyId": 0,
"mediaBuyIdText": "<string>"
}
]
},
"discoveryParticipation": {
"calledCount": 4503599627370495,
"skippedCount": 4503599627370495,
"excludedCount": 4503599627370495,
"timedOutCount": 4503599627370495,
"skipReasons": [
{
"reason": "<string>",
"count": 4503599627370495
}
]
},
"outcomeMix": {
"returnedProductsCount": 4503599627370495,
"returnedNoProductsCount": 4503599627370495,
"failedCount": 4503599627370495,
"businessRejectedCount": 4503599627370495,
"pendingCount": 4503599627370495,
"inputRequiredCount": 4503599627370495,
"timedOutCount": 4503599627370495,
"skippedCount": 4503599627370495
},
"demandImpact": {
"buyerRequestsAffected": 4503599627370495,
"missedProductOpportunityCount": 4503599627370495,
"notes": [
"<string>"
]
},
"recentActivity": [
{
"id": 0,
"timestamp": "2023-11-07T05:31:56Z",
"tool": "<string>",
"taskStatus": "<string>",
"activityType": "<string>",
"taskId": "<string>",
"operationId": "<string>",
"contextId": "<string>",
"idempotencyKey": "<string>",
"debugId": "<string>",
"traceparent": "<string>",
"requestId": "<string>",
"correlationId": "<string>",
"initiatorEmail": "<string>",
"origin": {
"kind": "sandbox_test",
"testRunUid": "<string>",
"testRunStatus": "passed",
"testRunToolName": "<string>",
"testRunCreatedAt": "2023-11-07T05:31:56Z"
},
"isIssue": true,
"summary": "<string>",
"details": {
"payload": {},
"relatedRequest": {
"timestamp": "2023-11-07T05:31:56Z",
"payload": {}
}
}
}
],
"diagnosis": {
"severity": "ok",
"owner": "seller",
"topCause": "<string>",
"failure": null,
"issues": [
{
"mode": "disabled_retired",
"severity": "warning",
"count": 4503599627370495,
"summary": "<string>"
}
],
"nextSteps": [
"<string>"
],
"developerHandoff": {
"sourceId": "<string>",
"sourceName": "<string>",
"agentId": "<string>",
"endpointUrl": "<string>",
"latestTaskId": "<string>",
"latestOperationId": "<string>",
"latestContextId": "<string>",
"latestIdempotencyKey": "<string>",
"latestDebugId": "<string>",
"latestCorrelationId": "<string>",
"correlationHeaders": {},
"latestError": "<string>"
}
},
"docs": [
{
"label": "<string>",
"url": "<string>"
}
]
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}{
"data": null,
"error": {
"code": "<string>",
"message": "<string>",
"field": "<string>",
"details": {}
}
}Authorizations
API key or access token
Path Parameters
Inventory source ID
1Query Parameters
Number of trailing hours to analyze for the current diagnostics window. The previous comparison window uses the same duration immediately before it.
0 < x <= 720Response
Get inventory source diagnostics
Seller-facing diagnostics for a single third-party sales-agent or modular inventory source.
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
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
Show child attributes
Show child attributes
Show child attributes
Show child attributes