{
  "service": "youtube",
  "displayName": "YouTube",
  "categories": [
    "Design & Media",
    "Social"
  ],
  "authTypes": [
    "oauth2"
  ],
  "auth": [
    {
      "type": "oauth2",
      "authorizationUrl": "https://accounts.google.com/o/oauth2/v2/auth",
      "tokenUrl": "https://oauth2.googleapis.com/token",
      "scopes": [
        "https://www.googleapis.com/auth/youtube.readonly",
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "tokenEndpointAuthMethod": "client_secret_post",
      "authorizationParams": {
        "access_type": "offline",
        "prompt": "consent"
      }
    }
  ],
  "homepageUrl": "https://www.youtube.com/",
  "actions": [
    {
      "id": "youtube.add_video_to_playlist",
      "service": "youtube",
      "name": "add_video_to_playlist",
      "description": "Add a YouTube video to a playlist.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist ID to add the video to."
          },
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to add to the playlist."
          },
          "position": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based position for the new playlist item."
          },
          "note": {
            "type": "string",
            "description": "A user note associated with the playlist item when supported by YouTube."
          }
        },
        "additionalProperties": false,
        "required": [
          "playlistId",
          "videoId"
        ],
        "description": "The input payload for adding a YouTube video to a playlist."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlistItem": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after adding a video to a YouTube playlist."
      }
    },
    {
      "id": "youtube.create_comment_reply",
      "service": "youtube",
      "name": "create_comment_reply",
      "description": "Reply to an existing YouTube comment thread.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "parentId": {
            "type": "string",
            "minLength": 1,
            "description": "The parent YouTube comment ID to reply to."
          },
          "textOriginal": {
            "type": "string",
            "minLength": 1,
            "description": "The plain-text reply content to post."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for replying to a YouTube comment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after replying to a YouTube comment."
      }
    },
    {
      "id": "youtube.create_playlist",
      "service": "youtube",
      "name": "create_playlist",
      "description": "Create a YouTube playlist owned by the authenticated user.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist title."
          },
          "description": {
            "type": "string",
            "description": "The YouTube playlist description."
          },
          "privacyStatus": {
            "type": "string",
            "enum": [
              "private",
              "public",
              "unlisted"
            ],
            "description": "The YouTube privacy status."
          }
        },
        "additionalProperties": false,
        "required": [
          "title"
        ],
        "description": "The input payload for creating a YouTube playlist."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlist": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after creating a YouTube playlist."
      }
    },
    {
      "id": "youtube.delete_caption",
      "service": "youtube",
      "name": "delete_caption",
      "description": "Delete a YouTube caption track.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "captionId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube caption track ID to delete."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for deleting a YouTube caption track."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The YouTube resource ID that was deleted."
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the delete request completed successfully."
              }
            },
            "additionalProperties": false,
            "description": "A YouTube deletion acknowledgement."
          }
        },
        "additionalProperties": false,
        "description": "A YouTube deletion acknowledgement wrapper."
      }
    },
    {
      "id": "youtube.delete_playlist",
      "service": "youtube",
      "name": "delete_playlist",
      "description": "Delete a YouTube playlist owned by the authenticated user.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist ID to delete."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for deleting a YouTube playlist."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The YouTube resource ID that was deleted."
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the delete request completed successfully."
              }
            },
            "additionalProperties": false,
            "description": "A YouTube deletion acknowledgement."
          }
        },
        "additionalProperties": false,
        "description": "A YouTube deletion acknowledgement wrapper."
      }
    },
    {
      "id": "youtube.delete_playlist_item",
      "service": "youtube",
      "name": "delete_playlist_item",
      "description": "Delete an item from a YouTube playlist.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistItemId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist item ID to delete."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for deleting a YouTube playlist item."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The YouTube resource ID that was deleted."
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the delete request completed successfully."
              }
            },
            "additionalProperties": false,
            "description": "A YouTube deletion acknowledgement."
          }
        },
        "additionalProperties": false,
        "description": "A YouTube deletion acknowledgement wrapper."
      }
    },
    {
      "id": "youtube.delete_video",
      "service": "youtube",
      "name": "delete_video",
      "description": "Delete a YouTube video owned by the authenticated user.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to delete."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for deleting a YouTube video."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "result": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "The YouTube resource ID that was deleted."
              },
              "deleted": {
                "type": "boolean",
                "description": "Whether the delete request completed successfully."
              }
            },
            "additionalProperties": false,
            "description": "A YouTube deletion acknowledgement."
          }
        },
        "additionalProperties": false,
        "description": "A YouTube deletion acknowledgement wrapper."
      }
    },
    {
      "id": "youtube.download_caption",
      "service": "youtube",
      "name": "download_caption",
      "description": "Download a YouTube caption track and return a temporary transit URL.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "captionId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube caption track ID to download."
          },
          "tfmt": {
            "type": "string",
            "minLength": 1,
            "description": "The caption output format requested from YouTube, such as srt or vtt."
          },
          "tlang": {
            "type": "string",
            "minLength": 1,
            "description": "The caption language to translate into when supported by YouTube."
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "description": "The output filename used for the transit file."
          },
          "mimeType": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type to report for the downloaded caption file."
          }
        },
        "additionalProperties": false,
        "required": [
          "captionId"
        ],
        "description": "The input payload for downloading a YouTube caption track."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "file": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A file downloaded through the connector transit file service."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after downloading a YouTube caption track."
      }
    },
    {
      "id": "youtube.get_video_rating",
      "service": "youtube",
      "name": "get_video_rating",
      "description": "Get the authenticated user's rating for one or more YouTube videos.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube video IDs whose ratings should be retrieved.",
            "minItems": 1,
            "maxItems": 50
          }
        },
        "additionalProperties": false,
        "description": "The input payload for retrieving YouTube video ratings."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "ratings": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The video ratings returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when retrieving YouTube video ratings."
      }
    },
    {
      "id": "youtube.list_caption_tracks",
      "service": "youtube",
      "name": "list_caption_tracks",
      "description": "List YouTube caption tracks for a video or caption track IDs.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID whose caption tracks should be listed."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube caption track IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube caption tracks."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "captions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The caption tracks returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube caption tracks."
      }
    },
    {
      "id": "youtube.list_channels",
      "service": "youtube",
      "name": "list_channels",
      "description": "List YouTube channel resources by ID, username, handle, or authenticated owner.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube channel IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "forHandle": {
            "type": "string",
            "minLength": 1,
            "description": "A YouTube channel handle such as @GoogleDevelopers."
          },
          "forUsername": {
            "type": "string",
            "minLength": 1,
            "description": "A legacy YouTube username."
          },
          "mine": {
            "type": "boolean",
            "description": "Whether to list channels owned by the authenticated user."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube channels."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "channels": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The channels returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube channels."
      }
    },
    {
      "id": "youtube.list_comment_threads",
      "service": "youtube",
      "name": "list_comment_threads",
      "description": "List top-level YouTube comment threads for a video, channel, or thread IDs.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID whose comment threads should be listed."
          },
          "channelId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube channel ID whose comment threads should be listed."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube comment thread IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "allThreadsRelatedToChannelId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube channel ID used to retrieve all related comment threads."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          },
          "order": {
            "type": "string",
            "enum": [
              "time",
              "relevance"
            ],
            "description": "The order used for comment thread results."
          },
          "textFormat": {
            "type": "string",
            "enum": [
              "html",
              "plainText"
            ],
            "description": "The comment text format returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube comment threads."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "commentThreads": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The comment threads returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube comment threads."
      }
    },
    {
      "id": "youtube.list_comments",
      "service": "youtube",
      "name": "list_comments",
      "description": "List YouTube comments by parent comment ID or comment IDs.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "parentId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube parent comment ID whose replies should be listed."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube comment IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          },
          "textFormat": {
            "type": "string",
            "enum": [
              "html",
              "plainText"
            ],
            "description": "The comment text format returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube comments."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The comments returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube comments."
      }
    },
    {
      "id": "youtube.list_i18n_languages",
      "service": "youtube",
      "name": "list_i18n_languages",
      "description": "List YouTube interface languages.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "The language used for localized snippet text."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube interface languages."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "languages": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The i18n languages returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube interface languages."
      }
    },
    {
      "id": "youtube.list_i18n_regions",
      "service": "youtube",
      "name": "list_i18n_regions",
      "description": "List YouTube content regions.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "hl": {
            "type": "string",
            "minLength": 1,
            "description": "The language used for localized snippet text."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube content regions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "regions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The i18n regions returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube content regions."
      }
    },
    {
      "id": "youtube.list_playlist_items",
      "service": "youtube",
      "name": "list_playlist_items",
      "description": "List videos and resources contained in a YouTube playlist.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist ID to inspect."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          }
        },
        "additionalProperties": false,
        "required": [
          "playlistId"
        ],
        "description": "The input payload for listing YouTube playlist items."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlistItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The playlist items returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube playlist items."
      }
    },
    {
      "id": "youtube.list_playlists",
      "service": "youtube",
      "name": "list_playlists",
      "description": "List YouTube playlists by ID, channel, or authenticated owner.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube playlist IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "channelId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube channel ID whose playlists should be listed."
          },
          "mine": {
            "type": "boolean",
            "description": "Whether to list playlists owned by the authenticated user."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube playlists."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlists": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The playlists returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube playlists."
      }
    },
    {
      "id": "youtube.list_video_categories",
      "service": "youtube",
      "name": "list_video_categories",
      "description": "List YouTube video categories for a region or category IDs.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "regionCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "An ISO 3166-1 alpha-2 region code."
          },
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube video category IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube video categories."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "categories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The video categories returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube video categories."
      }
    },
    {
      "id": "youtube.list_videos",
      "service": "youtube",
      "name": "list_videos",
      "description": "List YouTube video resources by ID or chart.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "ids": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube resource ID."
            },
            "description": "The YouTube video IDs to retrieve.",
            "minItems": 1,
            "maxItems": 50
          },
          "chart": {
            "type": "string",
            "enum": [
              "mostPopular"
            ],
            "description": "The chart used when listing videos without explicit IDs."
          },
          "mine": {
            "type": "boolean",
            "description": "Whether to list videos owned by the authenticated user."
          },
          "part": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One YouTube API part such as snippet or statistics."
            },
            "description": "The resource parts to include.",
            "minItems": 1
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          },
          "regionCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "An ISO 3166-1 alpha-2 region code used with chart requests."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing YouTube videos."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "videos": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The videos returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when listing YouTube videos."
      }
    },
    {
      "id": "youtube.post_comment",
      "service": "youtube",
      "name": "post_comment",
      "description": "Post a top-level public comment on a YouTube video.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to comment on."
          },
          "channelId": {
            "type": "string",
            "minLength": 1,
            "description": "The channel ID for the video being commented on."
          },
          "textOriginal": {
            "type": "string",
            "minLength": 1,
            "description": "The plain-text comment content to post."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for posting a YouTube comment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "commentThread": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after posting a YouTube comment."
      }
    },
    {
      "id": "youtube.rate_video",
      "service": "youtube",
      "name": "rate_video",
      "description": "Set or clear the authenticated user's rating for a YouTube video.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to rate."
          },
          "rating": {
            "type": "string",
            "enum": [
              "like",
              "dislike",
              "none"
            ],
            "description": "The rating to apply to the video."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for rating a YouTube video."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "description": "The YouTube video ID that was rated."
          },
          "rating": {
            "type": "string",
            "description": "The rating that was applied."
          },
          "success": {
            "type": "boolean",
            "description": "Whether YouTube accepted the rating request."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after rating a YouTube video."
      }
    },
    {
      "id": "youtube.search",
      "service": "youtube",
      "name": "search",
      "description": "Search YouTube for videos, channels, or playlists.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.readonly"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube search query."
          },
          "type": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "channel",
                "playlist",
                "video"
              ],
              "description": "One YouTube search result type."
            },
            "description": "Resource types to include in search results.",
            "minItems": 1,
            "maxItems": 3
          },
          "order": {
            "type": "string",
            "enum": [
              "date",
              "rating",
              "relevance",
              "title",
              "videoCount",
              "viewCount"
            ],
            "description": "The order used for search results."
          },
          "channelId": {
            "type": "string",
            "minLength": 1,
            "description": "Only return resources owned by this YouTube channel."
          },
          "publishedAfter": {
            "type": "string",
            "description": "Only return resources created at or after this timestamp.",
            "format": "date-time"
          },
          "publishedBefore": {
            "type": "string",
            "description": "Only return resources created at or before this timestamp.",
            "format": "date-time"
          },
          "regionCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "An ISO 3166-1 alpha-2 region code used to tune search results."
          },
          "relevanceLanguage": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "An ISO 639-1 language code used to tune search results."
          },
          "safeSearch": {
            "type": "string",
            "enum": [
              "moderate",
              "none",
              "strict"
            ],
            "description": "The safe search setting for YouTube search."
          },
          "maxResults": {
            "type": "integer",
            "minimum": 1,
            "maximum": 50,
            "description": "Maximum number of items to return per page."
          },
          "pageToken": {
            "type": "string",
            "minLength": 1,
            "description": "Opaque pagination token returned by a previous YouTube API response."
          }
        },
        "additionalProperties": false,
        "required": [
          "q"
        ],
        "description": "The input payload for searching YouTube."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw YouTube resource."
            },
            "description": "The search results returned by YouTube."
          },
          "nextPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the next result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "prevPageToken": {
            "anyOf": [
              {
                "type": "string",
                "description": "The token for the previous result page."
              },
              {
                "type": "null"
              }
            ]
          },
          "pageInfo": {
            "type": "object",
            "properties": {
              "totalResults": {
                "type": "integer",
                "description": "The total result count reported by YouTube."
              },
              "resultsPerPage": {
                "type": "integer",
                "description": "The number of results included in this page."
              }
            },
            "additionalProperties": false,
            "description": "Pagination summary returned by YouTube."
          }
        },
        "additionalProperties": false,
        "description": "The response returned when searching YouTube."
      }
    },
    {
      "id": "youtube.set_thumbnail_from_url",
      "service": "youtube",
      "name": "set_thumbnail_from_url",
      "description": "Upload and set a custom YouTube video thumbnail from an HTTPS image URL.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID whose thumbnail should be replaced."
          },
          "imageUrl": {
            "type": "string",
            "description": "The HTTPS URL of the thumbnail image to upload.",
            "format": "uri"
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "description": "The filename sent to YouTube for the thumbnail media."
          },
          "mimeType": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type of the thumbnail image."
          }
        },
        "additionalProperties": false,
        "required": [
          "videoId",
          "imageUrl"
        ],
        "description": "The input payload for setting a YouTube video thumbnail from a URL."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "thumbnails": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after setting a YouTube thumbnail."
      }
    },
    {
      "id": "youtube.update_caption",
      "service": "youtube",
      "name": "update_caption",
      "description": "Update a YouTube caption track's metadata.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "captionId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube caption track ID to update."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The updated caption track display name."
          },
          "isDraft": {
            "type": "boolean",
            "description": "Whether the caption track should be a draft."
          }
        },
        "additionalProperties": false,
        "required": [
          "captionId"
        ],
        "description": "The input payload for updating a YouTube caption track."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after updating a YouTube caption track."
      }
    },
    {
      "id": "youtube.update_playlist",
      "service": "youtube",
      "name": "update_playlist",
      "description": "Update a YouTube playlist's snippet and status metadata.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist ID to update."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The updated YouTube playlist title."
          },
          "description": {
            "type": "string",
            "description": "The updated YouTube playlist description."
          },
          "privacyStatus": {
            "type": "string",
            "enum": [
              "private",
              "public",
              "unlisted"
            ],
            "description": "The YouTube privacy status."
          }
        },
        "additionalProperties": false,
        "required": [
          "playlistId",
          "title"
        ],
        "description": "The input payload for updating a YouTube playlist."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlist": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after updating a YouTube playlist."
      }
    },
    {
      "id": "youtube.update_playlist_item",
      "service": "youtube",
      "name": "update_playlist_item",
      "description": "Update a YouTube playlist item's position or note.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "playlistItemId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist item ID to update."
          },
          "playlistId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube playlist ID that contains the item."
          },
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID referenced by the playlist item."
          },
          "position": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based position for the playlist item."
          },
          "note": {
            "type": "string",
            "description": "A user note associated with the playlist item when supported by YouTube."
          }
        },
        "additionalProperties": false,
        "required": [
          "playlistItemId",
          "playlistId",
          "videoId"
        ],
        "description": "The input payload for updating a YouTube playlist item."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "playlistItem": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after updating a YouTube playlist item."
      }
    },
    {
      "id": "youtube.update_video",
      "service": "youtube",
      "name": "update_video",
      "description": "Update a YouTube video's snippet and status metadata.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to update."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The updated YouTube video title."
          },
          "description": {
            "type": "string",
            "description": "The updated YouTube video description."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One video tag."
            },
            "description": "Tags to attach to the video.",
            "minItems": 1
          },
          "categoryId": {
            "type": "string",
            "minLength": 1,
            "description": "The updated YouTube video category ID."
          },
          "privacyStatus": {
            "type": "string",
            "enum": [
              "private",
              "public",
              "unlisted"
            ],
            "description": "The YouTube privacy status."
          }
        },
        "additionalProperties": false,
        "required": [
          "videoId",
          "title"
        ],
        "description": "The input payload for updating a YouTube video."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "video": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after updating a YouTube video."
      }
    },
    {
      "id": "youtube.upload_caption_from_url",
      "service": "youtube",
      "name": "upload_caption_from_url",
      "description": "Upload a YouTube caption track from an HTTPS caption file URL.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "captionUrl": {
            "type": "string",
            "description": "The HTTPS URL of the caption file to upload.",
            "format": "uri"
          },
          "videoId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video ID to attach the caption track to."
          },
          "language": {
            "type": "string",
            "minLength": 1,
            "description": "The caption track language, such as en or zh-Hans."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The caption track display name."
          },
          "isDraft": {
            "type": "boolean",
            "description": "Whether the uploaded caption track should be a draft."
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "description": "The filename sent to YouTube for the caption media."
          },
          "mimeType": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type of the caption file."
          }
        },
        "additionalProperties": false,
        "required": [
          "captionUrl",
          "videoId",
          "language"
        ],
        "description": "The input payload for uploading a YouTube caption track from a URL."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "caption": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after uploading a YouTube caption track."
      }
    },
    {
      "id": "youtube.upload_video_from_url",
      "service": "youtube",
      "name": "upload_video_from_url",
      "description": "Upload a YouTube video from an HTTPS media URL using the resumable upload API.",
      "requiredScopes": [
        "https://www.googleapis.com/auth/youtube.force-ssl"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "mediaUrl": {
            "type": "string",
            "description": "The HTTPS URL of the video file to upload.",
            "format": "uri"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video title."
          },
          "description": {
            "type": "string",
            "description": "The YouTube video description."
          },
          "privacyStatus": {
            "type": "string",
            "enum": [
              "private",
              "public",
              "unlisted"
            ],
            "description": "The YouTube privacy status."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One video tag."
            },
            "description": "Tags to attach to the video.",
            "minItems": 1
          },
          "categoryId": {
            "type": "string",
            "minLength": 1,
            "description": "The YouTube video category ID."
          },
          "fileName": {
            "type": "string",
            "minLength": 1,
            "description": "The filename sent to YouTube for the uploaded media."
          },
          "mimeType": {
            "type": "string",
            "minLength": 1,
            "description": "The MIME type of the video media."
          },
          "notifySubscribers": {
            "type": "boolean",
            "description": "Whether YouTube should notify subscribers."
          }
        },
        "additionalProperties": false,
        "required": [
          "mediaUrl",
          "title"
        ],
        "description": "The input payload for uploading a YouTube video from a URL."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "video": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw YouTube resource."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after uploading a YouTube video."
      }
    }
  ]
}
