{
  "service": "ably_control",
  "displayName": "Ably Control",
  "categories": [
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Access Token",
      "placeholder": "ABLY_CONTROL_ACCESS_TOKEN",
      "description": "Ably Control API access token used as a Bearer token. Create or view Control API access tokens in the Ably account dashboard: https://ably.com/users/access_tokens."
    }
  ],
  "homepageUrl": "https://ably.com",
  "actions": [
    {
      "id": "ably_control.create_app",
      "service": "ably_control",
      "name": "create_app",
      "description": "Create an Ably app in the connected account or supplied account ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably account ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The app name."
          },
          "status": {
            "type": "string",
            "enum": [
              "enabled",
              "disabled"
            ],
            "description": "The app status."
          },
          "tlsOnly": {
            "type": "boolean",
            "description": "Whether to enforce TLS for all connections."
          },
          "fcmKey": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging key."
              },
              {
                "type": "null"
              }
            ]
          },
          "fcmServiceAccount": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging service account credentials."
              },
              {
                "type": "null"
              }
            ]
          },
          "fcmProjectId": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging project ID."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsCertificate": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Apple Push Notification service certificate."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsPrivateKey": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Apple Push Notification service private key."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsUseSandboxEndpoint": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether APNs uses the sandbox endpoint for this app."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "name"
        ],
        "description": "App fields forwarded to Ably's create app endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "app": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ably application ID."
              },
              "accountId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably account ID that owns the app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The app name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The app status."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tlsOnly": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether TLS is enforced for this app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "apnsUseSandboxEndpoint": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether APNs uses the sandbox endpoint for this app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw app object returned by Ably."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "A normalized Ably app."
          }
        },
        "additionalProperties": false,
        "required": [
          "app"
        ],
        "description": "The normalized Ably app creation response."
      }
    },
    {
      "id": "ably_control.create_key",
      "service": "ably_control",
      "name": "create_key",
      "description": "Create an API key for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The key name."
          },
          "capability": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "description": "A capability operation such as publish, subscribe, or history."
              },
              "description": "Capability operations granted for this channel or resource."
            },
            "description": "Ably channel capabilities keyed by channel or resource name."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId",
          "name",
          "capability"
        ],
        "description": "Key fields forwarded to Ably's create key endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ably API key ID."
              },
              "appId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably app ID that owns the key."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The key name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The Ably key status code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "key": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The complete API key returned by Ably when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "capability": {
                "anyOf": [
                  {
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "description": "A capability operation such as publish, subscribe, or history."
                      },
                      "description": "Capability operations granted for this channel or resource."
                    },
                    "description": "Ably channel capabilities keyed by channel or resource name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "A Unix timestamp in milliseconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "modified": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "A Unix timestamp in milliseconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw key object returned by Ably."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "A normalized Ably API key."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "The normalized Ably key creation response."
      }
    },
    {
      "id": "ably_control.create_queue",
      "service": "ably_control",
      "name": "create_queue",
      "description": "Create a queue for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The queue name."
          },
          "region": {
            "type": "string",
            "minLength": 1,
            "description": "The queue region, such as eu-west-1-a."
          },
          "ttl": {
            "type": "integer",
            "minimum": 0,
            "description": "The message TTL in seconds."
          },
          "maxLength": {
            "type": "integer",
            "minimum": 0,
            "description": "The maximum queue length."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId",
          "name",
          "region"
        ],
        "description": "Queue fields forwarded to Ably's create queue endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "queue": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ably queue ID."
              },
              "appId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably app ID that owns the queue."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The queue name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "region": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably queue region."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "state": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The queue state."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "ttl": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The queue message TTL in seconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "maxLength": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The maximum queue length."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "deadletter": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether this queue uses dead-letter handling."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw queue object returned by Ably."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "A normalized Ably queue."
          }
        },
        "additionalProperties": false,
        "required": [
          "queue"
        ],
        "description": "The normalized Ably queue creation response."
      }
    },
    {
      "id": "ably_control.delete_app",
      "service": "ably_control",
      "name": "delete_app",
      "description": "Delete an Ably app by app ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId"
        ],
        "description": "Input for deleting an Ably app."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Ably accepted the delete request."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The normalized Ably app delete response."
      }
    },
    {
      "id": "ably_control.delete_queue",
      "service": "ably_control",
      "name": "delete_queue",
      "description": "Delete an Ably queue by queue ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "queueId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably queue ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId",
          "queueId"
        ],
        "description": "Input for deleting an Ably queue."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Ably accepted the delete request."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The normalized Ably queue delete response."
      }
    },
    {
      "id": "ably_control.get_account_stats",
      "service": "ably_control",
      "name": "get_account_stats",
      "description": "Retrieve account-level Ably statistics for the connected account or account ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably account ID."
          },
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "start": {
            "type": "integer",
            "description": "A Unix timestamp in milliseconds."
          },
          "end": {
            "type": "integer",
            "description": "A Unix timestamp in milliseconds."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The maximum number of statistics records to return."
          },
          "unit": {
            "type": "string",
            "enum": [
              "minute",
              "hour",
              "day",
              "month"
            ],
            "description": "The statistics aggregation unit."
          },
          "direction": {
            "type": "string",
            "enum": [
              "backwards",
              "forwards"
            ],
            "description": "The pagination direction."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for retrieving Ably statistics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "stats": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "intervalId": {
                  "type": "string",
                  "description": "The Ably statistics interval identifier."
                },
                "unit": {
                  "type": "string",
                  "description": "The statistics aggregation unit."
                }
              },
              "additionalProperties": true,
              "description": "An Ably statistics record."
            },
            "description": "Statistics records returned by Ably."
          }
        },
        "additionalProperties": false,
        "required": [
          "stats"
        ],
        "description": "The normalized Ably account statistics response."
      }
    },
    {
      "id": "ably_control.get_app_stats",
      "service": "ably_control",
      "name": "get_app_stats",
      "description": "Retrieve app-level Ably statistics for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably account ID."
          },
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "start": {
            "type": "integer",
            "description": "A Unix timestamp in milliseconds."
          },
          "end": {
            "type": "integer",
            "description": "A Unix timestamp in milliseconds."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000,
            "description": "The maximum number of statistics records to return."
          },
          "unit": {
            "type": "string",
            "enum": [
              "minute",
              "hour",
              "day",
              "month"
            ],
            "description": "The statistics aggregation unit."
          },
          "direction": {
            "type": "string",
            "enum": [
              "backwards",
              "forwards"
            ],
            "description": "The pagination direction."
          }
        },
        "additionalProperties": false,
        "description": "Query parameters for retrieving Ably statistics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "stats": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "intervalId": {
                  "type": "string",
                  "description": "The Ably statistics interval identifier."
                },
                "unit": {
                  "type": "string",
                  "description": "The statistics aggregation unit."
                }
              },
              "additionalProperties": true,
              "description": "An Ably statistics record."
            },
            "description": "Statistics records returned by Ably."
          }
        },
        "additionalProperties": false,
        "required": [
          "stats"
        ],
        "description": "The normalized Ably app statistics response."
      }
    },
    {
      "id": "ably_control.get_current_account",
      "service": "ably_control",
      "name": "get_current_account",
      "description": "Retrieve the Ably Control API token, user, and account associated with the access token.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required to retrieve the current Ably account."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "me": {
            "type": "object",
            "properties": {
              "token": {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The token ID as a string."
                      },
                      {
                        "type": "integer",
                        "description": "The token ID as a number."
                      }
                    ],
                    "description": "The token ID returned by Ably."
                  },
                  "name": {
                    "type": "string",
                    "description": "The token friendly name."
                  },
                  "capabilities": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "description": "A token capability."
                    },
                    "description": "The token capabilities."
                  }
                },
                "additionalProperties": true,
                "description": "The Control API access token details."
              },
              "user": {
                "type": "object",
                "properties": {
                  "id": {
                    "anyOf": [
                      {
                        "type": "string",
                        "description": "The user ID as a string."
                      },
                      {
                        "type": "integer",
                        "description": "The user ID as a number."
                      }
                    ],
                    "description": "The user ID returned by Ably."
                  },
                  "email": {
                    "type": "string",
                    "description": "The user email address."
                  }
                },
                "additionalProperties": true,
                "description": "The Ably user associated with the token."
              },
              "account": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string",
                    "minLength": 1,
                    "description": "The Ably account ID."
                  },
                  "name": {
                    "type": "string",
                    "description": "The account name."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "id",
                  "name"
                ],
                "description": "The Ably account associated with the token."
              }
            },
            "additionalProperties": false,
            "required": [
              "token",
              "user",
              "account"
            ],
            "description": "The normalized Ably Control API identity response."
          }
        },
        "additionalProperties": false,
        "required": [
          "me"
        ],
        "description": "The current Ably Control API account response."
      }
    },
    {
      "id": "ably_control.list_apps",
      "service": "ably_control",
      "name": "list_apps",
      "description": "List Ably apps in the connected account or supplied account ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "accountId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably account ID."
          }
        },
        "additionalProperties": false,
        "description": "Input for listing Ably apps."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "apps": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ably application ID."
                },
                "accountId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Ably account ID that owns the app."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The app name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The app status."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "tlsOnly": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether TLS is enforced for this app."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "apnsUseSandboxEndpoint": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether APNs uses the sandbox endpoint for this app."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw app object returned by Ably."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "raw"
              ],
              "description": "A normalized Ably app."
            },
            "description": "Apps returned by Ably."
          }
        },
        "additionalProperties": false,
        "required": [
          "apps"
        ],
        "description": "The normalized Ably app list response."
      }
    },
    {
      "id": "ably_control.list_keys",
      "service": "ably_control",
      "name": "list_keys",
      "description": "List API keys for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId"
        ],
        "description": "Input for listing Ably API keys."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ably API key ID."
                },
                "appId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Ably app ID that owns the key."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The key name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The Ably key status code."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "key": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The complete API key returned by Ably when available."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "capability": {
                  "anyOf": [
                    {
                      "type": "object",
                      "additionalProperties": {
                        "type": "array",
                        "items": {
                          "type": "string",
                          "minLength": 1,
                          "description": "A capability operation such as publish, subscribe, or history."
                        },
                        "description": "Capability operations granted for this channel or resource."
                      },
                      "description": "Ably channel capabilities keyed by channel or resource name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "created": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "A Unix timestamp in milliseconds."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "modified": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "A Unix timestamp in milliseconds."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw key object returned by Ably."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "raw"
              ],
              "description": "A normalized Ably API key."
            },
            "description": "API keys returned by Ably."
          }
        },
        "additionalProperties": false,
        "required": [
          "keys"
        ],
        "description": "The normalized Ably key list response."
      }
    },
    {
      "id": "ably_control.list_queues",
      "service": "ably_control",
      "name": "list_queues",
      "description": "List queues for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId"
        ],
        "description": "Input for listing Ably queues."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "queues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The Ably queue ID."
                },
                "appId": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Ably app ID that owns the queue."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The queue name."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "region": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Ably queue region."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "state": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The queue state."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "ttl": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The queue message TTL in seconds."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "maxLength": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The maximum queue length."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "deadletter": {
                  "anyOf": [
                    {
                      "type": "boolean",
                      "description": "Whether this queue uses dead-letter handling."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw queue object returned by Ably."
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "raw"
              ],
              "description": "A normalized Ably queue."
            },
            "description": "Queues returned by Ably."
          }
        },
        "additionalProperties": false,
        "required": [
          "queues"
        ],
        "description": "The normalized Ably queue list response."
      }
    },
    {
      "id": "ably_control.revoke_key",
      "service": "ably_control",
      "name": "revoke_key",
      "description": "Revoke an Ably API key by key ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "keyId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably API key ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId",
          "keyId"
        ],
        "description": "Input for revoking an Ably API key."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Whether Ably accepted the revoke request."
          }
        },
        "additionalProperties": false,
        "required": [
          "success"
        ],
        "description": "The normalized Ably key revocation response."
      }
    },
    {
      "id": "ably_control.update_app",
      "service": "ably_control",
      "name": "update_app",
      "description": "Update editable settings for an Ably app.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The app name."
          },
          "status": {
            "type": "string",
            "enum": [
              "enabled",
              "disabled"
            ],
            "description": "The app status."
          },
          "tlsOnly": {
            "type": "boolean",
            "description": "Whether to enforce TLS for all connections."
          },
          "fcmKey": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging key."
              },
              {
                "type": "null"
              }
            ]
          },
          "fcmServiceAccount": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging service account credentials."
              },
              {
                "type": "null"
              }
            ]
          },
          "fcmProjectId": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Firebase Cloud Messaging project ID."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsCertificate": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Apple Push Notification service certificate."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsPrivateKey": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Apple Push Notification service private key."
              },
              {
                "type": "null"
              }
            ]
          },
          "apnsUseSandboxEndpoint": {
            "anyOf": [
              {
                "type": "boolean",
                "description": "Whether APNs uses the sandbox endpoint for this app."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "appId"
        ],
        "description": "App fields forwarded to Ably's update app endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "app": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ably application ID."
              },
              "accountId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably account ID that owns the app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The app name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The app status."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "tlsOnly": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether TLS is enforced for this app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "apnsUseSandboxEndpoint": {
                "anyOf": [
                  {
                    "type": "boolean",
                    "description": "Whether APNs uses the sandbox endpoint for this app."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw app object returned by Ably."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "A normalized Ably app."
          }
        },
        "additionalProperties": false,
        "required": [
          "app"
        ],
        "description": "The normalized Ably app update response."
      }
    },
    {
      "id": "ably_control.update_key",
      "service": "ably_control",
      "name": "update_key",
      "description": "Update an Ably API key name or capability.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "appId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably application ID."
          },
          "keyId": {
            "type": "string",
            "minLength": 1,
            "description": "The Ably API key ID."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The key name."
          },
          "capability": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "description": "A capability operation such as publish, subscribe, or history."
              },
              "description": "Capability operations granted for this channel or resource."
            },
            "description": "Ably channel capabilities keyed by channel or resource name."
          }
        },
        "additionalProperties": false,
        "required": [
          "appId",
          "keyId"
        ],
        "description": "Key fields forwarded to Ably's update key endpoint."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "key": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Ably API key ID."
              },
              "appId": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The Ably app ID that owns the key."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The key name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "status": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The Ably key status code."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "key": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The complete API key returned by Ably when available."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "capability": {
                "anyOf": [
                  {
                    "type": "object",
                    "additionalProperties": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "minLength": 1,
                        "description": "A capability operation such as publish, subscribe, or history."
                      },
                      "description": "Capability operations granted for this channel or resource."
                    },
                    "description": "Ably channel capabilities keyed by channel or resource name."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "created": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "A Unix timestamp in milliseconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "modified": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "A Unix timestamp in milliseconds."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "raw": {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "The raw key object returned by Ably."
              }
            },
            "additionalProperties": false,
            "required": [
              "id",
              "raw"
            ],
            "description": "A normalized Ably API key."
          }
        },
        "additionalProperties": false,
        "required": [
          "key"
        ],
        "description": "The normalized Ably key update response."
      }
    }
  ]
}
