{"swagger":"2.0","info":{"title":"XOD API","version":"0.0.0","description":"Code-first API."},"definitions":{"ReleasesPage":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":2147483647,"format":"int32","description":"Total records count."},"first":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"First page number."},"last":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Last page number."},"next":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Next page number."},"prev":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Prev page number."},"records":{"type":"array","items":{"$ref":"#/definitions/Release"},"description":"Releases of the requested page."}},"required":["count","first","last","records"]},"Release":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/definitions/ReleaseFile"},"description":"Release artifacts."},"name":{"type":"string","description":"Semver release name."},"time":{"type":"string","format":"date-time","description":"Earliest artifact timestamp."}},"required":["files","name","time"]},"ReleaseFile":{"type":"object","properties":{"name":{"type":"string","description":"File name with extension."},"href":{"type":"string","format":"url","description":"Presigned artifact URL."},"os":{"x-oneOf":[{"type":"string","enum":["linux"],"description":"Platform tag derived from the file extension."},{"type":"string","enum":["linux;deb"],"description":"Platform tag derived from the file extension."},{"type":"string","enum":["linux;rpm"],"description":"Platform tag derived from the file extension."},{"type":"string","enum":["osx"],"description":"Platform tag derived from the file extension."},{"type":"string","enum":["win"],"description":"Platform tag derived from the file extension."}],"description":"Platform tag derived from the file extension."}},"required":["name","href"]},"AuthResponse":{"type":"object","properties":{"access_token":{"type":"string","description":"Access token."},"refresh_token":{"type":"string","description":"Refresh token."}},"required":["access_token","refresh_token"]},"AuthBody":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"password":{"type":"string","format":"password","description":"User credentials."}},"required":["username","password"]},"LibsPage":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":2147483647,"format":"int32","description":"Total records count"},"first":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"First page number"},"last":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Last page number"},"next":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Next page number"},"prev":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Previous page number"},"records":{"type":"array","items":{"$ref":"#/definitions/Lib"},"description":"Library records."}},"required":["count","first","last","records"]},"Lib":{"type":"object","properties":{"uuid":{"type":"string","minLength":36,"maxLength":36,"format":"uuid","description":"UUID."},"libname":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name."},"owner":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"description":{"type":"string","maxLength":1024,"description":"Description."},"contributors":{"type":"array","items":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"minItems":1,"description":"Contributor usernames."},"versions":{"type":"array","items":{"type":"string","minLength":5,"maxLength":32,"pattern":"^v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})$","description":"Semantic version number."},"description":"Published versions."},"created_at":{"type":"string","format":"date-time","description":"Creation timestamp."},"updated_at":{"type":"string","format":"date-time","description":"Last update timestamp."},"unlisted":{"type":"boolean","description":"Whether the library is unlisted."}},"required":["uuid","libname","owner","description","contributors","versions"]},"UsersPage":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":2147483647,"format":"int32","description":"Total records count"},"first":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"First page number"},"last":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Last page number"},"next":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Next page number"},"prev":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Previous page number"},"records":{"type":"array","items":{"$ref":"#/definitions/User"},"description":"User records."}},"required":["count","first","last","records"]},"User":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"uuid":{"type":"string","minLength":36,"maxLength":36,"format":"uuid","description":"UUID."},"created":{"type":"string","format":"date-time","description":"Creation timestamp."},"type":{"x-oneOf":[{"type":"string","enum":["organization"],"description":"Account type."},{"type":"string","enum":["person"],"description":"Account type."}],"description":"Account type."},"avatar_20x20":{"type":"string","format":"url","description":"Avatar 20x20 URL."},"avatar_50x50":{"type":"string","format":"url","description":"Avatar 50x50 URL."},"avatar_200x200":{"type":"string","format":"url","description":"Avatar 200x200 URL."},"avatar_original":{"type":"string","format":"url","description":"Original avatar URL."},"bio":{"type":"string","maxLength":300,"description":"Bio."},"first_name":{"type":"string","maxLength":50,"description":"First name."},"last_name":{"type":"string","maxLength":50,"description":"Last name."},"link_arduino":{"type":"string","format":"url","description":"Arduino profile URL."},"link_facebook":{"type":"string","format":"url","description":"Facebook profile URL."},"link_github":{"type":"string","format":"url","description":"GitHub profile URL."},"link_personal":{"type":"string","format":"url","description":"Personal site URL."},"link_stackoverflow":{"type":"string","format":"url","description":"Stack Overflow profile URL."},"link_twitter":{"type":"string","format":"url","description":"Twitter profile URL."},"location":{"type":"string","maxLength":100,"description":"Location."}},"required":["username","uuid","created","type"]},"PublishBody":{"type":"object","properties":{"private":{"type":"boolean","description":"Whether the library should be private."}},"required":["private"]},"LibVersionsPage":{"type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":2147483647,"format":"int32","description":"Total records count"},"first":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"First page number"},"last":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Last page number"},"next":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Next page number"},"prev":{"type":"integer","minimum":1,"maximum":2147483647,"format":"int32","description":"Previous page number"},"records":{"type":"array","items":{"$ref":"#/definitions/LibVersion"},"description":"Version records."}},"required":["count","first","last","records"]},"LibVersion":{"type":"object","properties":{"uuid":{"type":"string","minLength":36,"maxLength":36,"format":"uuid","description":"UUID."},"semver":{"type":"string","minLength":5,"maxLength":32,"pattern":"^v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})$","description":"Semantic version number."},"author":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"description":{"type":"string","maxLength":1024,"description":"Description."},"time":{"type":"string","format":"date-time","description":"Version creation time."}},"required":["uuid","semver","author","description","time"]},"VersionBody":{"type":"object","properties":{"description":{"type":"string","maxLength":1024,"description":"Description."},"folder":{"description":"Version folder/patch payload."},"semver":{"type":"string","minLength":5,"maxLength":32,"pattern":"^v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})$","description":"Semantic version number."}},"required":["description","semver"]},"LibVersionWithFolder":{"type":"object","properties":{"uuid":{"type":"string","minLength":36,"maxLength":36,"format":"uuid","description":"UUID."},"semver":{"type":"string","minLength":5,"maxLength":32,"pattern":"^v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})$","description":"Semantic version number."},"author":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"description":{"type":"string","maxLength":1024,"description":"Description."},"time":{"type":"string","format":"date-time","description":"Version creation time."},"folder":{"description":"Version folder/patch payload."}},"required":["uuid","semver","author","description","time"]},"OrgMemberBody":{"type":"object","properties":{"admin":{"type":"boolean","description":"Whether the member is an admin."}},"required":["admin"]},"ValidationErrorBody":{"type":"object","properties":{"message":{"type":"string","description":"Validation error message."},"errors":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Error code."},"in":{"type":"string","description":"Location kind."},"message":{"type":"string","description":"Error message."},"name":{"type":"string","description":"Field name."},"path":{"type":"array","items":{"type":"string"},"description":"Error path."},"errors":{"type":"object","properties":{"code":{"type":"string","description":"Nested error code."},"params":{"type":"array","items":{},"description":"Nested error params."},"message":{"type":"string","description":"Nested error message."},"path":{"type":"array","items":{"type":"string"},"description":"Nested error path."}},"description":"Nested error details."}}},"description":"Validation errors."}}},"UserAttributesWithEmailUsernamePassword":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name."},"email":{"type":"string","format":"email","description":"E-mail address."},"password":{"type":"string","minLength":8,"maxLength":64,"format":"password","description":"Password."},"avatar_20x20":{"type":"string","format":"url","description":"Avatar 20x20 URL."},"avatar_50x50":{"type":"string","format":"url","description":"Avatar 50x50 URL."},"avatar_200x200":{"type":"string","format":"url","description":"Avatar 200x200 URL."},"avatar_original":{"type":"string","format":"url","description":"Original avatar URL."},"bio":{"type":"string","maxLength":300,"description":"Bio."},"first_name":{"type":"string","maxLength":50,"description":"First name."},"last_name":{"type":"string","maxLength":50,"description":"Last name."},"link_arduino":{"type":"string","format":"url","description":"Arduino profile URL."},"link_facebook":{"type":"string","format":"url","description":"Facebook profile URL."},"link_github":{"type":"string","format":"url","description":"GitHub profile URL."},"link_personal":{"type":"string","format":"url","description":"Personal site URL."},"link_stackoverflow":{"type":"string","format":"url","description":"Stack Overflow profile URL."},"link_twitter":{"type":"string","format":"url","description":"Twitter profile URL."},"location":{"type":"string","maxLength":100,"description":"Location."}},"required":["username","email","password"]},"UserAttributes":{"type":"object","properties":{"avatar_20x20":{"type":"string","format":"url","description":"Avatar 20x20 URL."},"avatar_50x50":{"type":"string","format":"url","description":"Avatar 50x50 URL."},"avatar_200x200":{"type":"string","format":"url","description":"Avatar 200x200 URL."},"avatar_original":{"type":"string","format":"url","description":"Original avatar URL."},"bio":{"type":"string","maxLength":300,"description":"Bio."},"first_name":{"type":"string","maxLength":50,"description":"First name."},"last_name":{"type":"string","maxLength":50,"description":"Last name."},"link_arduino":{"type":"string","format":"url","description":"Arduino profile URL."},"link_facebook":{"type":"string","format":"url","description":"Facebook profile URL."},"link_github":{"type":"string","format":"url","description":"GitHub profile URL."},"link_personal":{"type":"string","format":"url","description":"Personal site URL."},"link_stackoverflow":{"type":"string","format":"url","description":"Stack Overflow profile URL."},"link_twitter":{"type":"string","format":"url","description":"Twitter profile URL."},"location":{"type":"string","maxLength":100,"description":"Location."}}},"EnlistBody":{"type":"object","properties":{"unlisted":{"type":"boolean","description":"Whether the library should be unlisted."}},"required":["unlisted"]},"SwitchTypeBody":{"type":"object","properties":{"type":{"x-oneOf":[{"type":"string","enum":["organization"],"description":"Target account type."},{"type":"string","enum":["person"],"description":"Target account type."}],"description":"Target account type."}},"required":["type"]}},"securityDefinitions":{"bearer_token":{"type":"apiKey","in":"header","name":"Authorization","description":"Keycloak access token (issuer/first-party azp/aud validated locally via JWKS); legacy pm scheme name so swagger-client authorizations keep working."}},"paths":{"/billing":{"get":{"tags":["billing"],"summary":"Billing ledger overview","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/billing/transactions":{"get":{"tags":["billing"],"summary":"Billing transactions","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/billing/plans":{"get":{"tags":["billing"],"summary":"Available billing plans","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/billing/plans/history":{"get":{"tags":["billing"],"summary":"Plan change history","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/billing/plans/action":{"post":{"tags":["billing"],"summary":"Apply a plan action","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"parameters":[{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"consumes":["application/json"],"produces":["application/json"]}},"/compile":{"get":{"tags":["compile"],"summary":"Compilation jobs of the caller","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/compile/enqueue":{"post":{"tags":["compile"],"summary":"Enqueue a compilation job","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"parameters":[{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"consumes":["application/json"],"produces":["application/json"]}},"/httpbin/now":{"get":{"tags":["httpbin"],"summary":"Current server time (iso and unix)","responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/httpbin/now/iso":{"get":{"tags":["httpbin"],"summary":"Current server time, ISO 8601","responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/httpbin/now/unix":{"get":{"tags":["httpbin"],"summary":"Current server time, unix seconds","responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/httpbin/ip":{"get":{"tags":["httpbin"],"summary":"Caller IP address","responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/iot/tokens":{"get":{"tags":["iot"],"summary":"IoT tokens of the caller","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"post":{"tags":["iot"],"summary":"Create an IoT token","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"parameters":[{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"consumes":["application/json"],"produces":["application/json"]}},"/iot/tokens/{id}":{"get":{"tags":["iot"],"summary":"Read an IoT token","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"description":"IoT token id.","name":"id","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"put":{"tags":["iot"],"summary":"Update an IoT token","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"description":"IoT token id.","name":"id","in":"path","required":true},{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"consumes":["application/json"],"produces":["application/json"]},"delete":{"tags":["iot"],"summary":"Revoke an IoT token","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"description":"IoT token id.","name":"id","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/iot/topics":{"get":{"tags":["iot"],"summary":"IoT topics","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/iot/value/{username}":{"get":{"tags":["iot"],"summary":"Current IoT values of a user","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"delete":{"tags":["iot"],"summary":"Delete IoT values of a user","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"post":{"tags":["iot"],"summary":"Store IoT values of a user","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"consumes":["application/json"],"produces":["application/json"]}},"/iot/value/{username}/{key0}":{"get":{"tags":["iot"],"summary":"Current IoT value","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"description":"Top-level IoT data key.","name":"key0","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"delete":{"tags":["iot"],"summary":"Delete an IoT value","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"description":"Top-level IoT data key.","name":"key0","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]},"post":{"tags":["iot"],"summary":"Store an IoT value","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"description":"Top-level IoT data key.","name":"key0","in":"path","required":true},{"name":"body","in":"body","description":"TODO: request body schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"consumes":["application/json"],"produces":["application/json"]}},"/iot/history/{username}":{"get":{"tags":["iot"],"summary":"IoT history of a user","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/iot/history/{username}/{key0}":{"get":{"tags":["iot"],"summary":"IoT history of one key","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"description":"Top-level IoT data key.","name":"key0","in":"path","required":true}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/limits":{"get":{"tags":["limits"],"summary":"Usage limits of the current account","security":[{"bearer_token":[]}],"responses":{"200":{"description":"TODO: response schema is intentionally empty.","schema":{"type":"object","properties":{},"description":"Intentionally empty placeholder schema (skeleton)."}}},"produces":["application/json"]}},"/releases":{"get":{"summary":"Returns releases","operationId":"getReleases","parameters":[{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":25,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false},{"type":"boolean","default":false,"description":"Include developer releases.","name":"with_dev","in":"query","required":false}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/ReleasesPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/releases/{name}":{"get":{"summary":"Returns release","operationId":"getRelease","parameters":[{"type":"string","description":"Release name, or `latest`.","name":"name","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Release"}},"404":{"description":"Release is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/releases/{name}/{filename}":{"get":{"summary":"Returns release file","operationId":"getReleaseFile","parameters":[{"type":"string","description":"Release name, or `latest`.","name":"name","in":"path","required":true},{"type":"string","description":"Release file name.","name":"filename","in":"path","required":true}],"responses":{"303":{"description":"See Other","schema":{"type":"string","description":"Location."}},"404":{"description":"Release or file is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/auth":{"post":{"tags":["Auth"],"summary":"Returns authorization grant","operationId":"getDirectGrant","responses":{"200":{"description":"Authorization grant","schema":{"$ref":"#/definitions/AuthResponse"}},"403":{"description":"Authorization is not granted"},"default":{"description":"Swagger validation error"}},"parameters":[{"name":"user","in":"body","description":"User credentials","required":true,"schema":{"$ref":"#/definitions/AuthBody"}}],"consumes":["application/json"],"produces":["application/json"]}},"/libs":{"get":{"tags":["Library"],"summary":"Returns enlisted libraries page-by-page","operationId":"getLibs","parameters":[{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":100,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false},{"type":"array","items":{"type":"string","enum":["owner","-owner","libname","-libname","created_at","-created_at","updated_at","-updated_at"]},"default":["-updated_at"],"description":"Order by field fields.","name":"order","in":"query","required":false},{"type":"string","description":"Search terms to filter libraries by name/owner/description/etc.","name":"q","in":"query","required":false}],"responses":{"200":{"description":"Enlisted libraries page","schema":{"$ref":"#/definitions/LibsPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/orgs":{"get":{"tags":["Organization"],"summary":"Reads organizations page-by-page","operationId":"getOrgs","deprecated":true,"parameters":[{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":100,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/UsersPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/orgs/{orgname}":{"get":{"tags":["Organization"],"summary":"Reads organization","operationId":"getOrg","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/User"}},"404":{"description":"Not Found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/orgs/{orgname}/libs/{libname}":{"get":{"tags":["Library"],"summary":"Reads organization library","operationId":"getOrgLib","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/Lib"}},"404":{"description":"Not Found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"put":{"tags":["Library"],"summary":"Creates/updates organization library","operationId":"putOrgLib","deprecated":true,"security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"name":"lib","in":"body","description":"Library properties","required":true,"schema":{"type":"object","properties":{},"description":"Library properties"}}],"responses":{"201":{"description":"Organization library has been created"},"204":{"description":"Organization library has been updated"},"403":{"description":"Either user is not authenticated or not permitted to create/update organization library"},"404":{"description":"User or organization is not found"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/orgs/{orgname}/libs/{libname}/publish":{"put":{"tags":["Library"],"summary":"(Un)publishes organization library","operationId":"publishOrgLib","deprecated":true,"security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"name":"private","in":"body","description":"Make organization library private?","required":true,"schema":{"$ref":"#/definitions/PublishBody"}}],"responses":{"204":{"description":"Organization library has been (un)published"},"403":{"description":"Either user is not authenticated or not permitted to (un)publish organization library"},"404":{"description":"User, organization or library is not found"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/orgs/{orgname}/libs/{libname}/versions":{"get":{"tags":["Version"],"summary":"Reads library versions","operationId":"getLibVersions","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":100,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/LibVersionsPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"post":{"tags":["Version"],"summary":"Creates library version","operationId":"postLibVersion","deprecated":true,"security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"name":"version","in":"body","description":"Version properties","required":true,"schema":{"$ref":"#/definitions/VersionBody"}}],"responses":{"201":{"description":"Library version has been created"},"403":{"description":"Either user is not authenticated or not permitted to create library versions"},"404":{"description":"User, organization or library is not found"},"409":{"description":"Library version already exists"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/orgs/{orgname}/libs/{libname}/versions/{semver_or_latest}":{"get":{"tags":["Version"],"summary":"Reads library version","operationId":"getLibVersion","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"string","minLength":5,"maxLength":32,"pattern":"^(v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})|latest)$","description":"Semantic version number or `latest` tag.","name":"semver_or_latest","in":"path","required":true}],"responses":{"200":{"description":"OK","schema":{"$ref":"#/definitions/LibVersionWithFolder"}},"404":{"description":"User, organization, library or version is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/orgs/{orgname}/libs/{libname}/versions/{semver_or_latest}/xodball":{"get":{"tags":["Version"],"summary":"Reads version xodball","operationId":"getLibVersionXodball","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"string","minLength":5,"maxLength":32,"pattern":"^(v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})|latest)$","description":"Semantic version number or `latest` tag.","name":"semver_or_latest","in":"path","required":true}],"responses":{"303":{"description":"See Other","schema":{"type":"string","description":"Location."}},"404":{"description":"User, organization, library or version is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/orgs/{orgname}/members/{username}":{"delete":{"tags":["Organization"],"summary":"Removes member from organization","operationId":"deleteOrgMember","deprecated":true,"security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true}],"responses":{"204":{"description":"Member has been removed from the organization"},"403":{"description":"Either user is not authenticated or not permitted to remove members from the organization"},"404":{"description":"User, member or organization is not found"},"409":{"description":"Either member is the same as user or the organization founder"},"default":{"description":"Swagger validation error"}}},"put":{"tags":["Organization"],"summary":"Adds member to organization","operationId":"putOrgMember","deprecated":true,"security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"name":"admin","in":"body","description":"Grant admin to member?","required":true,"schema":{"$ref":"#/definitions/OrgMemberBody"}}],"responses":{"204":{"description":"Member has been added to the organization"},"403":{"description":"Either user is not authenticated or not permitted to add members to the organization"},"404":{"description":"User, member or organization is not found"},"409":{"description":"Either member is the same as user or the organization founder"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/users":{"get":{"tags":["User"],"summary":"Returns users page-by-page","operationId":"getUsers","parameters":[{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":100,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false},{"type":"string","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"Search users by string.","name":"term","in":"query","required":false}],"responses":{"200":{"description":"Users page","schema":{"$ref":"#/definitions/UsersPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"post":{"tags":["User"],"summary":"Create user","operationId":"postUsers","responses":{"201":{"description":"User created"},"409":{"description":"Swagger validation error","schema":{"$ref":"#/definitions/ValidationErrorBody"}},"500":{"description":"Internal Server Error"},"default":{"description":"Swagger validation error","schema":{"$ref":"#/definitions/ValidationErrorBody"}}},"parameters":[{"name":"body","in":"body","description":"User attributes with required username, email, and password","required":true,"schema":{"$ref":"#/definitions/UserAttributesWithEmailUsernamePassword"}}],"consumes":["application/json"],"produces":["application/json"]}},"/users/{username}":{"get":{"tags":["User"],"summary":"Returns user","operationId":"getUser","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true}],"responses":{"200":{"description":"User","schema":{"$ref":"#/definitions/User"}},"404":{"description":"User is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"patch":{"tags":["User"],"summary":"Updates user","operationId":"patchUser","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"name":"user","in":"body","description":"User attributes","required":true,"schema":{"$ref":"#/definitions/UserAttributes"}}],"responses":{"204":{"description":"User has been updated"},"403":{"description":"Either user is not authenticated or does not match username"},"404":{"description":"User is not found"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/users/{username}/avatar":{"get":{"tags":["Avatar"],"summary":"Returns user avatar","operationId":"getAvatar","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"x-oneOf":[{"type":"string","enum":["20x20"],"description":"Image size."},{"type":"string","enum":["50x50"],"description":"Image size."},{"type":"string","enum":["200x200"],"description":"Image size."}],"description":"Image size.","name":"size","in":"query","required":false}],"responses":{"303":{"description":"User avatar location","schema":{"type":"string","description":"Location."}},"404":{"description":"User or avatar is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"put":{"tags":["Avatar"],"summary":"Sets user avatar","operationId":"putAvatar","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"file","description":"Image file","name":"avatar","in":"formData","required":true}],"responses":{"204":{"description":"User avatar is set"},"403":{"description":"Either user is not authenticated or does not match username"},"404":{"description":"User is not found"},"default":{"description":"Swagger validation error"}},"consumes":["multipart/form-data"]}},"/users/{username}/libs/{libname}":{"get":{"tags":["Library"],"summary":"Returns user library","operationId":"getLib","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true}],"responses":{"200":{"description":"User library","schema":{"$ref":"#/definitions/Lib"}},"404":{"description":"Not Found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"put":{"tags":["Library"],"summary":"Creates or updates user library","operationId":"putLib","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true}],"responses":{"201":{"description":"Library has been created"},"204":{"description":"Library has been updated"},"403":{"description":"Either user is not authenticated or not a library owner/trustee"},"404":{"description":"User is not found"},"default":{"description":"Swagger validation error"}}}},"/users/{username}/libs/{libname}/enlist":{"put":{"tags":["Library"],"summary":"Enlists or unlists user library","operationId":"enlistLib","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"name":"lib","in":"body","description":"Enlist user library?","required":true,"schema":{"$ref":"#/definitions/EnlistBody"}}],"responses":{"204":{"description":"Library has been enlisted/unlisted"},"403":{"description":"Either user is not authenticated or not a library owner/trustee"},"404":{"description":"User or library is not found"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/users/{username}/libs/{libname}/versions":{"get":{"tags":["LibVersion"],"summary":"Returns library versions page-by-page","operationId":"getLibVersionsNew","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"integer","minimum":1,"maximum":2147483647,"default":1,"format":"int32","description":"Page number.","name":"page","in":"query","required":false},{"type":"integer","minimum":1,"maximum":100,"default":10,"format":"int32","description":"Entries per page.","name":"per_page","in":"query","required":false}],"responses":{"200":{"description":"Library versions page","schema":{"$ref":"#/definitions/LibVersionsPage"}},"default":{"description":"Swagger validation error"}},"produces":["application/json"]},"post":{"tags":["LibVersion"],"summary":"Creates library version","operationId":"postLibVersionNew","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"name":"version","in":"body","description":"Library version","required":true,"schema":{"$ref":"#/definitions/VersionBody"}}],"responses":{"201":{"description":"Library version has been created"},"403":{"description":"Either user is not authenticated or not a library owner/trustee"},"404":{"description":"User or library is not found"},"409":{"description":"Library version already exists"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/users/{username}/libs/{libname}/versions/{semver_or_latest}":{"get":{"tags":["LibVersion"],"summary":"Returns library version","operationId":"getLibVersionNew","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"string","minLength":5,"maxLength":32,"pattern":"^(v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})|latest)$","description":"Semantic version number or `latest` tag.","name":"semver_or_latest","in":"path","required":true}],"responses":{"200":{"description":"Library version","schema":{"$ref":"#/definitions/LibVersionWithFolder"}},"404":{"description":"User, library or version is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/users/{username}/libs/{libname}/versions/{semver_or_latest}/xodball":{"get":{"tags":["LibVersion"],"summary":"Returns library version xodball","operationId":"getLibVersionXodballNew","parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe library name.","name":"libname","in":"path","required":true},{"type":"string","minLength":5,"maxLength":32,"pattern":"^(v(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})\\.(0|[^0\\D]\\d{0,9})|latest)$","description":"Semantic version number or `latest` tag.","name":"semver_or_latest","in":"path","required":true}],"responses":{"303":{"description":"Library version xodball location","schema":{"type":"string","description":"Location."}},"404":{"description":"User, library or version is not found"},"default":{"description":"Swagger validation error"}},"produces":["application/json"]}},"/users/{username}/orgs/{orgname}":{"put":{"tags":["User"],"summary":"Creates or updates user organization","operationId":"putUserOrg","deprecated":true,"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe organization name.","name":"orgname","in":"path","required":true},{"name":"org","in":"body","description":"Organization properties","required":true,"schema":{"type":"object","properties":{},"description":"Organization properties"}}],"responses":{"204":{"description":"User organization has been updated"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}},"/users/{username}/trust/{trustee}":{"delete":{"tags":["User"],"summary":"Revokes user trust","operationId":"deleteTrust","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe trusted user name.","name":"trustee","in":"path","required":true}],"responses":{"204":{"description":"User trust has been revoked"},"403":{"description":"Either user is not authenticated or does not match username"},"404":{"description":"User or trustee is not found"},"default":{"description":"Swagger validation error"}}},"put":{"tags":["User"],"summary":"Establishes user trust","operationId":"putTrust","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe trusted user name.","name":"trustee","in":"path","required":true}],"responses":{"204":{"description":"User trust has been established"},"403":{"description":"Either user is not authenticated or does not match username"},"404":{"description":"User or trustee is not found"},"default":{"description":"Swagger validation error"}}}},"/users/{username}/type":{"put":{"tags":["User"],"summary":"Switches user type","operationId":"switchType","security":[{"bearer_token":[]}],"parameters":[{"type":"string","minLength":1,"maxLength":63,"pattern":"^[a-z0-9]+(-[a-z0-9]+)*$","description":"URL-safe user name.","name":"username","in":"path","required":true},{"name":"user","in":"body","description":"Target user type","required":true,"schema":{"$ref":"#/definitions/SwitchTypeBody"}}],"responses":{"204":{"description":"User type has been switched"},"403":{"description":"Either user is not authenticated or does not match username"},"404":{"description":"User is not found"},"default":{"description":"Swagger validation error"}},"consumes":["application/json"]}}}}