{"components":{"schemas":{"bucket_config":{"oneOf":[{"additionalProperties":false,"properties":{"device":{"$ref":"#/components/schemas/resource_id"},"interval":{"type":"number"},"resource":{"maxLength":255,"type":"string"},"source":{"enum":["device"],"type":"string"},"tags":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":5,"type":"array"},"update":{"enum":["interval"],"type":"string"},"user":{"$ref":"#/components/schemas/resource_id"}},"required":["source","device","resource","update","interval"],"type":"object"},{"additionalProperties":false,"properties":{"device":{"$ref":"#/components/schemas/resource_id"},"resource":{"maxLength":255,"type":"string"},"source":{"enum":["device"],"type":"string"},"tags":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":5,"type":"array"},"update":{"enum":["events","none"],"type":"string"},"user":{"$ref":"#/components/schemas/resource_id"}},"required":["source","device","resource","update"],"type":"object"},{"additionalProperties":false,"properties":{"source":{"enum":["mqtt"],"type":"string"},"tags":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":5,"type":"array"},"topic":{"maxLength":512,"type":"string"}},"required":["source","topic"],"type":"object"},{"additionalProperties":false,"properties":{"source":{"enum":["write","api"],"type":"string"},"tags":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":5,"type":"array"}},"required":["source"],"type":"object"}]},"permission":{"patternProperties":{"^[a-zA-Z0-9_]{1,32}$|^\\*$":{"minProperties":1,"patternProperties":{"^[a-zA-Z0-9_]{1,32}(?:@[a-zA-Z0-9_]{1,32})?$|^\\*$":{"oneOf":[{"pattern":"^[a-zA-Z0-9_\\*]{1,64}$|^\\*$","type":"string"},{"items":{"oneOf":[{"pattern":"^[a-zA-Z0-9_\\*]{1,64}$|^\\*$","type":"string"},{"patternProperties":{"^[a-zA-Z0-9_]{1,32}$":{"oneOf":[{"pattern":"^[a-zA-Z0-9_\\*]{1,32}$|^\\*$","type":"string"},{"items":{"type":"string"},"type":"array"}]}},"type":"object"}]},"type":"array"}]}}}},"type":"object"},"projects_ids":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string","uniqueItems":true},"type":"array"},"resource_description":{"maxLength":255,"type":"string"},"resource_id":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"resource_name":{"maxLength":255,"type":"string"}},"securitySchemes":{"oauth":{"flows":{"password":{"scopes":{"basic":"manage user account"},"tokenUrl":"https://eu-central.aws.thinger.io:443/oauth/token"}},"type":"oauth2"}}},"info":{"description":"Thinger.io Server API","title":"Thinger.io Server API","version":"1.0.0"},"swagger":"2.0","paths":{"/.well-known/acme-challenge/{token}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadAcmeChallenge","tags":["Acme"]},"parameters":[{"in":"path","name":"token","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]+)","type":"string"}}]},"/.well-known/openid-configuration":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""}},"/index.html":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""}},"/iotmp":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""}},"/manifest.webmanifest":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""}},"/mqtt":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""}},"/oauth/token":{"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"Authenticate","tags":["Authentication"]}},"/openapi.json":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadServerApi","tags":["Server"]}},"/users/{user}/plugins/{plugin}{path}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"head":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"options":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}},{"in":"path","name":"path","required":true,"schema":{"pattern":"(?.*$)","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]},"trace":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallPluginEndpoint","tags":["Plugins"]}},"/v1/accounts/password":{"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"CreateUserPassword","tags":["Users"]}},"/v1/accounts/password/reset":{"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"CreateUserPasswordReset","tags":["Users"]}},"/v1/brands":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListBrands","tags":["Brands"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"brand":{"pattern":"^([a-zA-Z0-9-_]+\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(?:\\.[a-zA-Z]{2,11})?$","type":"string"},"config":{"properties":{},"type":"object"},"description":{"type":"string"},"enabled":{"type":"boolean"}},"required":["brand"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateBrand","tags":["Brands"]}},"/v1/brands/{brand}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteBrand","tags":["Brands"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadBrandConfig","tags":["Brands"]},"parameters":[{"in":"path","name":"brand","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"config":{"properties":{},"type":"object"},"description":{"type":"string"},"email":{"properties":{},"type":"object"},"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateBrand","tags":["Brands"]}},"/v1/brands/{brand}/email":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":""},"parameters":[{"in":"path","name":"brand","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}]},"/v1/brands/{brand}/email/test":{"parameters":[{"in":"path","name":"brand","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"template":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"}},"required":["template"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"TestBrandEmail","tags":["Brands"]}},"/v1/domains":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDomains","tags":["Domains"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"domain":{"pattern":"^([a-zA-Z0-9-_]+\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\\.[a-zA-Z]{2,11}?$","type":"string"}},"required":["domain"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateDomain","tags":["Domains"]}},"/v1/domains/{domain}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDomain","tags":["Domains"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDomainConfig","tags":["Domains"]},"parameters":[{"in":"path","name":"domain","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+\\.[a-zA-Z]{2,11}?)","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDomain","tags":["Domains"]}},"/v1/domains/{domain}/verify":{"parameters":[{"in":"path","name":"domain","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+\\.[a-zA-Z]{2,11}?)","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"VerifyDomain","tags":["Domains"]}},"/v1/endpoints/templates":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListEndpointTemplates","tags":["Endpoints"]}},"/v1/endpoints/templates/{endpoint}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadEndpointTemplateConfig","tags":["Endpoints"]},"parameters":[{"in":"path","name":"endpoint","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/hosts":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListHosts","tags":["Hosts"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"domain":{"pattern":"^([a-zA-Z0-9-_]+\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\\.[a-zA-Z]{2,11}?$","type":"string"}},"required":["domain"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateHost","tags":["Hosts"]}},"/v1/hosts/{host}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteHost","tags":["Hosts"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadHostConfig","tags":["Hosts"]},"parameters":[{"in":"path","name":"host","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateHost","tags":["Hosts"]}},"/v1/hosts/{host}/logs":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadHostLogs","tags":["Hosts"]},"parameters":[{"in":"path","name":"host","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}]},"/v1/hosts/{host}/resources":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessHostResources","tags":["Hosts"]},"parameters":[{"in":"path","name":"host","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}]},"/v1/hosts/{host}/restart":{"parameters":[{"in":"path","name":"host","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateHostState","tags":["Hosts"]}},"/v1/hosts/{host}/settings":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadHostSettings","tags":["Hosts"]},"parameters":[{"in":"path","name":"host","required":true,"schema":{"pattern":"(?(?:[a-zA-Z0-9_-]+\\.)*[a-zA-Z0-9][a-zA-Z0-9_-]+(?:\\.[a-zA-Z]{2,11})?)","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateHostSettings","tags":["Hosts"]}},"/v1/oauth_clients":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListOauthClients","tags":["OauthClients"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"enabled":{"type":"boolean"},"name":{"type":"string"},"oauth_client":{"pattern":"^[a-zA-Z0-9-_]{1,32}$","type":"string"},"picture":{"type":"string"},"prompt":{"type":"string"},"redirect_uri":{"type":"string"},"scope":{"type":"object"},"secret":{"type":"string"}},"required":["oauth_client","name","secret","redirect_uri"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateOauthClient","tags":["OauthClients"]}},"/v1/oauth_clients/{oauth_client}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteOauthClient","tags":["OauthClients"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadOauthClientConfig","tags":["OauthClients"]},"parameters":[{"in":"path","name":"oauth_client","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"enabled":{"type":"boolean"},"name":{"type":"string"},"picture":{"type":"string"},"prompt":{"type":"string"},"redirect_uri":{"type":"string"},"scope":{"type":"object"},"secret":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateOauthClient","tags":["OauthClients"]}},"/v1/oauth_clients/{oauth_client}/info":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""},"parameters":[{"in":"path","name":"oauth_client","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/proxies":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"created":1666915324144,"description":"TCP Proxy Description","enabled":true,"modified":1666915324144,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"},{"created":1666915324144,"description":"TCP Proxy Description","enabled":true,"modified":1666915324144,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"},{"created":1666915324144,"description":"UDP Proxy Description","enabled":true,"modified":1666915324144,"name":"UDP Proxy Name","proxy":"udp_proxy_id"},{"created":1666915324144,"description":"UDP Proxy Description","enabled":true,"modified":1666915324144,"name":"UDP Proxy Name","proxy":"udp_proxy_id"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProxies","tags":["Proxies"]},"post":{"requestBody":{"content":{"application/json":{"examples":{"TCP Proxy to Host":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"address":"localhost","port":8086,"secure":false,"type":"address"}},"description":"TCP Proxy Description","enabled":true,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"}},"TCP Proxy to Plugin":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"plugin":"plugin_id","port":8086,"secure":false,"type":"plugin","user":"user_id"}},"description":"TCP Proxy Description","enabled":true,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"}},"UDP Proxy to Host":{"value":{"config":{"protocol":"udp","source":{"port":9000},"target":{"address":"localhost","port":9000,"type":"address"}},"description":"UDP Proxy Description","enabled":true,"name":"UDP Proxy Name","proxy":"udp_proxy_id"}},"UDP Proxy to Plugin":{"value":{"config":{"protocol":"udp","source":{"port":9000},"target":{"plugin":"plugin_id","port":9000,"type":"plugin","user":"user_id"}},"description":"UDP Proxy Description","enabled":true,"name":"UDP Proxy Name","proxy":"udp_proxy_id"}}},"schema":{"additionalProperties":false,"properties":{"config":{"type":"object"},"description":{"type":"string"},"enabled":{"type":"boolean"},"name":{"type":"string"},"proxy":{"pattern":"^[a-zA-Z0-9-_]{1,32}$","type":"string"}},"required":["proxy","name","config"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProxy","tags":["Proxies"]}},"/v1/proxies/{proxy}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProxy","tags":["Proxies"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"TCP Proxy to Host":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"address":"localhost","port":8086,"secure":false,"type":"address"}},"created":1666915324144,"description":"TCP Proxy Description","enabled":true,"modified":1666915324144,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"}},"TCP Proxy to Plugin":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"plugin":"plugin_id","port":8086,"secure":false,"type":"plugin","user":"user_id"}},"created":1666915324144,"description":"TCP Proxy Description","enabled":true,"modified":1666915324144,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"}},"UDP Proxy to Host":{"value":{"config":{"protocol":"udp","source":{"port":9000},"target":{"address":"localhost","port":9000,"type":"address"}},"created":1666915324144,"description":"UDP Proxy Description","enabled":true,"modified":1666915324144,"name":"UDP Proxy Name","proxy":"udp_proxy_id"}},"UDP Proxy to Plugin":{"value":{"config":{"protocol":"udp","source":{"port":9000},"target":{"plugin":"plugin_id","port":9000,"type":"plugin","user":"user_id"}},"created":1666915324144,"description":"UDP Proxy Description","enabled":true,"modified":1666915324144,"name":"UDP Proxy Name","proxy":"udp_proxy_id"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProxyConfig","tags":["Proxies"]},"parameters":[{"in":"path","name":"proxy","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"address":"localhost","port":8086,"secure":false,"type":"address"}},"description":"TCP Proxy Description","enabled":true,"name":"TCP Proxy Name","proxy":"tcp_proxy_id"}},"Update 'config'":{"value":{"config":{"protocol":"tcp","source":{"port":8090,"secure":true},"target":{"address":"localhost","port":8086,"secure":false,"type":"address"}}}},"Update 'description'":{"value":{"description":"TCP Proxy Description"}},"Update 'enabled'":{"value":{"enabled":true}},"Update 'name'":{"value":{"name":"TCP Proxy Name"}}},"schema":{"additionalProperties":false,"properties":{"config":{"type":"object"},"description":{"type":"string"},"enabled":{"type":"boolean"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProxy","tags":["Proxies"]}},"/v1/server/actions":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadServerActions","tags":["Server"]}},"/v1/server/assets":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadServerAssets","tags":["Server"]}},"/v1/server/events":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadServerEvents","tags":["Server"]}},"/v1/server/healthcheck":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadServerHealthcheck","tags":["Server"]}},"/v1/server/settings":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadServerSettings","tags":["Server"]}},"/v1/server/statistics":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadServerStatistics","tags":["Server"]}},"/v1/server/swagger.json":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"ReadServerApi","tags":["Server"]}},"/v1/server/version":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadServerVersion","tags":["Server"]}},"/v1/users":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListUsers","tags":["Users"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"email":{"format":"email","type":"string"},"enabled":{"type":"boolean"},"options":{"additionalProperties":false,"properties":{"additionalProperties":false,"project":{"properties":{"default":{"$ref":"#/components/schemas/resource_id"}},"type":"object"}},"type":"object"},"password":{"maxLength":72,"type":"string"},"recaptcha":{"type":"string"},"role":{"enum":["user","admin","member","domain_admin"],"type":"string"},"user":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"verified":{"type":"boolean"}},"required":["user","email","password"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateUser","tags":["Users"]}},"/v1/users/email/verify":{"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":"VerifyUserEmail","tags":["Users"]}},"/v1/users/{user}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteUser","tags":["Users"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserConfig","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"email":{"type":"string"},"enabled":{"type":"boolean"},"host":{"items":{"pattern":"^(?:[a-zA-Z0-9-_]+\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+(?:\\.[a-zA-Z]{2,11})?$","type":"string"},"maxItems":10,"type":"array"},"limits":{"type":"object"},"options":{"additionalProperties":false,"properties":{"additionalProperties":false,"project":{"properties":{"default":{"$ref":"#/components/schemas/resource_id"}},"type":"object"}},"type":"object"},"password":{"maxLength":72,"minLength":6,"type":"string"},"role":{"enum":["user","admin","member","domain_admin"],"type":"string"},"verified":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateUser","tags":["Users"]}},"/v1/users/{user}/assets/locations":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadAssetsLocations","tags":["Assets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/buckets":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"bucket":"api_write","config":{"source":"api"},"description":"Bucket for API write","enabled":true,"modified":1666915324143,"name":"API Write"},{"bucket":"mqtt_bucket","config":{"source":"mqtt","topic":"house/+/temperature"},"description":"Bucket for MQTT topic","enabled":true,"modified":1666915324143,"name":"MQTT Bucket"},{"bucket":"device_bucket","config":{"device":"macbook","interval":300,"resource":"data","source":"device","update":"interval"},"description":"Bucket for Thinger.io device","enabled":true,"modified":1666915324143,"name":"Device Bucket"},{"bucket":"device_write","config":{"source":"write"},"description":"Bucket dor device write","enabled":true,"modified":1666915324143,"name":"Device Write"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListBuckets","tags":["Buckets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"From API Call":{"value":{"bucket":"api_write","config":{"source":"api"},"description":"Bucket for API write","enabled":true,"name":"API Write"}},"From MQTT Topic":{"value":{"bucket":"mqtt_bucket","config":{"source":"mqtt","topic":"house/+/temperature"},"description":"Bucket for MQTT topic","enabled":true,"name":"MQTT Bucket"}},"From Thinger Device":{"value":{"bucket":"device_bucket","config":{"device":"macbook","interval":300,"resource":"data","source":"device","update":"interval"},"description":"Bucket for Thinger.io device","enabled":true,"name":"Device Bucket"}},"From Thinger Device Write":{"value":{"bucket":"device_write","config":{"source":"write"},"description":"Bucket dor device write","enabled":true,"name":"Device Write"}}},"schema":{"additionalProperties":false,"properties":{"asset_group":{"$ref":"#/components/schemas/resource_id"},"asset_type":{"$ref":"#/components/schemas/resource_id"},"bucket":{"$ref":"#/components/schemas/resource_id"},"config":{"$ref":"#/components/schemas/bucket_config"},"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"name":{"$ref":"#/components/schemas/resource_name"},"product":{"$ref":"#/components/schemas/resource_id"}},"required":["bucket","name","config","enabled"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateBucket","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteBucket","tags":["Buckets"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"From API Call":{"value":{"bucket":"api_write","config":{"source":"api"},"created":1666915324143,"description":"Bucket for API write","enabled":true,"modified":1666915324143,"name":"API Write"}},"From MQTT Topic":{"value":{"bucket":"mqtt_bucket","config":{"source":"mqtt","topic":"house/+/temperature"},"created":1666915324143,"description":"Bucket for MQTT topic","enabled":true,"modified":1666915324143,"name":"MQTT Bucket"}},"From Thinger Device":{"value":{"bucket":"device_bucket","config":{"device":"macbook","interval":300,"resource":"data","source":"device","update":"interval"},"created":1666915324143,"description":"Bucket for Thinger.io device","enabled":true,"modified":1666915324143,"name":"Device Bucket"}},"From Thinger Device Write":{"value":{"bucket":"device_write","config":{"source":"write"},"created":1666915324143,"description":"Bucket dor device write","enabled":true,"modified":1666915324143,"name":"Device Write"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadBucketConfig","tags":["Buckets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"bucket":"api_write","config":{"source":"api"},"description":"Bucket for API write","enabled":true,"name":"API Write"}},"Update 'config'":{"value":{"config":{"source":"api"}}},"Update 'description'":{"value":{"description":"Bucket for API write"}},"Update 'enabled'":{"value":{"enabled":true}},"Update 'name'":{"value":{"name":"API Write"}}},"schema":{"additionalProperties":false,"properties":{"asset_group":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]},"asset_type":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]},"config":{"$ref":"#/components/schemas/bucket_config"},"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"name":{"$ref":"#/components/schemas/resource_name"},"product":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateBucket","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}/data":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"WriteBucket","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}/exports":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListBucketExports","tags":["Buckets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"callback":{"enum":["email","endpoint"],"type":"string"},"data_type":{"enum":["csv","arff","json"],"type":"string"},"endpoint":{"$ref":"#/components/schemas/resource_id"},"max_ts":{"minimum":0,"type":"number"},"min_ts":{"minimum":0,"type":"number"},"timestamp_format":{"enum":["iso","seconds","milliseconds"],"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateBucketExport","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}/exports/{file}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteBucketExport","tags":["Buckets"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadBucketExport","tags":["Buckets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"file","required":true,"schema":{"pattern":"(?.*$)","type":"string"}}]},"/v1/users/{user}/buckets/{bucket}/imports":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"file":{"type":"string"},"source":{"enum":["storage"],"type":"string"},"storage":{"$ref":"#/components/schemas/resource_id"}},"required":["source","storage","file"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateBucketImport","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateBucketProjects","tags":["Buckets"]}},"/v1/users/{user}/buckets/{bucket}/tags/{tag}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadBucketTag","tags":["Buckets"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"tag","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/dashboards":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDashboards","tags":["Dashboards"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"controls":{},"dashboard":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"description":{"maxLength":255,"type":"string"},"name":{"maxLength":255,"minLength":1,"type":"string"},"properties":{},"tabs":{"items":{},"type":"array"},"widgets":{"items":{},"type":"array"}},"required":["dashboard","name","widgets"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateDashboard","tags":["Dashboards"]}},"/v1/users/{user}/dashboards/{dashboard}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDashboard","tags":["Dashboards"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDashboardConfig","tags":["Dashboards"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"dashboard","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"controls":{},"description":{"maxLength":255,"type":"string"},"name":{"maxLength":255,"minLength":1,"type":"string"},"properties":{},"tabs":{"items":{},"type":"array"},"widgets":{"items":{},"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDashboard","tags":["Dashboards"]}},"/v1/users/{user}/dashboards/{dashboard}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"dashboard","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDashboardProjects","tags":["Dashboards"]}},"/v1/users/{user}/devices":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"asset_group":"AssetGroup","asset_type":"AssetType","created":1666915324133,"description":"HTTP Device","device":"http_device","enabled":true,"modified":1666915324133,"name":"SN0300301","type":"HTTP"},{"asset_group":"AssetGroup","asset_type":"AssetType","created":1666915324133,"description":"MQTT Device","device":"mqtt_device","enabled":true,"modified":1666915324133,"name":"SN0300301","type":"MQTT"},{"asset_group":"AssetGroup","asset_type":"AssetType","created":1666915324133,"description":"Thinger Device","device":"thinger_device","enabled":true,"modified":1666915324133,"name":"SN0300301","type":"Generic"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDevices","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"HTTP Device":{"value":{"asset_group":"AssetGroup","asset_type":"AssetType","description":"HTTP Device","device":"http_device","enabled":true,"name":"SN0300301","type":"HTTP"}},"MQTT Device":{"value":{"asset_group":"AssetGroup","asset_type":"AssetType","credentials":"juvWgl9@y3CW","description":"MQTT Device","device":"mqtt_device","enabled":true,"name":"SN0300301","type":"MQTT"}},"Thinger Device":{"value":{"asset_group":"AssetGroup","asset_type":"AssetType","credentials":"juvWgl9@y3CW","description":"Thinger Device","device":"thinger_device","enabled":true,"name":"SN0300301","type":"Generic"}}},"schema":{"oneOf":[{"additionalProperties":false,"properties":{"asset_group":{"$ref":"#/components/schemas/resource_id"},"asset_type":{"$ref":"#/components/schemas/resource_id"},"credentials":{"maxLength":255,"minLength":6,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"device":{"pattern":"^[a-zA-Z0-9_-]{1,32}$","type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":255,"minLength":0,"type":"string"},"product":{"$ref":"#/components/schemas/resource_id"},"type":{"enum":["Generic","MQTT"],"type":"string"}},"required":["device","credentials"],"type":"object"},{"additionalProperties":false,"properties":{"asset_group":{"$ref":"#/components/schemas/resource_id"},"asset_type":{"$ref":"#/components/schemas/resource_id"},"description":{"maxLength":255,"minLength":1,"type":"string"},"device":{"pattern":"^[a-zA-Z0-9_-]{1,32}$","type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":255,"minLength":0,"type":"string"},"product":{"$ref":"#/components/schemas/resource_id"},"type":{"enum":["HTTP"],"type":"string"}},"required":["device"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateDevice","tags":["Devices"]}},"/v1/users/{user}/devices/{device}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDevice","tags":["Devices"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDeviceStatus","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"asset_group":"AssetGroup","asset_type":"AssetType","description":"HTTP Device","device":"http_device","enabled":true,"name":"SN0300301","type":"HTTP"}},"Update 'asset_group'":{"value":{"asset_group":"AssetGroup"}},"Update 'asset_type'":{"value":{"asset_type":"AssetType"}},"Update 'description'":{"value":{"description":"HTTP Device"}},"Update 'enabled'":{"value":{"enabled":true}},"Update 'name'":{"value":{"name":"SN0300301"}},"Update 'type'":{"value":{"type":"HTTP"}}},"schema":{"additionalProperties":false,"properties":{"asset_group":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]},"asset_type":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]},"credentials":{"maxLength":255,"minLength":1,"type":"string"},"description":{"maxLength":255,"minLength":0,"type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":255,"minLength":0,"type":"string"},"product":{"oneOf":[{"$ref":"#/components/schemas/resource_id"},{"maxLength":0,"type":"string"}]}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDevice","tags":["Devices"]}},"/v1/users/{user}/devices/{device}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDeviceProjects","tags":["Devices"]}},"/v1/users/{user}/devices/{device}/stats":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDeviceStatistics","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/devices/{device}/tokens":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDeviceTokens","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateDeviceToken","tags":["Devices"]}},"/v1/users/{user}/devices/{device}/tokens/{token}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDeviceToken","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,50})","type":"string"}}]},"/v1/users/{user}/devices/{device}/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?(?:.{1,32}\\/?)+)","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]}},"/v1/users/{user}/email":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserEmail","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/endpoints":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"created":1666915324135,"description":"Email Endpoint","enabled":true,"endpoint":"email_endpoint","modified":1666915324135,"name":"Email","type":"email"},{"created":1666915324135,"description":"HTTP Request","enabled":true,"endpoint":"http_request","modified":1666915324135,"name":"HTTP","type":"http_request"},{"created":1666915324135,"description":"HTTP request","enabled":true,"endpoint":"http_request","modified":1666915324135,"name":"HTTP","type":"http_request"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListEndpoints","tags":["Endpoints"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"Email":{"description":"Creates an endpoint that sends an email when called. The calling data can be used in the body or the subject using placeholders like {{temperature}}.","value":{"config":{"body":"

The current temperature and humidity are: {{temperature}}, {{humidity}}

","body_type":"html","recipient":"alvarolb@thinger.io","reply_to":"alvarolb@thinger.io","subject":"Endpoint Testing"},"description":"Email Endpoint","enabled":true,"endpoint":"email_endpoint","name":"Email","type":"email"}},"HTTP Request":{"description":"Creates an endpoint that resend the call JSON data to the target endpoint, both from api or device calls. The calling data can be used in the url or headers using placeholders like {{temperature}}.","value":{"config":{"body":"","body_type":"json","headers":[{"key":"Authorization","value":"Bearer xyz"}],"method":"POST","url":"https://api.acme.com/sensor"},"description":"HTTP Request","enabled":true,"endpoint":"http_request","name":"HTTP","type":"http_request"}},"HTTP Request Custom Body":{"description":"Creates an endpoint that composes a new paylaod with the source variables passed to the call, both from api or device calls. The calling data can be used in the body, url, or headers using placeholders like {{temperature}}.","value":{"config":{"body":"{\n \"val1\" : {{temperature}},\n \"val2\": {{humidity}}\n}","body_type":"custom","headers":[{"key":"Content-Type","value":"application/json"}],"method":"POST","url":"https://api.acme.com/sensor"},"description":"HTTP request","enabled":true,"endpoint":"http_request","name":"HTTP","type":"http_request"}}},"schema":{"additionalProperties":false,"properties":{"config":{"type":"object"},"description":{"maxLength":255,"type":"string"},"enabled":{"type":"boolean"},"endpoint":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"name":{"maxLength":255,"type":"string"},"type":{"maxLength":255,"minLength":1,"type":"string"}},"required":["endpoint","type","config"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateEndpoint","tags":["Endpoints"]}},"/v1/users/{user}/endpoints/{endpoint}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteEndpoint","tags":["Endpoints"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"Email":{"description":"Creates an endpoint that sends an email when called. The calling data can be used in the body or the subject using placeholders like {{temperature}}.","value":{"config":{"body":"

The current temperature and humidity are: {{temperature}}, {{humidity}}

","body_type":"html","recipient":"alvarolb@thinger.io","reply_to":"alvarolb@thinger.io","subject":"Endpoint Testing"},"created":1666915324135,"description":"Email Endpoint","enabled":true,"endpoint":"email_endpoint","modified":1666915324135,"name":"Email","type":"email"}},"HTTP Request":{"description":"Creates an endpoint that resend the call JSON data to the target endpoint, both from api or device calls. The calling data can be used in the url or headers using placeholders like {{temperature}}.","value":{"config":{"body":"","body_type":"json","headers":[{"key":"Authorization","value":"Bearer xyz"}],"method":"POST","url":"https://api.acme.com/sensor"},"created":1666915324135,"description":"HTTP Request","enabled":true,"endpoint":"http_request","modified":1666915324135,"name":"HTTP","type":"http_request"}},"HTTP Request Custom Body":{"description":"Creates an endpoint that composes a new paylaod with the source variables passed to the call, both from api or device calls. The calling data can be used in the body, url, or headers using placeholders like {{temperature}}.","value":{"config":{"body":"{\n \"val1\" : {{temperature}},\n \"val2\": {{humidity}}\n}","body_type":"custom","headers":[{"key":"Content-Type","value":"application/json"}],"method":"POST","url":"https://api.acme.com/sensor"},"created":1666915324135,"description":"HTTP request","enabled":true,"endpoint":"http_request","modified":1666915324135,"name":"HTTP","type":"http_request"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadEndpointConfig","tags":["Endpoints"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"endpoint","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"config":{"body":"

The current temperature and humidity are: {{temperature}}, {{humidity}}

","body_type":"html","recipient":"alvarolb@thinger.io","reply_to":"alvarolb@thinger.io","subject":"Endpoint Testing"},"description":"Email Endpoint","enabled":true,"endpoint":"email_endpoint","name":"Email","type":"email"}},"Update 'config'":{"value":{"config":{"body":"

The current temperature and humidity are: {{temperature}}, {{humidity}}

","body_type":"html","recipient":"alvarolb@thinger.io","reply_to":"alvarolb@thinger.io","subject":"Endpoint Testing"}}},"Update 'description'":{"value":{"description":"Email Endpoint"}},"Update 'enabled'":{"value":{"enabled":true}},"Update 'name'":{"value":{"name":"Email"}},"Update 'type'":{"value":{"type":"email"}}},"schema":{"additionalProperties":false,"properties":{"config":{"type":"object"},"description":{"maxLength":255,"type":"string"},"enabled":{"type":"boolean"},"name":{"maxLength":255,"type":"string"},"type":{"maxLength":255,"minLength":1,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateEndpoint","tags":["Endpoints"]}},"/v1/users/{user}/endpoints/{endpoint}/call":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"endpoint","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallEndpoint","tags":["Endpoints"]}},"/v1/users/{user}/endpoints/{endpoint}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"endpoint","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateEndpointProjects","tags":["Endpoints"]}},"/v1/users/{user}/events":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"SubscribeUserEvents","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/groups":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListGroups","tags":["Groups"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"group":{"$ref":"#/components/schemas/resource_id"},"name":{"type":"string"}},"required":["group"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateGroup","tags":["Groups"]}},"/v1/users/{user}/groups/{group}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteGroup","tags":["Groups"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadGroupConfig","tags":["Groups"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"group","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateGroup","tags":["Groups"]}},"/v1/users/{user}/groups/{group}/locations":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadAssetsLocations","tags":["Groups"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"group","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/groups/{group}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"group","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateGroupProjects","tags":["Groups"]}},"/v1/users/{user}/groups/{group}/properties":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteGroupProperties","tags":["Groups"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListGroupProperties","tags":["Groups"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"group","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateGroupProperty","tags":["Groups"]}},"/v1/users/{user}/groups/{group}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteGroupProperty","tags":["Groups"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadGroupProperty","tags":["Groups"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"group","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateGroupProperty","tags":["Groups"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateGroupProperty","tags":["Groups"]}},"/v1/users/{user}/info/device_locations":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDeviceLocations","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/limits":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserLimits","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/limits/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserLimits","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/membership/{project_owner}/{project_id}/permissions":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProjectPermissions","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project_owner","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_]{1,32})","type":"string"}},{"in":"path","name":"project_id","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_]{1,32})","type":"string"}}]},"/v1/users/{user}/oauth/authorize":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"client_id":{"type":"string"},"login_hint":{"type":"string"},"nonce":{"type":"string"},"prompt":{"type":"string"},"redirect_uri":{"type":"string"},"response_mode":{"type":"string"},"response_type":{"enum":["code"]},"scope":{"type":"string"},"state":{"type":"string"},"ui_locales":{"type":"string"}},"required":["client_id","response_type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AuthorizeOauth","tags":["Users"]}},"/v1/users/{user}/password":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateUserPassword","tags":["Users"]}},"/v1/users/{user}/plugins":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListPlugins","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/plugins/{plugin}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadPluginInfo","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ManagePluginState","tags":["Plugins"]}},"/v1/users/{user}/plugins/{plugin}/files/{file}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadPluginFiles","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}},{"in":"path","name":"file","required":true,"schema":{"pattern":"(?.*$)","type":"string"}}]},"/v1/users/{user}/plugins/{plugin}/properties":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeletePluginProperties","tags":["Plugins"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListPluginProperties","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreatePluginProperty","tags":["Plugins"]}},"/v1/users/{user}/plugins/{plugin}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeletePluginProperty","tags":["Plugins"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadPluginProperty","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdatePluginProperty","tags":["Plugins"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdatePluginProperty","tags":["Plugins"]}},"/v1/users/{user}/plugins/{plugin}/terminal":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"RunPluginCommand","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}}]},"/v1/users/{user}/plugins/{plugin}/terminal/logs":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadPluginLogs","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}}]},"/v1/users/{user}/plugins/{plugin}/terminal/shell":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"RunPluginShell","tags":["Plugins"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"plugin","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_\\-\\:]{1,32})","type":"string"}}]},"/v1/users/{user}/products":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProducts","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"name":{"$ref":"#/components/schemas/resource_name"},"product":{"$ref":"#/components/schemas/resource_id"}},"required":["product","name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProduct","tags":["Products"]}},"/v1/users/{user}/products/{product}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProduct","tags":["Products"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProductConfig","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"name":{"$ref":"#/components/schemas/resource_name"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProduct","tags":["Products"]}},"/v1/users/{user}/products/{product}/firmwares":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProductFirmwares","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"firmware":{"pattern":"^[a-zA-Z0-9_]{1,25}$","type":"string"},"name":{"maxLength":255,"type":"string"},"version":{"pattern":"(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\da-z-]+(?:\\.[\\da-z-]+)*)?(?:\\+[\\da-z-]+(?:\\.[\\da-z-]+)*)?","type":"string"}},"required":["firmware","version"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProductFirmware","tags":["Products"]}},"/v1/users/{user}/products/{product}/firmwares/{firmware}/{firmware_version}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProductFirmware","tags":["Products"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProductFirmwareConfig","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware_version","required":true,"schema":{"pattern":"(?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\da-z-]+(?:\\.[\\da-z-]+)*)?(?:\\+[\\da-z-]+(?:\\.[\\da-z-]+)*)?)","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductFirmware","tags":["Products"]}},"/v1/users/{user}/products/{product}/firmwares/{firmware}/{firmware_version}/flash":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"FlashProductFirmware","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware_version","required":true,"schema":{"pattern":"(?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\da-z-]+(?:\\.[\\da-z-]+)*)?(?:\\+[\\da-z-]+(?:\\.[\\da-z-]+)*)?)","type":"string"}}]},"/v1/users/{user}/products/{product}/firmwares/{firmware}/{firmware_version}/stream":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductFirmware","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware_version","required":true,"schema":{"pattern":"(?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\da-z-]+(?:\\.[\\da-z-]+)*)?(?:\\+[\\da-z-]+(?:\\.[\\da-z-]+)*)?)","type":"string"}}]},"/v1/users/{user}/products/{product}/firmwares/{firmware}/{firmware_version}/toolchain":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductFirmware","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"firmware_version","required":true,"schema":{"pattern":"(?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(?:-[\\da-z-]+(?:\\.[\\da-z-]+)*)?(?:\\+[\\da-z-]+(?:\\.[\\da-z-]+)*)?)","type":"string"}}]},"/v1/users/{user}/products/{product}/profile/code":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductProfile","tags":["Products"]}},"/v1/users/{user}/products/{product}/profile/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProductProfile","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductProfile","tags":["Products"]}},"/v1/users/{user}/products/{product}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductProjects","tags":["Products"]}},"/v1/users/{user}/products/{product}/properties":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProductProperties","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProductProperty","tags":["Products"]}},"/v1/users/{user}/products/{product}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProductProperty","tags":["Products"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProductPropertyConfig","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductProperty","tags":["Products"]}},"/v1/users/{user}/products/{product}/properties/{property}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductPropertyProjects","tags":["Products"]}},"/v1/users/{user}/products/{product}/services/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProductServices","tags":["Products"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"product","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProductServices","tags":["Products"]}},"/v1/users/{user}/profile":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserProfile","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"company":{"maxLength":255,"minLength":0,"type":"string"},"location":{"maxLength":255,"minLength":0,"type":"string"},"name":{"maxLength":255,"minLength":0,"type":"string"},"picture":{"maxLength":50000,"pattern":"^data:image/(?:png|jpeg|webp);base64,(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$","type":"string"},"url":{"maxLength":255,"minLength":0,"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateUserProfile","tags":["Users"]}},"/v1/users/{user}/projects":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"created":1666915324135,"description":"Description","modified":1666915324135,"name":"Project","project":"project"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProjects","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"Create Project":{"description":"Creates a new project.","value":{"description":"Description","name":"Project","project":"project"}}},"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"name":{"$ref":"#/components/schemas/resource_name"},"project":{"$ref":"#/components/schemas/resource_id"}},"required":["project","name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProject","tags":["Projects"]}},"/v1/users/{user}/projects/{project}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProject","tags":["Projects"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"Create Project":{"description":"Creates a new project.","value":{"created":1666915324135,"description":"Description","modified":1666915324135,"name":"Project","project":"project"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProjectConfig","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"description":"Description","name":"Project","project":"project"}},"Update 'description'":{"value":{"description":"Description"}},"Update 'name'":{"value":{"name":"Project"}}},"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"name":{"$ref":"#/components/schemas/resource_name"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProject","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/members":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProjectMembers","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"account":{"properties":{"email":{"format":"email","type":"string"},"password":{"type":"string"}},"type":"object"},"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"},"global_roles":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":10,"type":"array"},"hide_menu":{"type":"boolean"},"member":{"$ref":"#/components/schemas/resource_id"},"roles":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":10,"type":"array"}},"required":["member","enabled"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProjectMember","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/members/{member}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProjectMember","tags":["Projects"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProjectMemberConfig","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"member","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"},"global_roles":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":10,"type":"array"},"hide_menu":{"type":"boolean"},"roles":{"items":{"$ref":"#/components/schemas/resource_id"},"maxItems":10,"type":"array"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProjectMember","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/properties":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProjectProperties","tags":["Projects"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProjectProperties","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProjectProperty","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProjectProperty","tags":["Projects"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProjectProperty","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProjectProperty","tags":["Projects"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProjectProperty","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/roles":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListProjectRoles","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"},"role":{"$ref":"#/components/schemas/resource_id"}},"required":["role","enabled"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateProjectRole","tags":["Projects"]}},"/v1/users/{user}/projects/{project}/roles/{role}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteProjectRole","tags":["Projects"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadProjectRoleConfig","tags":["Projects"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"project","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"role","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateProjectRole","tags":["Projects"]}},"/v1/users/{user}/roles":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListRoles","tags":["Roles"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"},"role":{"$ref":"#/components/schemas/resource_id"}},"required":["role","enabled"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateRole","tags":["Roles"]}},"/v1/users/{user}/roles/{role}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteRole","tags":["Roles"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadRoleConfig","tags":["Roles"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"role","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"enabled":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateRole","tags":["Roles"]}},"/v1/users/{user}/stats":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserStatistics","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/storages":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"created":1666915324140,"description":"Storages","index":"index.html","modified":1666915324140,"name":"File Storage","public":true,"storage":"file_storage"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListStorages","tags":["Storages"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"Create Storage":{"description":"Creates a new file storage with public access. It can act as a web server and it is possible to serve a default file, i.e., index.html","value":{"description":"Storages","index":"index.html","name":"File Storage","public":true,"storage":"file_storage"}}},"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"index":{"maxLength":255,"type":"string"},"name":{"$ref":"#/components/schemas/resource_name"},"public":{"type":"boolean"},"storage":{"$ref":"#/components/schemas/resource_id"}},"required":["storage","name"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateStorage","tags":["Storages"]}},"/v1/users/{user}/storages/{storage}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteStorage","tags":["Storages"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"Create Storage":{"description":"Creates a new file storage with public access. It can act as a web server and it is possible to serve a default file, i.e., index.html","value":{"created":1666915324140,"description":"Storages","index":"index.html","modified":1666915324140,"name":"File Storage","public":true,"storage":"file_storage"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadStorageConfig","tags":["Storages"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"storage","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"description":"Storages","index":"index.html","name":"File Storage","public":true,"storage":"file_storage"}},"Update 'description'":{"value":{"description":"Storages"}},"Update 'index'":{"value":{"index":"index.html"}},"Update 'name'":{"value":{"name":"File Storage"}},"Update 'public'":{"value":{"public":true}}},"schema":{"additionalProperties":false,"properties":{"description":{"$ref":"#/components/schemas/resource_description"},"index":{"maxLength":255,"type":"string"},"name":{"$ref":"#/components/schemas/resource_name"},"public":{"type":"boolean"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateStorage","tags":["Storages"]}},"/v1/users/{user}/storages/{storage}/files":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadStorageFiles","tags":["Storages"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"storage","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/storages/{storage}/files/{file}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteStorageFiles","tags":["Storages"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadStorageFiles","tags":["Storages"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"storage","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"file","required":true,"schema":{"pattern":"(?.*$)","type":"string"}}],"put":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateStorageFiles","tags":["Storages"]}},"/v1/users/{user}/storages/{storage}/files{path}":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"storage","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"path","required":true,"schema":{"pattern":"(?(?:\\/.+)?)","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"RenameStorageFiles","tags":["Storages"]},"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateStorageFiles","tags":["Storages"]}},"/v1/users/{user}/storages/{storage}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"storage","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateStorageProjects","tags":["Storages"]}},"/v1/users/{user}/timezone":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadUserTimezone","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"timezone":{"maxLength":255,"minLength":1,"type":"string"}},"required":["timezone"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateUserTimezone","tags":["Users"]}},"/v1/users/{user}/tokens":{"get":{"responses":{"200":{"content":{"application/json":{"example":[{"created":1666915324141,"enabled":true,"modified":1666915324141,"name":"Admin Access","token":"admin_access"},{"created":1666915324141,"enabled":true,"modified":1666915324141,"name":"Shared Access","token":"shared_access"}]}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListTokens","tags":["Tokens"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"examples":{"Admin Access":{"description":"Creates a token with admin access. (For every resource, with any name, execute any action).","value":{"allow":{"*":{"*":"*"}},"enabled":true,"name":"Admin Access","token":"admin_access"}},"Custom Access":{"description":"Creates a token with permissions for reading an specific bucket 'mqtt_bucket', and to access any device resource.","value":{"allow":{"Bucket":{"mqtt_bucket":["ReadBucket"]},"Device":{"*":["AccessDeviceResources"]}},"enabled":true,"name":"Shared Access","token":"shared_access"}}},"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"expire":{"type":"number"},"name":{"$ref":"#/components/schemas/resource_name"},"token":{"pattern":"^[a-zA-Z0-9_]{1,50}$","type":"string"}},"required":["token","name","enabled"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateToken","tags":["Tokens"]}},"/v1/users/{user}/tokens/{token}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteToken","tags":["Tokens"]},"get":{"responses":{"200":{"content":{"application/json":{"examples":{"Admin Access":{"description":"Creates a token with admin access. (For every resource, with any name, execute any action).","value":{"allow":{"*":{"*":"*"}},"created":1666915324141,"enabled":true,"modified":1666915324141,"name":"Admin Access","token":"admin_access"}},"Custom Access":{"description":"Creates a token with permissions for reading an specific bucket 'mqtt_bucket', and to access any device resource.","value":{"allow":{"Bucket":{"mqtt_bucket":["ReadBucket"]},"Device":{"*":["AccessDeviceResources"]}},"created":1666915324141,"enabled":true,"modified":1666915324141,"name":"Shared Access","token":"shared_access"}}}}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadTokenConfig","tags":["Tokens"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,50})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"examples":{"Full Update":{"value":{"allow":{"*":{"*":"*"}},"enabled":true,"name":"Admin Access","token":"admin_access"}},"Update 'allow'":{"value":{"allow":{"*":{"*":"*"}}}},"Update 'enabled'":{"value":{"enabled":true}},"Update 'name'":{"value":{"name":"Admin Access"}}},"schema":{"additionalProperties":false,"properties":{"allow":{"$ref":"#/components/schemas/permission"},"deny":{"$ref":"#/components/schemas/permission"},"description":{"$ref":"#/components/schemas/resource_description"},"enabled":{"type":"boolean"},"expire":{"type":"number"},"name":{"$ref":"#/components/schemas/resource_name"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateToken","tags":["Tokens"]}},"/v1/users/{user}/tokens/{token}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"token","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,50})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateTokenProjects","tags":["Tokens"]}},"/v1/users/{user}/types":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListTypes","tags":["Types"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/resource_id"}},"required":["type"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateType","tags":["Types"]}},"/v1/users/{user}/types/{type}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteType","tags":["Types"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadTypeConfig","tags":["Types"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"type","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"description":{"type":"string"},"name":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateType","tags":["Types"]}},"/v1/users/{user}/types/{type}/locations":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadAssetsLocations","tags":["Types"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"type","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v1/users/{user}/types/{type}/projects":{"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"type","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"items":{"pattern":"^[a-zA-Z0-9_]{1,32}@[a-zA-Z0-9_]{1,32}$","type":"string"},"type":"array"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateTypeProjects","tags":["Types"]}},"/v1/users/{user}/types/{type}/properties":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteTypeProperties","tags":["Types"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListTypeProperties","tags":["Types"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"type","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateTypeProperty","tags":["Types"]}},"/v1/users/{user}/types/{type}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteTypeProperty","tags":["Types"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadTypeProperty","tags":["Types"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"type","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateTypeProperty","tags":["Types"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateTypeProperty","tags":["Types"]}},"/v2/users/{user}/devices/{device}/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?(?:.{1,32}\\/?)+)","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]}},"/v2/users/{user}/events":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"SubscribeUserEvents","tags":["Users"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v3/users/{user}/devices/{device}/callback":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDeviceCallbackConfig","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"actions":{"additionalProperties":false,"properties":{"call_endpoint":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"send_property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"set_property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"write_bucket":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"}},"type":"object"},"properties":{"additionalProperties":false,"properties":{"timeout":{"type":"integer"}},"type":"object"}},"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDeviceCallback","tags":["Devices"]}},"/v3/users/{user}/devices/{device}/callback/data":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDeviceCallbackResponse","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CallDeviceCallback","tags":["Devices"]}},"/v3/users/{user}/devices/{device}/properties":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDeviceProperties","tags":["Devices"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDeviceProperties","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"post":{"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"items":{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"},"type":"array"},{"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["property","value"],"type":"object"}]}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"CreateDeviceProperty","tags":["Devices"]}},"/v3/users/{user}/devices/{device}/properties/{property}":{"delete":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"DeleteDeviceProperty","tags":["Devices"]},"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadDeviceProperty","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"property","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}],"patch":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDeviceProperty","tags":["Devices"]},"put":{"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"property":{"pattern":"^[a-zA-Z0-9_]{1,32}$","type":"string"},"value":{}},"required":["value"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"UpdateDeviceProperty","tags":["Devices"]}},"/v3/users/{user}/devices/{device}/resources":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v3/users/{user}/devices/{device}/resources/{resource}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"resource","required":true,"schema":{"pattern":"(?(?:.{1,32}\\/?)+)","type":"string"}}],"post":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceResources","tags":["Devices"]}},"/v3/users/{user}/devices/{device}/services":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ListDeviceServices","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v3/users/{user}/devices/{device}/services/webs/{service}":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"AccessDeviceWebServices","tags":["Devices"]},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"service","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/v3/users/{user}/devices/{device}/ws_proxy":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"summary":""},"parameters":[{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"device","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]},"/{version}/users/{user}/buckets/{bucket}/data":{"get":{"responses":{"200":{"content":{"application/json":{}},"description":"ok"}},"security":[{"oauth":["basic"]}],"summary":"ReadBucket","tags":["Buckets"]},"parameters":[{"in":"path","name":"version","required":true,"schema":{"pattern":"(?(?:v1|v2))","type":"string"}},{"in":"path","name":"user","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}},{"in":"path","name":"bucket","required":true,"schema":{"pattern":"(?[a-zA-Z0-9_-]{1,32})","type":"string"}}]}},"servers":[{"url":"https://eu-central.aws.thinger.io:443"}]}