curl --request PUT \
--url https://api.openworklabs.com/v1/mcp-connections/{connectionId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"expectedUpdatedAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"url": "<string>",
"access": {
"orgWide": false,
"memberIds": [],
"teamIds": []
},
"exposeDirectly": true,
"apiKey": "<string>",
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"authorizationServerIssuer": "<string>",
"requestedScopes": [
"<string>"
]
}
'import requests
url = "https://api.openworklabs.com/v1/mcp-connections/{connectionId}"
payload = {
"expectedUpdatedAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"url": "<string>",
"access": {
"orgWide": False,
"memberIds": [],
"teamIds": []
},
"exposeDirectly": True,
"apiKey": "<string>",
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"authorizationServerIssuer": "<string>",
"requestedScopes": ["<string>"]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expectedUpdatedAt: '2023-11-07T05:31:56Z',
name: '<string>',
url: '<string>',
access: {orgWide: false, memberIds: [], teamIds: []},
exposeDirectly: true,
apiKey: '<string>',
manualOAuthEndpoints: {authorizationEndpoint: '<string>', tokenEndpoint: '<string>'},
authorizationServerIssuer: '<string>',
requestedScopes: ['<string>']
})
};
fetch('https://api.openworklabs.com/v1/mcp-connections/{connectionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/mcp-connections/{connectionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'expectedUpdatedAt' => '2023-11-07T05:31:56Z',
'name' => '<string>',
'url' => '<string>',
'access' => [
'orgWide' => false,
'memberIds' => [
],
'teamIds' => [
]
],
'exposeDirectly' => true,
'apiKey' => '<string>',
'manualOAuthEndpoints' => [
'authorizationEndpoint' => '<string>',
'tokenEndpoint' => '<string>'
],
'authorizationServerIssuer' => '<string>',
'requestedScopes' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/mcp-connections/{connectionId}"
payload := strings.NewReader("{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.openworklabs.com/v1/mcp-connections/{connectionId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/mcp-connections/{connectionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"externalKey": "<string>",
"url": "<string>",
"authType": "oauth",
"credentialMode": "shared",
"apiKeyAuthScheme": "bearer",
"exposeDirectly": true,
"connected": true,
"connectedAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"connectedForMe": true,
"requiredBy": [
{
"pluginId": "<string>",
"name": "<string>"
}
],
"identityManagedBy": [
{
"pluginId": "<string>",
"name": "<string>"
}
],
"access": {
"orgWide": true,
"memberIds": [
"<string>"
],
"teamIds": [
"<string>"
]
},
"identityChanged": true,
"reconnectionRequired": true,
"readiness": {
"status": "ready",
"checkedAt": "2023-11-07T05:31:56Z",
"lastSuccessfulAt": "2023-11-07T05:31:56Z",
"reason": "<string>",
"failure": "sign_in_required"
},
"organizationReadiness": {
"status": "ready",
"checkedAt": "2023-11-07T05:31:56Z",
"lastSuccessfulAt": "2023-11-07T05:31:56Z",
"reason": "<string>",
"failure": "sign_in_required"
},
"mcpUrl": "<string>",
"createdByName": "<string>",
"createdByYou": true,
"canRemove": true,
"createdAt": "2023-11-07T05:31:56Z",
"needsReconnect": true,
"credentialHealth": "unknown",
"credentialHealthReason": "authorization_rejected",
"credentialHealthCheckedAt": "2023-11-07T05:31:56Z",
"issuerReviewRequired": true,
"reconnectActionOwner": "member",
"missingFeatures": [
"<string>"
],
"externalAccountId": "<string>",
"grantedScopes": [
"<string>"
],
"tenantId": "<string>",
"requiredAuthType": "oauth",
"authPolicyConfirmed": true,
"authTypeMismatch": true,
"oauthClientConfigured": true,
"oauthClientRequired": true,
"setupRequired": true,
"oauthClientId": "<string>",
"oauthClientHasSecret": true,
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"oauthCallbackUrl": "<string>",
"oauthSharedCallbackUrl": "<string>",
"oauthClientMetadataUrl": "<string>",
"oauthCallbackMode": "shared-v1",
"oauthRegistrationSource": "pre-registered",
"authorizationServerIssuer": "<string>",
"requestedScopes": [
"<string>"
],
"credentialPrompt": {
"schemaVersion": "1",
"kind": "credential_prompt",
"target": {
"type": "mcp_connection_key",
"connectionId": "<string>"
},
"name": "<string>",
"destination": "<string>"
},
"nextStep": "<string>"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "connection_not_found",
"message": "<string>"
}{
"error": "connection_conflict",
"message": "<string>"
}{
"error": "connection_validation_failed",
"message": "<string>",
"diagnostic": {
"referenceId": "<string>",
"phase": "CONFIGURATION",
"category": "<string>",
"code": "<string>",
"highestPassed": "configured",
"retryable": true,
"actionOwner": "openwork",
"operatorAction": "<string>",
"message": "<string>",
"httpStatus": 349,
"operationPhase": "CONFIGURATION",
"outbound": {
"origin": "<string>",
"pathHash": "<string>"
},
"providerRequestId": "<string>",
"providerStatus": 0,
"providerCode": "<string>",
"payloadBytes": 0,
"jsonRpcCode": 0,
"connectUrl": "<string>"
}
}Edit an External MCP Connection
The workspace owner (or anyone with the Edit any connection permission) can edit any connection. Other org members can edit only connections they created. Making a connection org-wide needs the Share with everyone permission. Name and direct access changes preserve credentials. URL, authentication type, or credential-mode changes invalidate the old identity atomically. Secret fields are write-only optional replacements and are never returned. expectedUpdatedAt prevents stale edits.
curl --request PUT \
--url https://api.openworklabs.com/v1/mcp-connections/{connectionId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"expectedUpdatedAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"url": "<string>",
"access": {
"orgWide": false,
"memberIds": [],
"teamIds": []
},
"exposeDirectly": true,
"apiKey": "<string>",
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"authorizationServerIssuer": "<string>",
"requestedScopes": [
"<string>"
]
}
'import requests
url = "https://api.openworklabs.com/v1/mcp-connections/{connectionId}"
payload = {
"expectedUpdatedAt": "2023-11-07T05:31:56Z",
"name": "<string>",
"url": "<string>",
"access": {
"orgWide": False,
"memberIds": [],
"teamIds": []
},
"exposeDirectly": True,
"apiKey": "<string>",
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"authorizationServerIssuer": "<string>",
"requestedScopes": ["<string>"]
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
expectedUpdatedAt: '2023-11-07T05:31:56Z',
name: '<string>',
url: '<string>',
access: {orgWide: false, memberIds: [], teamIds: []},
exposeDirectly: true,
apiKey: '<string>',
manualOAuthEndpoints: {authorizationEndpoint: '<string>', tokenEndpoint: '<string>'},
authorizationServerIssuer: '<string>',
requestedScopes: ['<string>']
})
};
fetch('https://api.openworklabs.com/v1/mcp-connections/{connectionId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.openworklabs.com/v1/mcp-connections/{connectionId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'expectedUpdatedAt' => '2023-11-07T05:31:56Z',
'name' => '<string>',
'url' => '<string>',
'access' => [
'orgWide' => false,
'memberIds' => [
],
'teamIds' => [
]
],
'exposeDirectly' => true,
'apiKey' => '<string>',
'manualOAuthEndpoints' => [
'authorizationEndpoint' => '<string>',
'tokenEndpoint' => '<string>'
],
'authorizationServerIssuer' => '<string>',
'requestedScopes' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.openworklabs.com/v1/mcp-connections/{connectionId}"
payload := strings.NewReader("{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.openworklabs.com/v1/mcp-connections/{connectionId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.openworklabs.com/v1/mcp-connections/{connectionId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"expectedUpdatedAt\": \"2023-11-07T05:31:56Z\",\n \"name\": \"<string>\",\n \"url\": \"<string>\",\n \"access\": {\n \"orgWide\": false,\n \"memberIds\": [],\n \"teamIds\": []\n },\n \"exposeDirectly\": true,\n \"apiKey\": \"<string>\",\n \"manualOAuthEndpoints\": {\n \"authorizationEndpoint\": \"<string>\",\n \"tokenEndpoint\": \"<string>\"\n },\n \"authorizationServerIssuer\": \"<string>\",\n \"requestedScopes\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"externalKey": "<string>",
"url": "<string>",
"authType": "oauth",
"credentialMode": "shared",
"apiKeyAuthScheme": "bearer",
"exposeDirectly": true,
"connected": true,
"connectedAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"connectedForMe": true,
"requiredBy": [
{
"pluginId": "<string>",
"name": "<string>"
}
],
"identityManagedBy": [
{
"pluginId": "<string>",
"name": "<string>"
}
],
"access": {
"orgWide": true,
"memberIds": [
"<string>"
],
"teamIds": [
"<string>"
]
},
"identityChanged": true,
"reconnectionRequired": true,
"readiness": {
"status": "ready",
"checkedAt": "2023-11-07T05:31:56Z",
"lastSuccessfulAt": "2023-11-07T05:31:56Z",
"reason": "<string>",
"failure": "sign_in_required"
},
"organizationReadiness": {
"status": "ready",
"checkedAt": "2023-11-07T05:31:56Z",
"lastSuccessfulAt": "2023-11-07T05:31:56Z",
"reason": "<string>",
"failure": "sign_in_required"
},
"mcpUrl": "<string>",
"createdByName": "<string>",
"createdByYou": true,
"canRemove": true,
"createdAt": "2023-11-07T05:31:56Z",
"needsReconnect": true,
"credentialHealth": "unknown",
"credentialHealthReason": "authorization_rejected",
"credentialHealthCheckedAt": "2023-11-07T05:31:56Z",
"issuerReviewRequired": true,
"reconnectActionOwner": "member",
"missingFeatures": [
"<string>"
],
"externalAccountId": "<string>",
"grantedScopes": [
"<string>"
],
"tenantId": "<string>",
"requiredAuthType": "oauth",
"authPolicyConfirmed": true,
"authTypeMismatch": true,
"oauthClientConfigured": true,
"oauthClientRequired": true,
"setupRequired": true,
"oauthClientId": "<string>",
"oauthClientHasSecret": true,
"manualOAuthEndpoints": {
"authorizationEndpoint": "<string>",
"tokenEndpoint": "<string>"
},
"oauthCallbackUrl": "<string>",
"oauthSharedCallbackUrl": "<string>",
"oauthClientMetadataUrl": "<string>",
"oauthCallbackMode": "shared-v1",
"oauthRegistrationSource": "pre-registered",
"authorizationServerIssuer": "<string>",
"requestedScopes": [
"<string>"
],
"credentialPrompt": {
"schemaVersion": "1",
"kind": "credential_prompt",
"target": {
"type": "mcp_connection_key",
"connectionId": "<string>"
},
"name": "<string>",
"destination": "<string>"
},
"nextStep": "<string>"
}{
"error": "invalid_request",
"details": [
{
"message": "<string>",
"path": [
"<string>"
]
}
],
"message": "<string>",
"capability": "<string>"
}{
"error": "unauthorized"
}{
"error": "forbidden",
"reason": "<string>",
"message": "<string>"
}{
"error": "connection_not_found",
"message": "<string>"
}{
"error": "connection_conflict",
"message": "<string>"
}{
"error": "connection_validation_failed",
"message": "<string>",
"diagnostic": {
"referenceId": "<string>",
"phase": "CONFIGURATION",
"category": "<string>",
"code": "<string>",
"highestPassed": "configured",
"retryable": true,
"actionOwner": "openwork",
"operatorAction": "<string>",
"message": "<string>",
"httpStatus": 349,
"operationPhase": "CONFIGURATION",
"outbound": {
"origin": "<string>",
"pathHash": "<string>"
},
"providerRequestId": "<string>",
"providerStatus": 0,
"providerCode": "<string>",
"payloadBytes": 0,
"jsonRpcCode": 0,
"connectUrl": "<string>"
}
}Authorizations
Organization API key passed as the x-api-key header. The raw key is the header value; do not prefix it with Bearer.
Path Parameters
Den TypeID with 'emc_' prefix and a 26-character base32 suffix.
30Body
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$1 - 2552048oauth, apikey, none shared, per_member Show child attributes
Show child attributes
1 - 4096bearer, token Show child attributes
Show child attributes
Administrator-pinned authorization and token URLs. Both required; null restores strict discovery. Changing them clears saved sign-ins.
Show child attributes
Show child attributes
20485121 - 255Response
Connection updated.
oauth, apikey, none shared, per_member bearer, token ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The calling member's own last check. Null means never checked for them (or the settings or their sign-in changed since).
Show child attributes
Show child attributes
scope=manageable only. Whether the connector itself works: for shared connections the shared credential's check; for per-member connections the latest Ready check any member recorded for the current settings, otherwise the caller's own check. Null means nobody has checked it yet.
Show child attributes
Show child attributes
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$unknown, ready, reconnect_required authorization_rejected, credential_expired, post_authorization_validation_failed ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$member, organization_admin oauth, apikey, none Whether a client secret is configured. Only returned with explicit connection-settings view permission; never the secret itself.
Only returned with explicit connection-settings view permission; omitted from usable member listings, including for the connection creator.
Show child attributes
Show child attributes
shared-v1, isolated-v1, legacy-v1 pre-registered, client-metadata, dynamic Show child attributes
Show child attributes
Was this page helpful?