Tool: create_external_api
Create an External API resource in the API hub.
The following sample demonstrate how to use curl to invoke the create_external_api MCP tool.
| Curl Request |
|---|
curl --location 'https://apihub.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_external_api", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
Input Schema
The CreateExternalApi method's request.
CreateExternalApiRequest
| JSON representation |
|---|
{
"parent": string,
"externalApiId": string,
"externalApi": {
object ( |
| Fields | |
|---|---|
parent |
Required. The parent resource for the External API resource. Format: |
externalApiId |
Optional. The ID to use for the External API resource, which will become the final component of the External API's resource name. This field is optional.
This value should be 4-500 characters, and valid characters are /[a-z][A-Z][0-9]-_/. |
externalApi |
Required. The External API resource to create. |
ExternalApi
| JSON representation |
|---|
{ "name": string, "displayName": string, "description": string, "endpoints": [ string ], "paths": [ string ], "documentation": { object ( |
| Fields | |
|---|---|
name |
Identifier. Format: |
displayName |
Required. Display name of the external API. Max length is 63 characters (Unicode Code Points). |
description |
Optional. Description of the external API. Max length is 2000 characters (Unicode Code Points). |
endpoints[] |
Optional. List of endpoints on which this API is accessible. |
paths[] |
Optional. List of paths served by this API. |
documentation |
Optional. Documentation of the external API. |
attributes |
Optional. The list of user defined attributes associated with the Version resource. The key is the attribute name. It will be of the format: An object containing a list of |
createTime |
Output only. Creation timestamp. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
updateTime |
Output only. Last update timestamp. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
Documentation
| JSON representation |
|---|
{ "externalUri": string } |
| Fields | |
|---|---|
externalUri |
Optional. The uri of the externally hosted documentation. |
AttributesEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
AttributeValues
| JSON representation |
|---|
{ "attribute": string, // Union field |
| Fields | |
|---|---|
attribute |
Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute} |
Union field Value. The attribute values associated with the resource. Value can be only one of the following: |
|
enumValues |
The attribute values associated with a resource in case attribute data type is enum. |
stringValues |
The attribute values associated with a resource in case attribute data type is string. |
jsonValues |
The attribute values associated with a resource in case attribute data type is JSON. |
uriValues |
The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name. |
EnumAttributeValues
| JSON representation |
|---|
{
"values": [
{
object ( |
| Fields | |
|---|---|
values[] |
Required. The attribute values in case attribute data type is enum. |
AllowedValue
| JSON representation |
|---|
{ "id": string, "displayName": string, "description": string, "immutable": boolean } |
| Fields | |
|---|---|
id |
Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. |
displayName |
Required. The display name of the allowed value. |
description |
Optional. The detailed description of the allowed value. |
immutable |
Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes. |
StringAttributeValues
| JSON representation |
|---|
{ "values": [ string ] } |
| Fields | |
|---|---|
values[] |
Required. The attribute values in case attribute data type is string or JSON. |
Timestamp
| JSON representation |
|---|
{ "seconds": string, "nanos": integer } |
| Fields | |
|---|---|
seconds |
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
nanos |
Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |
Output Schema
An external API represents an API being provided by external sources. This can be used to model third-party APIs and can be used to define dependencies.
ExternalApi
| JSON representation |
|---|
{ "name": string, "displayName": string, "description": string, "endpoints": [ string ], "paths": [ string ], "documentation": { object ( |
| Fields | |
|---|---|
name |
Identifier. Format: |
displayName |
Required. Display name of the external API. Max length is 63 characters (Unicode Code Points). |
description |
Optional. Description of the external API. Max length is 2000 characters (Unicode Code Points). |
endpoints[] |
Optional. List of endpoints on which this API is accessible. |
paths[] |
Optional. List of paths served by this API. |
documentation |
Optional. Documentation of the external API. |
attributes |
Optional. The list of user defined attributes associated with the Version resource. The key is the attribute name. It will be of the format: An object containing a list of |
createTime |
Output only. Creation timestamp. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
updateTime |
Output only. Last update timestamp. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: |
Documentation
| JSON representation |
|---|
{ "externalUri": string } |
| Fields | |
|---|---|
externalUri |
Optional. The uri of the externally hosted documentation. |
AttributesEntry
| JSON representation |
|---|
{
"key": string,
"value": {
object ( |
| Fields | |
|---|---|
key |
|
value |
|
AttributeValues
| JSON representation |
|---|
{ "attribute": string, // Union field |
| Fields | |
|---|---|
attribute |
Output only. The name of the attribute. Format: projects/{project}/locations/{location}/attributes/{attribute} |
Union field Value. The attribute values associated with the resource. Value can be only one of the following: |
|
enumValues |
The attribute values associated with a resource in case attribute data type is enum. |
stringValues |
The attribute values associated with a resource in case attribute data type is string. |
jsonValues |
The attribute values associated with a resource in case attribute data type is JSON. |
uriValues |
The attribute values associated with a resource in case attribute data type is URL, URI or IP, like gs://bucket-name/object-name. |
EnumAttributeValues
| JSON representation |
|---|
{
"values": [
{
object ( |
| Fields | |
|---|---|
values[] |
Required. The attribute values in case attribute data type is enum. |
AllowedValue
| JSON representation |
|---|
{ "id": string, "displayName": string, "description": string, "immutable": boolean } |
| Fields | |
|---|---|
id |
Required. The ID of the allowed value. * If provided, the same will be used. The service will throw an error if the specified id is already used by another allowed value in the same attribute resource. * If not provided, a system generated id derived from the display name will be used. In this case, the service will handle conflict resolution by adding a system generated suffix in case of duplicates. This value should be 4-63 characters, and valid characters are /[a-z][0-9]-/. |
displayName |
Required. The display name of the allowed value. |
description |
Optional. The detailed description of the allowed value. |
immutable |
Optional. When set to true, the allowed value cannot be updated or deleted by the user. It can only be true for System defined attributes. |
StringAttributeValues
| JSON representation |
|---|
{ "values": [ string ] } |
| Fields | |
|---|---|
values[] |
Required. The attribute values in case attribute data type is string or JSON. |
Timestamp
| JSON representation |
|---|
{ "seconds": string, "nanos": integer } |
| Fields | |
|---|---|
seconds |
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
nanos |
Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |
Tool Annotations
Destructive Hint: ❌ | Idempotent Hint: ❌ | Read Only Hint: ❌ | Open World Hint: ❌