UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 75.7 kB
{"openapi":"3.0.0","info":{"description":"### The Internet of Things for Everyone\n\nThe Adafruit IO HTTP API provides access to your Adafruit IO data from any programming language or hardware environment that can speak HTTP. The easiest way to get started is with [an Adafruit IO learn guide](https://learn.adafruit.com/series/adafruit-io-basics) and [a simple Internet of Things capable device like the Feather Huzzah](https://www.adafruit.com/product/2821).\n\nThis API documentation is hosted on GitHub Pages and is available at [https://github.com/adafruit/io-api](https://github.com/adafruit/io-api). For questions or comments visit the [Adafruit IO Forums](https://forums.adafruit.com/viewforum.php?f=56) or the [adafruit-io channel on the Adafruit Discord server](https://discord.gg/adafruit).\n\n#### Authentication\n\nAuthentication for every API request happens through the `X-AIO-Key` header or query parameter and your IO API key. A simple cURL request to get all available feeds for a user with the username \"io_username\" and the key \"io_key_12345\" could look like this:\n\n $ curl -H \"X-AIO-Key: io_key_12345\" https://io.adafruit.com/api/v2/io_username/feeds\n\nOr like this:\n\n $ curl \"https://io.adafruit.com/api/v2/io_username/feeds?X-AIO-Key=io_key_12345\n\nUsing the node.js [request](https://github.com/request/request) library, IO HTTP requests are as easy as:\n\n```js\nvar request = require('request');\n\nvar options = {\n url: 'https://io.adafruit.com/api/v2/io_username/feeds',\n headers: {\n 'X-AIO-Key': 'io_key_12345',\n 'Content-Type': 'application/json'\n }\n};\n\nfunction callback(error, response, body) {\n if (!error && response.statusCode == 200) {\n var feeds = JSON.parse(body);\n console.log(feeds.length + \" FEEDS AVAILABLE\");\n\n feeds.forEach(function (feed) {\n console.log(feed.name, feed.key);\n })\n }\n}\n\nrequest(options, callback);\n```\n\nUsing the ESP8266 Arduino HTTPClient library, an HTTPS GET request would look like this (replacing `---` with your own values in the appropriate locations):\n\n```arduino\n/// based on\n/// https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/examples/Authorization/Authorization.ino\n\n#include <Arduino.h>\n#include <ESP8266WiFi.h>\n#include <ESP8266WiFiMulti.h>\n#include <ESP8266HTTPClient.h>\n\nESP8266WiFiMulti WiFiMulti;\n\nconst char* ssid = \"---\";\nconst char* password = \"---\";\n\nconst char* host = \"io.adafruit.com\";\n\nconst char* io_key = \"---\";\nconst char* path_with_username = \"/api/v2/---/dashboards\";\n\n// Use web browser to view and copy\n// SHA1 fingerprint of the certificate\nconst char* fingerprint = \"77 00 54 2D DA E7 D8 03 27 31 23 99 EB 27 DB CB A5 4C 57 18\";\n\nvoid setup() {\n Serial.begin(115200);\n\n for(uint8_t t = 4; t > 0; t--) {\n Serial.printf(\"[SETUP] WAIT %d...\\n\", t);\n Serial.flush();\n delay(1000);\n }\n\n WiFi.mode(WIFI_STA);\n WiFiMulti.addAP(ssid, password);\n\n // wait for WiFi connection\n while(WiFiMulti.run() != WL_CONNECTED) {\n Serial.print('.');\n delay(1000);\n }\n\n Serial.println(\"[WIFI] connected!\");\n\n HTTPClient http;\n\n // start request with URL and TLS cert fingerprint for verification\n http.begin(\"https://\" + String(host) + String(path_with_username), fingerprint);\n\n // IO API authentication\n http.addHeader(\"X-AIO-Key\", io_key);\n\n // start connection and send HTTP header\n int httpCode = http.GET();\n\n // httpCode will be negative on error\n if(httpCode > 0) {\n // HTTP header has been send and Server response header has been handled\n Serial.printf(\"[HTTP] GET response: %d\\n\", httpCode);\n\n // HTTP 200 OK\n if(httpCode == HTTP_CODE_OK) {\n String payload = http.getString();\n Serial.println(payload);\n }\n\n http.end();\n }\n}\n\nvoid loop() {}\n```\n\n#### Client Libraries\n\nWe have client libraries to help you get started with your project: [Python](https://github.com/adafruit/io-client-python), [Ruby](https://github.com/adafruit/io-client-ruby), [Arduino C++](https://github.com/adafruit/Adafruit_IO_Arduino), [Javascript](https://github.com/adafruit/adafruit-io-node), and [Go](https://github.com/adafruit/io-client-go) are available. They're all open source, so if they don't already do what you want, you can fork and add any feature you'd like.\n\n","title":"Adafruit IO REST API","version":"2.0.0","x-apisguru-categories":["iot"],"x-logo":{"url":"https://twitter.com/adafruit/profile_image?size=original"},"x-origin":[{"format":"swagger","url":"https://raw.githubusercontent.com/adafruit/io-api/gh-pages/v2.json","version":"2.0"}],"x-providerName":"adafruit.com"},"security":[{"HeaderKey":[]},{"HeaderSignature":[]},{"QueryKey":[]}],"paths":{"/user":{"get":{"operationId":"currentUser","responses":{"200":{"description":"A User record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}},"text/csv":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get information about the current user","tags":["Users"],"x-swagger-router-action":"get","x-swagger-router-controller":"Users"}},"/webhooks/feed/:token":{"post":{"description":"","operationId":"createWebhookFeedData","requestBody":{"content":{"application/json":{"schema":{"properties":{"value":{"type":"string"}},"type":"object"}},"application/x-www-form-urlencoded":{"schema":{"properties":{"value":{"type":"string"}},"type":"object"}}},"description":"Webhook payload containing data `value` parameter.","required":true},"responses":{"200":{"description":"New feed data record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Send data to a feed via webhook URL.","tags":["Webhooks","Data"],"x-code-samples":[{"lang":"curl","source":"curl -F 'value=65.5' https://io.adafruit.com/api/v2/webhooks/feed/12345thistoken"}],"x-swagger-router-action":"create","x-swagger-router-controller":"WebhookReceivers"}},"/webhooks/feed/:token/raw":{"post":{"description":"The raw data webhook receiver accepts POST requests and stores the raw request body on your feed. This is useful when you don't have control of the webhook sender. If feed history is turned on, payloads will be truncated at 1024 bytes. If feed history is turned off, payloads will be truncated at 100KB.","operationId":"createRawWebhookFeedData","responses":{"200":{"description":"New feed data record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Send arbitrary data to a feed via webhook URL.","tags":["Webhooks","Data"],"x-code-samples":[{"lang":"curl","source":"curl --header 'Content-Type: application/json' \\\n --request POST \\\n --data '{\"some json\": \"goes here\", \"id\": 12345}' \\\n https://io.adafruit.com/api/v2/webhooks/feed/12345thistoken/raw"}],"x-swagger-router-action":"createRaw","x-swagger-router-controller":"WebhookReceivers"}},"/{username}/activities":{"delete":{"description":"Delete all your activities.","operationId":"destroyActivities","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"Deleted activities successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All activities for current user","tags":["Activities"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Activities"},"get":{"description":"The Activities endpoint returns information about the user's activities.","operationId":"allActivities","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/StartTime"},{"$ref":"#/components/parameters/EndTime"},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"An array of activities","headers":{"X-Pagination-Count":{"description":"The number of records returned.","schema":{"type":"integer"}},"X-Pagination-End":{"description":"The created_at value for the newest record returned.","schema":{"type":"string"}},"X-Pagination-Limit":{"description":"The limit this request is using, either your given value or the default (1000).","schema":{"type":"integer"}},"X-Pagination-Start":{"description":"The created_at value for the oldest record returned.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Activity"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Activity"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All activities for current user","tags":["Activities"],"x-swagger-router-action":"all","x-swagger-router-controller":"Activities"}},"/{username}/activities/{type}":{"get":{"description":"The Activities endpoint returns information about the user's activities.","operationId":"getActivity","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/ActivityTypePath"},{"$ref":"#/components/parameters/StartTime"},{"$ref":"#/components/parameters/EndTime"},{"$ref":"#/components/parameters/Limit"}],"responses":{"200":{"description":"An array of activities","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Activity"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Activity"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get activities by type for current user","tags":["Activities"],"x-swagger-router-action":"get","x-swagger-router-controller":"Activities"}},"/{username}/dashboards":{"get":{"description":"The Dashboards endpoint returns information about the user's dashboards.\n","operationId":"allDashboards","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"An array of dashboards","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Dashboard"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Dashboard"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All dashboards for current user","tags":["Dashboards"],"x-swagger-router-action":"all","x-swagger-router-controller":"Dashboards"},"post":{"description":"","operationId":"createDashboard","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"requestBody":{"$ref":"#/components/requestBodies/createDashboardDashboard"},"responses":{"200":{"description":"New Dashboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create a new Dashboard","tags":["Dashboards"],"x-swagger-router-action":"create","x-swagger-router-controller":"Dashboards"}},"/{username}/dashboards/{dashboard_id}/blocks":{"get":{"description":"The Blocks endpoint returns information about the user's blocks.\n","operationId":"allBlocks","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"}],"responses":{"200":{"description":"An array of blocks","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Block"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Block"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All blocks for current user","tags":["Blocks"],"x-swagger-router-action":"all","x-swagger-router-controller":"Blocks"},"post":{"description":"","operationId":"createBlock","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createBlockBlock"},"responses":{"200":{"description":"New Block","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Block"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create a new Block","tags":["Blocks"],"x-swagger-router-action":"create","x-swagger-router-controller":"Blocks"}},"/{username}/dashboards/{dashboard_id}/blocks/{id}":{"delete":{"description":"","operationId":"destroyBlock","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"},{"$ref":"#/components/parameters/IDPath"}],"responses":{"200":{"description":"Deleted Block successfully","content":{"application/json":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Delete an existing Block","tags":["Blocks"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Blocks"},"get":{"description":"","operationId":"getBlock","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"},{"$ref":"#/components/parameters/IDPath"}],"responses":{"200":{"description":"Block response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Block"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error\""}},"summary":"Returns Block based on ID","tags":["Blocks"],"x-swagger-router-action":"get","x-swagger-router-controller":"Blocks"},"patch":{"description":"","operationId":"updateBlock","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createBlockBlock"},"responses":{"200":{"description":"Updated Block","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Block"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Update properties of an existing Block","tags":["Blocks"],"x-swagger-router-action":"update","x-swagger-router-controller":"Blocks"},"put":{"description":"","operationId":"replaceBlock","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/DashboardIDPath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createBlockBlock"},"responses":{"200":{"description":"Updated block","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Block"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Replace an existing Block","tags":["Blocks"],"x-swagger-router-action":"replace","x-swagger-router-controller":"Blocks"}},"/{username}/dashboards/{id}":{"delete":{"description":"","operationId":"destroyDashboard","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/IDPath"}],"responses":{"200":{"description":"Deleted Dashboard successfully","content":{"application/json":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Delete an existing Dashboard","tags":["Dashboards"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Dashboards"},"get":{"description":"","operationId":"getDashboard","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/IDPath"}],"responses":{"200":{"description":"Dashboard response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error\""}},"summary":"Returns Dashboard based on ID","tags":["Dashboards"],"x-swagger-router-action":"get","x-swagger-router-controller":"Dashboards"},"patch":{"description":"","operationId":"updateDashboard","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDashboardDashboard"},"responses":{"200":{"description":"Updated Dashboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Update properties of an existing Dashboard","tags":["Dashboards"],"x-swagger-router-action":"update","x-swagger-router-controller":"Dashboards"},"put":{"description":"","operationId":"replaceDashboard","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDashboardDashboard"},"responses":{"200":{"description":"Updated dashboard","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dashboard"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Dashboard"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Replace an existing Dashboard","tags":["Dashboards"],"x-swagger-router-action":"replace","x-swagger-router-controller":"Dashboards"}},"/{username}/feeds":{"get":{"description":"The Feeds endpoint returns information about the user's feeds. The response includes the latest value of each feed, and other metadata about each feed.","operationId":"allFeeds","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"An array of feeds","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Feed"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Feed"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All feeds for current user","tags":["Feeds"],"x-swagger-router-action":"all","x-swagger-router-controller":"Feeds"},"post":{"description":"","operationId":"createFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupParam"}],"requestBody":{"$ref":"#/components/requestBodies/createFeedFeed"},"responses":{"200":{"description":"New feed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create a new Feed","tags":["Feeds"],"x-swagger-router-action":"create","x-swagger-router-controller":"Feeds"}},"/{username}/feeds/{feed_key}":{"delete":{"description":"","operationId":"destroyFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"responses":{"200":{"description":"Deleted feed successfully"},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Delete an existing Feed","tags":["Feeds"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Feeds"},"get":{"description":"Returns feed based on the feed key","operationId":"getFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"responses":{"200":{"description":"Feed response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get feed by feed key","tags":["Feeds"],"x-swagger-router-action":"get","x-swagger-router-controller":"Feeds"},"patch":{"description":"","operationId":"updateFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/createFeedFeed"},"responses":{"200":{"description":"Updated feed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Update properties of an existing Feed","tags":["Feeds"],"x-swagger-router-action":"update","x-swagger-router-controller":"Feeds"},"put":{"description":"","operationId":"replaceFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/createFeedFeed"},"responses":{"200":{"description":"Updated feed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Replace an existing Feed","tags":["Feeds"],"x-swagger-router-action":"replace","x-swagger-router-controller":"Feeds"}},"/{username}/feeds/{feed_key}/data":{"get":{"description":"","operationId":"allData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/StartTime"},{"$ref":"#/components/parameters/EndTime"},{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"An array of data","headers":{"X-Pagination-Count":{"description":"The number of records returned.","schema":{"type":"integer"}},"X-Pagination-End":{"description":"The created_at value for the newest record returned.","schema":{"type":"string"}},"X-Pagination-Limit":{"description":"The limit this request is using, either your given value or the default (1000).","schema":{"type":"integer"}},"X-Pagination-Start":{"description":"The created_at value for the oldest record returned.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get all data for the given feed","tags":["Data"],"x-swagger-router-action":"all","x-swagger-router-controller":"Data"},"post":{"description":"Create new data records on the given feed.\n\n**NOTE:** when feed history is on, data `value` size is limited to 1KB, when feed history is turned off data value size is limited to 100KB.","operationId":"createData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDataDatum"},"responses":{"200":{"description":"New data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Data"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Data"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create new Data","tags":["Data"],"x-code-samples":[{"lang":"curl","source":"curl -F 'value=65.5' -H 'X-AIO-Key: io_key_12345' \\\n https://io.adafruit.com/api/v2/io_username/feeds/io-feed-key/data"},{"lang":"Ruby","source":"api = Adafruit::IO::Client.new(\n key: ENV['IO_KEY'],\n username: ENV['IO_USERNAME']\n)\napi.send_data('io-feed-key', 65.5)"}],"x-swagger-router-action":"create","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/batch":{"post":{"operationId":"batchCreateData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/batchCreateDataData"},"responses":{"200":{"description":"New data","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create multiple new Data records","tags":["Data"],"x-swagger-router-action":"batch","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/chart":{"get":{"description":"The Chart API is what we use on io.adafruit.com to populate charts over varying timespans with a consistent number of data points. The maximum number of points returned is 480. This API works by aggregating slices of time into a single value by averaging.\n\nAll time-based parameters are optional, if none are given it will default to 1 hour at the finest-grained resolution possible.","operationId":"chartData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/StartTime"},{"$ref":"#/components/parameters/EndTime"},{"description":"A resolution size in minutes. By giving a resolution value you will get back grouped data points aggregated over resolution-sized intervals. NOTE: time span is preferred over resolution, so if you request a span of time that includes more than max limit points you may get a larger resolution than you requested. Valid resolutions are 1, 5, 10, 30, 60, and 120.","in":"query","name":"resolution","schema":{"type":"integer","format":"int32"}},{"description":"The number of hours the chart should cover.","in":"query","name":"hours","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"A JSON record containing chart data and the parameters used to generate it.","content":{"application/json":{"schema":{"properties":{"columns":{"description":"The names of the columns returned as data.","items":{"type":"string"},"type":"array"},"data":{"description":"The actual chart data.","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"feed":{"properties":{"id":{"type":"integer"},"key":{"type":"string"},"name":{"type":"string"}},"type":"object"},"parameters":{"properties":{},"type":"object"}},"type":"object"}},"text/csv":{"schema":{"properties":{"columns":{"description":"The names of the columns returned as data.","items":{"type":"string"},"type":"array"},"data":{"description":"The actual chart data.","items":{"items":{"type":"string"},"type":"array"},"type":"array"},"feed":{"properties":{"id":{"type":"integer"},"key":{"type":"string"},"name":{"type":"string"}},"type":"object"},"parameters":{"properties":{},"type":"object"}},"type":"object"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Chart data for current feed","tags":["Data"],"x-swagger-router-action":"chart","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/first":{"get":{"description":"Get the oldest data point in the feed. This request sets the queue pointer to the beginning of the feed.","operationId":"firstData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"Data response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"First Data in Queue","tags":["Data"],"x-swagger-router-action":"last","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/last":{"get":{"description":"Get the most recent data point in the feed. This request sets the queue pointer to the end of the feed.","operationId":"lastData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"Data response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Last Data in Queue","tags":["Data"],"x-swagger-router-action":"last","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/next":{"get":{"description":"Get the next newest data point in the feed. If queue processing hasn't been started, the first data point in the feed will be returned.","operationId":"nextData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"Data response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Next Data in Queue","tags":["Data"],"x-swagger-router-action":"next","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/previous":{"get":{"description":"Get the previously processed data point in the feed. NOTE: this method doesn't move the processing queue pointer.","operationId":"previousData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"Data response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Previous Data in Queue","tags":["Data"],"x-swagger-router-action":"previous","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/retain":{"get":{"description":"Get the most recent data point in the feed in an MQTT compatible CSV format: `value,lat,lon,ele`","operationId":"retainData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"responses":{"200":{"description":"CSV string in `value,lat,lon,ele` format. The lat, lon, and ele values are left blank if they are not set.","content":{"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Last Data in MQTT CSV format","tags":["Data"],"x-swagger-router-action":"retain","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/data/{id}":{"delete":{"description":"","operationId":"destroyData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/IDPath"}],"responses":{"200":{"description":"Deleted Group successfully","content":{"application/json":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Delete existing Data","tags":["Data"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Data"},"get":{"description":"","operationId":"getData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/IDPath"},{"$ref":"#/components/parameters/DataInclude"}],"responses":{"200":{"description":"Data response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Returns data based on feed key","tags":["Data"],"x-swagger-router-action":"get","x-swagger-router-controller":"Data"},"patch":{"description":"","operationId":"updateData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDataDatum"},"responses":{"200":{"description":"Updated Data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Update properties of existing Data","tags":["Data"],"x-swagger-router-action":"update","x-swagger-router-controller":"Data"},"put":{"description":"","operationId":"replaceData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"},{"$ref":"#/components/parameters/IDPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDataDatum"},"responses":{"200":{"description":"Updated Data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Replace existing Data","tags":["Data"],"x-swagger-router-action":"replace","x-swagger-router-controller":"Data"}},"/{username}/feeds/{feed_key}/details":{"get":{"description":"Returns more detailed feed record based on the feed key","operationId":"getFeedDetails","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedPath"}],"responses":{"200":{"description":"Feed response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get detailed feed by feed key","tags":["Feeds"],"x-swagger-router-action":"details","x-swagger-router-controller":"Feeds"}},"/{username}/groups":{"get":{"description":"The Groups endpoint returns information about the user's groups. The response includes the latest value of each feed in the group, and other metadata about the group.\n","operationId":"allGroups","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"An array of groups","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Group"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Group"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All groups for current user","tags":["Groups"],"x-swagger-router-action":"all","x-swagger-router-controller":"Groups"},"post":{"description":"","operationId":"createGroup","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"requestBody":{"$ref":"#/components/requestBodies/createGroupGroup"},"responses":{"200":{"description":"New Group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create a new Group","tags":["Groups"],"x-swagger-router-action":"create","x-swagger-router-controller":"Groups"}},"/{username}/groups/{group_key}":{"delete":{"description":"","operationId":"destroyGroup","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"responses":{"200":{"description":"Deleted Group successfully","content":{"application/json":{"schema":{"type":"string"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Delete an existing Group","tags":["Groups"],"x-swagger-router-action":"destroy","x-swagger-router-controller":"Groups"},"get":{"operationId":"getGroup","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"responses":{"200":{"description":"Group response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error\""}},"summary":"Returns Group based on ID","tags":["Groups"],"x-swagger-router-action":"get","x-swagger-router-controller":"Groups"},"patch":{"description":"","operationId":"updateGroup","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"requestBody":{"$ref":"#/components/requestBodies/createGroupGroup"},"responses":{"200":{"description":"Updated Group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Update properties of an existing Group","tags":["Groups"],"x-swagger-router-action":"update","x-swagger-router-controller":"Groups"},"put":{"description":"","operationId":"replaceGroup","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"requestBody":{"$ref":"#/components/requestBodies/createGroupGroup"},"responses":{"200":{"description":"Updated group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Replace an existing Group","tags":["Groups"],"x-swagger-router-action":"replace","x-swagger-router-controller":"Groups"}},"/{username}/groups/{group_key}/add":{"post":{"description":"","operationId":"addFeedToGroup","parameters":[{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedParam"}],"responses":{"200":{"description":"Updated group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Add an existing Feed to a Group","tags":["Groups","Feeds"],"x-swagger-router-action":"add_feed","x-swagger-router-controller":"Groups"}},"/{username}/groups/{group_key}/data":{"post":{"operationId":"createGroupData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"created_at":{"description":"Optional created_at timestamp which will be applied to all feed values created.","type":"string"},"feeds":{"description":"An array of feed data records with `key` and `value` properties.","items":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"type":"object"},"type":"array"},"location":{"description":"A location record with `lat`, `lon`, and [optional] `ele` properties.","properties":{"ele":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"type":"object"}},"required":["feeds"],"type":"object"}},"application/x-www-form-urlencoded":{"schema":{"properties":{"created_at":{"description":"Optional created_at timestamp which will be applied to all feed values created.","type":"string"},"feeds":{"description":"An array of feed data records with `key` and `value` properties.","items":{"properties":{"key":{"type":"string"},"value":{"type":"string"}},"required":["key","value"],"type":"object"},"type":"array"},"location":{"description":"A location record with `lat`, `lon`, and [optional] `ele` properties.","properties":{"ele":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["lat","lon"],"type":"object"}},"required":["feeds"],"type":"object"}}},"required":true},"responses":{"200":{"description":"New data","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create new data for multiple feeds in a group","tags":["Data"],"x-swagger-router-action":"group_create","x-swagger-router-controller":"Data"}},"/{username}/groups/{group_key}/feeds":{"get":{"description":"The Group Feeds endpoint returns information about the user's feeds. The response includes the latest value of each feed, and other metadata about each feed, but only for feeds within the given group.","operationId":"allGroupFeeds","parameters":[{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"An array of feeds","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Feed"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/Feed"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All feeds for current user in a given group","tags":["Groups","Feeds"],"x-swagger-router-action":"group_all","x-swagger-router-controller":"GroupFeeds"},"post":{"description":"","operationId":"createGroupFeed","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"}],"requestBody":{"$ref":"#/components/requestBodies/createFeedFeed"},"responses":{"200":{"description":"New feed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Feed"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Feed"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create a new Feed in a Group","tags":["Feeds"],"x-swagger-router-action":"group_create","x-swagger-router-controller":"GroupFeeds"}},"/{username}/groups/{group_key}/feeds/{feed_key}/data":{"get":{"description":"","operationId":"allGroupFeedData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/FeedPath"},{"description":"Start time for filtering data. Returns data created after given time.","in":"query","name":"start_time","schema":{"type":"string","format":"date-time"}},{"description":"End time for filtering data. Returns data created before give time.","in":"query","name":"end_time","schema":{"type":"string","format":"date-time"}},{"description":"Limit the number of records returned.","in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"description":"An array of data","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"All data for current feed in a specific group","tags":["Data"],"x-swagger-router-action":"group_all","x-swagger-router-controller":"Data"},"post":{"operationId":"createGroupFeedData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/createDataDatum"},"responses":{"200":{"description":"New data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponse"}},"text/csv":{"schema":{"$ref":"#/components/schemas/DataResponse"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create new Data in a feed belonging to a particular group","tags":["Data"],"x-swagger-router-action":"group_feed_create","x-swagger-router-controller":"Data"}},"/{username}/groups/{group_key}/feeds/{feed_key}/data/batch":{"post":{"operationId":"batchCreateGroupFeedData","parameters":[{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/FeedPath"}],"requestBody":{"$ref":"#/components/requestBodies/batchCreateDataData"},"responses":{"200":{"description":"New data","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}},"text/csv":{"schema":{"items":{"$ref":"#/components/schemas/DataResponse"},"type":"array"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Create multiple new Data records in a feed belonging to a particular group","tags":["Data"],"x-swagger-router-action":"group_feed_batch","x-swagger-router-controller":"Data"}},"/{username}/groups/{group_key}/remove":{"post":{"description":"","operationId":"removeFeedFromGroup","parameters":[{"$ref":"#/components/parameters/GroupPath"},{"$ref":"#/components/parameters/UsernamePath"},{"$ref":"#/components/parameters/FeedParam"}],"responses":{"200":{"description":"Updated group","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Group"}},"text/csv":{"schema":{"$ref":"#/components/schemas/Group"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Remove a Feed from a Group","tags":["Groups","Feeds"],"x-swagger-router-action":"remove_feed","x-swagger-router-controller":"Groups"}},"/{username}/throttle":{"get":{"operationId":"getCurrentUserThrottle","parameters":[{"$ref":"#/components/parameters/UsernamePath"}],"responses":{"200":{"description":"Data rate limit and current actions.","content":{"application/json":{"schema":{"properties":{"active_data_rate":{"description":"Actions taken inside the time window.","type":"integer"},"data_rate_limit":{"description":"Max possible actions inside the time window (usually 1 minute).","type":"integer"}},"type":"object"}},"text/csv":{"schema":{"properties":{"active_data_rate":{"description":"Actions taken inside the time window.","type":"integer"},"data_rate_limit":{"description":"Max possible actions inside the time window (usually 1 minute).","type":"integer"}},"type":"object"}}}},"401":{"description":"Unauthorized"},"403":{"description":"Forbidden"},"404":{"description":"Not Found"},"500":{"description":"Server Error"}},"summary":"Get the user's data rate limit and current activity level.","tags":["Users"],"x-swagger-router-action":"throttle","x-swagger-router-controller":"Users"}},"/{username}/tokens":{"get":{"description":"The Tokens endpoint returns information about th