{"openapi":"3.1.0","info":{"title":"IoTAPS Control API","description":"\nControl plane for organizations, projects, devices, device credentials, telemetry,\ndashboards and alerts.\n\n**Scripts and integrations** call this host (`api.`) with a personal API key, created in\nthe console under Account > API: `Authorization: Bearer <key>`. A key acts as its owner,\nwith their access in every organization they belong to. Requests that change something\nalso send `X-IoTAPS-Client` (any name for the script). A key never counts as a second\nfactor, so creating device credentials, invitations, role changes and account security\nanswer `403 api_key_not_allowed`; those stay in the console. A request with a browser\n`Origin` and a bearer token is refused (`403 csrf_failed`).\n\n**The console** (`cloud.`, `control.`, `admin.`) calls `/v1/*` and `/auth/*` through its\nsame-origin `/api/*` path with the `__Host-iotaps_<panel>` session cookie, its second\nfactor passed, and the `X-IoTAPS-Client` header plus a matching `Origin` on unsafe methods.\n","version":"0.1.0"},"servers":[{"url":"https://api.iotaps.com"}],"paths":{"/auth/platform":{"get":{"tags":["platform"],"summary":"Platform look, links and notices","operationId":"platform_auth_platform_get","parameters":[{"name":"audience","in":"query","required":false,"schema":{"anyOf":[{"enum":["cloud","control","landing"],"type":"string"},{"type":"null"}],"description":"Only announcements for this audience (and for everyone).","title":"Audience"},"description":"Only announcements for this audience (and for everyone)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformPublicOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/auth/platform/status":{"get":{"tags":["platform"],"summary":"Atlassian Statuspage summary","description":"The sidebar's System status. Reads the page set in Admin -> General and asks Atlassian\nStatuspage for its public summary. Unset or unreachable answers with no indicator.","operationId":"platform_status_auth_platform_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/platform.css":{"get":{"tags":["platform"],"summary":"Platform accent and sign-in background (CSS)","operationId":"platform_css_auth_platform_css_get","responses":{"200":{"description":"A stylesheet.","content":{"text/css":{}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/platform/favicon.svg":{"get":{"tags":["platform"],"summary":"The built-in favicon in the platform's colours (SVG)","operationId":"platform_favicon_auth_platform_favicon_svg_get","responses":{"200":{"description":"An SVG image.","content":{"image/svg+xml":{}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/platform/email-mark.png":{"get":{"tags":["platform"],"summary":"The built-in mark in the platform's colours (PNG, for email)","operationId":"platform_email_mark_auth_platform_email_mark_png_get","responses":{"200":{"description":"A PNG image.","content":{"image/png":{}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/platform/fonts/{font_id}":{"get":{"tags":["platform"],"summary":"A font staff uploaded (WOFF2)","operationId":"platform_font_auth_platform_fonts__font_id__get","parameters":[{"name":"font_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Font Id"}}],"responses":{"200":{"description":"The font.","content":{"font/woff2":{}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/auth/platform/images/{kind}":{"get":{"tags":["platform"],"summary":"Platform logo, favicon or sign-in image","operationId":"platform_image_auth_platform_images__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo_light","logo_dark","favicon","login_image"],"type":"string","title":"Kind"}}],"responses":{"200":{"description":"The image.","content":{"image/png":{},"image/jpeg":{}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/billing/pricing":{"get":{"tags":["billing"],"summary":"Public hourly rates (pricing page)","operationId":"public_pricing_v1_billing_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PricingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/billing/razorpay/webhook":{"post":{"tags":["billing"],"summary":"Razorpay webhook (signed)","operationId":"razorpay_webhook_v1_billing_razorpay_webhook_post","parameters":[{"name":"X-Razorpay-Signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Razorpay-Signature"}},{"name":"X-Razorpay-Event-Id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Razorpay-Event-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookAck"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/password/forgot":{"post":{"tags":["password"],"summary":"Email a password reset link","operationId":"forgot_v1_password_forgot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordForgot"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/password/reset/check":{"post":{"tags":["password"],"summary":"Check a password link","operationId":"check_v1_password_reset_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetTokenOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/password/reset":{"post":{"tags":["password"],"summary":"Set a new password with a link","operationId":"reset_v1_password_reset_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetComplete"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetDone"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/password":{"get":{"tags":["password","account"],"summary":"Password status","operationId":"password_status_v1_me_password_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["password","account"],"summary":"Change or set your password","operationId":"change_password_v1_me_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordChange"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/providers":{"get":{"tags":["auth"],"summary":"Sign-in methods","operationId":"providers_auth_providers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProvidersOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/brand":{"get":{"tags":["auth"],"summary":"White-label brand of a console","operationId":"brand_auth_brand_get","parameters":[{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"description":"A console origin (Dex pages).","title":"Origin"},"description":"A console origin (Dex pages)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsoleBrandOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/auth/brand/{kind}":{"get":{"tags":["auth"],"summary":"White-label logo or favicon","operationId":"brand_image_auth_brand__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo","favicon"],"type":"string","title":"Kind"}},{"name":"origin","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Origin"}}],"responses":{"200":{"description":"The image (PNG).","content":{"image/png":{}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/auth/logout":{"post":{"tags":["auth"],"summary":"Sign out","operationId":"logout_auth_logout_post","responses":{"204":{"description":"Successful Response"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me":{"get":{"tags":["account"],"summary":"Current account and second-factor state","description":"Readable with a pending session: the 2FA screens need it to know what to ask.","operationId":"me_v1_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/default-organization":{"put":{"tags":["account"],"summary":"Star the organization the console opens","description":"One per account; null clears it. An organization the caller does not belong to is 404,\nlike any other.","operationId":"set_default_organization_v1_me_default_organization_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultOrganizationIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/identities":{"get":{"tags":["account"],"summary":"Linked sign-in methods","operationId":"list_identities_v1_me_identities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/identities/{identity_id}":{"delete":{"tags":["account"],"summary":"Unlink a sign-in method","operationId":"unlink_identity_v1_me_identities__identity_id__delete","parameters":[{"name":"identity_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Identity Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/factors":{"get":{"tags":["account"],"summary":"Second factors","operationId":"list_factors_v1_me_factors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactorList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/factors/{factor_id}":{"patch":{"tags":["account"],"summary":"Rename a passkey","operationId":"rename_factor_v1_me_factors__factor_id__patch","parameters":[{"name":"factor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Factor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactorRename"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FactorOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["account"],"summary":"Remove a second factor","operationId":"remove_factor_v1_me_factors__factor_id__delete","parameters":[{"name":"factor_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Factor Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/mfa":{"put":{"tags":["account"],"summary":"Turn two-step verification on or off","description":"Customers only (migration 0032). Off keeps the factors and recovery codes, asks for no\nfactor at sign-in and lets sensitive actions go ahead without one; it needs a recent\nfactor when the account has one. On needs a factor, passed on this session recently\n(403 `step_up_required`; 409 `factor_required` without one); other sessions that signed\nin without a factor must then pass it. Either change is emailed.","operationId":"set_mfa_v1_me_mfa_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaToggle"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaStateOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/recovery-codes":{"post":{"tags":["account"],"summary":"Regenerate recovery codes","operationId":"regenerate_recovery_codes_v1_me_recovery_codes_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryCodesOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/sessions":{"get":{"tags":["account"],"summary":"Active sessions","operationId":"list_sessions_v1_me_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/sessions/{session_id}":{"delete":{"tags":["account"],"summary":"Revoke one of my sessions","operationId":"revoke_session_v1_me_sessions__session_id__delete","parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/security-events":{"get":{"tags":["account"],"summary":"My security events","operationId":"list_security_events_v1_me_security_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityEventList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/delete":{"post":{"tags":["account"],"summary":"Delete my account","description":"Anonymise the caller's own account, as staff would (migration 0009), on the web and\nin the app (app stores require it). A session that skipped the factor setup has nothing\nto confirm with, so the typed address is its only confirmation; every other session\nneeds a recent factor. Order as for staff: the database (not committed), the Dex\npassword, the broker, then COMMIT.","operationId":"delete_account_v1_me_delete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountDelete"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/totp/enrol/start":{"post":{"tags":["auth"],"summary":"Start TOTP enrolment","operationId":"totp_enrol_start_auth_mfa_totp_enrol_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpEnrolStartOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/totp/enrol/confirm":{"post":{"tags":["auth"],"summary":"Confirm TOTP enrolment","operationId":"totp_enrol_confirm_auth_mfa_totp_enrol_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpEnrolConfirm"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/webauthn/register/options":{"post":{"tags":["auth"],"summary":"Start passkey enrolment","operationId":"webauthn_register_options_auth_mfa_webauthn_register_options_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebauthnOptionsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/webauthn/register/verify":{"post":{"tags":["auth"],"summary":"Finish passkey enrolment","operationId":"webauthn_register_verify_auth_mfa_webauthn_register_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebauthnRegisterVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/totp/verify":{"post":{"tags":["auth"],"summary":"Verify a TOTP code","operationId":"totp_verify_auth_mfa_totp_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/webauthn/authenticate/options":{"post":{"tags":["auth"],"summary":"Start a passkey challenge","operationId":"webauthn_authenticate_options_auth_mfa_webauthn_authenticate_options_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebauthnOptionsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/webauthn/authenticate/verify":{"post":{"tags":["auth"],"summary":"Verify a passkey","operationId":"webauthn_authenticate_verify_auth_mfa_webauthn_authenticate_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebauthnAuthenticateVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/recovery/verify":{"post":{"tags":["auth"],"summary":"Use a recovery code","description":"Sign in with a recovery code (amendment A2).\n\nA success has exactly the effects of a normal challenge, including the step-up\nwindow: replacing a lost factor is what the code is for. What it is never for is\nconfirming an action on an already-verified session, so that is refused.","operationId":"recovery_verify_auth_mfa_recovery_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecoveryVerify"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/mfa/skip":{"post":{"tags":["auth"],"summary":"Skip the second-factor setup","description":"Continue without a second factor (migrations 0007, 0032).\n\nA customer account with no factor, or with two-step verification off, qualifies;\nskipping turns two-step verification off for the account, so later sign-ins ask for\nnothing and sensitive actions need no confirmation until it is turned on again.\nRefused with 409 `skip_not_allowed` for an account that has it on and a factor, and\n403 for staff.","operationId":"skip_auth_mfa_skip_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MfaResultOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup":{"post":{"tags":["signup"],"summary":"Start sign-up","operationId":"start_v1_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupStart"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup/verify":{"post":{"tags":["signup"],"summary":"Check a sign-up link","operationId":"verify_v1_signup_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupTokenOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup/complete":{"post":{"tags":["signup"],"summary":"Create the account and start second-factor setup","operationId":"complete_v1_signup_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupComplete"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup/register":{"post":{"tags":["signup"],"summary":"Create the account at once (sign-up without email verification)","description":"Only while the policy has email verification off; otherwise 409\n`email_verification_required` (use `POST /v1/signup`).","operationId":"register_v1_signup_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupCompleteOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup/confirm-email":{"post":{"tags":["signup"],"summary":"Confirm an account's email address","description":"Use the link from `account.email_confirm`. Needs no session: the link proves\nthe inbox, and it works even after sign-up has been closed again.","operationId":"confirm_email_v1_signup_confirm_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailConfirmedOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/signup/confirm-email/resend":{"post":{"tags":["signup"],"summary":"Send the email confirmation link again","operationId":"resend_confirmation_v1_signup_confirm_email_resend_post","responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/auth/support":{"get":{"tags":["auth"],"summary":"Redeem a support-view link (staff)","operationId":"redeem_support_view_auth_support_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","minLength":20,"maxLength":100,"title":"Code"}}],"responses":{"303":{"description":"To the console, signed in read-only; or to sign-in when the link is used up."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/realtime/tickets":{"post":{"tags":["realtime"],"summary":"A one-time ticket for the realtime socket","description":"The console cannot send its session cookie to the API host, so it asks for a ticket here and opens `url?ticket=...` within 30 s, from this origin. Single use.","operationId":"create_ticket_v1_realtime_tickets_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RealtimeTicket"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/authorizations":{"post":{"tags":["app"],"summary":"Hand a sign-in to the Android app (cloud panel, after the person confirmed)","operationId":"authorize_app_v1_app_authorizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppAuthorizationIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppAuthorizationOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/token":{"post":{"tags":["app"],"summary":"Exchange a sign-in code for an app session (api. host, no session yet)","operationId":"app_token_v1_app_token_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppTokenOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/sign-in/options":{"get":{"tags":["app"],"summary":"Sign-in methods for the app","operationId":"sign_in_options_v1_app_sign_in_options_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignInOptionsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/sign-in/password":{"post":{"tags":["app"],"summary":"Sign in to the app with email and password","operationId":"sign_in_password_v1_app_sign_in_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPasswordSignIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPendingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/password/forgot":{"post":{"tags":["app"],"summary":"Email a password reset link (opens the console)","operationId":"forgot_password_v1_app_password_forgot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordForgot"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasswordResetAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/sign-in/google":{"post":{"tags":["app"],"summary":"Sign in to the app with a Google ID token","operationId":"sign_in_google_v1_app_sign_in_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppGoogleSignIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPendingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/signup":{"post":{"tags":["app"],"summary":"Email a sign-up code","description":"The same answer whether or not the address has an account: a taken address gets the\nconsole's \"you already have an account\" notice instead of a code.","operationId":"signup_start_v1_app_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignupStart"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/signup/verify":{"post":{"tags":["app"],"summary":"Check a sign-up code","operationId":"signup_verify_v1_app_signup_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignupCodeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignupCodeOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/signup/complete":{"post":{"tags":["app"],"summary":"Create the account with the emailed code; second-factor setup comes next","operationId":"signup_complete_v1_app_signup_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignupComplete"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPendingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/signup/register":{"post":{"tags":["app"],"summary":"Create the account at once (sign-up without email verification)","description":"Only while the policy has email verification off; otherwise 409\n`email_verification_required` (use `POST /v1/app/signup`).","operationId":"signup_register_v1_app_signup_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSignupRegister"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPendingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/app/step-up":{"post":{"tags":["app"],"summary":"Refresh this app session's step-up with a code confirmed in the browser","operationId":"app_step_up_v1_app_step_up_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppStepUpOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/organizations":{"get":{"tags":["organizations"],"summary":"List my organizations","operationId":"list_organizations_v1_organizations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["organizations"],"summary":"Create an organization","operationId":"create_organization_v1_organizations_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/workspace":{"post":{"tags":["organizations"],"summary":"Open the personal workspace","description":"The private place for projects and devices before an organization is created.\n\nOne per account. A second call returns the same organization.","operationId":"open_workspace_v1_me_workspace_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/organizations/{organization_id}":{"get":{"tags":["organizations"],"summary":"Get an organization","operationId":"get_organization_v1_organizations__organization_id__get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["organizations"],"summary":"Rename an organization","operationId":"update_organization_v1_organizations__organization_id__patch","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/default-project":{"put":{"tags":["organizations"],"summary":"Choose the project I open on entering the organization","description":"A preference of the caller's own, so any member may set it, with no step-up or audit\nrow. The project must be one the caller reaches now (404 otherwise, as for any project).","operationId":"set_default_project_v1_organizations__organization_id__default_project_put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/default":{"put":{"tags":["organizations"],"summary":"Star the organization: the console's home opens it","description":"A preference of the caller's own (0035): any member may star an organization they\nbelong to, with no step-up or audit row. Starring another one moves the star.","operationId":"star_organization_v1_organizations__organization_id__default_put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["organizations"],"summary":"Remove the star: the console's home opens the personal workspace again","operationId":"unstar_organization_v1_organizations__organization_id__default_delete","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/delete":{"post":{"tags":["organizations"],"summary":"Delete an organization (owner, step-up, typed name)","description":"Soft delete: archive every device, stamp deleted_at, in ONE transaction (design 8.6).\n\nLock order is organization row FOR UPDATE first, device rows second (ORDER BY id), the\nmirror of lock_org_live in every device mutation. The locked read selects columns, not\nthe entity, so the name, enterprise and deleted_at it compares are the ones read under\nthe lock even if something loaded an Organization earlier in the request.","operationId":"delete_organization_v1_organizations__organization_id__delete_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDelete"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/projects/{project_id}/delete":{"post":{"tags":["organizations","projects"],"summary":"Delete a project (admin, step-up, typed name)","description":"Archive the project's live devices, then delete the row; every reference cascades (0042).\n\nLock order: organization row at KEY SHARE (as every device mutation), the project row FOR\nUPDATE (a device created in it meanwhile waits on its foreign key), then the devices ORDER\nBY id. An organization keeps at least one project.","operationId":"delete_project_v1_organizations__organization_id__projects__project_id__delete_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectDelete"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/members":{"get":{"tags":["organizations"],"summary":"List members","operationId":"list_members_v1_organizations__organization_id__members_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/members/{user_id}":{"patch":{"tags":["organizations"],"summary":"Change a member's role","operationId":"update_member_v1_organizations__organization_id__members__user_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["organizations"],"summary":"Remove a member (or leave the organization)","operationId":"remove_member_v1_organizations__organization_id__members__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"get":{"tags":["organizations"],"summary":"One member's access, teams, shared dashboards and recent changes (or your own)","operationId":"get_member_v1_organizations__organization_id__members__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/members/{user_id}/access":{"put":{"tags":["organizations"],"summary":"Set a member's access: every project, or selected projects and devices, and when it ends","operationId":"set_member_access_v1_organizations__organization_id__members__user_id__access_put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberAccessUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/transfer-ownership":{"post":{"tags":["organizations"],"summary":"Make another member the owner (owner, step-up); the caller becomes an admin unless they stay owner","operationId":"transfer_ownership_v1_organizations__organization_id__transfer_ownership_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipTransfer"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/invitations":{"get":{"tags":["organizations"],"summary":"List invitations","operationId":"list_invitations_v1_organizations__organization_id__invitations_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["organizations"],"summary":"Invite someone by email","operationId":"create_invitation_v1_organizations__organization_id__invitations_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationCreated"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/invitations/{invitation_id}":{"delete":{"tags":["organizations"],"summary":"Revoke an invitation","operationId":"revoke_invitation_v1_organizations__organization_id__invitations__invitation_id__delete","parameters":[{"name":"invitation_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invitation Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/invitations/accept":{"post":{"tags":["organizations"],"summary":"Accept an invitation","operationId":"accept_invitation_v1_invitations_accept_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationAccept"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/organizations/{organization_id}/projects":{"get":{"tags":["projects"],"summary":"List projects","operationId":"list_projects_v1_organizations__organization_id__projects_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["projects"],"summary":"Create a project","operationId":"create_project_v1_organizations__organization_id__projects_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/projects/{project_id}":{"get":{"tags":["projects"],"summary":"Get a project","operationId":"get_project_v1_organizations__organization_id__projects__project_id__get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["projects"],"summary":"Rename a project","operationId":"update_project_v1_organizations__organization_id__projects__project_id__patch","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/projects/{project_id}/access":{"get":{"tags":["projects"],"summary":"Who reaches this project, and through what","operationId":"get_project_access_v1_organizations__organization_id__projects__project_id__access_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAccessList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["projects"],"summary":"Set or remove the grants of several members at once","operationId":"change_project_access_v1_organizations__organization_id__projects__project_id__access_put","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAccessBulk"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectAccessList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/teams":{"get":{"tags":["teams"],"summary":"List teams","operationId":"list_teams_v1_organizations__organization_id__teams_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["teams"],"summary":"Create a team","operationId":"create_team_v1_organizations__organization_id__teams_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/teams/{team_id}":{"get":{"tags":["teams"],"summary":"Get a team with its members and projects","operationId":"get_team_v1_organizations__organization_id__teams__team_id__get","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["teams"],"summary":"Rename a team or change its description","operationId":"update_team_v1_organizations__organization_id__teams__team_id__patch","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["teams"],"summary":"Delete a team","operationId":"delete_team_v1_organizations__organization_id__teams__team_id__delete","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/teams/{team_id}/members":{"put":{"tags":["teams"],"summary":"Set a team's members and when each one leaves","operationId":"set_team_members_v1_organizations__organization_id__teams__team_id__members_put","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamMembersUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/teams/{team_id}/projects":{"put":{"tags":["teams"],"summary":"Set the projects a team's members reach","operationId":"set_team_projects_v1_organizations__organization_id__teams__team_id__projects_put","parameters":[{"name":"team_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Team Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamProjectsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TeamDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/projects/{project_id}/devices":{"get":{"tags":["devices"],"summary":"List devices in a project","operationId":"list_devices_v1_organizations__organization_id__projects__project_id__devices_get","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["devices"],"summary":"Create a device","operationId":"create_device_v1_organizations__organization_id__projects__project_id__devices_post","parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Project Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices":{"get":{"tags":["devices"],"summary":"List devices across the organization","operationId":"list_organization_devices_v1_organizations__organization_id__devices_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"title":"State"}},{"name":"template","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":36},{"type":"null"}],"title":"Template"}},{"name":"is_gateway","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Gateway"}},{"name":"label","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}],"title":"Label"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"include_archived","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Archived"}},{"name":"sort","in":"query","required":false,"schema":{"enum":["created_desc","name_asc"],"type":"string","default":"created_desc","title":"Sort"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevicePage"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/connectivity":{"get":{"tags":["devices"],"summary":"Live connectivity of up to 100 devices","description":"Polled every second by open device pages; send `X-IoTAPS-Background: 1`. Ids that are not devices of this organization are left out.","operationId":"device_connectivity_v1_organizations__organization_id__devices_connectivity_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"ids","in":"query","required":true,"schema":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":100,"title":"Ids"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceConnectivityList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}":{"get":{"tags":["devices"],"summary":"Get a device","operationId":"get_device_v1_organizations__organization_id__devices__device_id__get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["devices"],"summary":"Update a device","operationId":"update_device_v1_organizations__organization_id__devices__device_id__patch","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/bulk-archive":{"post":{"tags":["devices"],"summary":"Archive several devices","operationId":"bulk_archive_devices_v1_organizations__organization_id__devices_bulk_archive_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArchiveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkArchiveResult"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/disable":{"post":{"tags":["devices"],"summary":"Disable a device","operationId":"disable_device_v1_organizations__organization_id__devices__device_id__disable_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/enable":{"post":{"tags":["devices"],"summary":"Enable a device","operationId":"enable_device_v1_organizations__organization_id__devices__device_id__enable_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/archive":{"post":{"tags":["devices"],"summary":"Archive a device","operationId":"archive_device_v1_organizations__organization_id__devices__device_id__archive_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/datastreams":{"get":{"tags":["devices"],"summary":"The datastreams the device's template declares","operationId":"get_device_datastreams_v1_organizations__organization_id__devices__device_id__datastreams_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceDatastreams"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/commands":{"post":{"tags":["devices"],"summary":"Send a command (retained per key unless retain is false; the device confirms through its telemetry)","operationId":"send_device_command_v1_organizations__organization_id__devices__device_id__commands_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCommandCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceCommandOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/credentials":{"get":{"tags":["devices"],"summary":"List credentials","operationId":"list_credentials_v1_organizations__organization_id__devices__device_id__credentials_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["devices"],"summary":"Create a credential (the secret is returned once)","operationId":"create_credential_v1_organizations__organization_id__devices__device_id__credentials_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialCreated"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/credentials/{credential_id}/revoke":{"post":{"tags":["devices"],"summary":"Revoke a credential (disconnects sessions using it)","operationId":"revoke_credential_v1_organizations__organization_id__devices__device_id__credentials__credential_id__revoke_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"credential_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Credential Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CredentialOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/io":{"get":{"tags":["devices"],"summary":"The device's pin setup, what it reports running, and what it found by itself","operationId":"get_device_io_v1_organizations__organization_id__devices__device_id__io_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceIoOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["devices"],"summary":"Save the pin setup and send it to the device (retained; it restarts to apply it)","operationId":"put_device_io_v1_organizations__organization_id__devices__device_id__io_put","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceIoUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceIoOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/latest":{"get":{"tags":["telemetry"],"summary":"Latest telemetry-derived state","operationId":"latest_v1_organizations__organization_id__devices__device_id__latest_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/series":{"get":{"tags":["telemetry"],"summary":"Metric history (raw or server-side aggregated)","operationId":"series_v1_organizations__organization_id__devices__device_id__series_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"metric","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Metric"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start"}},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End"}},{"name":"resolution","in":"query","required":false,"schema":{"enum":["auto","raw"],"type":"string","default":"auto","title":"Resolution"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SeriesOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/values":{"get":{"tags":["telemetry"],"summary":"Recent values of one metric, newest first","operationId":"values_v1_organizations__organization_id__devices__device_id__values_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"metric","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Metric"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValueList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/messages":{"get":{"tags":["telemetry"],"summary":"Recent raw messages","operationId":"messages_v1_organizations__organization_id__devices__device_id__messages_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Before"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/rejections":{"get":{"tags":["telemetry"],"summary":"Recently rejected messages","operationId":"rejections_v1_organizations__organization_id__devices__device_id__rejections_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectionList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/stream":{"get":{"tags":["telemetry"],"summary":"Live telemetry (text/event-stream, best effort; history is the source of truth)","operationId":"stream_v1_organizations__organization_id__devices__device_id__stream_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/event-stream":{}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/usage":{"get":{"tags":["usage"],"summary":"Daily usage counters (UTC days)","operationId":"usage_v1_organizations__organization_id__usage_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":7,"title":"Days"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/audit-events":{"get":{"tags":["usage"],"summary":"Audit log (newest first)","operationId":"audit_events_v1_organizations__organization_id__audit_events_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditEventList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/device-templates":{"get":{"tags":["device-templates"],"summary":"List published device templates","operationId":"list_templates_v1_device_templates_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"hardware_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"type":"string"},{"type":"null"}],"title":"Hardware Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/device-templates/{template_id}":{"get":{"tags":["device-templates"],"summary":"Get a published device template","operationId":"get_template_v1_device_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/device-templates/{template_id}/image":{"get":{"tags":["device-templates"],"summary":"Template image (full size or thumbnail)","operationId":"get_template_image_v1_device_templates__template_id__image_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."}],"responses":{"200":{"description":"Template image (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"\"<sha256 hex>-full|thumb\""},"Cache-Control":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}}},"/v1/device-templates/{template_id}/assets/{asset_id}":{"get":{"tags":["device-templates"],"summary":"A guide screenshot or pinout picture of a published template","operationId":"get_template_asset_v1_device_templates__template_id__assets__asset_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."}],"responses":{"200":{"description":"Template image (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"\"<sha256 hex>-full|thumb\""},"Cache-Control":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}}},"/v1/organizations/{organization_id}/templates":{"get":{"tags":["templates"],"summary":"The organization's own device templates","operationId":"list_templates_v1_organizations__organization_id__templates_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"status","in":"query","required":false,"schema":{"enum":["active","archived","all"],"type":"string","default":"active","title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["templates"],"summary":"Create a template","operationId":"create_template_v1_organizations__organization_id__templates_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/templates/{template_id}":{"get":{"tags":["templates"],"summary":"One of the organization's templates","operationId":"get_template_v1_organizations__organization_id__templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["templates"],"summary":"Replace a template's content","operationId":"update_template_v1_organizations__organization_id__templates__template_id__put","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["templates"],"summary":"Delete a template no device or alert rule uses","operationId":"delete_template_v1_organizations__organization_id__templates__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/templates/{template_id}/revisions":{"get":{"tags":["templates"],"summary":"Template history, newest 100 first","operationId":"list_revisions_v1_organizations__organization_id__templates__template_id__revisions_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateRevisionList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/templates/from-library/{library_template_id}":{"post":{"tags":["templates"],"summary":"Copy a published library template's datastreams and dashboard into a new template","operationId":"copy_from_library_v1_organizations__organization_id__templates_from_library__library_template_id__post","parameters":[{"name":"library_template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Library Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateCopy"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/templates/{template_id}/archive":{"post":{"tags":["templates"],"summary":"Hide a template from Add device","operationId":"archive_template_v1_organizations__organization_id__templates__template_id__archive_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateVersion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/templates/{template_id}/restore":{"post":{"tags":["templates"],"summary":"Offer an archived template again","operationId":"restore_template_v1_organizations__organization_id__templates__template_id__restore_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateVersion"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/dashboard-layouts":{"get":{"tags":["dashboards"],"summary":"List the layouts a new dashboard may start from","operationId":"list_dashboard_layouts_v1_dashboard_layouts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardLayoutList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/organizations/{organization_id}/dashboards":{"get":{"tags":["dashboards"],"summary":"List the dashboards the caller may view","operationId":"list_dashboards_v1_organizations__organization_id__dashboards_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Only this project's dashboards (organization dashboards are left out).","title":"Project Id"},"description":"Only this project's dashboards (organization dashboards are left out)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["dashboards"],"summary":"Create a dashboard","operationId":"create_dashboard_v1_organizations__organization_id__dashboards_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/dashboards/{dashboard_id}":{"get":{"tags":["dashboards"],"summary":"Get a dashboard","operationId":"get_dashboard_v1_organizations__organization_id__dashboards__dashboard_id__get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["dashboards"],"summary":"Change a dashboard's name, description or access","operationId":"patch_dashboard_v1_organizations__organization_id__dashboards__dashboard_id__patch","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["dashboards"],"summary":"Delete a dashboard","operationId":"delete_dashboard_v1_organizations__organization_id__dashboards__dashboard_id__delete","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/dashboards/{dashboard_id}/config":{"put":{"tags":["dashboards"],"summary":"Save the widget configuration","operationId":"put_dashboard_config_v1_organizations__organization_id__dashboards__dashboard_id__config_put","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardConfigSave"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/dashboards/{dashboard_id}/shares":{"get":{"tags":["dashboards"],"summary":"List who a dashboard is shared with","operationId":"list_dashboard_shares_v1_organizations__organization_id__dashboards__dashboard_id__shares_get","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardShareList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["dashboards"],"summary":"Set who a dashboard is shared with","operationId":"set_dashboard_shares_v1_organizations__organization_id__dashboards__dashboard_id__shares_put","parameters":[{"name":"dashboard_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Dashboard Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardSharesUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DashboardShareList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/firmware":{"get":{"tags":["firmware"],"summary":"Device Firmware","description":"The device's published firmware releases, what it runs now and its last update order.","operationId":"device_firmware_v1_organizations__organization_id__devices__device_id__firmware_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceFirmwareOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/firmware/{release_id}/parts/{role}":{"get":{"tags":["firmware"],"summary":"Device Firmware Part","description":"One part of a release, for the console to write over USB.","operationId":"device_firmware_part_v1_organizations__organization_id__devices__device_id__firmware__release_id__parts__role__get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}},{"name":"role","in":"path","required":true,"schema":{"enum":["bootloader","partitions","boot_app0","app"],"type":"string","title":"Role"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/firmware/{release_id}/source":{"get":{"tags":["firmware"],"summary":"Device Firmware Source","description":"The code a release was built from (0062): the generic sketch, every connection value empty.","operationId":"device_firmware_source_v1_organizations__organization_id__devices__device_id__firmware__release_id__source_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareSourceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/firmware/starter":{"get":{"tags":["firmware"],"summary":"Device Firmware Starter","description":"A starter sketch on the IoTAPS library for \"Your own code\" (0062), with the placeholder\nvalues the server knows. The credential and the Wi-Fi are filled in the browser.","operationId":"device_firmware_starter_v1_organizations__organization_id__devices__device_id__firmware_starter_get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"chip","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Defaults to the device's chip, else esp32.","title":"Chip"},"description":"Defaults to the device's chip, else esp32."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareStarterOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/firmware/uploads":{"get":{"tags":["firmware"],"summary":"List Uploads","description":"The organization's own app images for updates over the air, newest first (0062).","operationId":"list_uploads_v1_organizations__organization_id__firmware_uploads_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareUploadList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["firmware"],"summary":"Create Upload","description":"Keep a compiled app image (an ESP image of `chip`, at most 2 MiB) for updates over the air.\nAt most MAX_UPLOADS per organization; delete one to add another.","operationId":"create_upload_v1_organizations__organization_id__firmware_uploads_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareUploadCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareUploadOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/firmware/uploads/{upload_id}":{"delete":{"tags":["firmware"],"summary":"Delete Upload","operationId":"delete_upload_v1_organizations__organization_id__firmware_uploads__upload_id__delete","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Upload Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/devices/{device_id}/ota":{"post":{"tags":["firmware"],"summary":"Order Ota","description":"Tell an online device to download a release (or one of the organization's own images,\n0062) and restart into it.","operationId":"order_ota_v1_organizations__organization_id__devices__device_id__ota_post","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceOtaCreate"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtaOrderOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/firmware/ota/{token}":{"get":{"tags":["firmware"],"summary":"Ota Download","description":"The app image an update order points at. Public: the board has no session, the token\nnames the release (or the organization's own image) and expires after OTA_TOKEN_SECONDS.","operationId":"ota_download_v1_firmware_ota__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/sdk/arduino/{filename}":{"get":{"tags":["sdk"],"summary":"Download the IoTAPS Arduino library","operationId":"arduino_library_v1_sdk_arduino__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}},{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"Successful Response","content":{"application/zip":{}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"Not modified"}}}},"/v1/organizations/{organization_id}/alert-rules":{"get":{"tags":["alerts"],"summary":"List the alert rules the caller can see","operationId":"list_alert_rules_v1_organizations__organization_id__alert_rules_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Rules that can watch this project's devices (organization-wide ones too).","title":"Project Id"},"description":"Rules that can watch this project's devices (organization-wide ones too)."},{"name":"device_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Rules that watch this device.","title":"Device Id"},"description":"Rules that watch this device."},{"name":"dashboard_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Widget rules of this dashboard.","title":"Dashboard Id"},"description":"Widget rules of this dashboard."},{"name":"widget_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^[a-z0-9]{6,12}$"},{"type":"null"}],"description":"Widget rules of this widget (with dashboard_id).","title":"Widget Id"},"description":"Widget rules of this widget (with dashboard_id)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["alerts"],"summary":"Create an alert rule","operationId":"create_alert_rule_v1_organizations__organization_id__alert_rules_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/alert-rules/test":{"post":{"tags":["alerts"],"summary":"Try a rule against the devices' latest data (nothing is saved or sent)","operationId":"test_alert_rule_v1_organizations__organization_id__alert_rules_test_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleScope"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleTestOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/alert-rules/{rule_id}":{"get":{"tags":["alerts"],"summary":"Get an alert rule","operationId":"get_alert_rule_v1_organizations__organization_id__alert_rules__rule_id__get","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["alerts"],"summary":"Change an alert rule","operationId":"update_alert_rule_v1_organizations__organization_id__alert_rules__rule_id__put","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertRuleOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["alerts"],"summary":"Delete an alert rule","operationId":"delete_alert_rule_v1_organizations__organization_id__alert_rules__rule_id__delete","parameters":[{"name":"rule_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Rule Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/alerts":{"get":{"tags":["alerts"],"summary":"List alert incidents, newest first","operationId":"list_alerts_v1_organizations__organization_id__alerts_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"state","in":"query","required":false,"schema":{"enum":["open","resolved","all"],"type":"string","default":"open","title":"State"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"device_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Device Id"}},{"name":"rule_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rule Id"}},{"name":"dashboard_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"}},{"name":"widget_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Only this widget's incidents (with dashboard_id): its rules' now and before.","title":"Widget Id"},"description":"Only this widget's incidents (with dashboard_id): its rules' now and before."},{"name":"severity","in":"query","required":false,"schema":{"anyOf":[{"enum":["info","warning","critical"],"type":"string"},{"type":"null"}],"title":"Severity"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertEventList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/alerts/summary":{"get":{"tags":["alerts"],"summary":"Count the open alert incidents","operationId":"alert_summary_v1_organizations__organization_id__alerts_summary_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"project_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"}},{"name":"dashboard_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertSummary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/alerts/{event_id}/acknowledge":{"post":{"tags":["alerts"],"summary":"Acknowledge an alert incident","operationId":"acknowledge_alert_v1_organizations__organization_id__alerts__event_id__acknowledge_post","parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Event Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertEventOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/webhooks":{"get":{"tags":["notification channels"],"summary":"List the organization's webhooks","operationId":"list_webhooks_v1_organizations__organization_id__webhooks_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["notification channels"],"summary":"Add a webhook","operationId":"create_webhook_v1_organizations__organization_id__webhooks_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreated"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/webhooks/{channel_id}":{"patch":{"tags":["notification channels"],"summary":"Change a webhook","operationId":"update_webhook_v1_organizations__organization_id__webhooks__channel_id__patch","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["notification channels"],"summary":"Remove a webhook","operationId":"delete_webhook_v1_organizations__organization_id__webhooks__channel_id__delete","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/webhooks/{channel_id}/rotate-secret":{"post":{"tags":["notification channels"],"summary":"Replace a webhook's signing secret","operationId":"rotate_webhook_secret_v1_organizations__organization_id__webhooks__channel_id__rotate_secret_post","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookSecret"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/webhooks/{channel_id}/test":{"post":{"tags":["notification channels"],"summary":"Send a test message to a webhook (even one that is turned off)","operationId":"test_webhook_v1_organizations__organization_id__webhooks__channel_id__test_post","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/webhooks/{channel_id}/deliveries":{"get":{"tags":["notification channels"],"summary":"A webhook's latest deliveries","operationId":"list_webhook_deliveries_v1_organizations__organization_id__webhooks__channel_id__deliveries_get","parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Channel Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/notifications":{"get":{"tags":["notifications"],"summary":"The caller's notifications, newest first","operationId":"list_notifications_v1_me_notifications_get","parameters":[{"name":"unread","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Unread"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":30,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/notifications/unread-count":{"get":{"tags":["notifications"],"summary":"How many notifications are unread (polled by the bell)","operationId":"unread_count_v1_me_notifications_unread_count_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCount"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark one notification read","operationId":"mark_read_v1_me_notifications__notification_id__read_post","parameters":[{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Notification Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark every notification read","operationId":"mark_all_read_v1_me_notifications_read_all_post","parameters":[{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Only this organization's.","title":"Organization Id"},"description":"Only this organization's."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkedRead"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/notification-preferences":{"get":{"tags":["notifications"],"summary":"Which alerts may email or push the caller, per organization","operationId":"list_preferences_v1_me_notification_preferences_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/notification-preferences/{organization_id}":{"put":{"tags":["notifications"],"summary":"Set which alerts of one organization may email or push the caller","operationId":"set_preference_v1_me_notification_preferences__organization_id__put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationPreferenceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/push-subscriptions":{"get":{"tags":["notifications"],"summary":"The caller's browsers that receive push","operationId":"list_push_subscriptions_v1_me_push_subscriptions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["notifications"],"summary":"Add this browser (or refresh its keys) so alerts can push to it","operationId":"add_push_subscription_v1_me_push_subscriptions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushSubscriptionOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/push-subscriptions/{subscription_id}":{"delete":{"tags":["notifications"],"summary":"Stop pushing to one of the caller's browsers","operationId":"delete_push_subscription_v1_me_push_subscriptions__subscription_id__delete","parameters":[{"name":"subscription_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Subscription Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/app-push-token":{"put":{"tags":["notifications"],"summary":"Register this Android app session for alert push (FCM)","operationId":"put_app_push_token_v1_me_app_push_token_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPushTokenIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppPushTokenOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["notifications"],"summary":"Stop pushing to this Android app session","operationId":"delete_app_push_token_v1_me_app_push_token_delete","responses":{"204":{"description":"Successful Response"},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/organizations/{organization_id}/appearance/{kind}/{item_id}":{"put":{"tags":["appearance"],"summary":"Choose an item's icon and colour","operationId":"set_appearance_v1_organizations__organization_id__appearance__kind___item_id__put","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["organization","project","device","dashboard"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppearanceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppearanceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/appearance/{kind}/{item_id}/image":{"get":{"tags":["appearance"],"summary":"An item's uploaded picture","operationId":"get_item_image_v1_organizations__organization_id__appearance__kind___item_id__image_get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["organization","project","device","dashboard"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."},{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"The picture (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}},"put":{"tags":["appearance"],"summary":"Upload an item's picture (PNG, JPEG or WebP; cropped to a square, or 16:9 for dashboards)","operationId":"put_item_image_v1_organizations__organization_id__appearance__kind___item_id__image_put","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["organization","project","device","dashboard"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppearanceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}},"delete":{"tags":["appearance"],"summary":"Remove an item's picture","operationId":"delete_item_image_v1_organizations__organization_id__appearance__kind___item_id__image_delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["organization","project","device","dashboard"],"type":"string","title":"Kind"}},{"name":"item_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Item Id"}},{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppearanceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing":{"get":{"tags":["billing"],"summary":"The organization's credit, usage and rates","operationId":"get_billing_v1_organizations__organization_id__billing_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/top-up":{"post":{"tags":["billing"],"summary":"Start adding credit (Razorpay checkout)","operationId":"org_top_up_v1_organizations__organization_id__billing_top_up_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/top-up/verify":{"post":{"tags":["billing"],"summary":"Confirm a Razorpay top-up payment","operationId":"org_top_up_verify_v1_organizations__organization_id__billing_top_up_verify_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupVerifyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/retention":{"put":{"tags":["billing"],"summary":"Choose how many days of telemetry to keep","operationId":"org_retention_v1_organizations__organization_id__billing_retention_put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetentionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/budget":{"put":{"tags":["billing"],"summary":"Set or clear the monthly budget reminder","operationId":"org_budget_v1_organizations__organization_id__billing_budget_put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrgBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/usage":{"get":{"tags":["billing"],"summary":"Daily usage and charges per meter","operationId":"org_usage_v1_organizations__organization_id__billing_usage_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingUsageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/ledger":{"get":{"tags":["billing"],"summary":"Credit added and usage charged","operationId":"org_ledger_v1_organizations__organization_id__billing_ledger_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgerOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/account":{"put":{"tags":["billing"],"summary":"Set the billing name, address and GSTIN","operationId":"org_account_v1_organizations__organization_id__billing_account_put","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/organizations/{organization_id}/billing/invoices":{"get":{"tags":["billing"],"summary":"Statements and invoices of the organization","operationId":"org_invoices_v1_organizations__organization_id__billing_invoices_get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/api-keys":{"get":{"tags":["account"],"summary":"My API keys","operationId":"list_api_keys_v1_me_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["account"],"summary":"Create an API key","operationId":"create_api_key_v1_me_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreated"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/api-keys/{key_id}":{"delete":{"tags":["account"],"summary":"Revoke an API key","operationId":"revoke_api_key_v1_me_api_keys__key_id__delete","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/recent-items":{"post":{"tags":["account"],"summary":"Remember that I opened a dashboard or device","operationId":"record_recent_item_v1_me_recent_items_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecentItemIn"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"get":{"tags":["account"],"summary":"Dashboards and devices I opened lately","operationId":"list_recent_items_v1_me_recent_items_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"enum":["dashboard","device"],"type":"string"},{"type":"null"}],"description":"Only dashboards or only devices.","title":"Kind"},"description":"Only dashboards or only devices."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecentItemList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing":{"get":{"tags":["me"],"summary":"Get Me Billing","operationId":"get_me_billing_v1_me_billing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeBillingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/account":{"get":{"tags":["me"],"summary":"Personal billing name and address","operationId":"get_me_billing_account_v1_me_billing_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/BillingAccountOut"},{"type":"null"}],"title":"Response Get Me Billing Account V1 Me Billing Account Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["me"],"summary":"Set personal billing name and address","operationId":"put_me_billing_account_v1_me_billing_account_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/top-up":{"post":{"tags":["me"],"summary":"Top Up","operationId":"top_up_v1_me_billing_top_up_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/top-up/verify":{"post":{"tags":["me"],"summary":"Verify Top Up","operationId":"verify_top_up_v1_me_billing_top_up_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopUpVerifyIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeBillingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/budget":{"put":{"tags":["me"],"summary":"Set or clear the monthly budget reminder","operationId":"put_me_budget_v1_me_billing_budget_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeBillingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/invoices":{"get":{"tags":["me"],"summary":"Personal statements and invoices","operationId":"list_me_invoices_v1_me_billing_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/InvoiceHistoryOut"},"type":"array","title":"Response List Me Invoices V1 Me Billing Invoices Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/invoices/current/pdf":{"get":{"tags":["me"],"summary":"Download a PDF of this month's usage so far","operationId":"me_current_invoice_pdf_v1_me_billing_invoices_current_pdf_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/spend-summary":{"get":{"tags":["me"],"summary":"One month of usage by organization and meter","operationId":"spend_summary_v1_me_billing_spend_summary_get","parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendSummaryOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing/spend-summary.csv":{"get":{"tags":["me"],"summary":"Download the month's spend summary as CSV","operationId":"spend_summary_csv_v1_me_billing_spend_summary_csv_get","parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing/spend-summary.pdf":{"get":{"tags":["me"],"summary":"Download the month's spend summary as a PDF report","operationId":"spend_summary_pdf_v1_me_billing_spend_summary_pdf_get","parameters":[{"name":"month","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$"},{"type":"null"}],"title":"Month"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing/invoices/{invoice_id}/pdf":{"get":{"tags":["me"],"summary":"Download a personal statement or invoice as PDF","operationId":"me_invoice_pdf_v1_me_billing_invoices__invoice_id__pdf_get","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing/ledger":{"get":{"tags":["me"],"summary":"Ledger","operationId":"ledger_v1_me_billing_ledger_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Ledger V1 Me Billing Ledger Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/invoices/{invoice_id}/pay":{"post":{"tags":["me"],"summary":"Pay an open personal invoice","description":"Retry the saved-card charge; fall back to the invoice's payment link when present.","operationId":"pay_invoice_v1_me_billing_invoices__invoice_id__pay_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayInvoiceOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/billing/payment-methods":{"get":{"tags":["me"],"summary":"List Methods","operationId":"list_methods_v1_me_billing_payment_methods_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PaymentMethodOut"},"type":"array","title":"Response List Methods V1 Me Billing Payment Methods Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["me"],"summary":"Start card mandate authorisation","operationId":"start_mandate_v1_me_billing_payment_methods_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MandateStartIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MandateStartOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/payment-methods/confirm":{"post":{"tags":["me"],"summary":"Confirm card mandate after checkout","operationId":"confirm_mandate_v1_me_billing_payment_methods_confirm_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MandateConfirmIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentMethodOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/billing/payment-methods/{method_id}":{"delete":{"tags":["me"],"summary":"Remove a saved card (not the last one)","operationId":"delete_method_v1_me_billing_payment_methods__method_id__delete","parameters":[{"name":"method_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Method Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/me/onboarding":{"get":{"tags":["me"],"summary":"Onboarding Status","operationId":"onboarding_status_v1_me_onboarding_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/onboarding/account-type":{"put":{"tags":["me"],"summary":"Set Account Type","operationId":"set_account_type_v1_me_onboarding_account_type_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountTypeIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/onboarding/college":{"post":{"tags":["me"],"summary":"Submit College","operationId":"submit_college_v1_me_onboarding_college_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollegeSubmitIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/onboarding/payment":{"post":{"tags":["me"],"summary":"Complete Payment","operationId":"complete_payment_v1_me_onboarding_payment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentCompleteIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStatusOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/people/photos":{"post":{"tags":["people"],"summary":"Profile photos of people you share an organization with","description":"By email, since that is what every list of people carries. Addresses of people the caller\nmay not see, or with neither photo, are left out.","operationId":"people_photos_v1_people_photos_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeoplePhotosIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeoplePhotosOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/people/{user_id}/photo":{"get":{"tags":["people"],"summary":"A person's uploaded photo","operationId":"get_photo_v1_people__user_id__photo_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."},{"name":"if-none-match","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"If-None-Match"}}],"responses":{"200":{"description":"The photo (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}}},"/v1/me/photo":{"get":{"tags":["people"],"summary":"My profile photos","operationId":"my_photo_v1_me_photo_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyPhotoOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["people"],"summary":"Upload my profile photo (PNG, JPEG or WebP; cropped to a square)","operationId":"put_my_photo_v1_me_photo_put","requestBody":{"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyPhotoOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"delete":{"tags":["people"],"summary":"Remove my uploaded profile photo","operationId":"delete_my_photo_v1_me_photo_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyPhotoOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/me/photo/google":{"post":{"tags":["people"],"summary":"Use the photo of my Google account","description":"`id_token` comes from Google's sign-in button for the customer Google client. Its account\nmust already be one of this account's sign-in methods (409 `google_not_linked`).","operationId":"use_google_photo_v1_me_photo_google_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GooglePhotoIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyPhotoOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/enterprises":{"get":{"tags":["enterprises"],"summary":"List my enterprises","operationId":"list_enterprises_v1_enterprises_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["enterprises"],"summary":"Create an enterprise","description":"No step-up: a new enterprise is empty, and the creator becomes its owner.","operationId":"create_enterprise_v1_enterprises_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/enterprises/{enterprise_id}":{"get":{"tags":["enterprises"],"summary":"Enterprise overview","operationId":"get_enterprise_v1_enterprises__enterprise_id__get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"patch":{"tags":["enterprises"],"summary":"Rename an enterprise","operationId":"update_enterprise_v1_enterprises__enterprise_id__patch","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/organizations":{"get":{"tags":["enterprises"],"summary":"Organizations in this enterprise","operationId":"list_organizations_v1_enterprises__enterprise_id__organizations_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOrganizationList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["enterprises"],"summary":"Create an organization in this enterprise","description":"The definer function creates the organization and makes the caller its owner;\nthe default project is added here, under normal tenant context.","operationId":"create_organization_v1_enterprises__enterprise_id__organizations_post","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOrganizationCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/organizations/{organization_id}/attach":{"post":{"tags":["enterprises"],"summary":"Attach an existing organization I own","operationId":"attach_organization_v1_enterprises__enterprise_id__organizations__organization_id__attach_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/organizations/{organization_id}/detach":{"post":{"tags":["enterprises"],"summary":"Detach an organization from this enterprise","operationId":"detach_organization_v1_enterprises__enterprise_id__organizations__organization_id__detach_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/organizations/{organization_id}/join":{"post":{"tags":["enterprises"],"summary":"Join an organization in this enterprise (audited)","description":"The only way an enterprise role turns into access to an organization's data,\nand it writes `enterprise.member_joined` into that organization's own log.","operationId":"join_organization_v1_enterprises__enterprise_id__organizations__organization_id__join_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseJoin"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseOrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/members":{"get":{"tags":["enterprises"],"summary":"People across this enterprise's organizations","operationId":"list_members_v1_enterprises__enterprise_id__members_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseMemberList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/memberships":{"get":{"tags":["enterprises"],"summary":"Enterprise roles","operationId":"list_memberships_v1_enterprises__enterprise_id__memberships_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseMembershipList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/memberships/{user_id}":{"put":{"tags":["enterprises"],"summary":"Set someone's enterprise role","operationId":"set_membership_v1_enterprises__enterprise_id__memberships__user_id__put","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseMembershipUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseMembershipOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["enterprises"],"summary":"Remove someone's enterprise role","operationId":"delete_membership_v1_enterprises__enterprise_id__memberships__user_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/usage":{"get":{"tags":["enterprises"],"summary":"Usage across the enterprise","operationId":"usage_v1_enterprises__enterprise_id__usage_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseUsageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/audit-events":{"get":{"tags":["enterprises"],"summary":"Merged audit log (enterprise plus its organizations)","description":"One feed over both logs, keyset-paged on (created_at, id) so a page boundary\ncannot drop an event that arrives between requests.","operationId":"audit_events_v1_enterprises__enterprise_id__audit_events_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseAuditEventList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing":{"get":{"tags":["billing"],"summary":"The enterprise's credit and usage","operationId":"get_enterprise_billing_v1_enterprises__enterprise_id__billing_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/top-up":{"post":{"tags":["billing"],"summary":"Start adding credit for the enterprise (Razorpay checkout)","operationId":"enterprise_top_up_v1_enterprises__enterprise_id__billing_top_up_post","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/top-up/verify":{"post":{"tags":["billing"],"summary":"Confirm a Razorpay top-up payment","operationId":"enterprise_top_up_verify_v1_enterprises__enterprise_id__billing_top_up_verify_post","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopupVerifyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/budget":{"put":{"tags":["billing"],"summary":"Set or clear the monthly budget reminder","operationId":"enterprise_budget_v1_enterprises__enterprise_id__billing_budget_put","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BudgetIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnterpriseBillingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/usage":{"get":{"tags":["billing"],"summary":"Daily usage of all the enterprise's organizations","operationId":"enterprise_usage_v1_enterprises__enterprise_id__billing_usage_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingUsageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/ledger":{"get":{"tags":["billing"],"summary":"Credit added and usage charged","operationId":"enterprise_ledger_v1_enterprises__enterprise_id__billing_ledger_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LedgerOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/account":{"put":{"tags":["billing"],"summary":"Set the billing name, address and GSTIN","operationId":"enterprise_account_v1_enterprises__enterprise_id__billing_account_put","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAccountOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/billing/invoices":{"get":{"tags":["billing"],"summary":"Statements and invoices of the enterprise","operationId":"enterprise_invoices_v1_enterprises__enterprise_id__billing_invoices_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label":{"get":{"tags":["white-label"],"summary":"The enterprise's brand and custom domains","operationId":"get_white_label_v1_enterprises__enterprise_id__white_label_get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label/brand":{"put":{"tags":["white-label"],"summary":"Create or change the brand","operationId":"put_brand_v1_enterprises__enterprise_id__white_label_brand_put","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label/brand/{kind}":{"get":{"tags":["white-label"],"summary":"The brand's logo or favicon","operationId":"get_brand_image_v1_enterprises__enterprise_id__white_label_brand__kind__get","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo","favicon"],"type":"string","title":"Kind"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"The image (PNG).","content":{"image/png":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["white-label"],"summary":"Upload the logo or the favicon (PNG, JPEG or WebP; stored as PNG)","operationId":"put_brand_image_v1_enterprises__enterprise_id__white_label_brand__kind__put","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo","favicon"],"type":"string","title":"Kind"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}},"delete":{"tags":["white-label"],"summary":"Remove the logo or the favicon","operationId":"delete_brand_image_v1_enterprises__enterprise_id__white_label_brand__kind__delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo","favicon"],"type":"string","title":"Kind"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label/domains":{"post":{"tags":["white-label"],"summary":"Add a custom hostname","operationId":"add_domain_v1_enterprises__enterprise_id__white_label_domains_post","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label/domains/{domain_id}/check":{"post":{"tags":["white-label"],"summary":"Check the DNS records now","operationId":"check_domain_v1_enterprises__enterprise_id__white_label_domains__domain_id__check_post","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/enterprises/{enterprise_id}/white-label/domains/{domain_id}":{"delete":{"tags":["white-label"],"summary":"Remove a custom hostname","operationId":"remove_domain_v1_enterprises__enterprise_id__white_label_domains__domain_id__delete","parameters":[{"name":"domain_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Domain Id"}},{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhiteLabelOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/overview":{"get":{"tags":["staff"],"summary":"Platform overview","operationId":"overview_v1_staff_overview_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffOverviewOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/pipeline":{"get":{"tags":["staff"],"summary":"Telemetry pipeline health","description":"Always 200: a failed probe is reported as a component, not as an error.","operationId":"pipeline_v1_staff_pipeline_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/usage":{"get":{"tags":["staff"],"summary":"Platform daily usage totals","operationId":"usage_v1_staff_usage_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users":{"get":{"tags":["staff"],"summary":"User directory","operationId":"list_users_v1_staff_users_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Prefix match on name or email.","title":"Q"},"description":"Prefix match on name or email."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}":{"get":{"tags":["staff"],"summary":"User detail","operationId":"get_user_v1_staff_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/suspend":{"post":{"tags":["staff"],"summary":"Suspend a user","operationId":"suspend_user_v1_staff_users__user_id__suspend_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/restore":{"post":{"tags":["staff"],"summary":"Restore a user","operationId":"restore_user_v1_staff_users__user_id__restore_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/reset-mfa":{"post":{"tags":["staff"],"summary":"Reset a user's second factors","description":"Throws away every factor and recovery code, so the identity check is recorded.","operationId":"reset_user_mfa_v1_staff_users__user_id__reset_mfa_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityCheckBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/revoke-sessions":{"post":{"tags":["staff"],"summary":"Revoke a user's sessions","operationId":"revoke_user_sessions_v1_staff_users__user_id__revoke_sessions_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/delete":{"post":{"tags":["staff"],"summary":"Delete a user's account","description":"Anonymise the account (migration 0009): personal data, sign-in methods, factors and\nsessions go; the row and the audit history stay. Order: the database (not committed),\nthen the Dex password, then the broker, then COMMIT. If the commit still fails, the\naccount is intact but has no Dex password, which \"Forgot your password?\" repairs.","operationId":"delete_user_v1_staff_users__user_id__delete_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserDelete"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffUserOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/password-reset":{"post":{"tags":["staff"],"summary":"Email a user a password reset link","description":"Staff never see or choose the password: the person gets a one-time link.","operationId":"send_user_password_reset_v1_staff_users__user_id__password_reset_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPasswordResetSent"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/organizations":{"get":{"tags":["staff"],"summary":"Organization directory","operationId":"list_organizations_v1_staff_organizations_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Prefix match on name or email.","title":"Q"},"description":"Prefix match on name or email."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffOrganizationList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/organizations/{organization_id}":{"get":{"tags":["staff"],"summary":"Organization detail","operationId":"get_organization_v1_staff_organizations__organization_id__get","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffOrganizationDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/organizations/{organization_id}/suspend":{"post":{"tags":["staff"],"summary":"Suspend an organization","operationId":"suspend_organization_v1_staff_organizations__organization_id__suspend_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffOrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/organizations/{organization_id}/restore":{"post":{"tags":["staff"],"summary":"Restore an organization","operationId":"restore_organization_v1_staff_organizations__organization_id__restore_post","parameters":[{"name":"organization_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Organization Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffOrganizationOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/enterprises":{"get":{"tags":["staff"],"summary":"Enterprise directory","operationId":"list_enterprises_v1_staff_enterprises_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Prefix match on name or email.","title":"Q"},"description":"Prefix match on name or email."},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffEnterpriseList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/enterprises/{enterprise_id}":{"get":{"tags":["staff"],"summary":"Enterprise detail","operationId":"get_enterprise_v1_staff_enterprises__enterprise_id__get","parameters":[{"name":"enterprise_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffEnterpriseDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/staff-users":{"get":{"tags":["staff"],"summary":"Staff accounts","operationId":"list_staff_users_v1_staff_staff_users_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMemberList"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["staff"],"summary":"Invite a staff member","description":"Re-inviting a disabled account resets its binding: the next sign-in binds a\nfresh identity and must register a passkey again (design 6.6).","operationId":"invite_staff_user_v1_staff_staff_users_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffInviteCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMemberOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/staff-users/{staff_id}/disable":{"post":{"tags":["staff"],"summary":"Disable a staff member","operationId":"disable_staff_user_v1_staff_staff_users__staff_id__disable_post","parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Staff Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMemberOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/staff-users/{staff_id}/reset-mfa":{"post":{"tags":["staff"],"summary":"Reset a staff member's second factors","operationId":"reset_staff_mfa_v1_staff_staff_users__staff_id__reset_mfa_post","parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Staff Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityCheckBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMemberOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/staff-users/{staff_id}":{"get":{"tags":["staff"],"summary":"Staff member detail","operationId":"get_staff_user_v1_staff_staff_users__staff_id__get","parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Staff Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffMemberDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/staff-users/{staff_id}/password-reset":{"post":{"tags":["staff"],"summary":"Email a staff member a password link","description":"For an active or invited member; a member without a password gets a link that sets\nthe first one. Your own password changes on your Security page.","operationId":"send_staff_password_reset_v1_staff_staff_users__staff_id__password_reset_post","parameters":[{"name":"staff_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Staff Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPasswordReset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPasswordResetSent"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/audit-events":{"get":{"tags":["staff"],"summary":"Staff audit log","operationId":"audit_events_v1_staff_audit_events_get","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffAuditEventList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/email/test":{"post":{"tags":["staff"],"summary":"Send a test email","operationId":"send_test_email_v1_staff_email_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTestRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTestAccepted"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/security":{"get":{"tags":["staff"],"summary":"Platform security policy","operationId":"get_security_policy_v1_staff_settings_security_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityPolicyOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["staff"],"summary":"Change the security policy","operationId":"update_security_policy_v1_staff_settings_security_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityPolicyUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SecurityPolicyOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email":{"get":{"tags":["staff"],"summary":"Email delivery settings","operationId":"get_email_delivery_v1_staff_settings_email_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDeliveryOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["staff"],"summary":"Change email delivery","operationId":"update_email_delivery_v1_staff_settings_email_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDeliveryUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDeliveryOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email/verify":{"post":{"tags":["staff"],"summary":"Check the email connection again","description":"Ask the worker to check the connection now; the result appears under `check`.","operationId":"verify_email_delivery_v1_staff_settings_email_verify_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDeliveryOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email/gmail/authorize":{"post":{"tags":["staff"],"summary":"Start connecting a Gmail mailbox","description":"Returns Google's consent URL; the browser goes there and comes back to the callback.","operationId":"start_gmail_connect_v1_staff_settings_email_gmail_authorize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailConnectRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GmailConnectStart"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email/gmail/disconnect":{"post":{"tags":["staff"],"summary":"Disconnect the Gmail mailbox","description":"Forgets the refresh token here. Google keeps the grant until it is removed from the\naccount's third-party access (the API cannot revoke a token it cannot read).","operationId":"disconnect_gmail_v1_staff_settings_email_gmail_disconnect_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailDeliveryOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email/templates":{"get":{"tags":["staff"],"summary":"Email template catalog","operationId":"list_templates_v1_staff_settings_email_templates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/EmailTemplateListItem"},"type":"array","title":"Response List Templates V1 Staff Settings Email Templates Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/email/templates/{key}":{"get":{"tags":["staff"],"summary":"One email template","operationId":"get_template_v1_staff_settings_email_templates__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["staff"],"summary":"Save email template override","operationId":"save_template_v1_staff_settings_email_templates__key__put","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/settings/email/templates/{key}/reset":{"post":{"tags":["staff"],"summary":"Reset email template to shipped default","operationId":"reset_template_v1_staff_settings_email_templates__key__reset_post","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/settings/email/templates/{key}/preview":{"post":{"tags":["staff"],"summary":"Preview an email template","operationId":"preview_template_v1_staff_settings_email_templates__key__preview_post","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplatePreviewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailTemplatePreviewOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/email/outbox":{"get":{"tags":["staff"],"summary":"Email outbox queue","operationId":"list_outbox_v1_staff_email_outbox_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["queued","sending","sent","failed","dead","cancelled","skipped"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"template","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template"}},{"name":"to_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"To Domain"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOutboxListOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/email/outbox/{row_id}":{"get":{"tags":["staff"],"summary":"One email outbox row","operationId":"get_outbox_v1_staff_email_outbox__row_id__get","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Row Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOutboxDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/email/outbox/{row_id}/retry":{"post":{"tags":["staff"],"summary":"Retry a failed or dead email","operationId":"retry_outbox_v1_staff_email_outbox__row_id__retry_post","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Row Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOutboxDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/email/outbox/{row_id}/cancel":{"post":{"tags":["staff"],"summary":"Cancel a queued or failed email","operationId":"cancel_outbox_v1_staff_email_outbox__row_id__cancel_post","parameters":[{"name":"row_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Row Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailOutboxDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/settings/sign-in":{"get":{"tags":["staff"],"summary":"Sign-in methods","description":"Also brings Dex in line with the saved settings, so a failed save heals on reload.","operationId":"get_sign_in_settings_v1_staff_settings_sign_in_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignInSettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/sign-in/{realm}/{provider}":{"put":{"tags":["staff"],"summary":"Change a sign-in method","operationId":"update_sign_in_provider_v1_staff_settings_sign_in__realm___provider__put","parameters":[{"name":"realm","in":"path","required":true,"schema":{"enum":["customer","staff"],"type":"string","title":"Realm"}},{"name":"provider","in":"path","required":true,"schema":{"enum":["google","github"],"type":"string","title":"Provider"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignInProviderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignInSettingsOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/meta":{"get":{"tags":["staff-device-templates"],"summary":"Options and limits for the template form","operationId":"template_meta_v1_staff_device_templates_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateMeta"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/device-templates":{"get":{"tags":["staff-device-templates"],"summary":"List device templates in every status","operationId":"list_templates_v1_staff_device_templates_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"enum":["draft","published","archived"],"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["staff-device-templates"],"summary":"Create a draft template","operationId":"create_template_v1_staff_device_templates_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}":{"get":{"tags":["staff-device-templates"],"summary":"Get a device template","operationId":"get_template_v1_staff_device_templates__template_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"put":{"tags":["staff-device-templates"],"summary":"Replace the content of a template","operationId":"update_template_v1_staff_device_templates__template_id__put","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"delete":{"tags":["staff-device-templates"],"summary":"Delete a never-published draft","operationId":"delete_template_v1_staff_device_templates__template_id__delete","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateTransition"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/revisions":{"get":{"tags":["staff-device-templates"],"summary":"Template history, newest first","operationId":"list_revisions_v1_staff_device_templates__template_id__revisions_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":12},{"type":"null"}],"title":"Cursor"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRevisionList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/revisions/{version}":{"get":{"tags":["staff-device-templates"],"summary":"One revision with its full snapshot","operationId":"get_revision_v1_staff_device_templates__template_id__revisions__version__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"version","in":"path","required":true,"schema":{"type":"integer","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateRevisionDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/image":{"get":{"tags":["staff-device-templates"],"summary":"Template image in any status (staff)","operationId":"get_template_image_v1_staff_device_templates__template_id__image_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."}],"responses":{"200":{"description":"Template image (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"\"<sha256 hex>-full|thumb\""},"Cache-Control":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}},"put":{"tags":["staff-device-templates"],"summary":"Upload the template image (raw PNG, JPEG or WebP body)","operationId":"put_template_image_v1_staff_device_templates__template_id__image_put","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"expected_version","in":"query","required":true,"schema":{"type":"integer","minimum":1,"title":"Expected Version"}},{"name":"reason","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Reason"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateImageOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}}},"/v1/staff/device-templates/{template_id}/publish":{"post":{"tags":["staff-device-templates"],"summary":"Publish a template","operationId":"publish_template_v1_staff_device_templates__template_id__publish_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/archive":{"post":{"tags":["staff-device-templates"],"summary":"Archive a published template","operationId":"archive_template_v1_staff_device_templates__template_id__archive_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/restore":{"post":{"tags":["staff-device-templates"],"summary":"Restore an archived template as a draft","operationId":"restore_template_v1_staff_device_templates__template_id__restore_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTemplateOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/assets":{"post":{"tags":["staff-device-templates"],"summary":"Upload a guide screenshot or pinout picture (raw PNG, JPEG or WebP body)","operationId":"post_template_asset_v1_staff_device_templates__template_id__assets_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"kind","in":"query","required":true,"schema":{"enum":["pinout","guide"],"type":"string","description":"`guide` for a section screenshot, `pinout` for the pin diagram.","title":"Kind"},"description":"`guide` for a section screenshot, `pinout` for the pin diagram."}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateAssetOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}}},"/v1/staff/device-templates/{template_id}/assets/{asset_id}":{"get":{"tags":["staff-device-templates"],"summary":"A template picture in any status (staff)","operationId":"get_template_asset_v1_staff_device_templates__template_id__assets__asset_id__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Asset Id"}},{"name":"size","in":"query","required":false,"schema":{"enum":["full","thumb"],"type":"string","description":"Rendition: 320 px thumbnail or full size.","default":"full","title":"Size"},"description":"Rendition: 320 px thumbnail or full size."},{"name":"v","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"description":"Cache key: first 12 hex characters of the image hash.","title":"V"},"description":"Cache key: first 12 hex characters of the image hash."}],"responses":{"200":{"description":"Template image (re-encoded PNG or WebP).","content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"\"<sha256 hex>-full|thumb\""},"Cache-Control":{"schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"},"304":{"description":"The cached copy is current."}}}},"/v1/staff/device-templates/{template_id}/firmware":{"get":{"tags":["staff-device-templates"],"summary":"List a template's firmware releases","operationId":"list_releases_v1_staff_device_templates__template_id__firmware_get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["staff-device-templates"],"summary":"Upload a firmware release as a draft","operationId":"create_release_v1_staff_device_templates__template_id__firmware_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/firmware/{release_id}/parts/{role}":{"get":{"tags":["staff-device-templates"],"summary":"Download one part of a firmware release","operationId":"release_part_v1_staff_device_templates__template_id__firmware__release_id__parts__role__get","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}},{"name":"role","in":"path","required":true,"schema":{"enum":["bootloader","partitions","boot_app0","app"],"type":"string","title":"Role"}}],"responses":{"200":{"description":"Successful Response","content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/firmware/{release_id}/publish":{"post":{"tags":["staff-device-templates"],"summary":"Publish a firmware release","operationId":"publish_release_v1_staff_device_templates__template_id__firmware__release_id__publish_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/device-templates/{template_id}/firmware/{release_id}/withdraw":{"post":{"tags":["staff-device-templates"],"summary":"Withdraw a published firmware release","operationId":"withdraw_release_v1_staff_device_templates__template_id__firmware__release_id__withdraw_post","parameters":[{"name":"template_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Template Id"}},{"name":"release_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Release Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseTransition"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FirmwareReleaseOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/rates":{"get":{"tags":["staff"],"summary":"Hourly rates and billing settings","operationId":"get_pricing_v1_staff_billing_rates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPricingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/billing/rates/{meter}":{"put":{"tags":["staff"],"summary":"Change one meter's price","operationId":"put_rate_v1_staff_billing_rates__meter__put","parameters":[{"name":"meter","in":"path","required":true,"schema":{"enum":["devices","messages","storage","members","projects","dashboards","alert_rules"],"type":"string","title":"Meter"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffRateIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPricingOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/settings":{"put":{"tags":["staff"],"summary":"Change the billing settings","operationId":"put_settings_v1_staff_billing_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffBillingSettingsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffPricingOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/billing/wallets":{"get":{"tags":["staff"],"summary":"Wallets","operationId":"list_wallets_v1_staff_billing_wallets_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Q"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"enum":["prepaid","postpaid"],"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"enum":["ok","low","grace","read_only"],"type":"string"},{"type":"null"}],"title":"State"}},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"}},{"name":"enterprise_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Enterprise Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletList"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/wallets/{wallet_id}":{"get":{"tags":["staff"],"summary":"A wallet, its ledger and invoices","operationId":"get_wallet_v1_staff_billing_wallets__wallet_id__get","parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wallet Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/wallet-terms":{"put":{"tags":["staff"],"summary":"Set a wallet's mode, limit, discount and ceilings","operationId":"put_wallet_terms_v1_staff_billing_wallet_terms_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletTermsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletDetail"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/billing/wallets/{wallet_id}/adjustments":{"post":{"tags":["staff"],"summary":"Grant credit, correct or refund a wallet","operationId":"adjust_wallet_v1_staff_billing_wallets__wallet_id__adjustments_post","parameters":[{"name":"wallet_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Wallet Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffAdjustmentIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/invoices/{invoice_id}/paid":{"post":{"tags":["staff"],"summary":"Record a postpaid invoice paid outside Razorpay","operationId":"mark_invoice_paid_v1_staff_billing_invoices__invoice_id__paid_post","parameters":[{"name":"invoice_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Invoice Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffInvoicePaidIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffWalletDetail"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/billing/razorpay":{"get":{"tags":["staff"],"summary":"Razorpay settings (no secrets)","operationId":"get_razorpay_v1_staff_billing_razorpay_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpaySettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["staff"],"summary":"Update Razorpay settings","operationId":"put_razorpay_v1_staff_billing_razorpay_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpaySettingsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpaySettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/billing/razorpay/probe":{"post":{"tags":["staff"],"summary":"Test Razorpay API connection","operationId":"probe_razorpay_v1_staff_billing_razorpay_probe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RazorpaySettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/accounts/settings":{"get":{"tags":["staff"],"summary":"Get Settings","operationId":"get_settings_v1_staff_accounts_settings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["staff"],"summary":"Put Settings","operationId":"put_settings_v1_staff_accounts_settings_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSettingsIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountSettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/accounts/college-reviews":{"get":{"tags":["staff"],"summary":"List College Reviews","operationId":"list_college_reviews_v1_staff_accounts_college_reviews_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CollegeReviewOut"},"type":"array","title":"Response List College Reviews V1 Staff Accounts College Reviews Get"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/accounts/college-reviews/{user_id}/document":{"get":{"tags":["staff"],"summary":"College Document","operationId":"college_document_v1_staff_accounts_college_reviews__user_id__document_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/accounts/college-reviews/{user_id}":{"post":{"tags":["staff"],"summary":"Decide College","operationId":"decide_college_v1_staff_accounts_college_reviews__user_id__post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollegeDecisionIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollegeReviewOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/settings/platform":{"get":{"tags":["staff"],"summary":"Platform settings","operationId":"get_platform_settings_v1_staff_settings_platform_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"put":{"tags":["staff"],"summary":"Change platform settings","operationId":"put_platform_settings_v1_staff_settings_platform_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSettingsUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSettingsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/settings/platform/images/{kind}":{"put":{"tags":["staff"],"summary":"Upload a platform logo, favicon or sign-in image (PNG, JPEG or WebP)","operationId":"put_platform_image_v1_staff_settings_platform_images__kind__put","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo_light","logo_dark","favicon","login_image"],"type":"string","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSettingsOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"image/png":{"schema":{"type":"string","format":"binary"}},"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/webp":{"schema":{"type":"string","format":"binary"}}}}},"delete":{"tags":["staff"],"summary":"Remove a platform image","operationId":"delete_platform_image_v1_staff_settings_platform_images__kind__delete","parameters":[{"name":"kind","in":"path","required":true,"schema":{"enum":["logo_light","logo_dark","favicon","login_image"],"type":"string","title":"Kind"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformSettingsOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/settings/platform/fonts":{"get":{"tags":["staff"],"summary":"Uploaded fonts","operationId":"list_platform_fonts_v1_staff_settings_platform_fonts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformFontOut"},"title":"Response List Platform Fonts V1 Staff Settings Platform Fonts Get"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}},"post":{"tags":["staff"],"summary":"Upload a font (WOFF2, at most 1 MiB, 12 in all)","operationId":"add_platform_font_v1_staff_settings_platform_fonts_post","parameters":[{"name":"family","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":40,"description":"The name pages use for it.","title":"Family"},"description":"The name pages use for it."},{"name":"weight_min","in":"query","required":false,"schema":{"type":"integer","maximum":900,"minimum":100,"default":400,"title":"Weight Min"}},{"name":"weight_max","in":"query","required":false,"schema":{"type":"integer","maximum":900,"minimum":100,"default":400,"title":"Weight Max"}},{"name":"style","in":"query","required":false,"schema":{"type":"string","pattern":"^(normal|italic)$","default":"normal","title":"Style"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformFontOut"},"title":"Response Add Platform Font V1 Staff Settings Platform Fonts Post"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}},"requestBody":{"required":true,"content":{"font/woff2":{"schema":{"type":"string","format":"binary"}}}}}},"/v1/staff/settings/platform/fonts/{font_id}":{"delete":{"tags":["staff"],"summary":"Remove an uploaded font","operationId":"delete_platform_font_v1_staff_settings_platform_fonts__font_id__delete","parameters":[{"name":"font_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Font Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlatformFontOut"},"title":"Response Delete Platform Font V1 Staff Settings Platform Fonts  Font Id  Delete"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/announcements":{"get":{"tags":["staff"],"summary":"Announcements","operationId":"list_announcements_v1_staff_announcements_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffAnnouncementsOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}},"post":{"tags":["staff"],"summary":"Create an announcement","operationId":"create_announcement_v1_staff_announcements_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffAnnouncementOut"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Unprocessable Content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"502":{"description":"Bad Gateway","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/v1/staff/announcements/{announcement_id}":{"put":{"tags":["staff"],"summary":"Change an announcement","operationId":"update_announcement_v1_staff_announcements__announcement_id__put","parameters":[{"name":"announcement_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Announcement Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffAnnouncementOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/announcements/{announcement_id}/delete":{"post":{"tags":["staff"],"summary":"Delete an announcement","operationId":"delete_announcement_v1_staff_announcements__announcement_id__delete_post","parameters":[{"name":"announcement_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Announcement Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/devices":{"get":{"tags":["staff"],"summary":"Devices on the platform","operationId":"list_devices_v1_staff_devices_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Prefix of the device or organization name.","title":"Q"},"description":"Prefix of the device or organization name."},{"name":"organization_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(active|disabled|archived|online)$"},{"type":"null"}],"title":"Status"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffDevicesOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/devices/{device_id}":{"get":{"tags":["staff"],"summary":"One device, with its data","operationId":"get_device_v1_staff_devices__device_id__get","parameters":[{"name":"device_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Device Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffDeviceDetailOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/api-keys":{"get":{"tags":["staff"],"summary":"Customers' API keys","operationId":"list_api_keys_v1_staff_api_keys_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"description":"Prefix of the key name or owner email.","title":"Q"},"description":"Prefix of the key name or owner email."},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Cursor"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffApiKeysOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/api-keys/{key_id}/revoke":{"post":{"tags":["staff"],"summary":"Revoke a customer's API key","operationId":"revoke_api_key_v1_staff_api_keys__key_id__revoke_post","parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Key Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonBody"}}}},"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/overview/trends":{"get":{"tags":["staff"],"summary":"Daily platform trends","operationId":"trends_v1_staff_overview_trends_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":7,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaffTrendsOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}},"/v1/staff/users/{user_id}/support-view":{"post":{"tags":["staff"],"summary":"Open the customer's console read-only (support view)","operationId":"start_support_view_v1_staff_users__user_id__support_view_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportViewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportViewOut"}}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unprocessable Content"},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Too Many Requests"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Gateway"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Service Unavailable"}}}}},"components":{"schemas":{"AccountDelete":{"properties":{"confirm_email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Confirm Email","description":"The account's address, typed again."}},"type":"object","required":["confirm_email"],"title":"AccountDelete"},"AccountSettingsIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"expected_version":{"type":"integer","title":"Expected Version"},"document":{"additionalProperties":true,"type":"object","title":"Document"}},"type":"object","required":["reason","expected_version","document"],"title":"AccountSettingsIn"},"AccountSettingsOut":{"properties":{"document":{"additionalProperties":true,"type":"object","title":"Document"},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"promo_usage":{"additionalProperties":{"type":"integer"},"type":"object","title":"Promo Usage","default":{}}},"type":"object","required":["document","version","updated_at","counts"],"title":"AccountSettingsOut"},"AccountTypeIn":{"properties":{"account_type":{"type":"string","enum":["student","individual","company"],"title":"Account Type"},"company_name":{"anyOf":[{"type":"string","maxLength":200,"minLength":1},{"type":"null"}],"title":"Company Name"},"company_gstin":{"anyOf":[{"type":"string","pattern":"^[0-9A-Z]{15}$"},{"type":"null"}],"title":"Company Gstin"},"company_size":{"anyOf":[{"type":"string","enum":["1","2-10","11-50","51-200","201+"]},{"type":"null"}],"title":"Company Size"}},"type":"object","required":["account_type"],"title":"AccountTypeIn"},"AlertDeviceSummary":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["device_id","severity","count"],"title":"AlertDeviceSummary"},"AlertEventList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AlertEventOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items","next_cursor"],"title":"AlertEventList"},"AlertEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"rule_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Rule Id"},"rule_name":{"type":"string","title":"Rule Name"},"kind":{"type":"string","title":"Kind"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"device_name":{"type":"string","title":"Device Name"},"dashboard_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"},"widget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Widget Id"},"message":{"type":"string","title":"Message"},"trigger_value":{"title":"Trigger Value"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"resolved_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Resolved At"},"acknowledged_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Acknowledged At"},"acknowledged_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Acknowledged By"},"acknowledged_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acknowledged By Name"},"can_acknowledge":{"type":"boolean","title":"Can Acknowledge"}},"type":"object","required":["id","project_id","rule_id","rule_name","kind","severity","device_id","device_name","dashboard_id","widget_id","message","opened_at","resolved_at","acknowledged_at","acknowledged_by","acknowledged_by_name","can_acknowledge"],"title":"AlertEventOut"},"AlertRuleIn":{"properties":{"kind":{"type":"string","enum":["metric","offline","no_data","widget","platform"],"title":"Kind"},"condition":{"additionalProperties":true,"type":"object","title":"Condition","description":"Shaped per kind. metric and widget: {metric, op, value, value2, for_seconds, hysteresis}, text ops {metric, op, text}, a joystick axis adds part (x or y), area ops {metric, op, lat, lon, radius_m, lon_metric}; offline: {after_seconds}; no_data: {minutes, metric}; platform: {events}. A widget rule's metric is one of the widget's readings (its own by default) and its op one the widget type allows."},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"null: every project of the organization."},"device_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500},{"type":"null"}],"title":"Device Ids","description":"null: every device in scope, now and later."},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Only devices made from this template."},"dashboard_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"},"widget_id":{"anyOf":[{"type":"string","pattern":"^[a-z0-9]{6,12}$"},{"type":"null"}],"title":"Widget Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"enabled":{"type":"boolean","title":"Enabled","default":true},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity","default":"warning"},"renotify_minutes":{"anyOf":[{"type":"integer","maximum":10080.0,"minimum":5.0},{"type":"null"}],"title":"Renotify Minutes","description":"Remind recipients this often while it fires (null: never)."},"notify_resolved":{"type":"boolean","title":"Notify Resolved","default":true},"recipients":{"items":{"$ref":"#/components/schemas/RecipientIn"},"type":"array","maxItems":50,"title":"Recipients"},"channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":20,"title":"Channel Ids","description":"The organization's webhooks it posts to."}},"additionalProperties":false,"type":"object","required":["kind","condition","name"],"title":"AlertRuleIn"},"AlertRuleList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AlertRuleOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"AlertRuleList"},"AlertRuleOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"enabled":{"type":"boolean","title":"Enabled"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"kind":{"type":"string","enum":["metric","offline","no_data","widget","platform"],"title":"Kind"},"condition":{"additionalProperties":true,"type":"object","title":"Condition"},"summary":{"type":"string","title":"Summary"},"devices":{"type":"string","enum":["all","selected"],"title":"Devices"},"device_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Device Ids"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"dashboard_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"},"widget_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Widget Id"},"renotify_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Renotify Minutes"},"notify_resolved":{"type":"boolean","title":"Notify Resolved"},"recipients":{"items":{"$ref":"#/components/schemas/RecipientOut"},"type":"array","title":"Recipients"},"channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Channel Ids"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"can_edit":{"type":"boolean","title":"Can Edit"},"firing":{"type":"integer","title":"Firing","description":"Open incidents of this rule on devices the caller reaches."}},"type":"object","required":["id","project_id","name","description","enabled","severity","kind","condition","summary","devices","device_ids","template_id","dashboard_id","widget_id","renotify_minutes","notify_resolved","recipients","channel_ids","version","created_at","updated_at","can_edit","firing"],"title":"AlertRuleOut"},"AlertRuleScope":{"properties":{"kind":{"type":"string","enum":["metric","offline","no_data","widget","platform"],"title":"Kind"},"condition":{"additionalProperties":true,"type":"object","title":"Condition","description":"Shaped per kind. metric and widget: {metric, op, value, value2, for_seconds, hysteresis}, text ops {metric, op, text}, a joystick axis adds part (x or y), area ops {metric, op, lat, lon, radius_m, lon_metric}; offline: {after_seconds}; no_data: {minutes, metric}; platform: {events}. A widget rule's metric is one of the widget's readings (its own by default) and its op one the widget type allows."},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"null: every project of the organization."},"device_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500},{"type":"null"}],"title":"Device Ids","description":"null: every device in scope, now and later."},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Only devices made from this template."},"dashboard_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"},"widget_id":{"anyOf":[{"type":"string","pattern":"^[a-z0-9]{6,12}$"},{"type":"null"}],"title":"Widget Id"}},"additionalProperties":false,"type":"object","required":["kind","condition"],"title":"AlertRuleScope"},"AlertRuleTestItem":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"device_name":{"type":"string","title":"Device Name"},"result":{"type":"string","enum":["fires","ok","no_value","not_applicable"],"title":"Result"},"value":{"title":"Value"},"detail":{"type":"string","title":"Detail"}},"type":"object","required":["device_id","device_name","result","detail"],"title":"AlertRuleTestItem"},"AlertRuleTestOut":{"properties":{"summary":{"type":"string","title":"Summary"},"total_devices":{"type":"integer","title":"Total Devices"},"items":{"items":{"$ref":"#/components/schemas/AlertRuleTestItem"},"type":"array","title":"Items"}},"type":"object","required":["summary","total_devices","items"],"title":"AlertRuleTestOut"},"AlertRuleUpdate":{"properties":{"kind":{"type":"string","enum":["metric","offline","no_data","widget","platform"],"title":"Kind"},"condition":{"additionalProperties":true,"type":"object","title":"Condition","description":"Shaped per kind. metric and widget: {metric, op, value, value2, for_seconds, hysteresis}, text ops {metric, op, text}, a joystick axis adds part (x or y), area ops {metric, op, lat, lon, radius_m, lon_metric}; offline: {after_seconds}; no_data: {minutes, metric}; platform: {events}. A widget rule's metric is one of the widget's readings (its own by default) and its op one the widget type allows."},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"null: every project of the organization."},"device_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500},{"type":"null"}],"title":"Device Ids","description":"null: every device in scope, now and later."},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Only devices made from this template."},"dashboard_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Dashboard Id"},"widget_id":{"anyOf":[{"type":"string","pattern":"^[a-z0-9]{6,12}$"},{"type":"null"}],"title":"Widget Id"},"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"enabled":{"type":"boolean","title":"Enabled","default":true},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity","default":"warning"},"renotify_minutes":{"anyOf":[{"type":"integer","maximum":10080.0,"minimum":5.0},{"type":"null"}],"title":"Renotify Minutes","description":"Remind recipients this often while it fires (null: never)."},"notify_resolved":{"type":"boolean","title":"Notify Resolved","default":true},"recipients":{"items":{"$ref":"#/components/schemas/RecipientIn"},"type":"array","maxItems":50,"title":"Recipients"},"channel_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":20,"title":"Channel Ids","description":"The organization's webhooks it posts to."},"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"}},"additionalProperties":false,"type":"object","required":["kind","condition","name","expected_version"],"title":"AlertRuleUpdate"},"AlertSummary":{"properties":{"open":{"type":"integer","title":"Open"},"unacknowledged":{"type":"integer","title":"Unacknowledged"},"critical":{"type":"integer","title":"Critical"},"warning":{"type":"integer","title":"Warning"},"info":{"type":"integer","title":"Info"},"devices":{"items":{"$ref":"#/components/schemas/AlertDeviceSummary"},"type":"array","title":"Devices"},"widgets":{"items":{"$ref":"#/components/schemas/AlertWidgetSummary"},"type":"array","title":"Widgets","description":"Only with dashboard_id: its widgets with an open alert."}},"type":"object","required":["open","unacknowledged","critical","warning","info","devices","widgets"],"title":"AlertSummary"},"AlertWidgetSummary":{"properties":{"widget_id":{"type":"string","title":"Widget Id"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"}},"type":"object","required":["widget_id","severity"],"title":"AlertWidgetSummary"},"AnnouncementIn":{"properties":{"title":{"type":"string","maxLength":120,"minLength":1,"title":"Title"},"body":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Body"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity","default":"info"},"audience":{"type":"string","enum":["all","cloud","control","landing"],"title":"Audience","default":"all"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At","description":"Defaults to now."},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"dismissible":{"type":"boolean","title":"Dismissible","default":true},"expected_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Version","description":"Required when changing one."},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["title","reason"],"title":"AnnouncementIn"},"ApiKeyCreate":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"pattern":"^[^\\x00-\\x1f\\x7f]+$","title":"Name","description":"What the key is for, such as the script that uses it."},"expires_in_days":{"type":"integer","enum":[30,90,365],"title":"Expires In Days","description":"How long the key works.","default":90}},"type":"object","required":["name"],"title":"ApiKeyCreate"},"ApiKeyCreated":{"properties":{"key":{"$ref":"#/components/schemas/ApiKeyOut"},"token":{"type":"string","title":"Token","description":"The key itself. Shown once; send it as `Authorization: Bearer <token>`."}},"type":"object","required":["key","token"],"title":"ApiKeyCreated"},"ApiKeyList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ApiKeyOut"},"type":"array","title":"Items"},"limit":{"type":"integer","title":"Limit","description":"How many keys an account may have at once."}},"type":"object","required":["items","limit"],"title":"ApiKeyList"},"ApiKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","name","created_at","expires_at","last_used_at"],"title":"ApiKeyOut"},"AppAuthorizationIn":{"properties":{"code_challenge":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","title":"Code Challenge","description":"BASE64URL(SHA-256(code_verifier)), RFC 7636 S256."},"redirect_uri":{"type":"string","maxLength":300,"title":"Redirect Uri","description":"One of IOTAPS_APP_REDIRECT_URIS, exactly."},"state":{"type":"string","pattern":"^[A-Za-z0-9_-]{22,64}$","title":"State","description":"The app's value, returned unchanged."},"device_name":{"type":"string","maxLength":60,"minLength":1,"title":"Device Name"},"purpose":{"type":"string","enum":["sign_in","step_up"],"title":"Purpose","default":"sign_in"}},"type":"object","required":["code_challenge","redirect_uri","state","device_name"],"title":"AppAuthorizationIn","description":"Confirmed on the cloud panel's /app/authorize page; the app never sends this."},"AppAuthorizationOut":{"properties":{"redirect_url":{"type":"string","title":"Redirect Url","description":"redirect_uri with code and state; valid for 60 seconds."}},"type":"object","required":["redirect_url"],"title":"AppAuthorizationOut"},"AppGoogleSignIn":{"properties":{"id_token":{"type":"string","maxLength":4096,"minLength":20,"title":"Id Token","description":"Google ID token from Credential Manager."},"device_name":{"type":"string","maxLength":60,"minLength":1,"title":"Device Name"}},"type":"object","required":["id_token","device_name"],"title":"AppGoogleSignIn"},"AppPasswordSignIn":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password","writeOnly":true},"device_name":{"type":"string","maxLength":60,"minLength":1,"title":"Device Name"}},"type":"object","required":["email","password","device_name"],"title":"AppPasswordSignIn"},"AppPendingOut":{"properties":{"token":{"type":"string","title":"Token"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"mfa":{"$ref":"#/components/schemas/MfaStateOut"},"user":{"$ref":"#/components/schemas/AppUserOut"}},"type":"object","required":["token","expires_at","mfa","user"],"title":"AppPendingOut","description":"A *pending* app session: like a console sign-in before 2FA, it can only enrol or\nverify a second factor (`/auth/mfa/*` with this bearer token) within 15 minutes.\nThe request that finishes it answers with `app_session`, the token to keep."},"AppPushTokenIn":{"properties":{"token":{"type":"string","maxLength":4096,"minLength":1,"title":"Token"}},"additionalProperties":false,"type":"object","required":["token"],"title":"AppPushTokenIn"},"AppPushTokenOut":{"properties":{"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["updated_at"],"title":"AppPushTokenOut"},"AppSignInOptionsOut":{"properties":{"password":{"type":"boolean","title":"Password","description":"Email and password (`POST /v1/app/sign-in/password`)."},"password_reset":{"type":"boolean","title":"Password Reset","description":"`POST /v1/app/password/forgot` works."},"google_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Id","description":"Google sign-in is on: the server client id the app asks Google for an ID token for."},"github":{"type":"boolean","title":"Github","description":"GitHub sign-in is on; it runs in a browser tab (`/app/authorize`)."},"signup":{"type":"boolean","title":"Signup","description":"Self-service sign-up is open."},"signup_email_verification":{"type":"boolean","title":"Signup Email Verification","description":"Sign-up mails a code first (`POST /v1/app/signup`); false: one form (`POST /v1/app/signup/register`)."}},"type":"object","required":["password","password_reset","google_client_id","github","signup","signup_email_verification"],"title":"AppSignInOptionsOut","description":"What the app's sign-in screen offers, from the same settings as the console's."},"AppSignupCodeIn":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"code":{"type":"string","pattern":"^[0-9]{6}$","title":"Code"}},"type":"object","required":["email","code"],"title":"AppSignupCodeIn"},"AppSignupCodeOut":{"properties":{"email":{"type":"string","title":"Email"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["email","expires_at"],"title":"AppSignupCodeOut"},"AppSignupComplete":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"code":{"type":"string","pattern":"^[0-9]{6}$","title":"Code"},"display_name":{"type":"string","maxLength":100,"minLength":1,"title":"Display Name"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password","writeOnly":true},"device_name":{"type":"string","maxLength":60,"minLength":1,"title":"Device Name"}},"type":"object","required":["email","code","display_name","password","device_name"],"title":"AppSignupComplete"},"AppSignupRegister":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"display_name":{"type":"string","maxLength":100,"minLength":1,"title":"Display Name"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password","writeOnly":true},"device_name":{"type":"string","maxLength":60,"minLength":1,"title":"Device Name"}},"type":"object","required":["email","display_name","password","device_name"],"title":"AppSignupRegister","description":"Sign-up without email verification (policy): the whole account in one request."},"AppSignupStart":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"}},"type":"object","required":["email"],"title":"AppSignupStart"},"AppStepUpOut":{"properties":{"step_up_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Step Up Until"}},"type":"object","required":["step_up_until"],"title":"AppStepUpOut"},"AppTokenIn":{"properties":{"code":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$","title":"Code"},"code_verifier":{"type":"string","pattern":"^[A-Za-z0-9._~-]{43,128}$","title":"Code Verifier"}},"type":"object","required":["code","code_verifier"],"title":"AppTokenIn"},"AppTokenOut":{"properties":{"token":{"type":"string","title":"Token","description":"Send as `Authorization: Bearer <token>` to the api. host."},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"idle_timeout_seconds":{"type":"integer","title":"Idle Timeout Seconds"},"step_up_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Step Up Until"},"user":{"$ref":"#/components/schemas/AppUserOut"}},"type":"object","required":["token","expires_at","idle_timeout_seconds","step_up_until","user"],"title":"AppTokenOut"},"AppUserOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["id","email","display_name"],"title":"AppUserOut"},"AppearanceOut":{"properties":{"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon","description":"The chosen icon, or null for the one suggested from the name."},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","description":"The tile's palette colour, or null for neutral."},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"The uploaded picture (API-relative; add `size=thumb` for the small one)."}},"type":"object","title":"AppearanceOut","description":"How the item is drawn (0043, `api/appearance.py`)."},"AppearanceUpdate":{"properties":{"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon","description":"An icon of the library; null shows the icon suggested from the name."},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color","description":"A palette colour for the icon's tile; null is neutral."}},"additionalProperties":false,"type":"object","title":"AppearanceUpdate"},"ArchivedDeviceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"ArchivedDeviceOut"},"AuditEventList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuditEventOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"AuditEventList"},"AuditEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"action":{"type":"string","title":"Action"},"actor":{"anyOf":[{"$ref":"#/components/schemas/UserOut"},{"type":"null"}]},"target_type":{"type":"string","title":"Target Type"},"target_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Id"},"details":{"additionalProperties":true,"type":"object","title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","action","actor","target_type","target_id","details","created_at"],"title":"AuditEventOut"},"BarChartOptions":{"properties":{"aggregation":{"anyOf":[{"type":"string","enum":["avg","min","max","sum","last"]},{"type":"null"}],"title":"Aggregation","description":"What a bucket of a long range shows; absent is the average."},"range_buttons":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Range Buttons","description":"Buttons in the widget that change its time range for the viewer."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"range":{"type":"string","enum":["1h","6h","24h","7d","30d","90d"],"title":"Range","default":"24h"},"y_min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Min","description":"None: from the data."},"y_max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Max"},"show_grid":{"type":"boolean","title":"Show Grid","default":true},"highlight":{"anyOf":[{"type":"string","enum":["last","max"]},{"type":"null"}],"title":"Highlight","description":"One bar in the accent colour, the others muted."},"value_bubble":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Value Bubble","description":"The highlighted bar's value in a bubble above it."},"rounded":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Rounded","description":"Pill-shaped bars."}},"additionalProperties":false,"type":"object","title":"BarChartOptions","description":"The soft theme's monthly bars: the current or largest bar in the accent, the others muted."},"BarChartWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"bar_chart","title":"Type"},"options":{"$ref":"#/components/schemas/BarChartOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"BarChartWidget"},"BatteryOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"ramp":{"anyOf":[{"type":"string","enum":["zones","gradient"]},{"type":"null"}],"title":"Ramp","description":"Blend the colour zones into each other instead of stepping between them."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":"%"},"low_pct":{"type":"integer","maximum":50.0,"minimum":5.0,"title":"Low Pct","description":"Charge, in percent, shown as low.","default":20}},"additionalProperties":false,"type":"object","title":"BatteryOptions","description":"`min` is empty and `max` full, in the metric's own unit: 0 to 100 for a percentage,\n3.0 to 4.2 for the voltage of one lithium cell."},"BatteryWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"battery","title":"Type"},"options":{"$ref":"#/components/schemas/BatteryOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"BatteryWidget"},"BillingAccountIn":{"properties":{"legal_name":{"type":"string","maxLength":200,"minLength":1,"title":"Legal Name"},"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+$","title":"Email"},"phone":{"anyOf":[{"type":"string","pattern":"^[+]?[0-9 ()-]{6,20}$"},{"type":"null"}],"title":"Phone"},"gstin":{"anyOf":[{"type":"string","pattern":"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$"},{"type":"null"}],"title":"Gstin"},"address_line1":{"type":"string","maxLength":200,"title":"Address Line1","default":""},"address_line2":{"type":"string","maxLength":200,"title":"Address Line2","default":""},"city":{"type":"string","maxLength":100,"title":"City","default":""},"state":{"type":"string","maxLength":100,"title":"State","default":""},"postal_code":{"type":"string","maxLength":20,"title":"Postal Code","default":""},"country":{"type":"string","pattern":"^[A-Z]{2}$","title":"Country","default":"IN"}},"type":"object","required":["legal_name","email"],"title":"BillingAccountIn"},"BillingAccountOut":{"properties":{"legal_name":{"type":"string","maxLength":200,"minLength":1,"title":"Legal Name"},"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+$","title":"Email"},"phone":{"anyOf":[{"type":"string","pattern":"^[+]?[0-9 ()-]{6,20}$"},{"type":"null"}],"title":"Phone"},"gstin":{"anyOf":[{"type":"string","pattern":"^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$"},{"type":"null"}],"title":"Gstin"},"address_line1":{"type":"string","maxLength":200,"title":"Address Line1","default":""},"address_line2":{"type":"string","maxLength":200,"title":"Address Line2","default":""},"city":{"type":"string","maxLength":100,"title":"City","default":""},"state":{"type":"string","maxLength":100,"title":"State","default":""},"postal_code":{"type":"string","maxLength":20,"title":"Postal Code","default":""},"country":{"type":"string","pattern":"^[A-Z]{2}$","title":"Country","default":"IN"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["legal_name","email","updated_at"],"title":"BillingAccountOut"},"BillingUsageDayOut":{"properties":{"day":{"type":"string","format":"date","title":"Day"},"meter":{"type":"string","title":"Meter"},"quantity":{"type":"number","title":"Quantity"},"amount_paise":{"type":"number","title":"Amount Paise"}},"type":"object","required":["day","meter","quantity","amount_paise"],"title":"BillingUsageDayOut"},"BillingUsageOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/BillingUsageDayOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"BillingUsageOut"},"BrandIn":{"properties":{"display_name":{"type":"string","maxLength":80,"minLength":1,"title":"Display Name"},"accent_color":{"type":"string","maxLength":7,"title":"Accent Color","default":"#c2410c"},"landing_theme":{"type":"string","enum":["paper","signal","volt","manual","board"],"title":"Landing Theme","default":"paper"},"contact_email":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Contact Email"},"support_url":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Support Url"},"expected_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Version"}},"type":"object","required":["display_name"],"title":"BrandIn"},"BrandOut":{"properties":{"display_name":{"type":"string","title":"Display Name"},"accent_color":{"type":"string","title":"Accent Color"},"landing_theme":{"type":"string","title":"Landing Theme"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"support_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Url"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon Url"},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["display_name","accent_color","landing_theme","contact_email","support_url","logo_url","favicon_url","version","updated_at"],"title":"BrandOut"},"Brightness":{"properties":{"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":255.0}},"additionalProperties":false,"type":"object","title":"Brightness","description":"The lamp's brightness follows the value from `min` (dim) to `max` (full), like a PWM LED."},"BrokerHealthOut":{"properties":{"status":{"type":"string","enum":["ok","unavailable"],"title":"Status"},"connected_clients":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Connected Clients"}},"type":"object","required":["status"],"title":"BrokerHealthOut"},"BudgetIn":{"properties":{"budget_paise":{"anyOf":[{"type":"integer","maximum":100000000000.0,"minimum":100.0},{"type":"null"}],"title":"Budget Paise"}},"type":"object","title":"BudgetIn"},"BulkArchiveRequest":{"properties":{"device_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100,"minItems":1,"title":"Device Ids"}},"type":"object","required":["device_ids"],"title":"BulkArchiveRequest"},"BulkArchiveResult":{"properties":{"archived":{"items":{"$ref":"#/components/schemas/ArchivedDeviceOut"},"type":"array","title":"Archived"},"already_archived":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Already Archived"}},"type":"object","required":["archived","already_archived"],"title":"BulkArchiveResult"},"Callout":{"properties":{"kind":{"type":"string","enum":["note","info","tip","warning"],"title":"Kind","default":"note"},"text":{"type":"string","maxLength":500,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["text"],"title":"Callout"},"CatalogEntry":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","title":"Creator"},"vendor":{"type":"string","title":"Vendor"},"description":{"type":"string","title":"Description"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","title":"Use Cases"},"toolchains":{"items":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"]},"type":"array","title":"Toolchains","description":"The variants' toolchains, in variant order, without repeats."},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"API-relative. The browser reaches it as /api + image_url (design 8.8)."},"image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Alt"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"popularity_rank":{"type":"integer","title":"Popularity Rank","description":"1 = most devices created from it, across all organizations (dense rank; counts are never shown)."}},"type":"object","required":["id","slug","name","hardware_type","creator","vendor","description","connectivity","use_cases","toolchains","image_url","image_alt","updated_at","published_at","popularity_rank"],"title":"CatalogEntry"},"ChartSeries":{"properties":{"metric":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Metric"},"label":{"type":"string","maxLength":16,"title":"Label","default":""},"tone":{"type":"string","enum":["ok","warn","danger","info"],"title":"Tone","default":"ok"}},"additionalProperties":false,"type":"object","required":["metric"],"title":"ChartSeries"},"ChoiceItem":{"properties":{"value":{"type":"integer","maximum":2147483647.0,"minimum":-2147483648.0,"title":"Value"},"label":{"type":"string","maxLength":16,"minLength":1,"title":"Label"},"color":{"type":"string","pattern":"^$|^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"Color","default":""},"icon":{"type":"string","pattern":"^$|^(bulb|fan|plug|power|pump|valve|lock|door|motion|bell|alert|thermometer|droplet|sun|moon|bolt|wifi|battery|gauge|flame|snowflake|wind|cloud|leaf|home|car|speaker|camera|clock|gear)$","title":"Icon","default":""}},"additionalProperties":false,"type":"object","required":["value","label"],"title":"ChoiceItem"},"CollegeDecisionIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"decision":{"type":"string","enum":["approve","reject"],"title":"Decision"},"note":{"type":"string","maxLength":200,"title":"Note","default":""}},"type":"object","required":["reason","decision"],"title":"CollegeDecisionIn"},"CollegeReviewOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"college_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"College Name"},"college_id_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"College Id Number"},"submitted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Submitted At"},"status":{"type":"string","title":"Status"},"reject_count":{"type":"integer","title":"Reject Count"},"has_document":{"type":"boolean","title":"Has Document"}},"type":"object","required":["user_id","email","display_name","college_name","college_id_number","submitted_at","status","reject_count","has_document"],"title":"CollegeReviewOut"},"CollegeSubmitIn":{"properties":{"college_name":{"type":"string","maxLength":200,"minLength":1,"title":"College Name"},"college_id_number":{"type":"string","maxLength":80,"minLength":1,"title":"College Id Number"},"content_type":{"type":"string","enum":["image/jpeg","image/png","application/pdf"],"title":"Content Type"},"data_base64":{"type":"string","maxLength":2900000,"minLength":8,"title":"Data Base64"}},"type":"object","required":["college_name","college_id_number","content_type","data_base64"],"title":"CollegeSubmitIn"},"CompassOptions":{"properties":{},"additionalProperties":false,"type":"object","title":"CompassOptions","description":"A heading in degrees, 0 = north, clockwise; nothing to configure."},"CompassWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"compass","title":"Type"},"options":{"$ref":"#/components/schemas/CompassOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"CompassWidget"},"ComponentErrorOut":{"properties":{"component":{"type":"string","enum":["streams","broker","email"],"title":"Component"},"code":{"type":"string","enum":["not_configured","unavailable"],"title":"Code"}},"type":"object","required":["component","code"],"title":"ComponentErrorOut","description":"One failed probe. The endpoint answers 200 regardless (design 12.1)."},"ConnectorOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","name"],"title":"ConnectorOut"},"ConsoleBrand":{"properties":{"display_name":{"type":"string","title":"Display Name"},"accent_color":{"type":"string","title":"Accent Color"},"contact_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Email"},"support_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Url"},"console_origin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Console Origin"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url","description":"Absolute URL of the PNG logo, if any."},"favicon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon Url","description":"Absolute URL of the PNG favicon, if any."}},"type":"object","required":["display_name","accent_color"],"title":"ConsoleBrand","description":"A white-label console's public brand (migration 0029)."},"ConsoleBrandOut":{"properties":{"brand":{"anyOf":[{"$ref":"#/components/schemas/ConsoleBrand"},{"type":"null"}],"description":"Null on the platform's own panels and for an unknown console."}},"type":"object","title":"ConsoleBrandOut"},"ConsoleColors":{"properties":{"light":{"$ref":"#/components/schemas/ConsoleThemeColors"},"dark":{"$ref":"#/components/schemas/ConsoleThemeColors"}},"type":"object","title":"ConsoleColors"},"ConsoleLayout":{"properties":{"width":{"type":"string","enum":["full","1600","1440","1200","960","custom"],"title":"Width","description":"The page's largest width in pixels, the whole window, or `custom_width`.","default":"1200"},"custom_width":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Custom Width","description":"Pixels (640 to 2560) when `width` is custom."},"align":{"type":"string","enum":["center","left"],"title":"Align","description":"Where a narrower page sits.","default":"center"},"density":{"type":"string","enum":["comfortable","compact"],"title":"Density","description":"Space around the page.","default":"comfortable"},"dashboards_full_width":{"type":"boolean","title":"Dashboards Full Width","description":"Dashboards use the whole window whatever the width.","default":false},"admin":{"type":"boolean","title":"Admin","description":"The admin panel uses this layout too.","default":false},"catalog_columns":{"type":"integer","enum":[2,3,4],"title":"Catalog Columns","description":"Cards per row in the Add device and Add widget catalogs.","default":3},"canvas_pattern":{"type":"string","enum":["none","plain","dots","grid"],"title":"Canvas Pattern","description":"Behind a dashboard's widgets: nothing (the page), a plain panel, dots or lines.","default":"none"},"canvas_light":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canvas Light","description":"The canvas colour in the light theme (`#rrggbb`, light)."},"canvas_dark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Canvas Dark","description":"The canvas colour in the dark theme (`#rrggbb`, dark)."},"widget_theme":{"type":"string","enum":["standard","soft"],"title":"Widget Theme","description":"Dashboards' widget look unless a dashboard chooses its own (0046).","default":"standard"},"widget_style":{"$ref":"#/components/schemas/WidgetStyleDefaults","description":"Every widget's title, card and spacing by default."},"dashboard_sidebar":{"type":"string","enum":["collapsed","expanded"],"title":"Dashboard Sidebar","description":"How the sidebar starts on a dashboard's page (the only page where it folds to icons).","default":"collapsed"},"admin_colors":{"type":"boolean","title":"Admin Colors","description":"The console colours apply to the admin panel too.","default":true}},"type":"object","title":"ConsoleLayout","description":"The consoles' page width and layout (0044); the defaults are the built-in layout."},"ConsoleThemeColors":{"properties":{"sidebar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sidebar"},"header":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header"},"content":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content","description":"Behind every page; must suit the theme."},"card":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card","description":"Cards, menus and fields; must suit the theme."},"card_border":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Border","description":"Card borders and the lines in pages."},"card_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Title","description":"Card titles; reads on the card (4.5:1)."},"card_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Text","description":"Text on cards; reads on the card (4.5:1)."},"card_muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Muted","description":"Muted notes and labels; reads on the card (3:1)."},"card_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Hover","description":"Rows and items under the pointer."},"card_header":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Header","description":"A strip behind standalone cards' titles; must suit the theme."},"stat_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stat Value","description":"Large figures (counts, readings); reads on the card (3:1)."},"sidebar_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sidebar Hover","description":"Sidebar items under the pointer."},"header_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Header Hover","description":"Header buttons under the pointer."},"menu_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Menu Hover","description":"Menu and list items under the pointer."},"button_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Button Hover","description":"Buttons, chips and row menus under the pointer."},"primary_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Hover","description":"Primary buttons under the pointer."},"tab_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tab Hover","description":"Tab text under the pointer; reads on the card (3:1)."},"link_hover":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Hover","description":"Link text under the pointer; reads on the card (3:1)."}},"type":"object","title":"ConsoleThemeColors","description":"A theme's console colours; a missing one keeps the built-in colour."},"CredentialCreate":{"properties":{"label":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Label"}},"type":"object","title":"CredentialCreate"},"CredentialCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"username":{"type":"string","title":"Username"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"status":{"type":"string","enum":["active","revoked"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"secret":{"type":"string","title":"Secret","description":"Shown once and never stored in plain text."},"mqtt":{"$ref":"#/components/schemas/MqttConnectionOut"}},"type":"object","required":["id","device_id","username","label","status","created_at","revoked_at","secret","mqtt"],"title":"CredentialCreated"},"CredentialList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CredentialOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"CredentialList"},"CredentialOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"username":{"type":"string","title":"Username"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"status":{"type":"string","enum":["active","revoked"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","device_id","username","label","status","created_at","revoked_at"],"title":"CredentialOut"},"CurrentLineOut":{"properties":{"meter":{"type":"string","title":"Meter"},"quantity":{"type":"number","title":"Quantity"},"hourly_paise":{"type":"number","title":"Hourly Paise"}},"type":"object","required":["meter","quantity","hourly_paise"],"title":"CurrentLineOut","description":"The hour now, at today's counts: what the next charge will be about."},"DashboardConfig":{"properties":{"schema_version":{"type":"integer","title":"Schema Version"},"widgets":{"items":{"oneOf":[{"$ref":"#/components/schemas/LineChartWidget"},{"$ref":"#/components/schemas/BarChartWidget"},{"$ref":"#/components/schemas/GaugeWidget"},{"$ref":"#/components/schemas/ToggleWidget"},{"$ref":"#/components/schemas/StatWidget"},{"$ref":"#/components/schemas/IndicatorWidget"},{"$ref":"#/components/schemas/LevelWidget"},{"$ref":"#/components/schemas/ThermometerWidget"},{"$ref":"#/components/schemas/BatteryWidget"},{"$ref":"#/components/schemas/SignalWidget"},{"$ref":"#/components/schemas/StateTimelineWidget"},{"$ref":"#/components/schemas/SegmentWidget"},{"$ref":"#/components/schemas/CompassWidget"},{"$ref":"#/components/schemas/LocationWidget"},{"$ref":"#/components/schemas/SliderWidget"},{"$ref":"#/components/schemas/PushButtonWidget"},{"$ref":"#/components/schemas/SetpointWidget"},{"$ref":"#/components/schemas/RgbWidget"},{"$ref":"#/components/schemas/LabelWidget"},{"$ref":"#/components/schemas/TerminalWidget"},{"$ref":"#/components/schemas/MultiChartWidget"},{"$ref":"#/components/schemas/MenuWidget"},{"$ref":"#/components/schemas/SegmentedWidget"},{"$ref":"#/components/schemas/TimeInputWidget"},{"$ref":"#/components/schemas/JoystickWidget"},{"$ref":"#/components/schemas/NumberInputWidget"},{"$ref":"#/components/schemas/EventsWidget"}],"discriminator":{"propertyName":"type","mapping":{"bar_chart":"#/components/schemas/BarChartWidget","battery":"#/components/schemas/BatteryWidget","compass":"#/components/schemas/CompassWidget","events":"#/components/schemas/EventsWidget","gauge":"#/components/schemas/GaugeWidget","indicator":"#/components/schemas/IndicatorWidget","joystick":"#/components/schemas/JoystickWidget","label":"#/components/schemas/LabelWidget","level":"#/components/schemas/LevelWidget","line_chart":"#/components/schemas/LineChartWidget","location":"#/components/schemas/LocationWidget","menu":"#/components/schemas/MenuWidget","multi_chart":"#/components/schemas/MultiChartWidget","number_input":"#/components/schemas/NumberInputWidget","push_button":"#/components/schemas/PushButtonWidget","rgb":"#/components/schemas/RgbWidget","segment":"#/components/schemas/SegmentWidget","segmented":"#/components/schemas/SegmentedWidget","setpoint":"#/components/schemas/SetpointWidget","signal":"#/components/schemas/SignalWidget","slider":"#/components/schemas/SliderWidget","stat":"#/components/schemas/StatWidget","state_timeline":"#/components/schemas/StateTimelineWidget","terminal":"#/components/schemas/TerminalWidget","thermometer":"#/components/schemas/ThermometerWidget","time_input":"#/components/schemas/TimeInputWidget","toggle":"#/components/schemas/ToggleWidget"}}},"type":"array","maxItems":30,"title":"Widgets"}},"additionalProperties":false,"type":"object","required":["schema_version"],"title":"DashboardConfig","description":"The whole document. `schema_version` is checked by the route (422\n`unsupported_schema_version`), not here, so a future version gets its own answer."},"DashboardConfigSave":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"config":{"$ref":"#/components/schemas/DashboardConfig"}},"additionalProperties":false,"type":"object","required":["expected_version","config"],"title":"DashboardConfigSave"},"DashboardCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"The project it belongs to; null for an organization dashboard."},"description":{"type":"string","maxLength":500,"title":"Description","default":""},"view_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"View Min Role","default":"viewer"},"edit_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Edit Min Role","default":"developer"},"layout":{"anyOf":[{"$ref":"#/components/schemas/DashboardLayoutChoice"},{"type":"null"}],"description":"Start from a layout bound to one device instead of an empty dashboard."}},"additionalProperties":false,"type":"object","required":["name"],"title":"DashboardCreate"},"DashboardLayout":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","title":"Datastreams","description":"What a device needs for every widget to show data."},"widgets":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","title":"Widgets","description":"In preset form, laid out left to right on 12 columns as the add-device wizard does."}},"type":"object","required":["id","name","description","datastreams","widgets"],"title":"DashboardLayout"},"DashboardLayoutChoice":{"properties":{"id":{"type":"string","maxLength":64,"title":"Id","description":"A layout of GET /v1/dashboard-layouts."},"device_id":{"type":"string","format":"uuid","title":"Device Id","description":"The device every widget shows; of the dashboard's project, if any."}},"additionalProperties":false,"type":"object","required":["id","device_id"],"title":"DashboardLayoutChoice"},"DashboardLayoutList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DashboardLayout"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"DashboardLayoutList"},"DashboardList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DashboardListItem"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"DashboardList"},"DashboardListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"view_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"View Min Role"},"edit_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Edit Min Role"},"widget_count":{"type":"integer","title":"Widget Count","description":"All widgets for editors, the visible ones otherwise."},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"can_edit":{"type":"boolean","title":"Can Edit"},"shared":{"anyOf":[{"type":"string","enum":["view","control"]},{"type":"null"}],"title":"Shared","description":"Shared with the caller: 'view' or 'control'."},"appearance":{"$ref":"#/components/schemas/AppearanceOut","description":"Icon, colour and picture (0043)."},"widget_theme":{"anyOf":[{"type":"string","enum":["standard","soft"]},{"type":"null"}],"title":"Widget Theme","description":"The dashboard's own widget theme (0046); null follows the platform's `console_layout.widget_theme`."}},"type":"object","required":["id","project_id","name","description","view_min_role","edit_min_role","widget_count","version","updated_at","can_edit"],"title":"DashboardListItem"},"DashboardOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"view_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"View Min Role"},"edit_min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Edit Min Role"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"can_edit":{"type":"boolean","title":"Can Edit"},"shared":{"anyOf":[{"type":"string","enum":["view","control"]},{"type":"null"}],"title":"Shared","description":"Shared with the caller: 'view' or 'control'."},"can_share":{"type":"boolean","title":"Can Share","description":"The caller may share this dashboard with members.","default":false},"appearance":{"$ref":"#/components/schemas/AppearanceOut","description":"Icon, colour and picture (0043)."},"widget_theme":{"anyOf":[{"type":"string","enum":["standard","soft"]},{"type":"null"}],"title":"Widget Theme","description":"The dashboard's own widget theme (0046); null follows the platform's `console_layout.widget_theme`."},"config":{"$ref":"#/components/schemas/DashboardConfig","description":"Widget access hides the widget definition; it is not a data permission."}},"type":"object","required":["id","project_id","name","description","view_min_role","edit_min_role","version","created_at","updated_at","can_edit","config"],"title":"DashboardOut"},"DashboardPatch":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"},"view_min_role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"null"}],"title":"View Min Role"},"edit_min_role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"null"}],"title":"Edit Min Role"},"clamp_widgets":{"type":"boolean","title":"Clamp Widgets","description":"Pull widget roles into the new range instead of refusing the change.","default":false},"widget_theme":{"anyOf":[{"type":"string","enum":["standard","soft"]},{"type":"null"}],"title":"Widget Theme","description":"The widget look (0046); null follows the platform's. Changing only this keeps the version."}},"additionalProperties":false,"type":"object","required":["expected_version"],"title":"DashboardPatch"},"DashboardShareIn":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"access":{"type":"string","enum":["view","control"],"title":"Access","default":"view"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When this access ends; null for no end."}},"type":"object","required":["user_id"],"title":"DashboardShareIn"},"DashboardShareList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DashboardShareOut"},"type":"array","title":"Items"},"candidates":{"items":{"$ref":"#/components/schemas/MemberRef"},"type":"array","title":"Candidates","description":"Members the dashboard can be shared with."}},"type":"object","required":["items","candidates"],"title":"DashboardShareList"},"DashboardShareOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"access":{"type":"string","enum":["view","control"],"title":"Access"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["user_id","email","display_name","access","expires_at","expired","created_at"],"title":"DashboardShareOut"},"DashboardSharesUpdate":{"properties":{"shares":{"items":{"$ref":"#/components/schemas/DashboardShareIn"},"type":"array","maxItems":100,"title":"Shares"}},"type":"object","required":["shares"],"title":"DashboardSharesUpdate"},"Datastream":{"properties":{"key":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Key"},"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["integer","double","boolean","string","enum"],"title":"Type","default":"double"},"min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Max"},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals"},"writable":{"type":"boolean","title":"Writable","default":false},"options":{"items":{"$ref":"#/components/schemas/DatastreamOption"},"type":"array","maxItems":16,"title":"Options"}},"additionalProperties":false,"type":"object","required":["key","name"],"title":"Datastream","description":"A declared key: a virtual pin `V0`-`V255` or a named key such as `temperature_c`.\n\nThe key is what travels in telemetry and in the command topic, unchanged. Numbers carry\nan optional range (commands outside it are refused), unit and decimals; enums carry\ntheir options; texts and booleans carry neither. Only `writable` datastreams accept\ncommands."},"DatastreamOption":{"properties":{"value":{"type":"integer","maximum":2147483647.0,"minimum":-2147483648.0,"title":"Value"},"label":{"type":"string","maxLength":40,"minLength":1,"title":"Label"}},"additionalProperties":false,"type":"object","required":["value","label"],"title":"DatastreamOption","description":"One choice of an enum datastream: the integer the device sends and receives, and its label."},"DeadLetterEntryOut":{"properties":{"id":{"type":"string","title":"Id"},"device":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"attempts":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Attempts"},"failed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Failed At"}},"type":"object","required":["id"],"title":"DeadLetterEntryOut","description":"Never carries the payload: this page is read across every tenant."},"DeadLetterOut":{"properties":{"length":{"type":"integer","title":"Length","default":0},"recent":{"items":{"$ref":"#/components/schemas/DeadLetterEntryOut"},"type":"array","title":"Recent","default":[]}},"type":"object","title":"DeadLetterOut"},"DefaultOrganizationIn":{"properties":{"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id","description":"An organization the caller belongs to, or null for none."}},"type":"object","required":["organization_id"],"title":"DefaultOrganizationIn"},"DefaultProjectUpdate":{"properties":{"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"null: open the organization overview."}},"type":"object","required":["project_id"],"title":"DefaultProjectUpdate"},"DeviceCommandCreate":{"properties":{"key":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Key","description":"Follows the telemetry key rules; a toggle widget sends its own telemetry key. When the device's template declares datastreams, a declared key must be writable and the value must fit its type, range or choices, and a virtual pin (V0-V255) it does not declare is refused; other keys pass."},"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}],"title":"Value","description":"A boolean, a finite number (integers within ±(2^53−1)) or a text of at most 1024 characters without control characters other than tab and line breaks."},"retain":{"type":"boolean","title":"Retain","description":"True (a state such as a switch, a servo angle or a colour): the broker keeps the value and a device that connects later receives it. False (a one-off action such as a beep): the key's retained value is removed and only a device connected now receives the command.","default":true}},"additionalProperties":false,"type":"object","required":["key","value"],"title":"DeviceCommandCreate"},"DeviceCommandOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"key":{"type":"string","title":"Key"},"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}],"title":"Value"},"retained":{"type":"boolean","title":"Retained"},"topic":{"type":"string","title":"Topic","description":"Where the command was published. Retained: the device receives it when it next connects if it is offline now."},"sent_at":{"type":"string","format":"date-time","title":"Sent At"}},"type":"object","required":["id","device_id","key","value","retained","topic","sent_at"],"title":"DeviceCommandOut"},"DeviceConnectivityList":{"properties":{"server_time":{"type":"string","format":"date-time","title":"Server Time","description":"The API's clock, for relative times shown with these values."},"items":{"items":{"$ref":"#/components/schemas/DeviceConnectivityOut"},"type":"array","title":"Items","description":"Only the requested devices of this organization."}},"type":"object","required":["server_time","items"],"title":"DeviceConnectivityList"},"DeviceConnectivityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","enum":["active","disabled","archived"],"title":"Status"},"connectivity":{"type":"string","enum":["never_seen","online","offline","disabled"],"title":"Connectivity"},"connectivity_since":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connectivity Since"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"}},"type":"object","required":["id","status","connectivity","connectivity_since","last_seen_at"],"title":"DeviceConnectivityOut"},"DeviceCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"label":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Label"},"is_gateway":{"type":"boolean","title":"Is Gateway","default":false}},"type":"object","required":["name"],"title":"DeviceCreate"},"DeviceDatastreams":{"properties":{"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","title":"Datastreams","description":"Empty when the device has no template or it declares none."}},"type":"object","required":["template_id","template_name","datastreams"],"title":"DeviceDatastreams"},"DeviceFacets":{"properties":{"templates":{"items":{"$ref":"#/components/schemas/TemplateFacet"},"type":"array","title":"Templates","description":"Exactly one entry per template id over the whole organization's non-archived devices."}},"type":"object","required":["templates"],"title":"DeviceFacets"},"DeviceFirmwareOut":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"releases":{"items":{"$ref":"#/components/schemas/FirmwareReleaseOut"},"type":"array","title":"Releases","description":"Published releases for the device's template, newest first."},"running":{"$ref":"#/components/schemas/RunningFirmwareOut"},"online":{"type":"boolean","title":"Online"},"can_update":{"type":"boolean","title":"Can Update","description":"The caller may order an update (device.write in the device's project)."},"last_order":{"anyOf":[{"$ref":"#/components/schemas/OtaOrderOut"},{"type":"null"}]},"setup_protocol":{"type":"integer","title":"Setup Protocol","description":"The USB setup protocol version the console speaks."},"chip":{"anyOf":[{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"]},{"type":"null"}],"title":"Chip","description":"The device's chip, from its template's releases; null when unknown."}},"type":"object","required":["device_id","template_id","template_name","releases","running","online","can_update","last_order","setup_protocol"],"title":"DeviceFirmwareOut"},"DeviceIoOut":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"board_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Board Id","description":"The board the setup is for; null when the device's board is unknown."},"board_source":{"anyOf":[{"type":"string","enum":["config","device","template"]},{"type":"null"}],"title":"Board Source"},"boards":{"items":{"$ref":"#/components/schemas/IoBoardOut"},"type":"array","title":"Boards"},"kinds":{"items":{"$ref":"#/components/schemas/IoModuleKindOut"},"type":"array","title":"Kinds"},"revision":{"type":"integer","title":"Revision","description":"Bumped on every save; 0 before the first."},"interval_s":{"type":"integer","title":"Interval S"},"modules":{"items":{"$ref":"#/components/schemas/IoModuleOut"},"type":"array","title":"Modules"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"topic":{"type":"string","title":"Topic","description":"Where the setup is published, retained."},"applied_revision":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applied Revision","description":"The revision the device says it runs."},"firmware":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firmware"},"problems":{"items":{"type":"string"},"type":"array","title":"Problems","description":"What the device could not read, in its own words."},"i2c":{"items":{"$ref":"#/components/schemas/IoI2cOut"},"type":"array","title":"I2C","description":"What the device found on its I2C bus by itself."},"reported_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reported At"},"suggestions":{"items":{"$ref":"#/components/schemas/IoMetricOut"},"type":"array","title":"Suggestions","description":"Metrics worth a dashboard widget."}},"type":"object","required":["device_id","board_id","board_source","boards","kinds","revision","interval_s","modules","updated_at","topic","applied_revision","firmware","problems","i2c","reported_at","suggestions"],"title":"DeviceIoOut"},"DeviceIoUpdate":{"properties":{"expected_revision":{"type":"integer","minimum":0.0,"title":"Expected Revision","description":"The `revision` this setup replaces."},"board":{"type":"string","maxLength":32,"title":"Board"},"interval_s":{"type":"integer","maximum":86400.0,"minimum":0.0,"title":"Interval S","description":"Seconds between telemetry messages."},"modules":{"items":{"$ref":"#/components/schemas/IoModuleIn"},"type":"array","maxItems":16,"title":"Modules"}},"additionalProperties":false,"type":"object","required":["expected_revision","board","interval_s","modules"],"title":"DeviceIoUpdate"},"DeviceList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DeviceOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"DeviceList"},"DeviceOtaCreate":{"properties":{"release_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Release Id"},"upload_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Upload Id","description":"One of the organization's own images (0062)."}},"additionalProperties":false,"type":"object","title":"DeviceOtaCreate"},"DeviceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","enum":["active","disabled","archived"],"title":"Status"},"connectivity":{"type":"string","enum":["never_seen","online","offline","disabled"],"title":"Connectivity"},"connectivity_since":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connectivity Since","description":"When the device came online, or since when it has been offline. Null when never seen or disabled."},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"message_count":{"type":"integer","title":"Message Count"},"messages_per_minute":{"type":"number","title":"Messages Per Minute","description":"Average over the last 5 minutes."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"mqtt":{"$ref":"#/components/schemas/MqttConnectionOut"},"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name","description":"Snapshot of the template name at creation time."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"is_gateway":{"type":"boolean","title":"Is Gateway","default":false},"appearance":{"$ref":"#/components/schemas/AppearanceOut","description":"Icon, colour and picture (0043)."},"template_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Image Url","description":"The library template's picture, drawn when the device has no icon or picture."}},"type":"object","required":["id","organization_id","project_id","name","status","connectivity","last_seen_at","message_count","messages_per_minute","created_at","updated_at","mqtt"],"title":"DeviceOut"},"DevicePage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DeviceOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"total":{"type":"integer","title":"Total"},"facets":{"$ref":"#/components/schemas/DeviceFacets"}},"type":"object","required":["items","total","facets"],"title":"DevicePage"},"DeviceUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"label":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Label"},"is_gateway":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Gateway"}},"type":"object","title":"DeviceUpdate","description":"Only fields present in the body change, so `label: null` clears the label."},"DnsRecordOut":{"properties":{"type":{"type":"string","enum":["TXT","CNAME","A"],"title":"Type"},"name":{"type":"string","title":"Name"},"value":{"type":"string","title":"Value"}},"type":"object","required":["type","name","value"],"title":"DnsRecordOut"},"DocumentLink":{"properties":{"kind":{"type":"string","enum":["product_page","datasheet","technical_reference","user_guide","pinout","schematic","other"],"title":"Kind"},"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"url":{"type":"string","maxLength":500,"minLength":12,"title":"Url"}},"additionalProperties":false,"type":"object","required":["kind","label","url"],"title":"DocumentLink"},"DomainIn":{"properties":{"kind":{"type":"string","enum":["console","landing"],"title":"Kind"},"hostname":{"type":"string","maxLength":260,"minLength":3,"title":"Hostname"}},"type":"object","required":["kind","hostname"],"title":"DomainIn"},"DomainOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["console","landing"],"title":"Kind"},"hostname":{"type":"string","title":"Hostname"},"origin":{"type":"string","title":"Origin"},"status":{"type":"string","enum":["pending_dns","verified","provisioning","active","failed","removing"],"title":"Status"},"status_detail":{"type":"string","title":"Status Detail"},"certificate_ready":{"type":"boolean","title":"Certificate Ready"},"records":{"items":{"$ref":"#/components/schemas/DnsRecordOut"},"type":"array","title":"Records"},"local":{"type":"boolean","title":"Local"},"dns_checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Dns Checked At"},"verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Verified At"},"active_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","hostname","origin","status","status_detail","certificate_ready","records","local","dns_checked_at","verified_at","active_at","created_at"],"title":"DomainOut"},"EffectiveProjectAccess":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"type":"string","title":"Project Name"},"role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"string","enum":["viewer","operator","developer","admin","custom"]}],"title":"Role"},"permissions":{"items":{"type":"string","enum":["project.read","project.manage","device.read","device.write","device.command","credential.read","credential.write","telemetry.read","usage.read","dashboard.read","dashboard.write","alert.read","alert.write","alert.ack"]},"type":"array","title":"Permissions"},"devices":{"type":"string","enum":["all","selected"],"title":"Devices"},"device_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Device Ids"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources","description":"'organization', 'direct', or a team name."}},"type":"object","required":["project_id","project_name","role","permissions","devices","device_ids","sources"],"title":"EffectiveProjectAccess"},"EmailCheckOut":{"properties":{"status":{"type":"string","enum":["pending","checking","ok","failed","off"],"title":"Status"},"current":{"type":"boolean","title":"Current","description":"The check ran against the settings shown."},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"detail":{"additionalProperties":true,"type":"object","title":"Detail","default":{}},"checked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Checked At"}},"type":"object","required":["status","current"],"title":"EmailCheckOut"},"EmailConfirmedOut":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"EmailConfirmedOut"},"EmailDeliveryOut":{"properties":{"provider":{"type":"string","enum":["environment","disabled","smtp","ses","gmail_api"],"title":"Provider"},"version":{"type":"integer","title":"Version"},"from_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Address"},"from_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Name"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"},"max_per_minute":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Per Minute"},"smtp":{"$ref":"#/components/schemas/SmtpDeliveryOut"},"ses":{"$ref":"#/components/schemas/SesDeliveryOut"},"gmail":{"$ref":"#/components/schemas/GmailDeliveryOut"},"environment":{"$ref":"#/components/schemas/EmailEnvironmentOut"},"worker":{"$ref":"#/components/schemas/EmailWorkerOut"},"check":{"$ref":"#/components/schemas/EmailCheckOut"},"enabled":{"type":"boolean","title":"Enabled","description":"Emails are queued and sent with these settings."},"admin_providers_available":{"type":"boolean","title":"Admin Providers Available","description":"IOTAPS_EMAIL_PAYLOAD_SECRET is set, so a provider other than the deployment default can be used."},"plaintext_smtp_allowed":{"type":"boolean","title":"Plaintext Smtp Allowed","description":"SMTP without TLS is refused in production."},"gmail_redirect_uri":{"type":"string","title":"Gmail Redirect Uri"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"}},"type":"object","required":["provider","version","smtp","ses","gmail","environment","worker","check","enabled","admin_providers_available","plaintext_smtp_allowed","gmail_redirect_uri"],"title":"EmailDeliveryOut"},"EmailDeliveryUpdate":{"properties":{"provider":{"type":"string","enum":["environment","disabled","smtp","ses","gmail_api"],"title":"Provider"},"expected_version":{"type":"integer","title":"Expected Version","description":"The `version` this form was loaded with."},"from_address":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"From Address"},"from_name":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"From Name"},"reply_to":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Reply To"},"max_per_minute":{"anyOf":[{"type":"integer","maximum":1000.0,"minimum":1.0},{"type":"null"}],"title":"Max Per Minute"},"smtp":{"$ref":"#/components/schemas/SmtpDeliveryIn","default":{}},"ses":{"$ref":"#/components/schemas/SesDeliveryIn","default":{}},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["provider","expected_version","reason"],"title":"EmailDeliveryUpdate","description":"The whole form: settings of providers not chosen are kept for switching back."},"EmailEnvironmentOut":{"properties":{"configured":{"type":"boolean","title":"Configured"},"preset":{"type":"string","title":"Preset"},"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"security":{"anyOf":[{"type":"string","enum":["starttls","implicit_tls","none"]},{"type":"null"}],"title":"Security"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"from_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From Address"},"from_name":{"type":"string","title":"From Name"},"reply_to":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reply To"},"max_per_minute":{"type":"integer","title":"Max Per Minute"}},"type":"object","required":["configured","preset","from_name","max_per_minute"],"title":"EmailEnvironmentOut","description":"The deployment's own SMTP settings: what \"Deployment default\" sends with."},"EmailHealthOut":{"properties":{"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"status":{"type":"string","enum":["ok","disabled","invalid","unavailable"],"title":"Status"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts","default":{}},"oldest_queued_age_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Oldest Queued Age Seconds"},"recent_failures":{"items":{"$ref":"#/components/schemas/EmailRecentFailureOut"},"type":"array","title":"Recent Failures","default":[]}},"type":"object","required":["checked_at","status"],"title":"EmailHealthOut"},"EmailOutboxDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"template":{"type":"string","title":"Template"},"category":{"type":"string","title":"Category"},"to_domain":{"type":"string","title":"To Domain"},"status":{"type":"string","enum":["queued","sending","sent","failed","dead","cancelled","skipped"],"title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"last_error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Code"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At"},"to_address":{"type":"string","title":"To Address"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"staff_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Staff Id"},"smtp_response":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Smtp Response"},"send_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Send Before"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Html"},"text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Text"},"preview_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Error"}},"type":"object","required":["id","template","category","to_domain","status","attempts","created_at","updated_at","to_address"],"title":"EmailOutboxDetailOut"},"EmailOutboxListItem":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"template":{"type":"string","title":"Template"},"category":{"type":"string","title":"Category"},"to_domain":{"type":"string","title":"To Domain"},"status":{"type":"string","enum":["queued","sending","sent","failed","dead","cancelled","skipped"],"title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"last_error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Code"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At"}},"type":"object","required":["id","template","category","to_domain","status","attempts","created_at","updated_at"],"title":"EmailOutboxListItem"},"EmailOutboxListOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EmailOutboxListItem"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"EmailOutboxListOut"},"EmailRecentFailureOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"template":{"type":"string","title":"Template"},"category":{"type":"string","enum":["security","transactional","test"],"title":"Category"},"to_domain":{"type":"string","title":"To Domain"},"status":{"type":"string","enum":["failed","dead"],"title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"last_error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error Code"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","template","category","to_domain","status","attempts","last_error_code","last_error","created_at","updated_at"],"title":"EmailRecentFailureOut"},"EmailSummaryOut":{"properties":{"status":{"type":"string","enum":["ok","disabled","invalid","unavailable"],"title":"Status"},"queued":{"type":"integer","title":"Queued","default":0},"failed":{"type":"integer","title":"Failed","default":0},"dead":{"type":"integer","title":"Dead","default":0}},"type":"object","required":["status"],"title":"EmailSummaryOut"},"EmailTemplateListItem":{"properties":{"key":{"type":"string","title":"Key"},"category":{"type":"string","title":"Category"},"overridden":{"type":"boolean","title":"Overridden"},"subject":{"type":"string","title":"Subject"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["key","category","overridden","subject"],"title":"EmailTemplateListItem"},"EmailTemplateOut":{"properties":{"key":{"type":"string","title":"Key"},"category":{"type":"string","title":"Category"},"version":{"type":"integer","title":"Version"},"overridden":{"type":"boolean","title":"Overridden"},"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"neutral_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neutral Subject"},"preheader":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preheader"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_txt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Txt"},"default_subject":{"type":"string","title":"Default Subject"},"default_neutral_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Neutral Subject"},"default_preheader":{"type":"string","title":"Default Preheader"},"default_body_html":{"type":"string","title":"Default Body Html"},"default_body_txt":{"type":"string","title":"Default Body Txt"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"}},"type":"object","required":["key","category","version","overridden","default_subject","default_preheader","default_body_html","default_body_txt"],"title":"EmailTemplateOut"},"EmailTemplatePreviewIn":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"neutral_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neutral Subject"},"preheader":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preheader"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_txt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Txt"}},"type":"object","title":"EmailTemplatePreviewIn"},"EmailTemplatePreviewOut":{"properties":{"subject":{"type":"string","title":"Subject"},"preheader":{"type":"string","title":"Preheader"},"html":{"type":"string","title":"Html"},"text":{"type":"string","title":"Text"}},"type":"object","required":["subject","preheader","html","text"],"title":"EmailTemplatePreviewOut"},"EmailTemplateUpdate":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"neutral_subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neutral Subject"},"preheader":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preheader"},"body_html":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Html"},"body_txt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body Txt"},"expected_version":{"type":"integer","minimum":0.0,"title":"Expected Version"},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["expected_version","reason"],"title":"EmailTemplateUpdate"},"EmailTestAccepted":{"properties":{"delivery_id":{"type":"string","format":"uuid","title":"Delivery Id"},"status":{"type":"string","const":"queued","title":"Status","default":"queued"}},"type":"object","required":["delivery_id"],"title":"EmailTestAccepted"},"EmailTestRequest":{"properties":{"to":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"To"}},"type":"object","required":["to"],"title":"EmailTestRequest"},"EmailTheme":{"properties":{"paper":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paper"},"paper_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paper 2"},"surface":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Surface"},"ink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ink"},"ink_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ink 2"},"muted":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Muted"},"rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rule"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"accent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent"},"accent_bg":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accent Bg"}},"type":"object","title":"EmailTheme","description":"Colours for transactional email chrome (0061); null/absent slots use the built-in teal theme."},"EmailWorkerOut":{"properties":{"online":{"type":"boolean","title":"Online","description":"A heartbeat arrived within the last 90 seconds."},"heartbeat_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Heartbeat At"},"credentials_key":{"type":"boolean","title":"Credentials Key","description":"The worker has IOTAPS_EMAIL_CREDENTIALS_KEY, so secrets can be saved here."},"applied_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Applied Version"},"transport_up":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Transport Up"}},"type":"object","required":["online","credentials_key"],"title":"EmailWorkerOut"},"EnterpriseAuditEventList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnterpriseAuditEventOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"EnterpriseAuditEventList"},"EnterpriseAuditEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"scope":{"type":"string","enum":["enterprise","organization"],"title":"Scope"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"action":{"type":"string","title":"Action"},"actor":{"anyOf":[{"$ref":"#/components/schemas/UserOut"},{"type":"null"}]},"target_type":{"type":"string","title":"Target Type"},"target_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Id"},"details":{"additionalProperties":true,"type":"object","title":"Details","default":{}},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","scope","action","target_type","created_at"],"title":"EnterpriseAuditEventOut"},"EnterpriseBillingOut":{"properties":{"available":{"type":"boolean","title":"Available"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"checkout_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkout Script"},"can_manage":{"type":"boolean","title":"Can Manage"},"wallet":{"$ref":"#/components/schemas/WalletOut"},"white_label":{"type":"boolean","title":"White Label"},"month":{"$ref":"#/components/schemas/MonthOut"},"organizations":{"items":{"$ref":"#/components/schemas/EnterpriseOrgUsageOut"},"type":"array","title":"Organizations"},"rates":{"items":{"$ref":"#/components/schemas/RateOut"},"type":"array","title":"Rates"},"topup":{"$ref":"#/components/schemas/TopupLimitsOut"},"account":{"anyOf":[{"$ref":"#/components/schemas/BillingAccountOut"},{"type":"null"}]}},"type":"object","required":["available","key_id","checkout_script","can_manage","wallet","white_label","month","organizations","rates","topup","account"],"title":"EnterpriseBillingOut"},"EnterpriseCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"EnterpriseCreate"},"EnterpriseDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","enum":["owner","admin","billing","viewer"],"title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"organization_count":{"type":"integer","title":"Organization Count","default":0},"member_count":{"type":"integer","title":"Member Count","default":0},"project_count":{"type":"integer","title":"Project Count","default":0},"device_count":{"type":"integer","title":"Device Count","default":0}},"type":"object","required":["id","name","role","created_at"],"title":"EnterpriseDetailOut"},"EnterpriseJoin":{"properties":{"role":{"type":"string","enum":["admin","developer","viewer"],"title":"Role"}},"type":"object","required":["role"],"title":"EnterpriseJoin"},"EnterpriseList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnterpriseOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnterpriseList"},"EnterpriseMemberList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnterpriseMemberOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnterpriseMemberList"},"EnterpriseMemberOrganizationOut":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"can_manage":{"type":"boolean","title":"Can Manage","default":false}},"type":"object","required":["organization_id","organization_name","role"],"title":"EnterpriseMemberOrganizationOut"},"EnterpriseMemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"enterprise_role":{"anyOf":[{"type":"string","enum":["owner","admin","billing","viewer"]},{"type":"null"}],"title":"Enterprise Role"},"organizations":{"items":{"$ref":"#/components/schemas/EnterpriseMemberOrganizationOut"},"type":"array","title":"Organizations","default":[]}},"type":"object","required":["user_id","email","display_name"],"title":"EnterpriseMemberOut"},"EnterpriseMembershipList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnterpriseMembershipOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnterpriseMembershipList"},"EnterpriseMembershipOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"role":{"type":"string","enum":["owner","admin","billing","viewer"],"title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["user_id","email","display_name","role","created_at"],"title":"EnterpriseMembershipOut"},"EnterpriseMembershipUpdate":{"properties":{"role":{"type":"string","enum":["owner","admin","billing","viewer"],"title":"Role"}},"type":"object","required":["role"],"title":"EnterpriseMembershipUpdate"},"EnterpriseOrgUsageOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"month_paise":{"type":"number","title":"Month Paise"}},"type":"object","required":["id","name","month_paise"],"title":"EnterpriseOrgUsageOut"},"EnterpriseOrganizationCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"EnterpriseOrganizationCreate"},"EnterpriseOrganizationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EnterpriseOrganizationOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"EnterpriseOrganizationList"},"EnterpriseOrganizationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"null"}],"title":"Role"},"can_manage":{"type":"boolean","title":"Can Manage","default":false},"member_count":{"type":"integer","title":"Member Count","default":0},"project_count":{"type":"integer","title":"Project Count","default":0},"device_count":{"type":"integer","title":"Device Count","default":0}},"type":"object","required":["id","name","created_at"],"title":"EnterpriseOrganizationOut"},"EnterpriseOrganizationUsageOut":{"properties":{"persisted_messages":{"type":"integer","title":"Persisted Messages","default":0},"persisted_bytes":{"type":"integer","title":"Persisted Bytes","default":0},"duplicate_messages":{"type":"integer","title":"Duplicate Messages","default":0},"rejected_messages":{"type":"integer","title":"Rejected Messages","default":0},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"}},"type":"object","required":["organization_id","organization_name"],"title":"EnterpriseOrganizationUsageOut"},"EnterpriseOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"role":{"type":"string","enum":["owner","admin","billing","viewer"],"title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"}},"type":"object","required":["id","name","role","created_at"],"title":"EnterpriseOut"},"EnterpriseUpdate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"EnterpriseUpdate"},"EnterpriseUsageOut":{"properties":{"start_day":{"type":"string","format":"date","title":"Start Day"},"end_day":{"type":"string","format":"date","title":"End Day"},"days":{"items":{"$ref":"#/components/schemas/UsageDayOut"},"type":"array","title":"Days"},"totals":{"$ref":"#/components/schemas/UsageCounters"},"organizations":{"items":{"$ref":"#/components/schemas/EnterpriseOrganizationUsageOut"},"type":"array","title":"Organizations","default":[]}},"type":"object","required":["start_day","end_day","days","totals"],"title":"EnterpriseUsageOut"},"ErrorDetail":{"properties":{"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field"},"issue":{"type":"string","title":"Issue"},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Limit"},"billing_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Url"}},"type":"object","required":["issue"],"title":"ErrorDetail"},"ErrorResponse":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"request_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request Id"},"details":{"items":{"$ref":"#/components/schemas/ErrorDetail"},"type":"array","title":"Details","default":[]}},"type":"object","required":["code","message"],"title":"ErrorResponse"},"EventsOptions":{"properties":{"show":{"type":"string","enum":["open","all"],"title":"Show","description":"open: only incidents still firing.","default":"all"},"max_items":{"type":"integer","maximum":20.0,"minimum":1.0,"title":"Max Items","default":6},"device_events":{"type":"boolean","title":"Device Events","description":"Also list the text values the device reports on the key.","default":true}},"additionalProperties":false,"type":"object","title":"EventsOptions","description":"The device's alert incidents, newest first, with the text events it reports on the key\n(`device_events`). Members who may acknowledge do it from the list."},"EventsWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"events","title":"Type"},"options":{"$ref":"#/components/schemas/EventsOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"EventsWidget"},"FactorAdoptionOut":{"properties":{"users":{"type":"integer","title":"Users","default":0},"with_passkey":{"type":"integer","title":"With Passkey","default":0},"with_authenticator_app":{"type":"integer","title":"With Authenticator App","default":0},"authenticator_app_only":{"type":"integer","title":"Authenticator App Only","default":0},"without_factor":{"type":"integer","title":"Without Factor","default":0}},"type":"object","title":"FactorAdoptionOut","description":"How many customer accounts would feel a factor rule today."},"FactorList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FactorOut"},"type":"array","title":"Items"},"recovery_codes_left":{"type":"integer","title":"Recovery Codes Left","default":0}},"type":"object","required":["items"],"title":"FactorList"},"FactorOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["totp","webauthn"],"title":"Kind"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","kind","name","created_at","last_used_at"],"title":"FactorOut"},"FactorRename":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"FactorRename"},"FirmwarePartIn":{"properties":{"role":{"type":"string","enum":["bootloader","partitions","boot_app0","app"],"title":"Role"},"offset":{"type":"integer","exclusiveMaximum":16777216.0,"minimum":0.0,"title":"Offset"},"data_base64":{"type":"string","maxLength":2900000,"minLength":4,"title":"Data Base64","description":"The part's bytes, standard base64."}},"additionalProperties":false,"type":"object","required":["role","offset","data_base64"],"title":"FirmwarePartIn"},"FirmwarePartOut":{"properties":{"role":{"type":"string","enum":["bootloader","partitions","boot_app0","app"],"title":"Role"},"offset":{"type":"integer","title":"Offset","description":"Where esptool writes the part in flash (bytes)."},"size":{"type":"integer","title":"Size"},"sha256":{"type":"string","title":"Sha256"},"url":{"type":"string","title":"Url","description":"The part's bytes (application/octet-stream)."}},"type":"object","required":["role","offset","size","sha256","url"],"title":"FirmwarePartOut"},"FirmwareReleaseCreate":{"properties":{"version":{"type":"string","pattern":"^[0-9A-Za-z][0-9A-Za-z.+_-]{0,31}$","title":"Version"},"firmware":{"type":"string","pattern":"^[ -~]{1,64}$","title":"Firmware","description":"The `firmware` attribute the board will report (printable ASCII)."},"chip":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"],"title":"Chip"},"features":{"items":{"type":"string","enum":["usb-setup","ota"]},"type":"array","maxItems":2,"title":"Features"},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""},"parts":{"items":{"$ref":"#/components/schemas/FirmwarePartIn"},"type":"array","maxItems":4,"minItems":1,"title":"Parts"},"sources":{"items":{"$ref":"#/components/schemas/FirmwareSourceIn"},"type":"array","maxItems":8,"title":"Sources","description":"The code the image was built from, shown to customers read-only (0062). Leave out connection values."}},"additionalProperties":false,"type":"object","required":["version","firmware","chip","parts"],"title":"FirmwareReleaseCreate"},"FirmwareReleaseList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FirmwareReleaseOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"FirmwareReleaseList"},"FirmwareReleaseOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"template_id":{"type":"string","format":"uuid","title":"Template Id"},"version":{"type":"string","title":"Version"},"firmware":{"type":"string","title":"Firmware","description":"What the board reports in its `firmware` attribute once it runs this release."},"chip":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"],"title":"Chip"},"features":{"items":{"type":"string","enum":["usb-setup","ota"]},"type":"array","title":"Features","description":"`usb-setup`: takes its connection over USB after flashing; `ota`: updates over the air."},"notes":{"type":"string","title":"Notes"},"status":{"type":"string","enum":["draft","published","withdrawn"],"title":"Status"},"source":{"type":"string","enum":["seed","staff"],"title":"Source"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"withdrawn_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Withdrawn At"},"parts":{"items":{"$ref":"#/components/schemas/FirmwarePartOut"},"type":"array","title":"Parts"},"has_source":{"type":"boolean","title":"Has Source","description":"The code it was built from can be read (`.../source`).","default":false}},"type":"object","required":["id","template_id","version","firmware","chip","features","notes","status","source","created_at","published_at","parts"],"title":"FirmwareReleaseOut"},"FirmwareReleaseTransition":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"additionalProperties":false,"type":"object","required":["reason"],"title":"FirmwareReleaseTransition","description":"POST publish / withdraw of a firmware release."},"FirmwareSourceFile":{"properties":{"filename":{"type":"string","title":"Filename"},"language":{"type":"string","enum":["python","micropython","arduino","cpp","ini","bash","text"],"title":"Language"},"source":{"type":"string","title":"Source"}},"type":"object","required":["filename","language","source"],"title":"FirmwareSourceFile"},"FirmwareSourceIn":{"properties":{"filename":{"type":"string","pattern":"^[A-Za-z0-9_][A-Za-z0-9_./-]{0,79}$","title":"Filename"},"language":{"type":"string","enum":["python","micropython","arduino","cpp","ini","bash","text"],"title":"Language"},"source":{"type":"string","maxLength":200000,"minLength":1,"title":"Source"}},"additionalProperties":false,"type":"object","required":["filename","language","source"],"title":"FirmwareSourceIn"},"FirmwareSourceOut":{"properties":{"release_id":{"type":"string","format":"uuid","title":"Release Id"},"version":{"type":"string","title":"Version"},"firmware":{"type":"string","title":"Firmware"},"files":{"items":{"$ref":"#/components/schemas/FirmwareSourceFile"},"type":"array","title":"Files"}},"type":"object","required":["release_id","version","firmware","files"],"title":"FirmwareSourceOut"},"FirmwareStarterOut":{"properties":{"chip":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"],"title":"Chip"},"label":{"type":"string","title":"Label"},"library_version":{"type":"string","title":"Library Version"},"library_url":{"type":"string","title":"Library Url"},"chips":{"items":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"]},"type":"array","title":"Chips","description":"Every chip a starter exists for."},"variants":{"items":{"$ref":"#/components/schemas/FirmwareStarterVariant"},"type":"array","title":"Variants"},"values":{"additionalProperties":{"type":"string"},"type":"object","title":"Values","description":"Placeholder values the server knows (device, broker, CA). The credential and the Wi-Fi are filled in the browser and never sent."}},"type":"object","required":["chip","label","library_version","library_url","chips","variants","values"],"title":"FirmwareStarterOut"},"FirmwareStarterVariant":{"properties":{"key":{"type":"string","enum":["arduino_ide","platformio"],"title":"Key"},"label":{"type":"string","title":"Label"},"files":{"items":{"$ref":"#/components/schemas/FirmwareSourceFile"},"type":"array","title":"Files"},"steps":{"items":{"type":"string"},"type":"array","title":"Steps"}},"type":"object","required":["key","label","files","steps"],"title":"FirmwareStarterVariant"},"FirmwareUploadCreate":{"properties":{"label":{"type":"string","pattern":"^[ -~]{1,64}$","title":"Label","description":"What the list shows, e.g. \"my-firmware 1.2\"."},"chip":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"],"title":"Chip"},"data_base64":{"type":"string","maxLength":2900000,"minLength":4,"title":"Data Base64","description":"The app image's bytes, standard base64."}},"additionalProperties":false,"type":"object","required":["label","chip","data_base64"],"title":"FirmwareUploadCreate"},"FirmwareUploadList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/FirmwareUploadOut"},"type":"array","title":"Items"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","limit"],"title":"FirmwareUploadList"},"FirmwareUploadOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"chip":{"type":"string","enum":["esp8266","esp32","esp32s2","esp32s3","esp32c3","esp32c6"],"title":"Chip"},"label":{"type":"string","title":"Label"},"size":{"type":"integer","title":"Size"},"sha256":{"type":"string","title":"Sha256"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","chip","label","size","sha256","created_at"],"title":"FirmwareUploadOut"},"FirmwareVariant":{"properties":{"key":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]{0,31}$","title":"Key","description":"Stable id within the template, e.g. `arduino`."},"toolchain":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"],"title":"Toolchain"},"label":{"type":"string","maxLength":60,"minLength":1,"title":"Label"},"summary":{"type":"string","maxLength":300,"title":"Summary","default":""},"requirements":{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":10,"title":"Requirements"},"setup":{"items":{"$ref":"#/components/schemas/GuideSection"},"type":"array","maxItems":12,"title":"Setup"},"files":{"items":{"$ref":"#/components/schemas/VariantFile"},"type":"array","maxItems":4,"minItems":1,"title":"Files"},"flash":{"items":{"$ref":"#/components/schemas/GuideSection"},"type":"array","maxItems":8,"title":"Flash"},"sample_output":{"type":"string","maxLength":2000,"title":"Sample Output","default":""},"troubleshooting":{"items":{"type":"string","maxLength":300,"minLength":1},"type":"array","maxItems":10,"title":"Troubleshooting"}},"additionalProperties":false,"type":"object","required":["key","toolchain","label","files"],"title":"FirmwareVariant","description":"One way to program the device: Arduino IDE, PlatformIO, MicroPython, Python..."},"GaugeOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"ramp":{"anyOf":[{"type":"string","enum":["zones","gradient"]},{"type":"null"}],"title":"Ramp","description":"Blend the colour zones into each other instead of stepping between them."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"shape":{"type":"string","enum":["arc","arc270","ring"],"title":"Shape","default":"arc"},"show_minmax":{"type":"boolean","title":"Show Minmax","default":true}},"additionalProperties":false,"type":"object","title":"GaugeOptions"},"GaugeWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"gauge","title":"Type"},"options":{"$ref":"#/components/schemas/GaugeOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"GaugeWidget"},"GmailConnectRequest":{"properties":{"client_id":{"type":"string","maxLength":255,"minLength":10,"title":"Client Id"},"client_secret":{"type":"string","maxLength":255,"minLength":10,"title":"Client Secret","writeOnly":true},"login_hint":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Login Hint"}},"type":"object","required":["client_id","client_secret"],"title":"GmailConnectRequest"},"GmailConnectStart":{"properties":{"authorization_url":{"type":"string","title":"Authorization Url"}},"type":"object","required":["authorization_url"],"title":"GmailConnectStart"},"GmailDeliveryOut":{"properties":{"connected":{"type":"boolean","title":"Connected","default":false},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account"},"connected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Connected At"}},"type":"object","title":"GmailDeliveryOut"},"GooglePhotoIn":{"properties":{"id_token":{"type":"string","maxLength":4096,"minLength":20,"title":"Id Token","description":"Google ID token from Google's sign-in button."}},"type":"object","required":["id_token"],"title":"GooglePhotoIn"},"GuideCode":{"properties":{"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"language":{"type":"string","enum":["python","micropython","arduino","cpp","ini","bash","text"],"title":"Language","default":"text"},"text":{"type":"string","maxLength":4000,"minLength":1,"title":"Text"}},"additionalProperties":false,"type":"object","required":["label","text"],"title":"GuideCode","description":"A block shown with a copy button: board manager URLs, shell sessions, config snippets."},"GuideSection":{"properties":{"title":{"type":"string","maxLength":100,"minLength":1,"title":"Title"},"body":{"type":"string","maxLength":1500,"title":"Body","description":"Plain text; a blank line starts a new paragraph.","default":""},"steps":{"items":{"type":"string","maxLength":300,"minLength":1},"type":"array","maxItems":12,"title":"Steps","description":"Shown as a numbered list."},"commands":{"items":{"$ref":"#/components/schemas/InstallCommand"},"type":"array","maxItems":10,"title":"Commands"},"code":{"anyOf":[{"$ref":"#/components/schemas/GuideCode"},{"type":"null"}]},"callouts":{"items":{"$ref":"#/components/schemas/Callout"},"type":"array","maxItems":3,"title":"Callouts"},"image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Image Id","description":"A `guide` asset of this template."},"image_alt":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Image Alt"}},"additionalProperties":false,"type":"object","required":["title"],"title":"GuideSection","description":"One block of a setup or flash guide (design v2, 3). Every part is optional except the title."},"IdentityCheckBody":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"identity_check":{"type":"string","enum":["video_call","verified_email_reply","support_ticket","other"],"title":"Identity Check"}},"type":"object","required":["reason","identity_check"],"title":"IdentityCheckBody"},"IdentityList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/IdentityOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"IdentityList"},"IdentityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"connector":{"type":"string","title":"Connector"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"email_verified":{"type":"boolean","title":"Email Verified"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","connector","email","email_verified","linked_at","last_used_at"],"title":"IdentityOut"},"IndicatorOptions":{"properties":{"value_map":{"items":{"$ref":"#/components/schemas/ValueMapEntry"},"type":"array","maxItems":10,"title":"Value Map"},"on_label":{"type":"string","maxLength":16,"title":"On Label","default":"On"},"off_label":{"type":"string","maxLength":16,"title":"Off Label","default":"Off"},"tone":{"type":"string","enum":["ok","warn","danger","info"],"title":"Tone","default":"ok"},"threshold":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Threshold"},"above":{"type":"boolean","title":"Above","default":true},"shape":{"type":"string","enum":["led","dot","badge"],"title":"Shape","default":"led"},"blink":{"type":"boolean","title":"Blink","description":"Blink while lit.","default":false},"brightness":{"anyOf":[{"$ref":"#/components/schemas/Brightness"},{"type":"null"}],"description":"Light the lamp as brightly as the value is between min and max."}},"additionalProperties":false,"type":"object","title":"IndicatorOptions","description":"A lamp: lit while a boolean is true, or while a number is at or beyond `threshold`\n(above it when `above`, below it otherwise). A number without a threshold lights when not 0."},"IndicatorWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"indicator","title":"Type"},"options":{"$ref":"#/components/schemas/IndicatorOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"IndicatorWidget"},"InstallCommand":{"properties":{"label":{"type":"string","maxLength":80,"minLength":1,"title":"Label"},"command":{"type":"string","maxLength":300,"minLength":1,"title":"Command"}},"additionalProperties":false,"type":"object","required":["label","command"],"title":"InstallCommand"},"InvitationAccept":{"properties":{"token":{"type":"string","maxLength":200,"minLength":16,"title":"Token"}},"type":"object","required":["token"],"title":"InvitationAccept"},"InvitationCreate":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role","default":"developer"},"access":{"type":"string","enum":["all","selected"],"title":"Access","default":"all"},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessIn"},"type":"array","maxItems":100,"title":"Projects"},"membership_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Membership Expires At","description":"When this access ends; null for no end."}},"type":"object","required":["email"],"title":"InvitationCreate"},"InvitationCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"access":{"type":"string","enum":["all","selected"],"title":"Access","default":"all"},"project_count":{"type":"integer","title":"Project Count","description":"Projects granted when `access` is 'selected'.","default":0},"membership_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Membership Expires At"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"accept_url":{"type":"string","title":"Accept Url","description":"Shown once. Share it with the invitee."},"email_delivery":{"type":"string","enum":["queued","disabled","duplicate","undeliverable"],"title":"Email Delivery"}},"type":"object","required":["id","email","role","status","created_at","expires_at","accept_url","email_delivery"],"title":"InvitationCreated"},"InvitationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvitationOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"InvitationList"},"InvitationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"access":{"type":"string","enum":["all","selected"],"title":"Access","default":"all"},"project_count":{"type":"integer","title":"Project Count","description":"Projects granted when `access` is 'selected'.","default":0},"membership_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Membership Expires At"},"status":{"type":"string","enum":["pending","accepted","revoked","expired"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["id","email","role","status","created_at","expires_at"],"title":"InvitationOut"},"InvoiceHistoryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"amount_paise":{"type":"integer","title":"Amount Paise"},"status":{"type":"string","title":"Status"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"short_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Url"},"lines":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Lines","default":[]},"preview":{"type":"boolean","title":"Preview","default":false}},"type":"object","required":["id","kind","amount_paise","status","period_start","period_end","due_at","issued_at"],"title":"InvoiceHistoryOut"},"InvoiceList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/InvoiceOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"InvoiceList"},"InvoiceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"plan_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Code"},"amount_paise":{"type":"integer","title":"Amount Paise"},"currency":{"type":"string","title":"Currency"},"status":{"type":"string","title":"Status"},"short_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Url","description":"Razorpay's page to pay an open postpaid invoice."},"lines":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Lines"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"}},"type":"object","required":["id","kind","plan_code","amount_paise","currency","status","short_url","lines","period_start","period_end","due_at","issued_at","paid_at"],"title":"InvoiceOut"},"InvoiceSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"amount_paise":{"type":"integer","title":"Amount Paise"},"status":{"type":"string","title":"Status"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"period_end":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period End"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"short_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Url"}},"type":"object","required":["id","amount_paise","status","period_start","period_end","due_at","issued_at"],"title":"InvoiceSummary"},"IoBoardOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"firmware":{"type":"string","title":"Firmware","description":"The firmware that applies setups on this board."},"pins":{"items":{"$ref":"#/components/schemas/IoPinOut"},"type":"array","title":"Pins"},"reserved":{"items":{"$ref":"#/components/schemas/IoReservedPinOut"},"type":"array","title":"Reserved"},"i2c_sda":{"type":"string","title":"I2C Sda"},"i2c_scl":{"type":"string","title":"I2C Scl"},"max_modules":{"type":"integer","title":"Max Modules"}},"type":"object","required":["id","name","firmware","pins","reserved","i2c_sda","i2c_scl","max_modules"],"title":"IoBoardOut"},"IoI2cOut":{"properties":{"address":{"type":"string","title":"Address"},"chip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chip","description":"Set when the firmware recognised the chip."},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"The chip's description, or what the address usually is."},"metrics":{"items":{"type":"string"},"type":"array","title":"Metrics"}},"type":"object","required":["address","chip","label","metrics"],"title":"IoI2cOut"},"IoMetricOut":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"value_type":{"type":"string","enum":["number","boolean"],"title":"Value Type"},"widget":{"type":"string","enum":["line_chart","bar_chart","gauge","stat","segment","toggle","indicator","push_button","slider","rgb","thermometer","level","battery","compass","state_timeline","setpoint","signal","location","label","terminal","multi_chart","menu","segmented","time_input","joystick","number_input","events"],"title":"Widget"},"unit":{"type":"string","title":"Unit"},"control":{"type":"boolean","title":"Control","description":"The widget sends commands on this metric's key (a switch, slider, button or colour)."},"source":{"type":"string","title":"Source"},"gauge_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gauge Min","description":"The widget's low end (gauge, level, slider, signal, ...)."},"gauge_max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gauge Max"},"tone":{"anyOf":[{"type":"string","enum":["ok","warn","danger","info"]},{"type":"null"}],"title":"Tone","description":"Indicators: the colour when lit."},"step":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Step","description":"Sliders: the step."},"pair_metric":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair Metric","description":"Locations: the longitude metric (this one is the latitude)."}},"type":"object","required":["name","label","value_type","widget","unit","control","source","gauge_min","gauge_max","tone","step","pair_metric"],"title":"IoMetricOut"},"IoModuleIn":{"properties":{"kind":{"type":"string","maxLength":16,"title":"Kind","description":"A module type from `kinds`."},"pin":{"type":"string","maxLength":8,"title":"Pin","description":"A pin of the board, as printed on it (D5, A0)."},"key":{"type":"string","maxLength":24,"title":"Key","description":"Names the module's metrics and, for outputs, its command key."},"echo":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Echo","description":"HC-SR04 only: the pin ECHO is wired to."},"green":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Green","description":"RGB LED only: the pin the green leg is wired to."},"blue":{"anyOf":[{"type":"string","maxLength":8},{"type":"null"}],"title":"Blue","description":"RGB LED only: the pin the blue leg is wired to."},"active_low":{"type":"boolean","title":"Active Low","description":"Kinds marked `invertible` only. Outputs: on when the pin is low. Sensors: true when the pin is low.","default":false}},"additionalProperties":false,"type":"object","required":["kind","pin","key"],"title":"IoModuleIn"},"IoModuleKindOut":{"properties":{"kind":{"type":"string","title":"Kind"},"label":{"type":"string","title":"Label"},"summary":{"type":"string","title":"Summary"},"wiring":{"type":"string","title":"Wiring"},"default_key":{"type":"string","title":"Default Key"},"output":{"type":"boolean","title":"Output","description":"Takes device commands on its key."},"needs_echo":{"type":"boolean","title":"Needs Echo"},"extra_pins":{"items":{"type":"string","enum":["echo","green","blue"]},"type":"array","title":"Extra Pins","description":"Setup fields naming the module's other pins."},"invertible":{"type":"boolean","title":"Invertible","description":"May be set to active low."},"single":{"type":"boolean","title":"Single","description":"At most one per board."},"default_active_low":{"type":"boolean","title":"Default Active Low"},"metric_suffixes":{"items":{"type":"string"},"type":"array","title":"Metric Suffixes"}},"type":"object","required":["kind","label","summary","wiring","default_key","output","needs_echo","extra_pins","invertible","single","default_active_low","metric_suffixes"],"title":"IoModuleKindOut"},"IoModuleOut":{"properties":{"kind":{"type":"string","title":"Kind"},"pin":{"type":"string","title":"Pin"},"key":{"type":"string","title":"Key"},"echo":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Echo"},"green":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Green"},"blue":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blue"},"active_low":{"type":"boolean","title":"Active Low"},"metrics":{"items":{"type":"string"},"type":"array","title":"Metrics"}},"type":"object","required":["kind","pin","key","echo","green","blue","active_low","metrics"],"title":"IoModuleOut"},"IoPinOut":{"properties":{"pin":{"type":"string","title":"Pin"},"gpio":{"type":"integer","title":"Gpio"},"kinds":{"items":{"type":"string"},"type":"array","title":"Kinds"},"echo":{"type":"boolean","title":"Echo","description":"May take an HC-SR04's ECHO line."},"pwm":{"type":"boolean","title":"Pwm","description":"May take an RGB LED's green or blue leg."},"note":{"type":"string","title":"Note"}},"type":"object","required":["pin","gpio","kinds","echo","pwm","note"],"title":"IoPinOut"},"IoReservedPinOut":{"properties":{"pin":{"type":"string","title":"Pin"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["pin","reason"],"title":"IoReservedPinOut"},"JoystickOptions":{"properties":{"auto_return":{"type":"boolean","title":"Auto Return","description":"Spring back to 0,0 (and send it) on release.","default":true},"split":{"type":"boolean","title":"Split","default":false},"y_metric":{"anyOf":[{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$"},{"type":"null"}],"title":"Y Metric"}},"additionalProperties":false,"type":"object","title":"JoystickOptions","description":"X and Y from -100 to 100, sent as the text `x,y`, not retained, at most every 200 ms; with\n`split`, X as a number on the widget's key and Y on `y_metric`."},"JoystickWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"joystick","title":"Type"},"options":{"$ref":"#/components/schemas/JoystickOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"JoystickWidget"},"LabelOptions":{"properties":{"format":{"anyOf":[{"type":"string","maxLength":40,"minLength":7},{"type":"null"}],"title":"Format","description":"The whole text around the value, {value} where it goes ('Tank {value} L'); replaces prefix, suffix and unit."},"value_map":{"items":{"$ref":"#/components/schemas/ValueMapEntry"},"type":"array","maxItems":10,"title":"Value Map"},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"decimals":{"type":"integer","maximum":6.0,"minimum":0.0,"title":"Decimals","description":"For numbers.","default":2},"thousands":{"type":"boolean","title":"Thousands","default":false},"multiline":{"type":"boolean","title":"Multiline","default":false},"max_lines":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Max Lines","description":"With multiline.","default":3}},"additionalProperties":false,"type":"object","title":"LabelOptions","description":"The latest value of any type, text included, between a prefix and a suffix."},"LabelWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"label","title":"Type"},"options":{"$ref":"#/components/schemas/LabelOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"LabelWidget"},"LatestOut":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"last_received_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Received At"},"last_sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Sent At"},"last_message_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Message Id"},"message_count":{"type":"integer","title":"Message Count","default":0},"metrics":{"additionalProperties":{"$ref":"#/components/schemas/MetricValueOut"},"type":"object","title":"Metrics","default":{}},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes","default":{}}},"type":"object","required":["device_id"],"title":"LatestOut"},"Layout":{"properties":{"x":{"type":"integer","maximum":11.0,"minimum":0.0,"title":"X"},"y":{"type":"integer","minimum":0.0,"title":"Y"},"w":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"W"},"h":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"H"}},"additionalProperties":false,"type":"object","required":["x","y","w","h"],"title":"Layout"},"LedgerEntryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"amount_paise":{"type":"number","title":"Amount Paise"},"balance_after_paise":{"type":"number","title":"Balance After Paise"},"credit_after_paise":{"type":"number","title":"Credit After Paise"},"description":{"type":"string","title":"Description"},"hour":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Hour"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","amount_paise","balance_after_paise","credit_after_paise","description","hour","organization_id","created_at"],"title":"LedgerEntryOut"},"LedgerOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LedgerEntryOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"LedgerOut"},"LevelOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"ramp":{"anyOf":[{"type":"string","enum":["zones","gradient"]},{"type":"null"}],"title":"Ramp","description":"Blend the colour zones into each other instead of stepping between them."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":"%"},"warn_below":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Warn Below","description":"Shown as a warning at or below this value."},"warn_above":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Warn Above","description":"Shown as a warning at or above this value."},"orientation":{"type":"string","enum":["vertical","horizontal"],"title":"Orientation","default":"vertical"}},"additionalProperties":false,"type":"object","title":"LevelOptions"},"LevelWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"level","title":"Type"},"options":{"$ref":"#/components/schemas/LevelOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"LevelWidget"},"LineChartOptions":{"properties":{"aggregation":{"anyOf":[{"type":"string","enum":["avg","min","max","sum","last"]},{"type":"null"}],"title":"Aggregation","description":"What a bucket of a long range shows; absent is the average."},"range_buttons":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Range Buttons","description":"Buttons in the widget that change its time range for the viewer."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"range":{"type":"string","enum":["1h","6h","24h","7d","30d","90d"],"title":"Range","default":"24h"},"y_min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Min","description":"None: from the data."},"y_max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Max"},"show_grid":{"type":"boolean","title":"Show Grid","default":true},"chart_style":{"type":"string","enum":["line","area","step","points"],"title":"Chart Style","default":"line"},"smooth":{"type":"boolean","title":"Smooth","default":false},"show_points":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Points","description":"A dot on every point of the line."}},"additionalProperties":false,"type":"object","title":"LineChartOptions"},"LineChartWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"line_chart","title":"Type"},"options":{"$ref":"#/components/schemas/LineChartOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"LineChartWidget"},"LocationOptions":{"properties":{"lon_metric":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Lon Metric"},"decimals":{"type":"integer","maximum":7.0,"minimum":0.0,"title":"Decimals","default":5},"zoom":{"type":"integer","maximum":19.0,"minimum":1.0,"title":"Zoom","description":"The map link's zoom.","default":15},"trail":{"type":"integer","maximum":50.0,"minimum":0.0,"title":"Trail","description":"Earlier fixes listed under the position.","default":0}},"additionalProperties":false,"type":"object","required":["lon_metric"],"title":"LocationOptions","description":"The widget's metric is the latitude; the longitude is a second metric of the same device."},"LocationWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"location","title":"Type"},"options":{"$ref":"#/components/schemas/LocationOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type","options"],"title":"LocationWidget"},"MandateConfirmIn":{"properties":{"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"}},"type":"object","required":["razorpay_order_id","razorpay_payment_id","razorpay_signature"],"title":"MandateConfirmIn"},"MandateStartIn":{"properties":{"legal_name":{"type":"string","maxLength":200,"minLength":1,"title":"Legal Name"},"email":{"type":"string","maxLength":254,"minLength":3,"title":"Email"},"phone":{"type":"string","pattern":"^[+]?[0-9 ()-]{6,20}$","title":"Phone"},"return_path":{"type":"string","enum":["/signup/continue","/account/billing"],"title":"Return Path","default":"/account/billing"}},"type":"object","required":["legal_name","email","phone"],"title":"MandateStartIn"},"MandateStartOut":{"properties":{"order_id":{"type":"string","title":"Order Id"},"amount_paise":{"type":"integer","title":"Amount Paise"},"key_id":{"type":"string","title":"Key Id"},"currency":{"type":"string","title":"Currency","default":"INR"},"customer_id":{"type":"string","title":"Customer Id"},"callback_url":{"type":"string","title":"Callback Url"},"checkout_script":{"type":"string","title":"Checkout Script"},"custom_checkout_script":{"type":"string","title":"Custom Checkout Script"}},"type":"object","required":["order_id","amount_paise","key_id","customer_id","callback_url","checkout_script","custom_checkout_script"],"title":"MandateStartOut"},"MarkedRead":{"properties":{"updated":{"type":"integer","title":"Updated"}},"type":"object","required":["updated"],"title":"MarkedRead"},"MeBillingOut":{"properties":{"wallet_id":{"type":"string","format":"uuid","title":"Wallet Id"},"balance_paise":{"type":"number","title":"Balance Paise"},"credit_paise":{"type":"number","title":"Credit Paise"},"credit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Credit Expires At"},"mode":{"type":"string","title":"Mode"},"state":{"type":"string","title":"State"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"account_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Type"},"student_college_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Student College Status"},"student_benefit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Student Benefit Expires At"},"free_devices":{"type":"integer","title":"Free Devices"},"free_devices_used":{"type":"integer","title":"Free Devices Used"},"razorpay_ready":{"type":"boolean","title":"Razorpay Ready"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"checkout_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkout Script"},"by_organization":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"By Organization"},"by_project":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"By Project"},"auto_debit_enabled":{"type":"boolean","title":"Auto Debit Enabled","default":false},"credit_limit_paise":{"type":"integer","title":"Credit Limit Paise","default":0},"payment_method":{"anyOf":[{"$ref":"#/components/schemas/PaymentMethodSummary"},{"type":"null"}]},"open_invoices":{"items":{"$ref":"#/components/schemas/InvoiceSummary"},"type":"array","title":"Open Invoices","default":[]},"budget_paise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Paise"}},"type":"object","required":["wallet_id","balance_paise","credit_paise","credit_expires_at","mode","state","reason","account_type","student_college_status","student_benefit_expires_at","free_devices","free_devices_used","razorpay_ready","key_id","checkout_script","by_organization","by_project"],"title":"MeBillingOut"},"MeOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"email_verified":{"type":"boolean","title":"Email Verified","description":"False for an account created by sign-up without email verification, until its confirmation link is used.","default":true},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"panel":{"type":"string","enum":["cloud","control","admin","app"],"title":"Panel"},"realm":{"type":"string","enum":["customer","staff"],"title":"Realm"},"mfa":{"$ref":"#/components/schemas/MfaStateOut"},"default_organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Organization Id","description":"The organization the caller starred (0035), while they still belong to it; the console's home opens it. None: the personal workspace."},"support":{"anyOf":[{"$ref":"#/components/schemas/SupportSessionOut"},{"type":"null"}],"description":"Set on a staff member's read-only support view of this account (0037)."},"idle_timeout_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Idle Timeout Seconds","description":"This panel signs a session out after this long without a request the user made (admin: 30 minutes); null where only the absolute lifetime applies."},"account_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Type"},"onboarding_completed":{"type":"boolean","title":"Onboarding Completed","default":false},"student_college_status":{"type":"string","title":"Student College Status","default":"none"},"student_benefit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Student Benefit Expires At"}},"type":"object","required":["id","email","display_name","panel","realm","mfa"],"title":"MeOut"},"MemberAccessUpdate":{"properties":{"access":{"type":"string","enum":["all","selected"],"title":"Access"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role","description":"Organization role; must be viewer for 'selected'.","default":"viewer"},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessIn"},"type":"array","maxItems":100,"title":"Projects"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When this access ends; null for no end."}},"type":"object","required":["access"],"title":"MemberAccessUpdate","description":"The whole access of one member: every project, or selected projects with a role each.\n\nSelected access with no project leaves only teams and shared dashboards."},"MemberDetail":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"access":{"type":"string","enum":["all","selected"],"title":"Access","default":"all"},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessOut"},"type":"array","title":"Projects"},"teams":{"items":{"$ref":"#/components/schemas/TeamRef"},"type":"array","title":"Teams"},"shared_dashboards":{"type":"integer","title":"Shared Dashboards","description":"Dashboards shared with this member.","default":0},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"effective":{"items":{"$ref":"#/components/schemas/EffectiveProjectAccess"},"type":"array","title":"Effective","description":"Every project the member reaches today."},"team_grants":{"items":{"$ref":"#/components/schemas/MemberTeamOut"},"type":"array","title":"Team Grants","description":"The member's teams and their projects."},"shares":{"items":{"$ref":"#/components/schemas/SharedDashboardOut"},"type":"array","title":"Shares"},"history":{"items":{"$ref":"#/components/schemas/AuditEventOut"},"type":"array","title":"History","description":"Recent changes to this member (newest first, at most 50)."}},"type":"object","required":["user_id","email","display_name","role","created_at","effective","history"],"title":"MemberDetail"},"MemberList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MemberOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"MemberList"},"MemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"access":{"type":"string","enum":["all","selected"],"title":"Access","default":"all"},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessOut"},"type":"array","title":"Projects"},"teams":{"items":{"$ref":"#/components/schemas/TeamRef"},"type":"array","title":"Teams"},"shared_dashboards":{"type":"integer","title":"Shared Dashboards","description":"Dashboards shared with this member.","default":0},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["user_id","email","display_name","role","created_at"],"title":"MemberOut"},"MemberRef":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"null"}],"title":"Role"},"access":{"anyOf":[{"type":"string","enum":["all","selected"]},{"type":"null"}],"title":"Access"}},"type":"object","required":["user_id","email","display_name"],"title":"MemberRef"},"MemberTeamOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired","default":false},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessOut"},"type":"array","title":"Projects"}},"type":"object","required":["id","name","projects"],"title":"MemberTeamOut"},"MemberUpdate":{"properties":{"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"}},"type":"object","required":["role"],"title":"MemberUpdate"},"MenuOptions":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChoiceItem"},"type":"array","maxItems":16,"minItems":2,"title":"Items"}},"additionalProperties":false,"type":"object","title":"MenuOptions","description":"A select whose choice is sent as a retained integer command (an enum datastream)."},"MenuWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"menu","title":"Type"},"options":{"$ref":"#/components/schemas/MenuOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"MenuWidget"},"MessageList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MessageOut"},"type":"array","title":"Items"},"next_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Before"}},"type":"object","required":["items"],"title":"MessageList"},"MessageOut":{"properties":{"message_id":{"type":"string","title":"Message Id"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"sequence":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sequence"},"metrics":{"additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}]},"type":"object","title":"Metrics"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes"},"payload_bytes":{"type":"integer","title":"Payload Bytes"}},"type":"object","required":["message_id","received_at","sent_at","sequence","metrics","attributes","payload_bytes"],"title":"MessageOut"},"MeterLineOut":{"properties":{"meter":{"type":"string","title":"Meter"},"quantity":{"type":"number","title":"Quantity"},"amount_paise":{"type":"number","title":"Amount Paise"}},"type":"object","required":["meter","quantity","amount_paise"],"title":"MeterLineOut"},"MetricValueOut":{"properties":{"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}],"title":"Value"},"received_at":{"type":"string","format":"date-time","title":"Received At"}},"type":"object","required":["value","received_at"],"title":"MetricValueOut"},"MfaResultOut":{"properties":{"verified":{"type":"boolean","title":"Verified"},"mfa":{"$ref":"#/components/schemas/MfaStateOut"},"recovery_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Recovery Codes","description":"Shown exactly once, when the first factor is confirmed."},"app_session":{"anyOf":[{"$ref":"#/components/schemas/AppTokenOut"},{"type":"null"}],"description":"App panel only, when this request finished signing in: the rotated bearer token (the one the app sent stops working)."}},"type":"object","required":["verified","mfa"],"title":"MfaResultOut","description":"Answer of every verify/confirm endpoint: the new state of this session."},"MfaStateOut":{"properties":{"state":{"type":"string","enum":["enrol_required","challenge_required","verified"],"title":"State"},"methods":{"items":{"type":"string","enum":["webauthn","totp","recovery"]},"type":"array","title":"Methods","default":[]},"step_up_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Step Up Until"},"locked_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Locked Until"},"enrol_methods":{"items":{"type":"string","enum":["webauthn","totp"]},"type":"array","title":"Enrol Methods","description":"Factor kinds this account may add now (realm rules and the security policy), passkey first.","default":[]},"can_skip":{"type":"boolean","title":"Can Skip","description":"A pending session may go on without a factor (`POST /auth/mfa/skip`): a customer account without a factor, or one with two-step verification off. Skipping turns it off.","default":false},"skipped":{"type":"boolean","title":"Skipped","description":"This session signed in without a factor.","default":false},"enabled":{"type":"boolean","title":"Enabled","description":"The account has two-step verification on. Off (customers only): sign-in asks for no factor and sensitive actions need no confirmation; `step_up_until` is then the session's end.","default":true}},"type":"object","required":["state"],"title":"MfaStateOut"},"MfaToggle":{"properties":{"enabled":{"type":"boolean","title":"Enabled"}},"type":"object","required":["enabled"],"title":"MfaToggle"},"MonthOut":{"properties":{"start":{"type":"string","format":"date-time","title":"Start"},"total_paise":{"type":"number","title":"Total Paise"},"lines":{"items":{"$ref":"#/components/schemas/MeterLineOut"},"type":"array","title":"Lines"}},"type":"object","required":["start","total_paise","lines"],"title":"MonthOut"},"MqttConnectionOut":{"properties":{"host":{"type":"string","title":"Host"},"port":{"type":"integer","title":"Port"},"tls":{"type":"boolean","title":"Tls","default":true},"client_id":{"type":"string","title":"Client Id","description":"Must equal the device id."},"topic":{"type":"string","title":"Topic"},"status_topic":{"type":"string","title":"Status Topic","description":"Presence topic: publish {\"schema_version\":1,\"state\":\"online\"} after connecting and set {\"schema_version\":1,\"state\":\"offline\"} as the last will."},"command_topic":{"type":"string","title":"Command Topic","description":"Subscribe to this filter (QoS 1) to receive commands, one retained message per key: {\"schema_version\":1,\"command_id\":\"…\",\"key\":\"led_on\",\"value\":true,\"sent_at\":\"…\"}."},"qos":{"type":"integer","title":"Qos","default":1},"ca_file":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ca File","description":"Private CA file to trust (development). Null means a publicly trusted certificate."},"ca_pem":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ca Pem","description":"PEM root certificate(s) a device without a system trust store (a microcontroller) must trust. Only on a newly created credential; null elsewhere, and when the deployment does not know them (the script then needs them pasted in)."}},"type":"object","required":["host","port","client_id","topic","status_topic","command_topic"],"title":"MqttConnectionOut"},"MultiChartOptions":{"properties":{"range":{"type":"string","enum":["1h","6h","24h","7d","30d","90d"],"title":"Range","default":"24h"},"label":{"type":"string","maxLength":16,"title":"Label","default":""},"tone":{"type":"string","enum":["ok","warn","danger","info"],"title":"Tone","default":"info"},"series":{"items":{"$ref":"#/components/schemas/ChartSeries"},"type":"array","maxItems":3,"title":"Series"},"chart_style":{"type":"string","enum":["line","area","step","points"],"title":"Chart Style","default":"line"},"smooth":{"type":"boolean","title":"Smooth","default":false},"y_min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Min"},"y_max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Y Max"},"show_grid":{"type":"boolean","title":"Show Grid","default":true},"show_legend":{"type":"boolean","title":"Show Legend","default":true},"aggregation":{"anyOf":[{"type":"string","enum":["avg","min","max","sum","last"]},{"type":"null"}],"title":"Aggregation","description":"What a bucket of a long range shows; absent is the average."},"range_buttons":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Range Buttons","description":"Buttons in the widget that change its time range for the viewer."},"show_points":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Points","description":"A dot on every point of the lines."}},"additionalProperties":false,"type":"object","title":"MultiChartOptions","description":"Up to four metrics of the widget's device on one chart (a SuperChart): the source\nmetric, drawn with `label` and `tone`, then `series`."},"MultiChartWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"multi_chart","title":"Type"},"options":{"$ref":"#/components/schemas/MultiChartOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"MultiChartWidget"},"MyPhotoOut":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Your uploaded photo (API-relative)."},"google_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Url","description":"Your Google profile picture, from Google sign-in."},"google_client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Client Id","description":"Google sign-in is on: the client id for Google's button behind \"Use my Google photo\"."}},"type":"object","required":["image_url","google_url","google_client_id"],"title":"MyPhotoOut"},"NotificationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotificationOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"unread":{"type":"integer","title":"Unread"}},"type":"object","required":["items","next_cursor","unread"],"title":"NotificationList"},"NotificationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"event_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Event Id"},"kind":{"type":"string","enum":["fired","resolved","reminder","event"],"title":"Kind"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"title":{"type":"string","title":"Title"},"body":{"type":"string","title":"Body"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"read_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Read At"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","organization_id","organization_name","event_id","kind","severity","title","body","link","read_at","created_at"],"title":"NotificationOut"},"NotificationPreferenceIn":{"properties":{"email":{"type":"boolean","title":"Email","default":true},"push":{"type":"boolean","title":"Push","default":true},"min_severity":{"type":"string","enum":["info","warning","critical"],"title":"Min Severity","default":"info"}},"type":"object","title":"NotificationPreferenceIn"},"NotificationPreferenceList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/NotificationPreferenceOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"NotificationPreferenceList"},"NotificationPreferenceOut":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"email":{"type":"boolean","title":"Email"},"push":{"type":"boolean","title":"Push"},"min_severity":{"type":"string","enum":["info","warning","critical"],"title":"Min Severity"}},"type":"object","required":["organization_id","organization_name","email","push","min_severity"],"title":"NotificationPreferenceOut"},"NumberInputOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"step":{"type":"number","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Step","default":1.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"button_label":{"type":"string","maxLength":16,"title":"Button Label","default":"Send"}},"additionalProperties":false,"type":"object","title":"NumberInputOptions","description":"An exact number typed and sent as a retained command (a calibration offset, a count)."},"NumberInputWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"number_input","title":"Type"},"options":{"$ref":"#/components/schemas/NumberInputOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"NumberInputWidget"},"OnboardingStatusOut":{"properties":{"account_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Account Type"},"onboarding_completed":{"type":"boolean","title":"Onboarding Completed"},"student_college_status":{"type":"string","title":"Student College Status"},"student_benefit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Student Benefit Expires At"},"needs_payment":{"type":"boolean","title":"Needs Payment"},"needs_college":{"type":"boolean","title":"Needs College"},"types":{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object","title":"Types"},"text":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Text"},"razorpay_ready":{"type":"boolean","title":"Razorpay Ready"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"checkout_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkout Script"},"custom_checkout_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Checkout Script"},"auth_amount_paise":{"type":"integer","title":"Auth Amount Paise","default":0}},"type":"object","required":["account_type","onboarding_completed","student_college_status","student_benefit_expires_at","needs_payment","needs_college","types","text","razorpay_ready"],"title":"OnboardingStatusOut"},"OrgBillingOut":{"properties":{"available":{"type":"boolean","title":"Available","description":"Online payments are set up (Razorpay)."},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"checkout_script":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkout Script"},"can_manage":{"type":"boolean","title":"Can Manage"},"can_top_up":{"type":"boolean","title":"Can Top Up","description":"The caller may add credit here: owner, own prepaid wallet."},"paid_by":{"type":"string","enum":["organization","enterprise","user"],"title":"Paid By"},"enterprise_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enterprise Name"},"wallet":{"$ref":"#/components/schemas/WalletOut"},"month":{"$ref":"#/components/schemas/MonthOut"},"current":{"items":{"$ref":"#/components/schemas/CurrentLineOut"},"type":"array","title":"Current"},"current_hourly_paise":{"type":"number","title":"Current Hourly Paise"},"rates":{"items":{"$ref":"#/components/schemas/RateOut"},"type":"array","title":"Rates"},"retention_days":{"type":"integer","title":"Retention Days"},"storage_bytes":{"type":"integer","title":"Storage Bytes"},"topup":{"$ref":"#/components/schemas/TopupLimitsOut"},"account":{"anyOf":[{"$ref":"#/components/schemas/BillingAccountOut"},{"type":"null"}]}},"type":"object","required":["available","key_id","checkout_script","can_manage","can_top_up","paid_by","enterprise_name","wallet","month","current","current_hourly_paise","rates","retention_days","storage_bytes","topup","account"],"title":"OrgBillingOut"},"OrgBillingStatus":{"properties":{"state":{"type":"string","enum":["ok","low","grace","read_only"],"title":"State"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","description":"balance_low, balance_exhausted, credit_limit_near, credit_limit_reached or invoice_overdue."},"mode":{"type":"string","enum":["prepaid","postpaid"],"title":"Mode"},"paid_by":{"type":"string","enum":["organization","enterprise","user"],"title":"Paid By","description":"Whose wallet pays: the organization, its enterprise, or the owner's personal wallet (0052)."},"enforced":{"type":"boolean","title":"Enforced","description":"False while billing runs in the shadow phase: nothing is stopped."},"writable":{"type":"boolean","title":"Writable"},"grace_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Grace Ends At"},"funds_paise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Funds Paise","description":"Credit left (postpaid: left under the limit); only for members who read billing."}},"type":"object","required":["state","mode","paid_by","enforced","writable"],"title":"OrgBillingStatus","description":"Where the organization's billing stands (hourly billing, migration 0051), for banners."},"OrgTemplateCopy":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name","description":"Defaults to the library template's name."}},"additionalProperties":false,"type":"object","title":"OrgTemplateCopy"},"OrgTemplateCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type","default":"microcontroller"},"description":{"type":"string","maxLength":2000,"title":"Description","default":""},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","maxItems":256,"title":"Datastreams"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","maxItems":24,"title":"Dashboard"}},"additionalProperties":false,"type":"object","required":["name"],"title":"OrgTemplateCreate"},"OrgTemplateList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrgTemplateSummary"},"type":"array","title":"Items"},"limit":{"type":"integer","title":"Limit","description":"Templates an organization may keep, archived ones included."}},"type":"object","required":["items","limit"],"title":"OrgTemplateList"},"OrgTemplateOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"description":{"type":"string","title":"Description"},"status":{"type":"string","enum":["active","archived"],"title":"Status"},"version":{"type":"integer","title":"Version"},"datastream_count":{"type":"integer","title":"Datastream Count"},"widget_count":{"type":"integer","title":"Widget Count"},"devices_using":{"type":"integer","title":"Devices Using","description":"Devices of this organization made from it that are not archived."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","title":"Datastreams"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","title":"Dashboard"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"updated_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Updated By"},"updated_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Name","description":"The member who last changed it (name, else email); null once they are gone."}},"type":"object","required":["id","name","hardware_type","description","status","version","datastream_count","widget_count","devices_using","created_at","updated_at","datastreams","dashboard","created_by","updated_by"],"title":"OrgTemplateOut"},"OrgTemplateRevisionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrgTemplateRevisionOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"OrgTemplateRevisionList"},"OrgTemplateRevisionOut":{"properties":{"version":{"type":"integer","title":"Version"},"action":{"type":"string","title":"Action"},"user_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"User Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"content_sha256":{"type":"string","title":"Content Sha256"},"changed_fields":{"items":{"type":"string"},"type":"array","title":"Changed Fields"}},"type":"object","required":["version","action","user_id","created_at","content_sha256","changed_fields"],"title":"OrgTemplateRevisionOut"},"OrgTemplateSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"description":{"type":"string","title":"Description"},"status":{"type":"string","enum":["active","archived"],"title":"Status"},"version":{"type":"integer","title":"Version"},"datastream_count":{"type":"integer","title":"Datastream Count"},"widget_count":{"type":"integer","title":"Widget Count"},"devices_using":{"type":"integer","title":"Devices Using","description":"Devices of this organization made from it that are not archived."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","hardware_type","description","status","version","datastream_count","widget_count","devices_using","created_at","updated_at"],"title":"OrgTemplateSummary"},"OrgTemplateUpdate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type","default":"microcontroller"},"description":{"type":"string","maxLength":2000,"title":"Description","default":""},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","maxItems":256,"title":"Datastreams"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","maxItems":24,"title":"Dashboard"},"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"}},"additionalProperties":false,"type":"object","required":["name","expected_version"],"title":"OrgTemplateUpdate"},"OrgTemplateVersion":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"}},"additionalProperties":false,"type":"object","required":["expected_version"],"title":"OrgTemplateVersion","description":"Archive and restore: the version the caller saw."},"OrganizationCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"OrganizationCreate"},"OrganizationDelete":{"properties":{"confirm_name":{"type":"string","maxLength":200,"minLength":1,"title":"Confirm Name"}},"type":"object","required":["confirm_name"],"title":"OrganizationDelete"},"OrganizationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/OrganizationOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"OrganizationList"},"OrganizationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"personal":{"type":"boolean","title":"Personal","description":"A private workspace. The console hides it until the person creates an organization.","default":false},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"access":{"type":"string","enum":["all","selected"],"title":"Access","description":"'selected': the caller reaches only some projects; `role` is then viewer and each project carries the caller's role there.","default":"all"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When the caller's membership ends."},"is_default":{"type":"boolean","title":"Is Default","description":"The caller starred it: the console's home opens this organization (0035).","default":false},"default_project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Default Project Id","description":"The project the caller opens on entering the organization (their own choice). Only reading one organization fills it, and only while the caller still reaches the project."},"billing":{"anyOf":[{"$ref":"#/components/schemas/OrgBillingStatus"},{"type":"null"}],"description":"Plan and read-only state; only reading one organization fills it."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"appearance":{"$ref":"#/components/schemas/AppearanceOut","description":"Icon, colour and picture (0043)."}},"type":"object","required":["id","name","role","created_at"],"title":"OrganizationOut"},"OrganizationUpdate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"OrganizationUpdate"},"OtaOrderOut":{"properties":{"ota_id":{"type":"string","format":"uuid","title":"Ota Id"},"device_id":{"type":"string","format":"uuid","title":"Device Id"},"release_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Release Id"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version"},"requested_at":{"type":"string","format":"date-time","title":"Requested At"},"topic":{"type":"string","title":"Topic"},"upload_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Upload Id","description":"The organization's own image the order sends, instead of a release."}},"type":"object","required":["ota_id","device_id","release_id","version","requested_at","topic"],"title":"OtaOrderOut"},"OverviewRow":{"properties":{"parameter":{"type":"string","maxLength":60,"minLength":1,"title":"Parameter"},"value":{"type":"string","maxLength":200,"minLength":1,"title":"Value"}},"additionalProperties":false,"type":"object","required":["parameter","value"],"title":"OverviewRow"},"OwnershipTransfer":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"stay_owner":{"type":"boolean","title":"Stay Owner","description":"Keep the owner role too; by default the caller becomes an admin.","default":false}},"type":"object","required":["user_id"],"title":"OwnershipTransfer"},"PasswordChange":{"properties":{"current_password":{"anyOf":[{"type":"string","maxLength":256,"minLength":1},{"type":"null"}],"title":"Current Password","description":"Required when the account has a password; omitted to set a first one.","writeOnly":true},"new_password":{"type":"string","maxLength":256,"minLength":1,"title":"New Password","writeOnly":true}},"type":"object","required":["new_password"],"title":"PasswordChange"},"PasswordForgot":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"}},"type":"object","required":["email"],"title":"PasswordForgot"},"PasswordResetAccepted":{"properties":{"email":{"type":"string","title":"Email"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["email","expires_in_seconds"],"title":"PasswordResetAccepted","description":"The same answer whether or not the address has an account or a password."},"PasswordResetComplete":{"properties":{"token":{"type":"string","maxLength":128,"minLength":32,"pattern":"^[A-Za-z0-9_-]+$","title":"Token"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"type":"object","required":["token","password"],"title":"PasswordResetComplete"},"PasswordResetDone":{"properties":{"email":{"type":"string","title":"Email"},"sign_in_path":{"type":"string","title":"Sign In Path"}},"type":"object","required":["email","sign_in_path"],"title":"PasswordResetDone","description":"Every session of the account was signed out; sign in with the new password."},"PasswordResetTokenIn":{"properties":{"token":{"type":"string","maxLength":128,"minLength":32,"pattern":"^[A-Za-z0-9_-]+$","title":"Token"}},"type":"object","required":["token"],"title":"PasswordResetTokenIn"},"PasswordResetTokenOut":{"properties":{"email":{"type":"string","title":"Email"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"first_password":{"type":"boolean","title":"First Password","description":"The account has no password yet: the link sets its first one."}},"type":"object","required":["email","expires_at","first_password"],"title":"PasswordResetTokenOut"},"PasswordStatusOut":{"properties":{"available":{"type":"boolean","title":"Available","description":"This account can have a password on this panel's realm."},"has_password":{"type":"boolean","title":"Has Password"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"The address the password signs in with."},"changed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Changed At"},"unavailable_reason":{"anyOf":[{"type":"string","enum":["password_sign_in_disabled","dex_api_not_configured","email_unverified"]},{"type":"null"}],"title":"Unavailable Reason"}},"type":"object","required":["available","has_password","email"],"title":"PasswordStatusOut"},"PayInvoiceOut":{"properties":{"paid":{"type":"boolean","title":"Paid"},"short_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Short Url"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["paid"],"title":"PayInvoiceOut"},"PaymentCompleteIn":{"properties":{"razorpay_payment_id":{"anyOf":[{"type":"string","maxLength":40,"minLength":8},{"type":"null"}],"title":"Razorpay Payment Id"},"skip_dev":{"type":"boolean","title":"Skip Dev","default":false},"promotion_code":{"anyOf":[{"type":"string","maxLength":40,"minLength":2,"pattern":"^[A-Za-z0-9_-]+$"},{"type":"null"}],"title":"Promotion Code"}},"type":"object","title":"PaymentCompleteIn"},"PaymentMethodOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"last4":{"type":"string","title":"Last4"},"network":{"type":"string","title":"Network"},"expiry_month":{"type":"integer","title":"Expiry Month"},"expiry_year":{"type":"integer","title":"Expiry Year"},"active":{"type":"boolean","title":"Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","last4","network","expiry_month","expiry_year","active","created_at"],"title":"PaymentMethodOut"},"PaymentMethodSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"last4":{"type":"string","title":"Last4"},"network":{"type":"string","title":"Network"},"expiry_month":{"type":"integer","title":"Expiry Month"},"expiry_year":{"type":"integer","title":"Expiry Year"}},"type":"object","required":["id","last4","network","expiry_month","expiry_year"],"title":"PaymentMethodSummary"},"PeoplePhotosIn":{"properties":{"emails":{"items":{"type":"string","maxLength":320},"type":"array","maxItems":100,"title":"Emails","description":"Addresses to look up."}},"type":"object","required":["emails"],"title":"PeoplePhotosIn"},"PeoplePhotosOut":{"properties":{"photos":{"items":{"$ref":"#/components/schemas/PersonPhotoOut"},"type":"array","title":"Photos","description":"Only people you share an organization (with every project) or an enterprise with, and who have a photo."}},"type":"object","required":["photos"],"title":"PeoplePhotosOut"},"PersonPhotoOut":{"properties":{"email":{"type":"string","title":"Email","description":"The address as looked up, lower case."},"user_id":{"type":"string","format":"uuid","title":"User Id"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"The uploaded photo (API-relative; add `size=thumb` for the small one)."},"google_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Url","description":"The Google profile picture (googleusercontent.com)."}},"type":"object","required":["email","user_id","image_url","google_url"],"title":"PersonPhotoOut","description":"A person's photos besides Gravatar (0045); the console tries the upload, Gravatar, then Google."},"PinRow":{"properties":{"pin":{"type":"string","maxLength":24,"minLength":1,"title":"Pin","description":"As printed on the board, e.g. `D2` or `Pin 3`."},"kind":{"type":"string","enum":["power","ground","gpio","input_only","strapping","flash","control","other"],"title":"Kind","default":"gpio"},"functions":{"type":"string","maxLength":120,"title":"Functions","default":""},"notes":{"type":"string","maxLength":200,"title":"Notes","default":""}},"additionalProperties":false,"type":"object","required":["pin"],"title":"PinRow"},"Pinout":{"properties":{"image_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Image Id","description":"A `pinout` asset of this template."},"image_alt":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Image Alt"},"pins":{"items":{"$ref":"#/components/schemas/PinRow"},"type":"array","maxItems":80,"title":"Pins"},"notes":{"items":{"type":"string","maxLength":300,"minLength":1},"type":"array","maxItems":6,"title":"Notes"}},"additionalProperties":false,"type":"object","title":"Pinout"},"PipelineOut":{"properties":{"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"streams":{"items":{"$ref":"#/components/schemas/StreamOut"},"type":"array","title":"Streams","default":[]},"dead_letter":{"$ref":"#/components/schemas/DeadLetterOut"},"broker":{"$ref":"#/components/schemas/BrokerHealthOut"},"errors":{"items":{"$ref":"#/components/schemas/ComponentErrorOut"},"type":"array","title":"Errors","default":[]},"email":{"anyOf":[{"$ref":"#/components/schemas/EmailHealthOut"},{"type":"null"}]}},"type":"object","required":["checked_at","dead_letter","broker"],"title":"PipelineOut"},"PipelineSummaryOut":{"properties":{"checked_at":{"type":"string","format":"date-time","title":"Checked At"},"streams":{"items":{"$ref":"#/components/schemas/StreamSummaryOut"},"type":"array","title":"Streams","default":[]},"dead_letter_length":{"type":"integer","title":"Dead Letter Length","default":0},"broker":{"$ref":"#/components/schemas/BrokerHealthOut"},"errors":{"items":{"$ref":"#/components/schemas/ComponentErrorOut"},"type":"array","title":"Errors","default":[]},"email":{"anyOf":[{"$ref":"#/components/schemas/EmailSummaryOut"},{"type":"null"}]}},"type":"object","required":["checked_at","broker"],"title":"PipelineSummaryOut"},"PlaceholderInfo":{"properties":{"name":{"type":"string","enum":["DEVICE_ID","DEVICE_NAME","ORG_ID","PROJECT_ID","TOPIC","MQTT_HOST","MQTT_PORT","MQTT_CLIENT_ID","MQTT_USERNAME","MQTT_PASSWORD","DEVICE_TOKEN","MQTT_CA_FILE","MQTT_CA_PEM","WIFI_SSID","WIFI_PASSWORD"],"title":"Name"},"description":{"type":"string","title":"Description"},"secret":{"type":"boolean","title":"Secret"},"files_only":{"type":"boolean","title":"Files Only","description":"Not allowed in guide code blocks or commands."}},"type":"object","required":["name","description","secret","files_only"],"title":"PlaceholderInfo"},"PlatformAnnouncementOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"audience":{"type":"string","enum":["all","cloud","control","landing"],"title":"Audience"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"dismissible":{"type":"boolean","title":"Dismissible","default":true}},"type":"object","required":["id","title","severity","audience","starts_at"],"title":"PlatformAnnouncementOut"},"PlatformAppearanceIn":{"properties":{"product_name":{"type":"string","title":"Product Name"},"accent_light":{"type":"string","title":"Accent Light"},"accent_dark":{"type":"string","title":"Accent Dark"},"logo_color_light":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Light","description":"Null: the logo follows the accent."},"logo_color_dark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Dark","description":"Null: the logo follows the accent."},"default_theme":{"type":"string","enum":["light","dark","system"],"title":"Default Theme"},"login_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Title"},"login_subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Subtitle"},"login_background":{"type":"string","enum":["plain","blobs","image","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Login Background"},"console_background":{"type":"string","enum":["plain","blobs","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Console Background","default":"plain"},"console_colors":{"$ref":"#/components/schemas/ConsoleColors"},"console_layout":{"$ref":"#/components/schemas/ConsoleLayout"},"typography":{"$ref":"#/components/schemas/Typography"},"email_theme":{"$ref":"#/components/schemas/EmailTheme"}},"type":"object","required":["product_name","accent_light","accent_dark","default_theme","login_background"],"title":"PlatformAppearanceIn"},"PlatformFeatureOut":{"properties":{"name":{"type":"string","title":"Name"},"label":{"type":"string","title":"Label"},"hint":{"type":"string","title":"Hint"},"enabled":{"type":"boolean","title":"Enabled","description":"What staff chose."},"unavailable":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable","description":"Why the deployment cannot offer it."}},"type":"object","required":["name","label","hint","enabled"],"title":"PlatformFeatureOut"},"PlatformFontOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"family":{"type":"string","title":"Family"},"weight_min":{"type":"integer","title":"Weight Min"},"weight_max":{"type":"integer","title":"Weight Max"},"style":{"type":"string","enum":["normal","italic"],"title":"Style"},"size":{"type":"integer","title":"Size","description":"Bytes."},"path":{"type":"string","title":"Path","description":"Relative to the API root."},"used":{"type":"boolean","title":"Used","description":"The typography names it; it cannot be removed while so."},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","family","weight_min","weight_max","style","size","path","used","created_at"],"title":"PlatformFontOut","description":"A font staff uploaded (WOFF2, `control.platform_fonts`)."},"PlatformGeneralIn":{"properties":{"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Email"},"support_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Url"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url"},"status_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Url"},"terms_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Url"},"privacy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privacy Url"},"footer_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Text"}},"type":"object","title":"PlatformGeneralIn"},"PlatformImageOut":{"properties":{"kind":{"type":"string","enum":["logo_light","logo_dark","favicon","login_image"],"title":"Kind"},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Path"}},"type":"object","required":["kind"],"title":"PlatformImageOut"},"PlatformMaintenanceIn":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"}},"type":"object","required":["enabled"],"title":"PlatformMaintenanceIn"},"PlatformMaintenanceOut":{"properties":{"active":{"type":"boolean","title":"Active","default":false},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At","description":"When staff expect it to end (informational)."}},"type":"object","title":"PlatformMaintenanceOut"},"PlatformPublicOut":{"properties":{"version":{"type":"integer","title":"Version"},"product_name":{"type":"string","title":"Product Name"},"accent_light":{"type":"string","title":"Accent Light"},"accent_dark":{"type":"string","title":"Accent Dark"},"accent_custom":{"type":"boolean","title":"Accent Custom","description":"Staff changed the accents from the built-in ones."},"logo_color_light":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Light","description":"The logo tile in the light theme; null follows the accent."},"logo_color_dark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Dark","description":"The logo outline and letters in the dark theme; null follows the accent."},"default_theme":{"type":"string","enum":["light","dark","system"],"title":"Default Theme"},"login_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Title"},"login_subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Subtitle"},"login_background":{"type":"string","enum":["plain","blobs","image","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Login Background"},"console_background":{"type":"string","enum":["plain","blobs","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Console Background","description":"Behind every console page.","default":"plain"},"console_colors":{"$ref":"#/components/schemas/ConsoleColors"},"console_layout":{"$ref":"#/components/schemas/ConsoleLayout"},"logo_light_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Light Path"},"logo_dark_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Dark Path"},"favicon_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Favicon Path"},"login_image_path":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Image Path"},"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Email"},"support_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Url"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url"},"status_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Url"},"terms_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Url"},"privacy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privacy Url"},"footer_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Text"},"features":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Features","description":"Each feature and whether it is on here."},"maintenance":{"$ref":"#/components/schemas/PlatformMaintenanceOut"},"announcements":{"items":{"$ref":"#/components/schemas/PlatformAnnouncementOut"},"type":"array","title":"Announcements"}},"type":"object","required":["version","product_name","accent_light","accent_dark","accent_custom","default_theme","login_background","features","maintenance"],"title":"PlatformPublicOut","description":"Everything public about the platform: look, links, switches and notices. Image paths are\nrelative to the API root (prefix `/api` behind the web proxy)."},"PlatformSettingsOut":{"properties":{"version":{"type":"integer","title":"Version"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"product_name":{"type":"string","title":"Product Name"},"accent_light":{"type":"string","title":"Accent Light"},"accent_dark":{"type":"string","title":"Accent Dark"},"logo_color_light":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Light"},"logo_color_dark":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Color Dark"},"default_theme":{"type":"string","enum":["light","dark","system"],"title":"Default Theme"},"login_title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Title"},"login_subtitle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Login Subtitle"},"login_background":{"type":"string","enum":["plain","blobs","image","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Login Background"},"console_background":{"type":"string","enum":["plain","blobs","gradient","dots","aurora","mesh","waves","drift","shift","orbs","grid","rings","fields","plant"],"title":"Console Background","default":"plain"},"console_colors":{"$ref":"#/components/schemas/ConsoleColors"},"console_layout":{"$ref":"#/components/schemas/ConsoleLayout"},"typography":{"$ref":"#/components/schemas/Typography"},"email_theme":{"$ref":"#/components/schemas/EmailTheme"},"fonts":{"items":{"$ref":"#/components/schemas/PlatformFontOut"},"type":"array","title":"Fonts"},"images":{"items":{"$ref":"#/components/schemas/PlatformImageOut"},"type":"array","title":"Images"},"support_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Email"},"support_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Url"},"docs_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Docs Url"},"status_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Url"},"terms_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Url"},"privacy_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Privacy Url"},"footer_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footer Text"},"features":{"items":{"$ref":"#/components/schemas/PlatformFeatureOut"},"type":"array","title":"Features"},"maintenance_enabled":{"type":"boolean","title":"Maintenance Enabled","default":false},"maintenance_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Maintenance Message"},"maintenance_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Maintenance Ends At"}},"type":"object","required":["version","product_name","accent_light","accent_dark","default_theme","login_background","images","features"],"title":"PlatformSettingsOut"},"PlatformSettingsUpdate":{"properties":{"appearance":{"anyOf":[{"$ref":"#/components/schemas/PlatformAppearanceIn"},{"type":"null"}]},"general":{"anyOf":[{"$ref":"#/components/schemas/PlatformGeneralIn"},{"type":"null"}]},"features":{"anyOf":[{"additionalProperties":{"type":"boolean"},"type":"object"},{"type":"null"}],"title":"Features","description":"Feature name -> on."},"maintenance":{"anyOf":[{"$ref":"#/components/schemas/PlatformMaintenanceIn"},{"type":"null"}]},"expected_version":{"type":"integer","title":"Expected Version"},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["expected_version","reason"],"title":"PlatformSettingsUpdate","description":"Each section is optional; the ones given replace what is stored."},"PlatformStatusOut":{"properties":{"configured":{"type":"boolean","title":"Configured"},"indicator":{"anyOf":[{"type":"string","enum":["none","minor","major","critical"]},{"type":"null"}],"title":"Indicator"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"page_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page Url"}},"type":"object","required":["configured"],"title":"PlatformStatusOut","description":"The Atlassian Statuspage summary the consoles show as System status."},"PresetItem":{"properties":{"value":{"type":"integer","maximum":2147483647.0,"minimum":-2147483648.0,"title":"Value"},"label":{"type":"string","maxLength":16,"minLength":1,"title":"Label"}},"additionalProperties":false,"type":"object","required":["value","label"],"title":"PresetItem","description":"A choice of a menu or segmented switch (dashboard_config.ChoiceItem)."},"PresetSeries":{"properties":{"metric":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Metric"},"label":{"type":"string","maxLength":16,"title":"Label","default":""},"tone":{"type":"string","enum":["ok","warn","danger","info"],"title":"Tone","default":"ok"}},"additionalProperties":false,"type":"object","required":["metric"],"title":"PresetSeries","description":"A further metric of a SuperChart (dashboard_config.ChartSeries)."},"PresetWidget":{"properties":{"type":{"type":"string","enum":["line_chart","bar_chart","gauge","stat","segment","toggle","indicator","push_button","slider","rgb","thermometer","level","battery","compass","state_timeline","setpoint","signal","location","label","terminal","multi_chart","menu","segmented","time_input","joystick","number_input","events"],"title":"Type"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"metric":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Metric"},"w":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"W","default":6},"h":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"H","default":4},"range":{"anyOf":[{"type":"string","enum":["1h","6h","24h","7d"]},{"type":"null"}],"title":"Range","description":"Charts and state timelines."},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"min":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Min","description":"Gauge, level, thermometer, battery, signal, slider and setpoint: the low end."},"max":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Max","description":"The high end, for the same widgets as min."},"step":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"exclusiveMinimum":0.0},{"type":"null"}],"title":"Step","description":"Slider and setpoint."},"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"Stat and segment display."},"tone":{"anyOf":[{"type":"string","enum":["ok","warn","danger","info"]},{"type":"null"}],"title":"Tone","description":"Indicator and segment display."},"lon_metric":{"anyOf":[{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$"},{"type":"null"}],"title":"Lon Metric","description":"Location only: the longitude metric."},"control":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Control","description":"Toggle only: the widget switches the device (sends commands with its metric as the key)."},"send_as":{"anyOf":[{"type":"string","enum":["boolean","number"]},{"type":"null"}],"title":"Send As","description":"Toggle only: send true/false (default) or 1/0."},"prefix":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Prefix","description":"Text label only: text before the value."},"suffix":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Suffix","description":"Text label only: text after the value."},"series":{"anyOf":[{"items":{"$ref":"#/components/schemas/PresetSeries"},"type":"array","maxItems":3},{"type":"null"}],"title":"Series","description":"SuperChart only: up to three more metrics of the device."},"items":{"anyOf":[{"items":{"$ref":"#/components/schemas/PresetItem"},"type":"array","maxItems":16,"minItems":2},{"type":"null"}],"title":"Items","description":"Menu (2-16) and segmented switch (2-6): the choices."},"style":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Style","description":"The widget's appearance (dashboard_config.WidgetStyle)."},"zones":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":5},{"type":"null"}],"title":"Zones","description":"Colour bands of the value (dashboard_config.Zone), on the widgets that take them."}},"additionalProperties":false,"type":"object","required":["type","metric"],"title":"PresetWidget","description":"A widget of the dashboard the wizard can create, bound to the new device there (design v2, 5).\n\nThe web lays the widgets out left to right; options are those of the dashboard widget of\nthe same type (dashboard_config.py), checked again when the dashboard is saved."},"PricingOut":{"properties":{"rates":{"items":{"$ref":"#/components/schemas/RateOut"},"type":"array","title":"Rates"},"welcome_credit_paise":{"type":"integer","title":"Welcome Credit Paise"},"welcome_credit_days":{"type":"integer","title":"Welcome Credit Days"},"hours_per_month":{"type":"integer","title":"Hours Per Month"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["rates","welcome_credit_paise","welcome_credit_days","hours_per_month","currency"],"title":"PricingOut"},"ProjectAccessBulk":{"properties":{"set":{"items":{"$ref":"#/components/schemas/ProjectGrantIn"},"type":"array","maxItems":100,"title":"Set"},"remove":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":100,"title":"Remove"}},"type":"object","title":"ProjectAccessBulk"},"ProjectAccessIn":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"role":{"type":"string","enum":["viewer","operator","developer","admin","custom"],"title":"Role","default":"viewer"},"permissions":{"anyOf":[{"items":{"type":"string","enum":["device.write","device.command","credential.write","dashboard.write","alert.write"]},"type":"array","maxItems":5},{"type":"null"}],"title":"Permissions","description":"Only for role 'custom': what the member may change on top of reading."},"device_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500},{"type":"null"}],"title":"Device Ids","description":"null: every device of the project, now and later; else only these devices."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When this access ends; null for no end."}},"type":"object","required":["project_id"],"title":"ProjectAccessIn"},"ProjectAccessList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProjectMemberAccess"},"type":"array","title":"Items"},"others":{"items":{"$ref":"#/components/schemas/MemberRef"},"type":"array","title":"Others","description":"Members limited to selected projects who have no own grant here (they can be added)."},"can_grant_admin":{"type":"boolean","title":"Can Grant Admin","description":"The caller may grant or remove the project admin role."}},"type":"object","required":["items","others","can_grant_admin"],"title":"ProjectAccessList"},"ProjectAccessOut":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"type":"string","title":"Project Name"},"role":{"type":"string","enum":["viewer","operator","developer","admin","custom"],"title":"Role"},"permissions":{"items":{"type":"string","enum":["project.read","project.manage","device.read","device.write","device.command","credential.read","credential.write","telemetry.read","usage.read","dashboard.read","dashboard.write","alert.read","alert.write","alert.ack"]},"type":"array","title":"Permissions","description":"Everything this grant allows in the project."},"devices":{"type":"string","enum":["all","selected"],"title":"Devices"},"device_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Device Ids","description":"The selected devices; empty when `devices` is 'all'."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired","default":false}},"type":"object","required":["project_id","project_name","role","permissions","devices","device_ids"],"title":"ProjectAccessOut"},"ProjectCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"ProjectCreate"},"ProjectDelete":{"properties":{"confirm_name":{"type":"string","maxLength":200,"minLength":1,"title":"Confirm Name"}},"type":"object","required":["confirm_name"],"title":"ProjectDelete"},"ProjectGrantIn":{"properties":{"project_id":{"type":"string","format":"uuid","title":"Project Id"},"role":{"type":"string","enum":["viewer","operator","developer","admin","custom"],"title":"Role","default":"viewer"},"permissions":{"anyOf":[{"items":{"type":"string","enum":["device.write","device.command","credential.write","dashboard.write","alert.write"]},"type":"array","maxItems":5},{"type":"null"}],"title":"Permissions","description":"Only for role 'custom': what the member may change on top of reading."},"device_ids":{"anyOf":[{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":500},{"type":"null"}],"title":"Device Ids","description":"null: every device of the project, now and later; else only these devices."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When this access ends; null for no end."},"user_id":{"type":"string","format":"uuid","title":"User Id"}},"type":"object","required":["project_id","user_id"],"title":"ProjectGrantIn","description":"One member's grant in the project of the URL (`project_id` must match it)."},"ProjectList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ProjectOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"ProjectList"},"ProjectMemberAccess":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"source":{"type":"string","enum":["organization","direct","team"],"title":"Source","description":"'organization': every project; 'team': through `team`."},"team":{"anyOf":[{"$ref":"#/components/schemas/TeamRef"},{"type":"null"}]},"role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"string","enum":["viewer","operator","developer","admin","custom"]}],"title":"Role"},"permissions":{"items":{"type":"string","enum":["project.read","project.manage","device.read","device.write","device.command","credential.read","credential.write","telemetry.read","usage.read","dashboard.read","dashboard.write","alert.read","alert.write","alert.ack"]},"type":"array","title":"Permissions"},"devices":{"type":"string","enum":["all","selected"],"title":"Devices"},"device_ids":{"items":{"type":"string","format":"uuid"},"type":"array","title":"Device Ids"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired"}},"type":"object","required":["user_id","email","display_name","source","role","permissions","devices","device_ids","expires_at","expired"],"title":"ProjectMemberAccess","description":"One member who reaches the project, and through what."},"ProjectOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"name":{"type":"string","title":"Name"},"device_count":{"type":"integer","title":"Device Count","description":"Non-archived devices the caller can reach."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"role":{"anyOf":[{"type":"string","enum":["owner","admin","developer","viewer"]},{"type":"string","enum":["viewer","operator","developer","admin","custom"]}],"title":"Role","description":"The caller's role in this project: the organization role for members with every project, else the project role (several grants that match no preset read 'custom')."},"permissions":{"items":{"type":"string","enum":["project.read","project.manage","device.read","device.write","device.command","credential.read","credential.write","telemetry.read","usage.read","dashboard.read","dashboard.write","alert.read","alert.write","alert.ack"]},"type":"array","title":"Permissions","description":"What the caller may do in this project."},"device_access":{"type":"string","enum":["all","selected"],"title":"Device Access","description":"'selected': the caller reaches only some devices."},"appearance":{"$ref":"#/components/schemas/AppearanceOut","description":"Icon, colour and picture (0043)."}},"type":"object","required":["id","organization_id","name","device_count","created_at","role","permissions","device_access"],"title":"ProjectOut"},"ProjectUpdate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"ProjectUpdate"},"ProvidersOut":{"properties":{"realm":{"type":"string","enum":["customer","staff"],"title":"Realm"},"connectors":{"items":{"$ref":"#/components/schemas/ConnectorOut"},"type":"array","title":"Connectors"},"signup":{"type":"boolean","title":"Signup","description":"Self-service sign-up is open on this panel (cloud only).","default":false},"signup_email_verification":{"type":"boolean","title":"Signup Email Verification","description":"Sign-up confirms the address before the account exists (`POST /v1/signup`); false: one form (`POST /v1/signup/register`) and the address is confirmed afterwards.","default":true},"password_reset":{"type":"boolean","title":"Password Reset","description":"\"Forgot your password?\" works on this panel (`POST /v1/password/forgot`).","default":false}},"type":"object","required":["realm","connectors"],"title":"ProvidersOut"},"PushButtonOptions":{"properties":{"label":{"type":"string","maxLength":16,"title":"Label","default":"Press"},"value":{"anyOf":[{"type":"boolean"},{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0}],"title":"Value","default":true},"mode":{"type":"string","enum":["push","switch"],"title":"Mode","description":"push: `value` on press and, when set, `release_value` on release, not retained. switch: each press alternates between `value` and `release_value` (retained).","default":"push"},"release_value":{"anyOf":[{"type":"boolean"},{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Release Value"},"shape":{"type":"string","enum":["round","pill"],"title":"Shape","default":"round"}},"additionalProperties":false,"type":"object","title":"PushButtonOptions","description":"Each press sends `value` once, not retained: a device that reconnects later does not\nreplay it (a beep, a door strike, a reset)."},"PushButtonWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"push_button","title":"Type"},"options":{"$ref":"#/components/schemas/PushButtonOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"PushButtonWidget"},"PushKeys":{"properties":{"p256dh":{"type":"string","maxLength":100,"minLength":80,"title":"P256Dh"},"auth":{"type":"string","maxLength":32,"minLength":16,"title":"Auth"}},"additionalProperties":false,"type":"object","required":["p256dh","auth"],"title":"PushKeys"},"PushSubscriptionIn":{"properties":{"endpoint":{"type":"string","maxLength":1000,"minLength":9,"title":"Endpoint"},"keys":{"$ref":"#/components/schemas/PushKeys"},"user_agent":{"type":"string","maxLength":200,"title":"User Agent","default":""}},"additionalProperties":false,"type":"object","required":["endpoint","keys"],"title":"PushSubscriptionIn"},"PushSubscriptionList":{"properties":{"vapid_public_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Vapid Public Key","description":"The applicationServerKey to subscribe with; null: push is off here."},"items":{"items":{"$ref":"#/components/schemas/PushSubscriptionOut"},"type":"array","title":"Items"}},"type":"object","required":["vapid_public_key","items"],"title":"PushSubscriptionList"},"PushSubscriptionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"endpoint_host":{"type":"string","title":"Endpoint Host"},"user_agent":{"type":"string","title":"User Agent"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"}},"type":"object","required":["id","endpoint_host","user_agent","created_at","last_success_at"],"title":"PushSubscriptionOut"},"RateOut":{"properties":{"meter":{"type":"string","title":"Meter"},"label":{"type":"string","title":"Label"},"unit":{"type":"string","title":"Unit","description":"What one unit price buys: a device-hour, 1,000 messages, a GB-hour."},"unit_price_paise":{"type":"number","title":"Unit Price Paise"},"free_units":{"type":"integer","title":"Free Units","description":"Free per organization, in the meter's own quantity (items, messages, bytes)."},"monthly_paise":{"type":"number","title":"Monthly Paise","description":"One unit for a whole month (730 hours); messages: 1,000 every hour."}},"type":"object","required":["meter","label","unit","unit_price_paise","free_units","monthly_paise"],"title":"RateOut"},"RazorpayMethods":{"properties":{"card":{"type":"boolean","title":"Card","default":true},"upi":{"type":"boolean","title":"Upi","default":true},"netbanking":{"type":"boolean","title":"Netbanking","default":false}},"type":"object","title":"RazorpayMethods"},"RazorpaySettingsIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"expected_version":{"type":"integer","title":"Expected Version"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"},"mode":{"anyOf":[{"type":"string","enum":["test","live"]},{"type":"null"}],"title":"Mode"},"key_id":{"anyOf":[{"type":"string","pattern":"^rzp_(test|live)_[A-Za-z0-9]{8,40}$"},{"type":"null"}],"title":"Key Id"},"key_secret":{"anyOf":[{"type":"string","maxLength":128,"minLength":20},{"type":"null"}],"title":"Key Secret"},"webhook_secret":{"anyOf":[{"type":"string","maxLength":128,"minLength":8},{"type":"null"}],"title":"Webhook Secret"},"methods":{"anyOf":[{"$ref":"#/components/schemas/RazorpayMethods"},{"type":"null"}]},"signup_auth_paise":{"anyOf":[{"type":"integer","maximum":100000.0,"minimum":0.0},{"type":"null"}],"title":"Signup Auth Paise"},"checkout_theme_color":{"anyOf":[{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},{"type":"null"}],"title":"Checkout Theme Color"}},"type":"object","required":["reason","expected_version"],"title":"RazorpaySettingsIn"},"RazorpaySettingsOut":{"properties":{"ready":{"type":"boolean","title":"Ready"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"enabled":{"type":"boolean","title":"Enabled"},"mode":{"type":"string","enum":["test","live"],"title":"Mode"},"key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Key Id"},"secret_set":{"type":"boolean","title":"Secret Set"},"webhook_secret_set":{"type":"boolean","title":"Webhook Secret Set"},"methods":{"$ref":"#/components/schemas/RazorpayMethods"},"signup_auth_paise":{"type":"integer","title":"Signup Auth Paise"},"checkout_theme_color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkout Theme Color"},"version":{"type":"integer","title":"Version"},"last_probe_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Probe At"},"last_probe_ok":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Last Probe Ok"},"last_probe_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Probe Error"},"env_fallback":{"type":"boolean","title":"Env Fallback"},"webhook_url":{"type":"string","title":"Webhook Url"},"webhook_events":{"items":{"type":"string"},"type":"array","title":"Webhook Events"}},"type":"object","required":["ready","source","enabled","mode","key_id","secret_set","webhook_secret_set","methods","signup_auth_paise","checkout_theme_color","version","last_probe_at","last_probe_ok","last_probe_error","env_fallback","webhook_url","webhook_events"],"title":"RazorpaySettingsOut"},"RealtimeTicket":{"properties":{"ticket":{"type":"string","title":"Ticket"},"url":{"type":"string","title":"Url"},"expires_in":{"type":"integer","title":"Expires In"}},"type":"object","required":["ticket","url","expires_in"],"title":"RealtimeTicket"},"ReasonBody":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["reason"],"title":"ReasonBody"},"RecentItemIn":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"kind":{"type":"string","enum":["dashboard","device"],"title":"Kind"},"id":{"type":"string","format":"uuid","title":"Id"}},"type":"object","required":["organization_id","kind","id"],"title":"RecentItemIn","description":"A dashboard or device the caller just opened (0049)."},"RecentItemList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RecentItemOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"RecentItemList"},"RecentItemOut":{"properties":{"kind":{"type":"string","enum":["dashboard","device"],"title":"Kind"},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id","description":"Null for an organization dashboard."},"project_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Name"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name","description":"A device's template, for its suggested icon."},"created_at":{"type":"string","format":"date-time","title":"Created At"},"opened_at":{"type":"string","format":"date-time","title":"Opened At"},"appearance":{"$ref":"#/components/schemas/AppearanceOut"}},"type":"object","required":["kind","id","name","organization_id","organization_name","created_at","opened_at","appearance"],"title":"RecentItemOut"},"RecipientIn":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"in_app":{"type":"boolean","title":"In App","default":true},"email":{"type":"boolean","title":"Email","default":true},"push":{"type":"boolean","title":"Push","default":true}},"additionalProperties":false,"type":"object","required":["user_id"],"title":"RecipientIn"},"RecipientOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"email_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Address"},"in_app":{"type":"boolean","title":"In App"},"email":{"type":"boolean","title":"Email"},"push":{"type":"boolean","title":"Push"}},"type":"object","required":["user_id","display_name","email_address","in_app","email","push"],"title":"RecipientOut"},"RecoveryCodesOut":{"properties":{"codes":{"items":{"type":"string"},"type":"array","title":"Codes"}},"type":"object","required":["codes"],"title":"RecoveryCodesOut"},"RecoveryVerify":{"properties":{"code":{"type":"string","maxLength":16,"minLength":10,"title":"Code"}},"type":"object","required":["code"],"title":"RecoveryVerify"},"RejectionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RejectionOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"RejectionList"},"RejectionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"reason":{"type":"string","title":"Reason"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"payload_excerpt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payload Excerpt"},"payload_bytes":{"type":"integer","title":"Payload Bytes"}},"type":"object","required":["id","received_at","reason","detail","payload_excerpt","payload_bytes"],"title":"RejectionOut"},"RetentionIn":{"properties":{"retention_days":{"type":"integer","maximum":90.0,"minimum":1.0,"title":"Retention Days"}},"type":"object","required":["retention_days"],"title":"RetentionIn"},"RgbOptions":{"properties":{"swatches":{"items":{"type":"string","pattern":"^#[0-9a-f]{6}$"},"type":"array","maxItems":8,"title":"Swatches","description":"Preset colours."}},"additionalProperties":false,"type":"object","title":"RgbOptions","description":"The colour is sent as one number, 0xRRGGBB, retained."},"RgbWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"rgb","title":"Type"},"options":{"$ref":"#/components/schemas/RgbOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"RgbWidget"},"RunningFirmwareOut":{"properties":{"firmware":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firmware","description":"The `firmware` attribute the device last reported."},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"ota_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ota Status","description":"The update in progress or the last outcome, e.g. \"updated to 3.0\"."},"ota_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ota Id","description":"The update order `ota_status` belongs to."},"reported_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reported At"}},"type":"object","required":["firmware","features","ota_status","ota_id","reported_at"],"title":"RunningFirmwareOut"},"SecurityEventList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SecurityEventOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"SecurityEventList"},"SecurityEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"panel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Panel"},"details":{"additionalProperties":true,"type":"object","title":"Details","default":{}},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","panel","created_at"],"title":"SecurityEventOut"},"SecurityPolicyOut":{"properties":{"signup_enabled":{"type":"boolean","title":"Signup Enabled"},"signup_email_verification":{"type":"boolean","title":"Signup Email Verification","description":"Sign-up confirms the address before the account exists. Off: one form, and the address stays unverified until the confirmation link is used."},"mfa_required":{"type":"boolean","title":"Mfa Required","description":"New accounts start with two-step verification on and see the setup screen (they may skip it, which turns it off). Off: an account without a factor starts with it off. Either way each customer may turn it on or off on the Security page."},"totp_allowed":{"type":"boolean","title":"Totp Allowed"},"passkey_allowed":{"type":"boolean","title":"Passkey Allowed"},"passkey_required":{"type":"boolean","title":"Passkey Required"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"signup_available":{"type":"boolean","title":"Signup Available","description":"The deployment can run sign-up: password sign-in, the Dex API and email are configured."},"signup_unavailable_reasons":{"items":{"type":"string","enum":["password_sign_in_disabled","dex_api_not_configured","email_disabled"]},"type":"array","title":"Signup Unavailable Reasons","default":[]},"adoption":{"$ref":"#/components/schemas/FactorAdoptionOut"}},"type":"object","required":["signup_enabled","signup_email_verification","mfa_required","totp_allowed","passkey_allowed","passkey_required","signup_available","adoption"],"title":"SecurityPolicyOut","description":"The platform security policy (migration 0007) and whether sign-up can work here."},"SecurityPolicyUpdate":{"properties":{"signup_enabled":{"type":"boolean","title":"Signup Enabled"},"signup_email_verification":{"type":"boolean","title":"Signup Email Verification"},"mfa_required":{"type":"boolean","title":"Mfa Required"},"totp_allowed":{"type":"boolean","title":"Totp Allowed"},"passkey_allowed":{"type":"boolean","title":"Passkey Allowed"},"passkey_required":{"type":"boolean","title":"Passkey Required"},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["signup_enabled","signup_email_verification","mfa_required","totp_allowed","passkey_allowed","passkey_required","reason"],"title":"SecurityPolicyUpdate"},"SegmentOptions":{"properties":{"format":{"anyOf":[{"type":"string","maxLength":40,"minLength":7},{"type":"null"}],"title":"Format","description":"The whole text around the value, {value} where it goes ('Tank {value} L'); replaces prefix, suffix and unit."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"value_map":{"items":{"$ref":"#/components/schemas/ValueMapEntry"},"type":"array","maxItems":10,"title":"Value Map"},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"decimals":{"type":"integer","maximum":6.0,"minimum":0.0,"title":"Decimals","default":1},"tone":{"type":"string","enum":["ok","warn","danger","info"],"title":"Tone","default":"danger"},"sparkline":{"type":"boolean","title":"Sparkline","description":"A one-hour trend under the value.","default":false}},"additionalProperties":false,"type":"object","title":"SegmentOptions"},"SegmentWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"segment","title":"Type"},"options":{"$ref":"#/components/schemas/SegmentOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"SegmentWidget"},"SegmentedOptions":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ChoiceItem"},"type":"array","maxItems":6,"minItems":2,"title":"Items"},"face":{"anyOf":[{"type":"string","enum":["buttons","icons"]},{"type":"null"}],"title":"Face","description":"icons: round icon buttons with the label under them (items without an icon show their label)."}},"additionalProperties":false,"type":"object","title":"SegmentedOptions","description":"Two to six buttons side by side; the pressed one's value is sent as a retained integer."},"SegmentedWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"segmented","title":"Type"},"options":{"$ref":"#/components/schemas/SegmentedOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"SegmentedWidget"},"SeriesOut":{"properties":{"metric":{"type":"string","title":"Metric"},"start":{"type":"string","format":"date-time","title":"Start"},"end":{"type":"string","format":"date-time","title":"End"},"resolution":{"type":"string","enum":["raw","bucket"],"title":"Resolution"},"bucket_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bucket Seconds"},"truncated":{"type":"boolean","title":"Truncated","default":false},"points":{"items":{"$ref":"#/components/schemas/SeriesPoint"},"type":"array","title":"Points"}},"type":"object","required":["metric","start","end","resolution","points"],"title":"SeriesOut"},"SeriesPoint":{"properties":{"t":{"type":"string","format":"date-time","title":"T"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value","description":"Raw value, or the bucket average."},"min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min"},"max":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max"},"count":{"type":"integer","title":"Count","default":1},"last":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Last","description":"The bucket's last value (the raw value itself)."}},"type":"object","required":["t","value"],"title":"SeriesPoint"},"SesDeliveryIn":{"properties":{"region":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Region"},"access_key_id":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Access Key Id"},"configuration_set":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Configuration Set"},"secret_access_key":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Secret Access Key","writeOnly":true}},"type":"object","title":"SesDeliveryIn"},"SesDeliveryOut":{"properties":{"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"},"access_key_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Access Key Id"},"configuration_set":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Configuration Set"},"secret_set":{"type":"boolean","title":"Secret Set","default":false}},"type":"object","title":"SesDeliveryOut"},"SessionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SessionOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"SessionList"},"SessionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"panel":{"type":"string","enum":["cloud","control","admin","app"],"title":"Panel"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"},"current":{"type":"boolean","title":"Current"},"device_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Device Name","description":"App sessions: the phone the IoTAPS app runs on, as the app named it."}},"type":"object","required":["id","panel","created_at","last_seen_at","expires_at","user_agent","ip","current"],"title":"SessionOut"},"SetpointOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"step":{"type":"number","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Step","default":1.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"loop":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Loop","description":"Past max the steps start again at min, and the other way."},"repeat":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Repeat","description":"Holding - or + keeps stepping."},"face":{"anyOf":[{"type":"string","enum":["buttons","dial"]},{"type":"null"}],"title":"Face","description":"dial: an arc from min to max with the knob at the value."}},"additionalProperties":false,"type":"object","title":"SetpointOptions","description":"A typed target value sent as a retained command (a thermostat or timer setting)."},"SetpointWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"setpoint","title":"Type"},"options":{"$ref":"#/components/schemas/SetpointOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"SetpointWidget"},"SharedDashboardOut":{"properties":{"dashboard_id":{"type":"string","format":"uuid","title":"Dashboard Id"},"name":{"type":"string","title":"Name"},"project_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Project Id"},"access":{"type":"string","enum":["view","control"],"title":"Access"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired"}},"type":"object","required":["dashboard_id","name","project_id","access","expires_at","expired"],"title":"SharedDashboardOut"},"SignInProviderOut":{"properties":{"provider":{"type":"string","enum":["google","github"],"title":"Provider"},"source":{"type":"string","enum":["deployment","admin"],"title":"Source","description":"`deployment`: set in the environment and read-only here; `admin`: set on this page."},"enabled":{"type":"boolean","title":"Enabled"},"client_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Id"},"client_secret_set":{"type":"boolean","title":"Client Secret Set"},"google_hosted_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Google Hosted Domain"},"github_org":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Github Org"},"version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Version"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"},"updated_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated By Email"},"sync":{"type":"string","enum":["synced","failed","deployment","unavailable"],"title":"Sync"},"sync_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sync Message"},"accounts":{"type":"integer","title":"Accounts","description":"Accounts with this sign-in method linked.","default":0},"accounts_only_method":{"type":"integer","title":"Accounts Only Method","description":"Of those, accounts with no other sign-in method.","default":0}},"type":"object","required":["provider","source","enabled","client_id","client_secret_set","sync"],"title":"SignInProviderOut"},"SignInProviderUpdate":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"client_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"Client Id"},"client_secret":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Client Secret","description":"New secret; omitted or null keeps the stored one.","writeOnly":true},"google_hosted_domain":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Google Hosted Domain"},"github_org":{"anyOf":[{"type":"string","maxLength":39},{"type":"null"}],"title":"Github Org"},"expected_version":{"type":"integer","title":"Expected Version"},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["enabled","expected_version","reason"],"title":"SignInProviderUpdate"},"SignInRealmOut":{"properties":{"realm":{"type":"string","enum":["customer","staff"],"title":"Realm"},"redirect_uri":{"type":"string","title":"Redirect Uri","description":"The callback URL to register with Google or GitHub."},"password_enabled":{"type":"boolean","title":"Password Enabled","description":"Email and password sign-in (set by the deployment)."},"dex_api":{"type":"boolean","title":"Dex Api","description":"The deployment gave the API this realm's Dex API."},"providers":{"items":{"$ref":"#/components/schemas/SignInProviderOut"},"type":"array","title":"Providers"}},"type":"object","required":["realm","redirect_uri","password_enabled","dex_api","providers"],"title":"SignInRealmOut"},"SignInSettingsOut":{"properties":{"realms":{"items":{"$ref":"#/components/schemas/SignInRealmOut"},"type":"array","title":"Realms"}},"type":"object","required":["realms"],"title":"SignInSettingsOut"},"SignalOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":-90.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":-50.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":"dBm"}},"additionalProperties":false,"type":"object","title":"SignalOptions","description":"Bars for a received signal strength: `min` (weak, no bar) to `max` (strong, all four)."},"SignalWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"signal","title":"Type"},"options":{"$ref":"#/components/schemas/SignalOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"SignalWidget"},"SignupAccepted":{"properties":{"email":{"type":"string","title":"Email"},"expires_in_seconds":{"type":"integer","title":"Expires In Seconds"}},"type":"object","required":["email","expires_in_seconds"],"title":"SignupAccepted","description":"The same answer whether or not the address already has an account."},"SignupComplete":{"properties":{"token":{"type":"string","maxLength":128,"minLength":32,"pattern":"^[A-Za-z0-9_-]+$","title":"Token"},"display_name":{"type":"string","maxLength":100,"minLength":1,"title":"Display Name"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"type":"object","required":["token","display_name","password"],"title":"SignupComplete"},"SignupCompleteOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"next":{"type":"string","title":"Next"}},"type":"object","required":["user_id","next"],"title":"SignupCompleteOut","description":"The account exists and its session is set; `next` is the second-factor setup, or `/`\nwhen the account starts with two-step verification off (the policy default, 0032)."},"SignupRegister":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"},"display_name":{"type":"string","maxLength":100,"minLength":1,"title":"Display Name"},"password":{"type":"string","maxLength":256,"minLength":1,"title":"Password"}},"type":"object","required":["email","display_name","password"],"title":"SignupRegister","description":"Sign-up without email verification: the whole account in one request."},"SignupStart":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"}},"type":"object","required":["email"],"title":"SignupStart"},"SignupTokenIn":{"properties":{"token":{"type":"string","maxLength":128,"minLength":32,"pattern":"^[A-Za-z0-9_-]+$","title":"Token"}},"type":"object","required":["token"],"title":"SignupTokenIn"},"SignupTokenOut":{"properties":{"email":{"type":"string","title":"Email"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["email","expires_at"],"title":"SignupTokenOut"},"SliderOptions":{"properties":{"ramp":{"anyOf":[{"type":"string","enum":["zones","gradient"]},{"type":"null"}],"title":"Ramp","description":"Blend the colour zones into each other instead of stepping between them."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":0.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":100.0},"step":{"type":"number","maximum":1000000000000.0,"exclusiveMinimum":0.0,"title":"Step","default":1.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"send_on":{"type":"string","enum":["release","drag"],"title":"Send On","default":"release"},"show_value":{"type":"boolean","title":"Show Value","default":true},"orientation":{"type":"string","enum":["horizontal","vertical"],"title":"Orientation","default":"horizontal"},"fine_buttons":{"type":"boolean","title":"Fine Buttons","description":"- and + buttons that move one step.","default":false}},"additionalProperties":false,"type":"object","title":"SliderOptions","description":"Dragging sends the value as a retained command on the widget's key (servo angle, PWM duty):\non release, or while dragging at most every 300 ms (`send_on`)."},"SliderWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"slider","title":"Type"},"options":{"$ref":"#/components/schemas/SliderOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"SliderWidget"},"SmtpDeliveryIn":{"properties":{"host":{"anyOf":[{"type":"string","maxLength":253},{"type":"null"}],"title":"Host"},"port":{"anyOf":[{"type":"integer","maximum":65535.0,"minimum":1.0},{"type":"null"}],"title":"Port"},"security":{"anyOf":[{"type":"string","enum":["starttls","implicit_tls","none"]},{"type":"null"}],"title":"Security"},"username":{"anyOf":[{"type":"string","maxLength":254},{"type":"null"}],"title":"Username"},"password":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Password","writeOnly":true}},"type":"object","title":"SmtpDeliveryIn"},"SmtpDeliveryOut":{"properties":{"host":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Host"},"port":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Port"},"security":{"anyOf":[{"type":"string","enum":["starttls","implicit_tls","none"]},{"type":"null"}],"title":"Security"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"password_set":{"type":"boolean","title":"Password Set","default":false}},"type":"object","title":"SmtpDeliveryOut"},"Source":{"properties":{"device_id":{"type":"string","format":"uuid","title":"Device Id"},"metric":{"type":"string","pattern":"^[A-Za-z_][A-Za-z0-9_.\\-]{0,63}$","title":"Metric"}},"additionalProperties":false,"type":"object","required":["device_id","metric"],"title":"Source"},"SpendGroupOut":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"name":{"type":"string","title":"Name"},"total_paise":{"type":"integer","title":"Total Paise"},"lines":{"items":{"$ref":"#/components/schemas/SpendLineOut"},"type":"array","title":"Lines"}},"type":"object","required":["organization_id","name","total_paise","lines"],"title":"SpendGroupOut"},"SpendLineOut":{"properties":{"meter":{"type":"string","title":"Meter"},"quantity":{"type":"number","title":"Quantity"},"billable":{"type":"number","title":"Billable"},"amount_paise":{"type":"integer","title":"Amount Paise"}},"type":"object","required":["meter","quantity","billable","amount_paise"],"title":"SpendLineOut"},"SpendSummaryOut":{"properties":{"month":{"type":"string","title":"Month"},"period_start":{"type":"string","format":"date-time","title":"Period Start"},"period_end":{"type":"string","format":"date-time","title":"Period End"},"current":{"type":"boolean","title":"Current"},"total_paise":{"type":"integer","title":"Total Paise"},"months":{"items":{"type":"string"},"type":"array","title":"Months"},"groups":{"items":{"$ref":"#/components/schemas/SpendGroupOut"},"type":"array","title":"Groups"}},"type":"object","required":["month","period_start","period_end","current","total_paise","months","groups"],"title":"SpendSummaryOut"},"StaffAdjustmentIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"kind":{"type":"string","enum":["credit_grant","adjustment","refund"],"title":"Kind"},"amount_paise":{"type":"integer","maximum":1000000000.0,"minimum":-1000000000.0,"title":"Amount Paise"},"promotional":{"type":"boolean","title":"Promotional","default":false},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"description":{"type":"string","maxLength":200,"minLength":1,"title":"Description"}},"type":"object","required":["reason","kind","amount_paise","description"],"title":"StaffAdjustmentIn"},"StaffAnnouncementOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"severity":{"type":"string","enum":["info","warning","critical"],"title":"Severity"},"audience":{"type":"string","enum":["all","cloud","control","landing"],"title":"Audience"},"starts_at":{"type":"string","format":"date-time","title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"dismissible":{"type":"boolean","title":"Dismissible","default":true},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"created_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created By Email"},"live":{"type":"boolean","title":"Live","description":"Shown right now."}},"type":"object","required":["id","title","severity","audience","starts_at","version","created_at","updated_at","live"],"title":"StaffAnnouncementOut"},"StaffAnnouncementsOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffAnnouncementOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"StaffAnnouncementsOut"},"StaffApiKeyOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"user_id":{"type":"string","format":"uuid","title":"User Id"},"user_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"}},"type":"object","required":["id","name","user_id","created_at","expires_at"],"title":"StaffApiKeyOut"},"StaffApiKeysOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffApiKeyOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffApiKeysOut"},"StaffAuditEventList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffAuditEventOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffAuditEventList"},"StaffAuditEventOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"actor":{"type":"string","enum":["staff","cli"],"title":"Actor"},"staff_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Staff Id"},"staff_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Staff Email"},"action":{"type":"string","title":"Action"},"target_type":{"type":"string","title":"Target Type"},"target_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Target Id"},"details":{"additionalProperties":true,"type":"object","title":"Details","default":{}},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","actor","staff_id","action","target_type","target_id","created_at"],"title":"StaffAuditEventOut"},"StaffBillingSettingsIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"expected_version":{"type":"integer","title":"Expected Version"},"welcome_credit_paise":{"anyOf":[{"type":"integer","maximum":100000000.0,"minimum":0.0},{"type":"null"}],"title":"Welcome Credit Paise"},"welcome_credit_days":{"anyOf":[{"type":"integer","maximum":365.0,"minimum":1.0},{"type":"null"}],"title":"Welcome Credit Days"},"grace_hours":{"anyOf":[{"type":"integer","maximum":720.0,"minimum":0.0},{"type":"null"}],"title":"Grace Hours"},"low_balance_paise":{"anyOf":[{"type":"integer","maximum":10000000000.0,"minimum":0.0},{"type":"null"}],"title":"Low Balance Paise"},"low_runway_hours":{"anyOf":[{"type":"integer","maximum":2160.0,"minimum":0.0},{"type":"null"}],"title":"Low Runway Hours"},"min_topup_paise":{"anyOf":[{"type":"integer","maximum":1000000000.0,"minimum":100.0},{"type":"null"}],"title":"Min Topup Paise"},"max_topup_paise":{"anyOf":[{"type":"integer","maximum":1000000000.0,"minimum":100.0},{"type":"null"}],"title":"Max Topup Paise"},"postpaid_due_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":1.0},{"type":"null"}],"title":"Postpaid Due Days"},"postpaid_overdue_days":{"anyOf":[{"type":"integer","maximum":90.0,"minimum":0.0},{"type":"null"}],"title":"Postpaid Overdue Days"},"enforce":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enforce"},"stop_ingestion":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stop Ingestion"},"auto_debit_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Auto Debit Enabled"},"default_credit_limit_paise":{"anyOf":[{"type":"integer","maximum":1000000000.0,"minimum":0.0},{"type":"null"}],"title":"Default Credit Limit Paise"},"mandate_max_amount_paise":{"anyOf":[{"type":"integer","maximum":1000000000.0,"minimum":100.0},{"type":"null"}],"title":"Mandate Max Amount Paise"},"mandate_years":{"anyOf":[{"type":"integer","maximum":30.0,"minimum":1.0},{"type":"null"}],"title":"Mandate Years"},"require_card_at_signup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Require Card At Signup"}},"type":"object","required":["reason","expected_version"],"title":"StaffBillingSettingsIn"},"StaffBillingSettingsOut":{"properties":{"welcome_credit_paise":{"type":"integer","title":"Welcome Credit Paise"},"welcome_credit_days":{"type":"integer","title":"Welcome Credit Days"},"grace_hours":{"type":"integer","title":"Grace Hours"},"low_balance_paise":{"type":"integer","title":"Low Balance Paise"},"low_runway_hours":{"type":"integer","title":"Low Runway Hours"},"min_topup_paise":{"type":"integer","title":"Min Topup Paise"},"max_topup_paise":{"type":"integer","title":"Max Topup Paise"},"postpaid_due_days":{"type":"integer","title":"Postpaid Due Days"},"postpaid_overdue_days":{"type":"integer","title":"Postpaid Overdue Days"},"enforce":{"type":"boolean","title":"Enforce"},"stop_ingestion":{"type":"boolean","title":"Stop Ingestion"},"auto_debit_enabled":{"type":"boolean","title":"Auto Debit Enabled","default":true},"default_credit_limit_paise":{"type":"integer","title":"Default Credit Limit Paise","default":500000},"mandate_max_amount_paise":{"type":"integer","title":"Mandate Max Amount Paise","default":50000000},"mandate_years":{"type":"integer","title":"Mandate Years","default":10},"require_card_at_signup":{"type":"boolean","title":"Require Card At Signup","default":true},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["welcome_credit_paise","welcome_credit_days","grace_hours","low_balance_paise","low_runway_hours","min_topup_paise","max_topup_paise","postpaid_due_days","postpaid_overdue_days","enforce","stop_ingestion","version","updated_at"],"title":"StaffBillingSettingsOut"},"StaffCountsOut":{"properties":{"users":{"type":"integer","title":"Users","default":0},"suspended_users":{"type":"integer","title":"Suspended Users","default":0},"organizations":{"type":"integer","title":"Organizations","default":0},"suspended_organizations":{"type":"integer","title":"Suspended Organizations","default":0},"enterprises":{"type":"integer","title":"Enterprises","default":0},"devices":{"type":"integer","title":"Devices","default":0}},"type":"object","title":"StaffCountsOut"},"StaffDeviceDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"type":"string","title":"Project Name"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"is_gateway":{"type":"boolean","title":"Is Gateway","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"connectivity":{"type":"string","enum":["never_seen","online","offline","disabled"],"title":"Connectivity"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"firmware":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firmware"},"message_count":{"type":"integer","title":"Message Count","default":0},"last_received_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Received At"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes"},"messages":{"items":{"$ref":"#/components/schemas/StaffDeviceMessageOut"},"type":"array","title":"Messages"}},"type":"object","required":["id","organization_id","organization_name","project_id","project_name","name","status","created_at","connectivity"],"title":"StaffDeviceDetailOut"},"StaffDeviceMessageOut":{"properties":{"message_id":{"type":"string","title":"Message Id"},"received_at":{"type":"string","format":"date-time","title":"Received At"},"sent_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sent At"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"},"attributes":{"additionalProperties":true,"type":"object","title":"Attributes"},"payload_bytes":{"type":"integer","title":"Payload Bytes"}},"type":"object","required":["message_id","received_at","metrics","payload_bytes"],"title":"StaffDeviceMessageOut"},"StaffDeviceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"project_id":{"type":"string","format":"uuid","title":"Project Id"},"project_name":{"type":"string","title":"Project Name"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"is_gateway":{"type":"boolean","title":"Is Gateway","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At"},"archived_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archived At"},"connectivity":{"type":"string","enum":["never_seen","online","offline","disabled"],"title":"Connectivity"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"firmware":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Firmware"},"message_count":{"type":"integer","title":"Message Count","default":0}},"type":"object","required":["id","organization_id","organization_name","project_id","project_name","name","status","created_at","connectivity"],"title":"StaffDeviceOut"},"StaffDevicesOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffDeviceOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffDevicesOut"},"StaffEnterpriseDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"member_count":{"type":"integer","title":"Member Count","default":0},"organization_count":{"type":"integer","title":"Organization Count","default":0},"organizations":{"items":{"$ref":"#/components/schemas/StaffOrganizationOut"},"type":"array","title":"Organizations","default":[]},"usage":{"$ref":"#/components/schemas/UsageOut"}},"type":"object","required":["id","name","created_at","usage"],"title":"StaffEnterpriseDetailOut"},"StaffEnterpriseList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffEnterpriseOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffEnterpriseList"},"StaffEnterpriseMembershipOut":{"properties":{"enterprise_id":{"type":"string","format":"uuid","title":"Enterprise Id"},"enterprise_name":{"type":"string","title":"Enterprise Name"},"role":{"type":"string","enum":["owner","admin","billing","viewer"],"title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["enterprise_id","enterprise_name","role","created_at"],"title":"StaffEnterpriseMembershipOut"},"StaffEnterpriseOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"member_count":{"type":"integer","title":"Member Count","default":0},"organization_count":{"type":"integer","title":"Organization Count","default":0}},"type":"object","required":["id","name","created_at"],"title":"StaffEnterpriseOut"},"StaffFactorOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["totp","webauthn"],"title":"Kind"},"name":{"type":"string","title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"backed_up":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Backed Up"}},"type":"object","required":["id","kind","name","created_at","last_used_at"],"title":"StaffFactorOut"},"StaffIdentityOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"connector":{"type":"string","title":"Connector"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"email_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Verified"},"linked_at":{"type":"string","format":"date-time","title":"Linked At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"}},"type":"object","required":["id","connector","email","linked_at","last_used_at"],"title":"StaffIdentityOut"},"StaffInviteCreate":{"properties":{"email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email"}},"type":"object","required":["email"],"title":"StaffInviteCreate"},"StaffInvoiceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"amount_paise":{"type":"integer","title":"Amount Paise"},"status":{"type":"string","title":"Status"},"period_start":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Period Start"},"due_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Due At"},"issued_at":{"type":"string","format":"date-time","title":"Issued At"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"}},"type":"object","required":["id","kind","amount_paise","status","period_start","due_at","issued_at","paid_at"],"title":"StaffInvoiceOut"},"StaffInvoicePaidIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"note":{"type":"string","maxLength":200,"title":"Note","default":""}},"type":"object","required":["reason"],"title":"StaffInvoicePaidIn"},"StaffLedgerEntryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","title":"Kind"},"amount_paise":{"type":"number","title":"Amount Paise"},"balance_after_paise":{"type":"number","title":"Balance After Paise"},"credit_after_paise":{"type":"number","title":"Credit After Paise"},"reference":{"type":"string","title":"Reference"},"description":{"type":"string","title":"Description"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"hour":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Hour"},"by_staff":{"type":"boolean","title":"By Staff"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","amount_paise","balance_after_paise","credit_after_paise","reference","description","organization_id","hour","by_staff","created_at"],"title":"StaffLedgerEntryOut"},"StaffMemberDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"status":{"type":"string","enum":["invited","active","disabled"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"identity_count":{"type":"integer","title":"Identity Count","default":0},"totp_factor_count":{"type":"integer","title":"Totp Factor Count","default":0},"passkey_count":{"type":"integer","title":"Passkey Count","default":0},"invitation_email_delivery":{"anyOf":[{"type":"string","enum":["queued","disabled","duplicate","undeliverable"]},{"type":"null"}],"title":"Invitation Email Delivery"},"invited_by_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By Email"},"identities":{"items":{"$ref":"#/components/schemas/StaffIdentityOut"},"type":"array","title":"Identities","default":[]},"factors":{"items":{"$ref":"#/components/schemas/StaffFactorOut"},"type":"array","title":"Factors","default":[]},"has_password":{"type":"boolean","title":"Has Password","default":false},"mfa_locked_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mfa Locked Until"},"sessions":{"items":{"$ref":"#/components/schemas/StaffSessionOut"},"type":"array","title":"Sessions","default":[]},"actions":{"items":{"$ref":"#/components/schemas/StaffAuditEventOut"},"type":"array","title":"Actions","description":"Recent actions taken by this member.","default":[]},"history":{"items":{"$ref":"#/components/schemas/StaffAuditEventOut"},"type":"array","title":"History","description":"Recent actions on this account.","default":[]}},"type":"object","required":["id","email","display_name","status","created_at","last_login_at"],"title":"StaffMemberDetailOut"},"StaffMemberList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffMemberOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"StaffMemberList"},"StaffMemberOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"type":"string","title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"status":{"type":"string","enum":["invited","active","disabled"],"title":"Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"identity_count":{"type":"integer","title":"Identity Count","default":0},"totp_factor_count":{"type":"integer","title":"Totp Factor Count","default":0},"passkey_count":{"type":"integer","title":"Passkey Count","default":0},"invitation_email_delivery":{"anyOf":[{"type":"string","enum":["queued","disabled","duplicate","undeliverable"]},{"type":"null"}],"title":"Invitation Email Delivery"}},"type":"object","required":["id","email","display_name","status","created_at","last_login_at"],"title":"StaffMemberOut","description":"A staff account, as the staff administration page shows it."},"StaffMembershipBlockerOut":{"properties":{"kind":{"type":"string","enum":["organization","enterprise"],"title":"Kind"},"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"other_members":{"type":"integer","title":"Other Members"}},"type":"object","required":["kind","id","name","other_members"],"title":"StaffMembershipBlockerOut"},"StaffMembershipOut":{"properties":{"organization_id":{"type":"string","format":"uuid","title":"Organization Id"},"organization_name":{"type":"string","title":"Organization Name"},"role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Role"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"}},"type":"object","required":["organization_id","organization_name","role","created_at"],"title":"StaffMembershipOut"},"StaffOrganizationDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"enterprise_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Enterprise Id"},"enterprise_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enterprise Name"},"member_count":{"type":"integer","title":"Member Count","default":0},"project_count":{"type":"integer","title":"Project Count","default":0},"device_count":{"type":"integer","title":"Device Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"suspended_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Reason"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"},"usage":{"$ref":"#/components/schemas/UsageOut"}},"type":"object","required":["id","name","created_at","suspended_at","usage"],"title":"StaffOrganizationDetailOut"},"StaffOrganizationList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffOrganizationOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffOrganizationList"},"StaffOrganizationOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"enterprise_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Enterprise Id"},"enterprise_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enterprise Name"},"member_count":{"type":"integer","title":"Member Count","default":0},"project_count":{"type":"integer","title":"Project Count","default":0},"device_count":{"type":"integer","title":"Device Count","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"suspended_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Reason"},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At"}},"type":"object","required":["id","name","created_at","suspended_at"],"title":"StaffOrganizationOut"},"StaffOverviewOut":{"properties":{"counts":{"$ref":"#/components/schemas/StaffCountsOut"},"persisted_messages_7d":{"type":"integer","title":"Persisted Messages 7D","default":0},"pipeline":{"$ref":"#/components/schemas/PipelineSummaryOut"}},"type":"object","required":["counts","pipeline"],"title":"StaffOverviewOut"},"StaffPasswordReset":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"sign_out":{"type":"boolean","title":"Sign Out","description":"Also sign the person out everywhere now.","default":false}},"type":"object","required":["reason"],"title":"StaffPasswordReset"},"StaffPasswordResetSent":{"properties":{"email_delivery":{"type":"string","enum":["queued","disabled","duplicate","undeliverable"],"title":"Email Delivery"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"sessions_revoked":{"type":"integer","title":"Sessions Revoked","default":0}},"type":"object","required":["email_delivery","expires_at"],"title":"StaffPasswordResetSent"},"StaffPricingOut":{"properties":{"rates":{"items":{"$ref":"#/components/schemas/StaffRateOut"},"type":"array","title":"Rates"},"settings":{"$ref":"#/components/schemas/StaffBillingSettingsOut"},"razorpay":{"type":"boolean","title":"Razorpay"}},"type":"object","required":["rates","settings","razorpay"],"title":"StaffPricingOut"},"StaffRateIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"expected_version":{"type":"integer","title":"Expected Version"},"unit_price_paise":{"anyOf":[{"type":"number","maximum":100000000.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,12}|(?=[\\d.]{1,19}0*$)\\d{0,12}\\.\\d{0,6}0*$)"},{"type":"null"}],"title":"Unit Price Paise"},"free_units":{"anyOf":[{"type":"integer","maximum":1000000000000000.0,"minimum":0.0},{"type":"null"}],"title":"Free Units"}},"type":"object","required":["reason","expected_version"],"title":"StaffRateIn"},"StaffRateOut":{"properties":{"meter":{"type":"string","title":"Meter"},"label":{"type":"string","title":"Label"},"unit":{"type":"string","title":"Unit"},"unit_price_paise":{"type":"number","title":"Unit Price Paise"},"free_units":{"type":"integer","title":"Free Units"},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["meter","label","unit","unit_price_paise","free_units","version","updated_at"],"title":"StaffRateOut"},"StaffSessionOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"panel":{"type":"string","enum":["cloud","control","admin","app"],"title":"Panel"},"kind":{"type":"string","enum":["session","api_key","support"],"title":"Kind","default":"session"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"An API key's name (0034)."},"support_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Reason","description":"Why staff opened this support view (0037)."},"support_staff_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Support Staff Email"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_seen_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"mfa_verified_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mfa Verified At"},"user_agent":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Agent"},"ip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ip"}},"type":"object","required":["id","panel","created_at","last_seen_at","expires_at","mfa_verified_at","user_agent","ip"],"title":"StaffSessionOut","description":"Session metadata only: tokens are stored hashed and never returned."},"StaffTemplateList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffTemplateSummary"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffTemplateList"},"StaffTemplateOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","title":"Creator"},"vendor":{"type":"string","title":"Vendor"},"description":{"type":"string","title":"Description"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","title":"Use Cases"},"toolchains":{"items":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"]},"type":"array","title":"Toolchains","description":"The variants' toolchains, in variant order, without repeats."},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"API-relative. The browser reaches it as /api + image_url (design 8.8)."},"image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Alt"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"overview":{"items":{"$ref":"#/components/schemas/OverviewRow"},"type":"array","title":"Overview"},"documentation":{"items":{"$ref":"#/components/schemas/DocumentLink"},"type":"array","title":"Documentation"},"pinout":{"$ref":"#/components/schemas/Pinout"},"variants":{"items":{"$ref":"#/components/schemas/FirmwareVariant"},"type":"array","title":"Variants"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","title":"Dashboard"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","title":"Datastreams"},"assets":{"items":{"$ref":"#/components/schemas/TemplateAssetOut"},"type":"array","title":"Assets","description":"The pictures the content refers to (staff: every stored asset)."},"status":{"type":"string","enum":["draft","published","archived"],"title":"Status"},"version":{"type":"integer","title":"Version"},"devices_using":{"type":"integer","title":"Devices Using","description":"Devices of any status created from this template."},"deletable":{"type":"boolean","title":"Deletable","description":"Delete would succeed: a never-published, non-seed draft no device was created from."},"has_image":{"type":"boolean","title":"Has Image"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"warnings":{"items":{"$ref":"#/components/schemas/TemplateWarning"},"type":"array","title":"Warnings","default":[]}},"type":"object","required":["id","slug","name","hardware_type","creator","vendor","description","connectivity","use_cases","toolchains","image_url","image_alt","updated_at","published_at","features","overview","documentation","pinout","variants","dashboard","datastreams","assets","status","version","devices_using","deletable","has_image","created_at"],"title":"StaffTemplateOut"},"StaffTemplateSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","title":"Creator"},"vendor":{"type":"string","title":"Vendor"},"description":{"type":"string","title":"Description"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","title":"Use Cases"},"toolchains":{"items":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"]},"type":"array","title":"Toolchains","description":"The variants' toolchains, in variant order, without repeats."},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"API-relative. The browser reaches it as /api + image_url (design 8.8)."},"image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Alt"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"status":{"type":"string","enum":["draft","published","archived"],"title":"Status"},"version":{"type":"integer","title":"Version"},"devices_using":{"type":"integer","title":"Devices Using","description":"Non-archived devices created from this template, all organizations."},"deletable":{"type":"boolean","title":"Deletable","description":"Delete would succeed: a never-published, non-seed draft no device was created from."},"has_image":{"type":"boolean","title":"Has Image"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","slug","name","hardware_type","creator","vendor","description","connectivity","use_cases","toolchains","image_url","image_alt","updated_at","published_at","status","version","devices_using","deletable","has_image","created_at"],"title":"StaffTemplateSummary"},"StaffTrendsOut":{"properties":{"start_day":{"type":"string","format":"date","title":"Start Day"},"end_day":{"type":"string","format":"date","title":"End Day"},"days":{"items":{"$ref":"#/components/schemas/TrendDayOut"},"type":"array","title":"Days"},"currency":{"type":"string","title":"Currency","default":"INR"}},"type":"object","required":["start_day","end_day","days"],"title":"StaffTrendsOut"},"StaffUserDelete":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"confirm_email":{"type":"string","maxLength":254,"minLength":3,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Confirm Email","description":"The account's address, typed again."}},"type":"object","required":["reason","confirm_email"],"title":"StaffUserDelete"},"StaffUserDetailOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"email_verified":{"type":"boolean","title":"Email Verified","default":false},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"suspended_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Reason"},"organization_count":{"type":"integer","title":"Organization Count","default":0},"sign_in_methods":{"items":{"type":"string"},"type":"array","title":"Sign In Methods","default":[]},"two_factor":{"type":"string","enum":["none","totp","passkey","both"],"title":"Two Factor"},"recovery_codes_left":{"type":"integer","title":"Recovery Codes Left","default":0},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At","description":"Set when staff deleted the account: its personal data is gone."},"memberships":{"items":{"$ref":"#/components/schemas/StaffMembershipOut"},"type":"array","title":"Memberships","default":[]},"enterprise_memberships":{"items":{"$ref":"#/components/schemas/StaffEnterpriseMembershipOut"},"type":"array","title":"Enterprise Memberships","default":[]},"identities":{"items":{"$ref":"#/components/schemas/StaffIdentityOut"},"type":"array","title":"Identities","default":[]},"factors":{"items":{"$ref":"#/components/schemas/StaffFactorOut"},"type":"array","title":"Factors","default":[]},"has_password":{"type":"boolean","title":"Has Password","default":false},"mfa_locked_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Mfa Locked Until"},"sessions":{"items":{"$ref":"#/components/schemas/StaffSessionOut"},"type":"array","title":"Sessions","default":[]},"security_events":{"items":{"$ref":"#/components/schemas/SecurityEventOut"},"type":"array","title":"Security Events","default":[]},"delete_blockers":{"items":{"$ref":"#/components/schemas/StaffMembershipBlockerOut"},"type":"array","title":"Delete Blockers","description":"Teams this account is the only owner of while others are members: deletion is refused until someone else owns them.","default":[]},"payment_card_last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Card Last4"},"payment_card_network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Card Network"}},"type":"object","required":["id","email","display_name","created_at","last_login_at","suspended_at","suspended_reason","two_factor"],"title":"StaffUserDetailOut"},"StaffUserList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffUserOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"StaffUserList"},"StaffUserOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"email_verified":{"type":"boolean","title":"Email Verified","default":false},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_login_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Login At"},"suspended_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Suspended At"},"suspended_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Reason"},"organization_count":{"type":"integer","title":"Organization Count","default":0},"sign_in_methods":{"items":{"type":"string"},"type":"array","title":"Sign In Methods","default":[]},"two_factor":{"type":"string","enum":["none","totp","passkey","both"],"title":"Two Factor"},"recovery_codes_left":{"type":"integer","title":"Recovery Codes Left","default":0},"deleted_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Deleted At","description":"Set when staff deleted the account: its personal data is gone."}},"type":"object","required":["id","email","display_name","created_at","last_login_at","suspended_at","suspended_reason","two_factor"],"title":"StaffUserOut"},"StaffWalletDetail":{"properties":{"wallet":{"$ref":"#/components/schemas/StaffWalletOut"},"ledger":{"items":{"$ref":"#/components/schemas/StaffLedgerEntryOut"},"type":"array","title":"Ledger"},"invoices":{"items":{"$ref":"#/components/schemas/StaffInvoiceOut"},"type":"array","title":"Invoices"}},"type":"object","required":["wallet","ledger","invoices"],"title":"StaffWalletDetail"},"StaffWalletList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StaffWalletOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"StaffWalletList"},"StaffWalletOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"organization_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization Name"},"enterprise_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Enterprise Id"},"enterprise_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Enterprise Name"},"mode":{"type":"string","enum":["prepaid","postpaid"],"title":"Mode"},"balance_paise":{"type":"number","title":"Balance Paise"},"credit_paise":{"type":"number","title":"Credit Paise"},"credit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Credit Expires At"},"credit_limit_paise":{"type":"integer","title":"Credit Limit Paise"},"discount_percent":{"type":"number","title":"Discount Percent"},"white_label":{"type":"boolean","title":"White Label"},"ceilings":{"additionalProperties":{"type":"integer"},"type":"object","title":"Ceilings","description":"Every safety ceiling: the defaults with this wallet's overrides."},"ceiling_overrides":{"additionalProperties":{"type":"integer"},"type":"object","title":"Ceiling Overrides"},"budget_paise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Paise"},"state":{"type":"string","enum":["ok","low","grace","read_only"],"title":"State"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"month_usage_paise":{"type":"number","title":"Month Usage Paise"},"version":{"type":"integer","title":"Version"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","organization_id","organization_name","enterprise_id","enterprise_name","mode","balance_paise","credit_paise","credit_expires_at","credit_limit_paise","discount_percent","white_label","ceilings","ceiling_overrides","budget_paise","state","reason","month_usage_paise","version","updated_at"],"title":"StaffWalletOut"},"StaffWalletTermsIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"},"expected_version":{"type":"integer","title":"Expected Version"},"organization_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Organization Id"},"enterprise_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Enterprise Id"},"mode":{"anyOf":[{"type":"string","enum":["prepaid","postpaid"]},{"type":"null"}],"title":"Mode"},"credit_limit_paise":{"anyOf":[{"type":"integer","maximum":10000000000.0,"minimum":0.0},{"type":"null"}],"title":"Credit Limit Paise"},"discount_percent":{"anyOf":[{"type":"number","maximum":90.0,"minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*(?:\\d{0,3}|(?=[\\d.]{1,6}0*$)\\d{0,3}\\.\\d{0,2}0*$)"},{"type":"null"}],"title":"Discount Percent"},"white_label":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"White Label"},"ceilings":{"anyOf":[{"additionalProperties":{"type":"integer","maximum":1000000.0,"minimum":0.0},"type":"object"},{"type":"null"}],"title":"Ceilings"}},"type":"object","required":["reason","expected_version"],"title":"StaffWalletTermsIn","description":"Fields left out keep their value. Expected version 0 opens the owner's wallet."},"StatOptions":{"properties":{"format":{"anyOf":[{"type":"string","maxLength":40,"minLength":7},{"type":"null"}],"title":"Format","description":"The whole text around the value, {value} where it goes ('Tank {value} L'); replaces prefix, suffix and unit."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"value_map":{"items":{"$ref":"#/components/schemas/ValueMapEntry"},"type":"array","maxItems":10,"title":"Value Map"},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"unit":{"type":"string","maxLength":16,"title":"Unit","default":""},"decimals":{"type":"integer","maximum":6.0,"minimum":0.0,"title":"Decimals","default":2},"sparkline":{"type":"boolean","title":"Sparkline","description":"A one-hour trend under the value.","default":false},"trend_minutes":{"anyOf":[{"type":"integer","maximum":1440.0,"minimum":5.0},{"type":"null"}],"title":"Trend Minutes","description":"An arrow and the change since this many minutes ago."},"show_updated":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Updated","description":"When the value arrived, under it."},"stale_minutes":{"anyOf":[{"type":"integer","maximum":1440.0,"minimum":1.0},{"type":"null"}],"title":"Stale Minutes","description":"Dim the value and say so once it is older than this."},"display":{"anyOf":[{"type":"string","enum":["number","duration"]},{"type":"null"}],"title":"Display","description":"duration: the value is a number of seconds, shown as 4h 20m (unit and decimals unused)."}},"additionalProperties":false,"type":"object","title":"StatOptions"},"StatWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"stat","title":"Type"},"options":{"$ref":"#/components/schemas/StatOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"StatWidget"},"StateTimelineWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"state_timeline","title":"Type"},"options":{"$ref":"#/components/schemas/TimelineOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"StateTimelineWidget"},"StreamGroupOut":{"properties":{"name":{"type":"string","title":"Name"},"consumers":{"type":"integer","title":"Consumers","default":0},"pending":{"type":"integer","title":"Pending","default":0},"lag":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Lag"},"last_delivered_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Delivered Id"}},"type":"object","required":["name"],"title":"StreamGroupOut"},"StreamOut":{"properties":{"name":{"type":"string","title":"Name"},"length":{"type":"integer","title":"Length","default":0},"groups":{"items":{"$ref":"#/components/schemas/StreamGroupOut"},"type":"array","title":"Groups","default":[]}},"type":"object","required":["name"],"title":"StreamOut"},"StreamSummaryOut":{"properties":{"name":{"type":"string","title":"Name"},"length":{"type":"integer","title":"Length","default":0},"pending":{"type":"integer","title":"Pending","default":0}},"type":"object","required":["name"],"title":"StreamSummaryOut"},"SupportSessionOut":{"properties":{"staff_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Staff Name"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"ends_at":{"type":"string","format":"date-time","title":"Ends At"}},"type":"object","required":["ends_at"],"title":"SupportSessionOut"},"SupportViewIn":{"properties":{"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"type":"object","required":["reason"],"title":"SupportViewIn"},"SupportViewOut":{"properties":{"url":{"type":"string","title":"Url","description":"Open within 60 s; it signs this browser in to the cloud console, read-only."},"expires_at":{"type":"string","format":"date-time","title":"Expires At","description":"When the support session itself ends (30 minutes)."}},"type":"object","required":["url","expires_at"],"title":"SupportViewOut"},"TeamCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"description":{"type":"string","maxLength":500,"title":"Description","default":""}},"type":"object","required":["name"],"title":"TeamCreate"},"TeamDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"member_count":{"type":"integer","title":"Member Count"},"project_count":{"type":"integer","title":"Project Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"members":{"items":{"$ref":"#/components/schemas/TeamMemberOut"},"type":"array","title":"Members"},"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessOut"},"type":"array","title":"Projects"}},"type":"object","required":["id","name","description","member_count","project_count","created_at","updated_at","members","projects"],"title":"TeamDetail"},"TeamList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TeamOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"TeamList"},"TeamMemberIn":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When this access ends; null for no end."}},"type":"object","required":["user_id"],"title":"TeamMemberIn"},"TeamMemberOut":{"properties":{"user_id":{"type":"string","format":"uuid","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"access":{"type":"string","enum":["all","selected"],"title":"Access","description":"'all': the member has every project anyway."},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired"}},"type":"object","required":["user_id","email","display_name","access","expires_at","expired"],"title":"TeamMemberOut"},"TeamMembersUpdate":{"properties":{"members":{"items":{"$ref":"#/components/schemas/TeamMemberIn"},"type":"array","maxItems":200,"title":"Members"}},"type":"object","required":["members"],"title":"TeamMembersUpdate"},"TeamOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"member_count":{"type":"integer","title":"Member Count"},"project_count":{"type":"integer","title":"Project Count"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","description","member_count","project_count","created_at","updated_at"],"title":"TeamOut"},"TeamProjectsUpdate":{"properties":{"projects":{"items":{"$ref":"#/components/schemas/ProjectAccessIn"},"type":"array","maxItems":100,"title":"Projects"}},"type":"object","required":["projects"],"title":"TeamProjectsUpdate"},"TeamRef":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"expired":{"type":"boolean","title":"Expired","default":false}},"type":"object","required":["id","name"],"title":"TeamRef"},"TeamUpdate":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description"}},"type":"object","title":"TeamUpdate"},"TemplateAssetOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"kind":{"type":"string","enum":["pinout","guide"],"title":"Kind"},"content_type":{"type":"string","title":"Content Type"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"url":{"type":"string","title":"Url","description":"API-relative, with the cache key; append `&size=thumb` for the 320 px rendition."},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","content_type","width","height","url","created_at"],"title":"TemplateAssetOut"},"TemplateCreate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","maxLength":60,"minLength":1,"title":"Creator","default":"IoTAPS"},"vendor":{"type":"string","maxLength":60,"title":"Vendor","default":""},"description":{"type":"string","maxLength":2000,"title":"Description","default":""},"image_alt":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Image Alt"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","maxItems":4,"title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","maxItems":6,"title":"Use Cases"},"features":{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":20,"title":"Features"},"overview":{"items":{"$ref":"#/components/schemas/OverviewRow"},"type":"array","maxItems":30,"title":"Overview"},"documentation":{"items":{"$ref":"#/components/schemas/DocumentLink"},"type":"array","maxItems":10,"title":"Documentation"},"pinout":{"$ref":"#/components/schemas/Pinout"},"variants":{"items":{"$ref":"#/components/schemas/FirmwareVariant"},"type":"array","maxItems":4,"minItems":1,"title":"Variants"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","maxItems":24,"title":"Dashboard"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","maxItems":256,"title":"Datastreams"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug","description":"Derived from the name when omitted."}},"additionalProperties":false,"type":"object","required":["name","hardware_type"],"title":"TemplateCreate","description":"POST: no `reason` and no `expected_version` (extra=\"forbid\" rejects both)."},"TemplateDetail":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","title":"Creator"},"vendor":{"type":"string","title":"Vendor"},"description":{"type":"string","title":"Description"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","title":"Use Cases"},"toolchains":{"items":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"]},"type":"array","title":"Toolchains","description":"The variants' toolchains, in variant order, without repeats."},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"API-relative. The browser reaches it as /api + image_url (design 8.8)."},"image_alt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Alt"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"features":{"items":{"type":"string"},"type":"array","title":"Features"},"overview":{"items":{"$ref":"#/components/schemas/OverviewRow"},"type":"array","title":"Overview"},"documentation":{"items":{"$ref":"#/components/schemas/DocumentLink"},"type":"array","title":"Documentation"},"pinout":{"$ref":"#/components/schemas/Pinout"},"variants":{"items":{"$ref":"#/components/schemas/FirmwareVariant"},"type":"array","title":"Variants"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","title":"Dashboard"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","title":"Datastreams"},"assets":{"items":{"$ref":"#/components/schemas/TemplateAssetOut"},"type":"array","title":"Assets","description":"The pictures the content refers to (staff: every stored asset)."}},"type":"object","required":["id","slug","name","hardware_type","creator","vendor","description","connectivity","use_cases","toolchains","image_url","image_alt","updated_at","published_at","features","overview","documentation","pinout","variants","dashboard","datastreams","assets"],"title":"TemplateDetail"},"TemplateFacet":{"properties":{"template_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Template Id","description":"Null groups the devices created without a template."},"template_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Template Name"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["template_id","template_name","count"],"title":"TemplateFacet"},"TemplateImageOut":{"properties":{"content_type":{"type":"string","title":"Content Type"},"width":{"type":"integer","title":"Width"},"height":{"type":"integer","title":"Height"},"sha256":{"type":"string","title":"Sha256","description":"Hex SHA-256 of the full rendition."},"image_url":{"type":"string","title":"Image Url"},"version":{"type":"integer","title":"Version","description":"The template version after the change."}},"type":"object","required":["content_type","width","height","sha256","image_url","version"],"title":"TemplateImageOut"},"TemplateLimits":{"properties":{"max_image_bytes":{"type":"integer","title":"Max Image Bytes"},"max_script_chars":{"type":"integer","title":"Max Script Chars"},"max_features":{"type":"integer","title":"Max Features"},"max_overview_rows":{"type":"integer","title":"Max Overview Rows"},"max_requirements":{"type":"integer","title":"Max Requirements"},"max_install_commands":{"type":"integer","title":"Max Install Commands"},"max_troubleshooting":{"type":"integer","title":"Max Troubleshooting"},"min_publish_description":{"type":"integer","title":"Min Publish Description"},"max_variants":{"type":"integer","title":"Max Variants"},"max_files":{"type":"integer","title":"Max Files"},"max_setup_sections":{"type":"integer","title":"Max Setup Sections"},"max_flash_sections":{"type":"integer","title":"Max Flash Sections"},"max_documents":{"type":"integer","title":"Max Documents"},"max_pins":{"type":"integer","title":"Max Pins"},"max_preset_widgets":{"type":"integer","title":"Max Preset Widgets"},"max_datastreams":{"type":"integer","title":"Max Datastreams"},"max_guide_code_chars":{"type":"integer","title":"Max Guide Code Chars"},"max_assets":{"type":"integer","title":"Max Assets"}},"type":"object","required":["max_image_bytes","max_script_chars","max_features","max_overview_rows","max_requirements","max_install_commands","max_troubleshooting","min_publish_description","max_variants","max_files","max_setup_sections","max_flash_sections","max_documents","max_pins","max_preset_widgets","max_datastreams","max_guide_code_chars","max_assets"],"title":"TemplateLimits"},"TemplateList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/CatalogEntry"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"TemplateList"},"TemplateMeta":{"properties":{"hardware_types":{"items":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"]},"type":"array","title":"Hardware Types"},"connectivity_kinds":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","title":"Connectivity Kinds"},"script_languages":{"items":{"type":"string","enum":["python","micropython","arduino","cpp","ini","bash","text"]},"type":"array","title":"Script Languages"},"toolchains":{"items":{"type":"string","enum":["arduino_ide","platformio","micropython","python","other"]},"type":"array","title":"Toolchains"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","title":"Use Cases"},"document_kinds":{"items":{"type":"string","enum":["product_page","datasheet","technical_reference","user_guide","pinout","schematic","other"]},"type":"array","title":"Document Kinds"},"callout_kinds":{"items":{"type":"string","enum":["note","info","tip","warning"]},"type":"array","title":"Callout Kinds"},"pin_kinds":{"items":{"type":"string","enum":["power","ground","gpio","input_only","strapping","flash","control","other"]},"type":"array","title":"Pin Kinds"},"placeholders":{"items":{"$ref":"#/components/schemas/PlaceholderInfo"},"type":"array","title":"Placeholders"},"reserved_slugs":{"items":{"type":"string"},"type":"array","title":"Reserved Slugs"},"limits":{"$ref":"#/components/schemas/TemplateLimits"}},"type":"object","required":["hardware_types","connectivity_kinds","script_languages","toolchains","use_cases","document_kinds","callout_kinds","pin_kinds","placeholders","reserved_slugs","limits"],"title":"TemplateMeta"},"TemplateRevisionDetail":{"properties":{"version":{"type":"integer","title":"Version"},"action":{"type":"string","title":"Action"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"content_sha256":{"type":"string","title":"Content Sha256","description":"Hex SHA-256 of the canonical snapshot JSON."},"changed_fields":{"items":{"type":"string"},"type":"array","title":"Changed Fields"},"snapshot":{"additionalProperties":true,"type":"object","title":"Snapshot"}},"type":"object","required":["version","action","reason","created_by","created_at","content_sha256","changed_fields","snapshot"],"title":"TemplateRevisionDetail"},"TemplateRevisionList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TemplateRevisionOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["items"],"title":"TemplateRevisionList"},"TemplateRevisionOut":{"properties":{"version":{"type":"integer","title":"Version"},"action":{"type":"string","title":"Action"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"created_by":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Created By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"content_sha256":{"type":"string","title":"Content Sha256","description":"Hex SHA-256 of the canonical snapshot JSON."},"changed_fields":{"items":{"type":"string"},"type":"array","title":"Changed Fields"}},"type":"object","required":["version","action","reason","created_by","created_at","content_sha256","changed_fields"],"title":"TemplateRevisionOut"},"TemplateTransition":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"reason":{"type":"string","maxLength":500,"minLength":3,"title":"Reason"}},"additionalProperties":false,"type":"object","required":["expected_version","reason"],"title":"TemplateTransition","description":"POST publish / archive / restore and DELETE (JSON body): both fields required."},"TemplateUpdate":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"hardware_type":{"type":"string","enum":["microcontroller","single_board_computer","gateway","sensor_module","other"],"title":"Hardware Type"},"creator":{"type":"string","maxLength":60,"minLength":1,"title":"Creator","default":"IoTAPS"},"vendor":{"type":"string","maxLength":60,"title":"Vendor","default":""},"description":{"type":"string","maxLength":2000,"title":"Description","default":""},"image_alt":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Image Alt"},"connectivity":{"items":{"type":"string","enum":["wifi","bluetooth","lan","mqtt"]},"type":"array","maxItems":4,"title":"Connectivity"},"use_cases":{"items":{"type":"string","enum":["environmental_monitoring","smart_home","industrial","agriculture","energy","asset_tracking","prototyping","education"]},"type":"array","maxItems":6,"title":"Use Cases"},"features":{"items":{"type":"string","maxLength":200,"minLength":1},"type":"array","maxItems":20,"title":"Features"},"overview":{"items":{"$ref":"#/components/schemas/OverviewRow"},"type":"array","maxItems":30,"title":"Overview"},"documentation":{"items":{"$ref":"#/components/schemas/DocumentLink"},"type":"array","maxItems":10,"title":"Documentation"},"pinout":{"$ref":"#/components/schemas/Pinout"},"variants":{"items":{"$ref":"#/components/schemas/FirmwareVariant"},"type":"array","maxItems":4,"minItems":1,"title":"Variants"},"dashboard":{"items":{"$ref":"#/components/schemas/PresetWidget"},"type":"array","maxItems":24,"title":"Dashboard"},"datastreams":{"items":{"$ref":"#/components/schemas/Datastream"},"type":"array","maxItems":256,"title":"Datastreams"},"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"reason":{"anyOf":[{"type":"string","maxLength":500,"minLength":3},{"type":"null"}],"title":"Reason"}},"additionalProperties":false,"type":"object","required":["name","hardware_type","expected_version"],"title":"TemplateUpdate","description":"PUT: the slug is immutable (extra=\"forbid\" rejects it)."},"TemplateWarning":{"properties":{"code":{"type":"string","title":"Code"},"field":{"type":"string","title":"Field"},"line":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Line"},"message":{"type":"string","title":"Message"}},"type":"object","required":["code","field","message"],"title":"TemplateWarning"},"TerminalOptions":{"properties":{"input":{"type":"boolean","title":"Input","default":true},"lines":{"type":"integer","maximum":100.0,"minimum":10.0,"title":"Lines","default":50},"font_size":{"type":"string","enum":["s","m","l"],"title":"Font Size","default":"m"},"theme":{"type":"string","enum":["dark","light"],"title":"Theme","default":"dark"},"timestamps":{"type":"boolean","title":"Timestamps","default":false},"autoscroll":{"type":"boolean","title":"Autoscroll","default":true},"placeholder":{"type":"string","maxLength":40,"title":"Placeholder","default":""}},"additionalProperties":false,"type":"object","title":"TerminalOptions","description":"The last text lines the device reported on the key; with `input`, members who may send\ncommands type a line and it is sent as a text command, not retained."},"TerminalWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"terminal","title":"Type"},"options":{"$ref":"#/components/schemas/TerminalOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"TerminalWidget"},"ThermometerOptions":{"properties":{"decimals":{"anyOf":[{"type":"integer","maximum":6.0,"minimum":0.0},{"type":"null"}],"title":"Decimals","description":"None: as the value comes."},"thousands":{"type":"boolean","title":"Thousands","description":"Group thousands (1,234).","default":false},"prefix":{"type":"string","maxLength":16,"title":"Prefix","default":""},"suffix":{"type":"string","maxLength":16,"title":"Suffix","default":""},"ramp":{"anyOf":[{"type":"string","enum":["zones","gradient"]},{"type":"null"}],"title":"Ramp","description":"Blend the colour zones into each other instead of stepping between them."},"zones":{"items":{"$ref":"#/components/schemas/Zone"},"type":"array","maxItems":5,"title":"Zones"},"min":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Min","default":-10.0},"max":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"Max","default":50.0},"unit":{"type":"string","maxLength":16,"title":"Unit","default":"°C"},"warn_below":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Warn Below","description":"Shown as a warning at or below this value."},"warn_above":{"anyOf":[{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0},{"type":"null"}],"title":"Warn Above","description":"Shown as a warning at or above this value."}},"additionalProperties":false,"type":"object","title":"ThermometerOptions"},"ThermometerWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"thermometer","title":"Type"},"options":{"$ref":"#/components/schemas/ThermometerOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"ThermometerWidget"},"TimeInputOptions":{"properties":{"stop":{"type":"boolean","title":"Stop","description":"Ask for a stop time as well as a start time.","default":true},"days":{"type":"boolean","title":"Days","description":"Ask for the days of the week.","default":true},"timezone":{"type":"string","maxLength":64,"pattern":"^$|^[A-Za-z][A-Za-z0-9_+-]{0,30}(/[A-Za-z0-9_+-]{1,30}){0,2}$","title":"Timezone","default":""},"clock":{"type":"string","enum":["24h","12h"],"title":"Clock","default":"24h"}},"additionalProperties":false,"type":"object","title":"TimeInputOptions","description":"A schedule sent as one retained text, `start=08:00;stop=17:00;days=12345;tz=Asia/Kolkata`\n(days 1 = Monday to 7 = Sunday). The platform only delivers it; the device keeps the time."},"TimeInputWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"time_input","title":"Type"},"options":{"$ref":"#/components/schemas/TimeInputOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"TimeInputWidget"},"TimelineOptions":{"properties":{"value_map":{"items":{"$ref":"#/components/schemas/ValueMapEntry"},"type":"array","maxItems":10,"title":"Value Map"},"range":{"type":"string","enum":["1h","6h","24h","7d"],"title":"Range","default":"24h"},"on_label":{"type":"string","maxLength":16,"title":"On Label","default":"On"},"off_label":{"type":"string","maxLength":16,"title":"Off Label","default":"Off"}},"additionalProperties":false,"type":"object","title":"TimelineOptions"},"ToggleOptions":{"properties":{"on_label":{"type":"string","maxLength":16,"title":"On Label","default":"On"},"off_label":{"type":"string","maxLength":16,"title":"Off Label","default":"Off"},"control":{"type":"boolean","title":"Control","description":"Members who may send device commands switch the device from the widget: the command's key is the widget's telemetry key. False shows the reported value only.","default":false},"send_as":{"type":"string","enum":["boolean","number"],"title":"Send As","description":"With control: the command's value, true/false or 1/0 (a device or an integer datastream that takes numbers, as 0-1 buttons do). Reported 0 and 1 read as off and on either way.","default":"boolean"},"on_color":{"type":"string","pattern":"^$|^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"On Color","default":""},"off_color":{"type":"string","pattern":"^$|^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"Off Color","default":""},"on_icon":{"type":"string","pattern":"^$|^(bulb|fan|plug|power|pump|valve|lock|door|motion|bell|alert|thermometer|droplet|sun|moon|bolt|wifi|battery|gauge|flame|snowflake|wind|cloud|leaf|home|car|speaker|camera|clock|gear)$","title":"On Icon","default":""},"off_icon":{"type":"string","pattern":"^$|^(bulb|fan|plug|power|pump|valve|lock|door|motion|bell|alert|thermometer|droplet|sun|moon|bolt|wifi|battery|gauge|flame|snowflake|wind|cloud|leaf|home|car|speaker|camera|clock|gear)$","title":"Off Icon","default":""},"shape":{"type":"string","enum":["switch","button","round"],"title":"Shape","default":"switch"},"confirm":{"type":"boolean","title":"Confirm","description":"With control: ask before sending.","default":false},"placement":{"anyOf":[{"type":"string","enum":["body","header"]},{"type":"null"}],"title":"Placement","description":"header: the switch in the title row, beside the title."}},"additionalProperties":false,"type":"object","title":"ToggleOptions"},"ToggleWidget":{"properties":{"id":{"type":"string","pattern":"^[a-z0-9]{6,12}$","title":"Id"},"title":{"type":"string","maxLength":80,"title":"Title","default":""},"layout":{"$ref":"#/components/schemas/Layout"},"source":{"$ref":"#/components/schemas/Source"},"min_role":{"type":"string","enum":["owner","admin","developer","viewer"],"title":"Min Role","default":"viewer"},"style":{"anyOf":[{"$ref":"#/components/schemas/WidgetStyle"},{"type":"null"}],"description":"None: every default. Stored only when set."},"locked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Locked","description":"Kept in place: the editor does not move or resize it."},"type":{"type":"string","const":"toggle","title":"Type"},"options":{"$ref":"#/components/schemas/ToggleOptions"}},"additionalProperties":false,"type":"object","required":["id","layout","source","type"],"title":"ToggleWidget"},"TopUpIn":{"properties":{"amount_paise":{"type":"integer","maximum":1000000000.0,"minimum":100.0,"title":"Amount Paise"}},"type":"object","required":["amount_paise"],"title":"TopUpIn"},"TopUpOut":{"properties":{"order_id":{"type":"string","title":"Order Id"},"amount_paise":{"type":"integer","title":"Amount Paise"},"key_id":{"type":"string","title":"Key Id"},"currency":{"type":"string","title":"Currency","default":"INR"}},"type":"object","required":["order_id","amount_paise","key_id"],"title":"TopUpOut"},"TopUpVerifyIn":{"properties":{"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"}},"type":"object","required":["razorpay_order_id","razorpay_payment_id","razorpay_signature"],"title":"TopUpVerifyIn"},"TopupIn":{"properties":{"amount_paise":{"type":"integer","maximum":1000000000.0,"minimum":100.0,"title":"Amount Paise"}},"type":"object","required":["amount_paise"],"title":"TopupIn"},"TopupLimitsOut":{"properties":{"min_paise":{"type":"integer","title":"Min Paise"},"max_paise":{"type":"integer","title":"Max Paise"}},"type":"object","required":["min_paise","max_paise"],"title":"TopupLimitsOut"},"TopupOut":{"properties":{"key_id":{"type":"string","title":"Key Id"},"order_id":{"type":"string","title":"Order Id"},"amount_paise":{"type":"integer","title":"Amount Paise"},"currency":{"type":"string","title":"Currency"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"prefill_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefill Name"},"prefill_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefill Email"},"prefill_contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefill Contact"}},"type":"object","required":["key_id","order_id","amount_paise","currency","name","description","prefill_name","prefill_email","prefill_contact"],"title":"TopupOut","description":"What Razorpay Standard Checkout needs for an order."},"TopupVerifyIn":{"properties":{"razorpay_payment_id":{"type":"string","pattern":"^[A-Za-z0-9_]{1,64}$","title":"Razorpay Payment Id"},"razorpay_order_id":{"type":"string","pattern":"^order_[A-Za-z0-9]{1,40}$","title":"Razorpay Order Id"},"razorpay_signature":{"type":"string","pattern":"^[0-9a-f]{64}$","title":"Razorpay Signature"}},"type":"object","required":["razorpay_payment_id","razorpay_order_id","razorpay_signature"],"title":"TopupVerifyIn"},"TotpEnrolConfirm":{"properties":{"factor_id":{"type":"string","format":"uuid","title":"Factor Id"},"code":{"type":"string","pattern":"^[0-9]{6}$","title":"Code"}},"type":"object","required":["factor_id","code"],"title":"TotpEnrolConfirm"},"TotpEnrolStartOut":{"properties":{"factor_id":{"type":"string","format":"uuid","title":"Factor Id"},"secret_base32":{"type":"string","title":"Secret Base32"},"otpauth_uri":{"type":"string","title":"Otpauth Uri"},"qr_svg":{"type":"string","title":"Qr Svg","description":"Inline SVG of the otpauth URI."}},"type":"object","required":["factor_id","secret_base32","otpauth_uri","qr_svg"],"title":"TotpEnrolStartOut"},"TotpVerify":{"properties":{"code":{"type":"string","pattern":"^[0-9]{6}$","title":"Code"}},"type":"object","required":["code"],"title":"TotpVerify"},"TrendDayOut":{"properties":{"day":{"type":"string","format":"date","title":"Day"},"signups":{"type":"integer","title":"Signups","default":0},"organizations":{"type":"integer","title":"Organizations","default":0},"persisted_messages":{"type":"integer","title":"Persisted Messages","default":0},"rejected_messages":{"type":"integer","title":"Rejected Messages","default":0},"devices_reporting":{"type":"integer","title":"Devices Reporting","default":0},"revenue_paise":{"type":"integer","title":"Revenue Paise","default":0}},"type":"object","required":["day"],"title":"TrendDayOut"},"Typography":{"properties":{"body_font":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Body Font","description":"Text everywhere."},"heading_font":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Heading Font","description":"Headings; null follows the text font."},"mono_font":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Mono Font","description":"Code, keys and the digital readout."},"text_scale":{"anyOf":[{"type":"integer","maximum":125.0,"minimum":85.0},{"type":"null"}],"title":"Text Scale","description":"Per cent of the built-in text sizes."},"body_weight":{"anyOf":[{"type":"integer","enum":[300,400,500]},{"type":"null"}],"title":"Body Weight"},"heading_weight":{"anyOf":[{"type":"integer","enum":[500,600,700,800]},{"type":"null"}],"title":"Heading Weight"},"line_height":{"anyOf":[{"type":"number","maximum":1.8,"minimum":1.3},{"type":"null"}],"title":"Line Height"},"heading_spacing":{"anyOf":[{"type":"string","enum":["tighter","tight","normal","wide"]},{"type":"null"}],"title":"Heading Spacing"},"page_title_size":{"anyOf":[{"type":"integer","maximum":40.0,"minimum":18.0},{"type":"null"}],"title":"Page Title Size","description":"Page titles in px."},"section_title_size":{"anyOf":[{"type":"integer","maximum":22.0,"minimum":13.0},{"type":"null"}],"title":"Section Title Size","description":"Card and section titles in px."},"nav_size":{"anyOf":[{"type":"integer","maximum":16.0,"minimum":12.0},{"type":"null"}],"title":"Nav Size","description":"Sidebar items in px."}},"type":"object","title":"Typography","description":"Fonts, sizes and weights (0047, `platform/typography.py`); null is the built-in value.\nA font is a bundled one (`geist`, `plex`, `jakarta`, `system`; mono `geist-mono`,\n`plex-mono`, `system-mono`) or the id of an uploaded font."},"UnreadCount":{"properties":{"unread":{"type":"integer","title":"Unread"}},"type":"object","required":["unread"],"title":"UnreadCount"},"UsageCounters":{"properties":{"persisted_messages":{"type":"integer","title":"Persisted Messages","default":0},"persisted_bytes":{"type":"integer","title":"Persisted Bytes","default":0},"duplicate_messages":{"type":"integer","title":"Duplicate Messages","default":0},"rejected_messages":{"type":"integer","title":"Rejected Messages","default":0}},"type":"object","title":"UsageCounters"},"UsageDayOut":{"properties":{"persisted_messages":{"type":"integer","title":"Persisted Messages","default":0},"persisted_bytes":{"type":"integer","title":"Persisted Bytes","default":0},"duplicate_messages":{"type":"integer","title":"Duplicate Messages","default":0},"rejected_messages":{"type":"integer","title":"Rejected Messages","default":0},"day":{"type":"string","format":"date","title":"Day"}},"type":"object","required":["day"],"title":"UsageDayOut"},"UsageOut":{"properties":{"start_day":{"type":"string","format":"date","title":"Start Day"},"end_day":{"type":"string","format":"date","title":"End Day"},"days":{"items":{"$ref":"#/components/schemas/UsageDayOut"},"type":"array","title":"Days"},"totals":{"$ref":"#/components/schemas/UsageCounters"}},"type":"object","required":["start_day","end_day","days","totals"],"title":"UsageOut"},"UserOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"}},"type":"object","required":["id","email","display_name"],"title":"UserOut"},"ValueList":{"properties":{"metric":{"type":"string","title":"Metric"},"items":{"items":{"$ref":"#/components/schemas/ValueOut"},"type":"array","title":"Items","description":"Newest first, from the last 7 days."},"next_before":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Before"}},"type":"object","required":["metric","items"],"title":"ValueList"},"ValueMapEntry":{"properties":{"value":{"type":"string","maxLength":32,"minLength":1,"title":"Value"},"text":{"type":"string","maxLength":32,"minLength":1,"title":"Text"},"color":{"type":"string","pattern":"^$|^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"Color","default":""},"icon":{"anyOf":[{"type":"string","pattern":"^$|^(bulb|fan|plug|power|pump|valve|lock|door|motion|bell|alert|thermometer|droplet|sun|moon|bolt|wifi|battery|gauge|flame|snowflake|wind|cloud|leaf|home|car|speaker|camera|clock|gear)$"},{"type":"null"}],"title":"Icon","description":"An icon beside the text."}},"additionalProperties":false,"type":"object","required":["value","text"],"title":"ValueMapEntry","description":"Show `text` (in `color`) instead of a reading equal to `value`: \"1\" -> \"Open\". A number\nmatches numerically, true and false also match 1 and 0, anything else matches as text."},"ValueOut":{"properties":{"t":{"type":"string","format":"date-time","title":"T","description":"When the platform received the message."},"value":{"anyOf":[{"type":"boolean"},{"type":"integer"},{"type":"number"},{"type":"string"}],"title":"Value"}},"type":"object","required":["t","value"],"title":"ValueOut"},"VariantFile":{"properties":{"filename":{"type":"string","pattern":"^(?:[A-Za-z0-9_-]{1,32}/)?[A-Za-z0-9_-][A-Za-z0-9._-]{0,63}$","title":"Filename","default":"main.py"},"language":{"type":"string","enum":["python","micropython","arduino","cpp","ini","bash","text"],"title":"Language","default":"python"},"source":{"type":"string","maxLength":65536,"title":"Source","default":""}},"additionalProperties":false,"type":"object","title":"VariantFile"},"WalletOut":{"properties":{"mode":{"type":"string","enum":["prepaid","postpaid"],"title":"Mode"},"state":{"type":"string","enum":["ok","low","grace","read_only"],"title":"State"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"enforced":{"type":"boolean","title":"Enforced"},"writable":{"type":"boolean","title":"Writable"},"grace_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Grace Ends At"},"runway_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Runway Hours"},"hourly_cost_paise":{"type":"number","title":"Hourly Cost Paise","description":"The average charge per hour over the last day."},"balance_paise":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Balance Paise"},"credit_paise":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credit Paise"},"credit_expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Credit Expires At"},"funds_paise":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Funds Paise"},"credit_limit_paise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credit Limit Paise"},"discount_percent":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Discount Percent"},"budget_paise":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Budget Paise"}},"type":"object","required":["mode","state","reason","enforced","writable","grace_ends_at","runway_hours","hourly_cost_paise","balance_paise","credit_paise","credit_expires_at","funds_paise","credit_limit_paise","discount_percent","budget_paise"],"title":"WalletOut"},"WebauthnAuthenticateVerify":{"properties":{"credential":{"additionalProperties":true,"type":"object","title":"Credential"}},"type":"object","required":["credential"],"title":"WebauthnAuthenticateVerify"},"WebauthnOptionsOut":{"properties":{"options":{"additionalProperties":true,"type":"object","title":"Options","description":"PublicKeyCredential options as JSON."}},"type":"object","required":["options"],"title":"WebauthnOptionsOut"},"WebauthnRegisterVerify":{"properties":{"credential":{"additionalProperties":true,"type":"object","title":"Credential"},"name":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Name"}},"type":"object","required":["credential"],"title":"WebauthnRegisterVerify"},"WebhookAck":{"properties":{"status":{"type":"string","const":"ok","title":"Status","default":"ok"}},"type":"object","title":"WebhookAck"},"WebhookCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"format":{"type":"string","enum":["generic","slack","discord","teams"],"title":"Format"},"url_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Hint"},"enabled":{"type":"boolean","title":"Enabled"},"disabled_reason":{"anyOf":[{"type":"string","enum":["manual","failures"]},{"type":"null"}],"title":"Disabled Reason"},"failure_count":{"type":"integer","title":"Failure Count"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"rule_count":{"type":"integer","title":"Rule Count"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"secret":{"type":"string","title":"Secret","description":"The signing secret. Shown only now."}},"type":"object","required":["id","name","format","url_hint","enabled","disabled_reason","failure_count","last_success_at","last_failure_at","last_error","rule_count","version","created_at","updated_at","secret"],"title":"WebhookCreated"},"WebhookDeliveryList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookDeliveryOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"WebhookDeliveryList"},"WebhookDeliveryOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"type":{"type":"string","title":"Type"},"status":{"type":"string","enum":["queued","sent","failed","dead"],"title":"Status"},"attempts":{"type":"integer","title":"Attempts"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"next_attempt_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Next Attempt At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","type","status","attempts","last_error","next_attempt_at","created_at","updated_at"],"title":"WebhookDeliveryOut"},"WebhookIn":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"format":{"type":"string","enum":["generic","slack","discord","teams"],"title":"Format","default":"generic"},"url":{"type":"string","maxLength":2048,"minLength":1,"title":"Url"},"enabled":{"type":"boolean","title":"Enabled","default":true}},"additionalProperties":false,"type":"object","required":["name","url"],"title":"WebhookIn"},"WebhookList":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WebhookOut"},"type":"array","title":"Items"},"can_manage":{"type":"boolean","title":"Can Manage"},"available":{"type":"boolean","title":"Available","description":"False when this deployment cannot store webhooks (no sealing key)."}},"type":"object","required":["items","can_manage","available"],"title":"WebhookList"},"WebhookOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"format":{"type":"string","enum":["generic","slack","discord","teams"],"title":"Format"},"url_hint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Hint"},"enabled":{"type":"boolean","title":"Enabled"},"disabled_reason":{"anyOf":[{"type":"string","enum":["manual","failures"]},{"type":"null"}],"title":"Disabled Reason"},"failure_count":{"type":"integer","title":"Failure Count"},"last_success_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Failure At"},"last_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Error"},"rule_count":{"type":"integer","title":"Rule Count"},"version":{"type":"integer","title":"Version"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","format","url_hint","enabled","disabled_reason","failure_count","last_success_at","last_failure_at","last_error","rule_count","version","created_at","updated_at"],"title":"WebhookOut"},"WebhookSecret":{"properties":{"secret":{"type":"string","title":"Secret","description":"The new signing secret. Shown only now; the old one stops at once."}},"type":"object","required":["secret"],"title":"WebhookSecret"},"WebhookUpdate":{"properties":{"expected_version":{"type":"integer","minimum":1.0,"title":"Expected Version"},"name":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"title":"Name"},"format":{"anyOf":[{"type":"string","enum":["generic","slack","discord","teams"]},{"type":"null"}],"title":"Format"},"url":{"anyOf":[{"type":"string","maxLength":2048,"minLength":1},{"type":"null"}],"title":"Url"},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled"}},"additionalProperties":false,"type":"object","required":["expected_version"],"title":"WebhookUpdate"},"WhiteLabelOut":{"properties":{"available":{"type":"boolean","title":"Available"},"unavailable_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unavailable Reason"},"can_manage":{"type":"boolean","title":"Can Manage"},"brand":{"anyOf":[{"$ref":"#/components/schemas/BrandOut"},{"type":"null"}]},"domains":{"items":{"$ref":"#/components/schemas/DomainOut"},"type":"array","title":"Domains"},"landing_themes":{"items":{"type":"string"},"type":"array","title":"Landing Themes"}},"type":"object","required":["available","unavailable_reason","can_manage","brand","domains","landing_themes"],"title":"WhiteLabelOut"},"WidgetStyle":{"properties":{"color":{"type":"string","pattern":"^$|^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"Color","default":""},"show_title":{"type":"boolean","title":"Show Title","default":true},"show_device":{"type":"boolean","title":"Show Device","default":true},"title_align":{"type":"string","enum":["left","center","right"],"title":"Title Align","default":"left"},"align":{"type":"string","enum":["auto","left","center","right"],"title":"Align","description":"The value's alignment.","default":"auto"},"text_size":{"type":"string","enum":["auto","s","m","l","xl"],"title":"Text Size","default":"auto"},"background":{"type":"string","enum":["default","tinted","transparent"],"title":"Background","default":"default"},"icon":{"type":"string","pattern":"^$|^(bulb|fan|plug|power|pump|valve|lock|door|motion|bell|alert|thermometer|droplet|sun|moon|bolt|wifi|battery|gauge|flame|snowflake|wind|cloud|leaf|home|car|speaker|camera|clock|gear)$","title":"Icon","default":""},"label_position":{"anyOf":[{"type":"string","enum":["top","left"]},{"type":"null"}],"title":"Label Position","description":"The title beside the value instead of above it (hidden is show_title false)."}},"additionalProperties":false,"type":"object","title":"WidgetStyle","description":"How a widget looks, on every type. Absent (null) is every default: today's look."},"WidgetStyleDefaults":{"properties":{"title_size":{"anyOf":[{"type":"string","enum":["s","m","l","xl"]},{"type":"null"}],"title":"Title Size"},"title_weight":{"anyOf":[{"type":"string","enum":["regular","medium","semibold","bold"]},{"type":"null"}],"title":"Title Weight"},"title_color":{"anyOf":[{"type":"string","enum":["muted","accent"]},{"type":"null"}],"title":"Title Color","description":"Null: the ink colour."},"title_align":{"anyOf":[{"type":"string","enum":["left","center","right"]},{"type":"null"}],"title":"Title Align"},"value_size":{"anyOf":[{"type":"string","enum":["s","m","l","xl"]},{"type":"null"}],"title":"Value Size","description":"The reading's size, as a widget's text size."},"show_device":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Show Device","description":"False hides the device line under titles (still read out)."},"background":{"anyOf":[{"type":"string","const":"tinted"},{"type":"null"}],"title":"Background","description":"tinted: the card in a wash of its colour."},"radius":{"anyOf":[{"type":"integer","maximum":28.0,"minimum":0.0},{"type":"null"}],"title":"Radius","description":"Card corners in pixels."},"padding":{"anyOf":[{"type":"string","enum":["compact","comfortable","roomy"]},{"type":"null"}],"title":"Padding"},"border":{"anyOf":[{"type":"string","enum":["none","hairline","strong"]},{"type":"null"}],"title":"Border"},"shadow":{"anyOf":[{"type":"string","enum":["none","soft","raised"]},{"type":"null"}],"title":"Shadow"},"gap":{"anyOf":[{"type":"integer","maximum":24.0,"minimum":8.0},{"type":"null"}],"title":"Gap","description":"Pixels between widgets."}},"type":"object","title":"WidgetStyleDefaults","description":"Every widget's look by default (`platform/settings.WIDGET_STYLE_CHOICES`); null is the\nwidget theme's own. A widget's Style choices win, except the built-in defaults."},"Zone":{"properties":{"from":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"From"},"to":{"type":"number","maximum":1000000000000.0,"minimum":-1000000000000.0,"title":"To"},"color":{"type":"string","pattern":"^(blue|sky|teal|green|lime|amber|orange|red|pink|purple|slate|ink)$|^#[0-9a-f]{6}$","title":"Color"}},"additionalProperties":false,"type":"object","required":["from","to","color"],"title":"Zone","description":"A colour band of the value: `from` up to (not including) `to`."}}}}