{"openapi":"3.1.0","info":{"title":"RMS — Relevance Matrix Service","description":"Dashboard API for lens authoring and catalogue management.","version":"2.2.0"},"paths":{"/auth/login":{"post":{"tags":["auth"],"summary":"Login — returns JWT token","description":"Authenticate with username and password.\n\nReturns a JWT bearer token along with:\n- `expires_in` — seconds until the token expires\n- `expires_at` — exact UTC expiry timestamp (ISO 8601 / Zulu)","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lenses":{"get":{"tags":["lenses"],"summary":"List lenses","operationId":"list_lenses_route_lenses_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: Draft, Active, or Archived","title":"Status"},"description":"Filter by status: Draft, Active, or Archived"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["lenses"],"summary":"Create lens","operationId":"create_lens_route_lenses_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LensCreateRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lenses/{lens_id}":{"get":{"tags":["lenses"],"summary":"Get lens detail","operationId":"get_lens_route_lenses__lens_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lens_id","in":"path","required":true,"schema":{"type":"integer","title":"Lens Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lenses"],"summary":"Delete lens","operationId":"delete_lens_route_lenses__lens_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lens_id","in":"path","required":true,"schema":{"type":"integer","title":"Lens Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["lenses"],"summary":"Update lens","operationId":"update_lens_route_lenses__lens_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lens_id","in":"path","required":true,"schema":{"type":"integer","title":"Lens Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LensUpdateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels":{"get":{"tags":["channels"],"summary":"List channels","operationId":"list_channels_route_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["channels"],"summary":"Add channel","operationId":"create_channel_route_channels_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/channels/{channel_id}":{"put":{"tags":["channels"],"summary":"Update channel","operationId":"update_channel_route_channels__channel_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChannelIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["channels"],"summary":"Delete channel","operationId":"delete_channel_route_channels__channel_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"channel_id","in":"path","required":true,"schema":{"type":"integer","title":"Channel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/channels/import":{"post":{"tags":["channels"],"summary":"Import channels from CSV (upsert + delete unreferenced)","operationId":"import_channels_route_channels_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_channels_route_channels_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/hole-sections":{"get":{"tags":["hole-sections"],"summary":"List hole sections","operationId":"list_sections_route_hole_sections_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["hole-sections"],"summary":"Add hole section","operationId":"create_section_route_hole_sections_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoleSectionIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/hole-sections/{section_id}":{"delete":{"tags":["hole-sections"],"summary":"Delete hole section","operationId":"delete_section_route_hole_sections__section_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"section_id","in":"path","required":true,"schema":{"type":"integer","title":"Section Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/hole-sections/import":{"post":{"tags":["hole-sections"],"summary":"Import hole sections from CSV (upsert + delete unreferenced)","operationId":"import_sections_route_hole_sections_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_sections_route_hole_sections_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/events":{"get":{"tags":["events"],"summary":"List events (nested by group, plus a flat list)","description":"Both views of the same data.\n\n``groups`` is the nested view for a grouped event picker. ``events`` is the flat\nlist, and it is permanent rather than transitional: an ungrouped event appears\nnowhere in ``groups``, so the flat array is the only place it is visible.","operationId":"list_events_route_events_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["events"],"summary":"Add event","operationId":"create_event_route_events_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventIn"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/events/move":{"post":{"tags":["events"],"summary":"Bulk move events into a group (or unmap with null)","operationId":"move_events_route_events_move_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventMoveIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/events/{event_id}":{"delete":{"tags":["events"],"summary":"Delete event","operationId":"delete_event_route_events__event_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"event_id","in":"path","required":true,"schema":{"type":"integer","title":"Event Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/events/import":{"post":{"tags":["events"],"summary":"Import events from CSV (upsert + delete unreferenced)","operationId":"import_events_route_events_import_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_import_events_route_events_import_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/groups":{"get":{"tags":["groups"],"summary":"List event groups","operationId":"list_groups_route_groups_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["groups"],"summary":"Create event group","operationId":"create_group_route_groups_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/groups/{group_id}":{"get":{"tags":["groups"],"summary":"Get event group detail","operationId":"get_group_route_groups__group_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["groups"],"summary":"Update event group","operationId":"update_group_route_groups__group_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["groups"],"summary":"Delete event group","operationId":"delete_group_route_groups__group_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/aspects":{"get":{"tags":["aspects"],"summary":"Get aspect attribute names","operationId":"get_aspects_aspects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/lenses/{lens_id}/query":{"post":{"tags":["agent"],"summary":"Query lens config for given source channels and event","operationId":"query_lens_route_lenses__lens_id__query_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"lens_id","in":"path","required":true,"schema":{"type":"integer","title":"Lens Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LensQueryRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/logs":{"get":{"tags":["audit"],"summary":"List audit log entries","operationId":"get_audit_logs_audit_logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/AuditAction"},{"type":"null"}],"title":"Action"}},{"name":"actor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}},{"name":"resource_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditLogPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit/analytics":{"get":{"tags":["audit"],"summary":"Audit analytics","operationId":"get_audit_analytics_audit_analytics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["system"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":{"type":"string"},"type":"object","title":"Response Health Health Get"}}}}}}}},"components":{"schemas":{"AuditAction":{"type":"string","enum":["lens_create","lens_update","lens_delete","channel_create","channel_update","channel_delete","channel_import","event_create","event_delete","event_import","event_move","section_create","section_delete","section_import","group_create","group_update","group_delete"],"title":"AuditAction"},"AuditAnalyticsBucket":{"properties":{"key":{"type":"string","title":"Key"},"count":{"type":"integer","title":"Count"},"avg_latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Latency Ms"}},"type":"object","required":["key","count"],"title":"AuditAnalyticsBucket"},"AuditAnalyticsResponse":{"properties":{"by_action":{"items":{"$ref":"#/components/schemas/AuditAnalyticsBucket"},"type":"array","title":"By Action"},"by_actor":{"items":{"$ref":"#/components/schemas/AuditAnalyticsBucket"},"type":"array","title":"By Actor"},"total_events":{"type":"integer","title":"Total Events"}},"type":"object","required":["by_action","by_actor","total_events"],"title":"AuditAnalyticsResponse"},"AuditLogOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"actor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Actor"},"action":{"$ref":"#/components/schemas/AuditAction"},"resourceType":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resourcetype"},"resourceId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resourceid"},"endpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint"},"before":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Before"},"after":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"After"}},"type":"object","required":["id","timestamp","actor","action","resourceType","resourceId","endpoint","before","after"],"title":"AuditLogOut"},"AuditLogPage":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AuditLogOut"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["items","total","limit","offset"],"title":"AuditLogPage"},"Body_import_channels_route_channels_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_import_channels_route_channels_import_post"},"Body_import_events_route_events_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_import_events_route_events_import_post"},"Body_import_sections_route_hole_sections_import_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_import_sections_route_hole_sections_import_post"},"ChannelIn":{"properties":{"code":{"type":"string","maxLength":128,"minLength":1,"title":"Code"},"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"sourceChannel":{"items":{"type":"string"},"type":"array","title":"Sourcechannel"}},"type":"object","required":["code","name"],"title":"ChannelIn"},"EventIn":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"groupId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupid"}},"type":"object","required":["name"],"title":"EventIn"},"EventMoveIn":{"properties":{"eventIds":{"items":{"type":"integer"},"type":"array","maxItems":200,"minItems":1,"title":"Eventids"},"groupId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupid"}},"type":"object","required":["eventIds"],"title":"EventMoveIn","description":"Bulk move: assign many events to one group, or unmap them with null."},"GroupIn":{"properties":{"groupName":{"type":"string","maxLength":128,"minLength":1,"title":"Groupname"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"events":{"items":{"anyOf":[{"type":"integer"},{"type":"string"}]},"type":"array","title":"Events"}},"type":"object","required":["groupName"],"title":"GroupIn"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoleSectionIn":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"HoleSectionIn"},"LensChannelIn":{"properties":{"channelId":{"type":"integer","title":"Channelid"},"holeSections":{"items":{"type":"integer"},"type":"array","title":"Holesections"},"events":{"items":{"type":"object"},"type":"array","title":"Events"}},"additionalProperties":true,"type":"object","required":["channelId"],"title":"LensChannelIn"},"LensCreateRequest":{"properties":{"name":{"type":"string","maxLength":128,"minLength":1,"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"type":"string","title":"Status","default":"Draft"},"groupId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupid"},"channels":{"items":{"$ref":"#/components/schemas/LensChannelIn"},"type":"array","title":"Channels"}},"type":"object","required":["name"],"title":"LensCreateRequest"},"LensQueryRequest":{"properties":{"sourceChannels":{"items":{"type":"string"},"type":"array","title":"Sourcechannels","description":"Raw signal names to match against channel sourceChannel values. Use ['*'] or [] for all channels."},"channelCodes":{"items":{"type":"string"},"type":"array","title":"Channelcodes","description":"Channel codes (e.g. 'BITDEP') to match. Alternative to sourceChannels; one or both may be provided."},"eventId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eventid","description":"Event ID to query. Either eventId or eventName must be provided."},"eventName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Eventname","description":"Event name to query (case-insensitive). Resolved within the queried lens's own group, since names are unique per group, not globally. Either eventId or eventName must be provided."},"groupId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupid","description":"Optional event group filter. Results not belonging to this group are omitted."},"groupName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groupname","description":"Optional event group filter by name (case-insensitive). Matches every group with that name."}},"type":"object","title":"LensQueryRequest"},"LensUpdateRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":128,"minLength":1},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"groupId":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Groupid"},"channels":{"anyOf":[{"items":{"$ref":"#/components/schemas/LensChannelIn"},"type":"array"},{"type":"null"}],"title":"Channels"}},"type":"object","title":"LensUpdateRequest"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username"},"password":{"type":"string","title":"Password"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"},"expires_at":{"type":"string","title":"Expires At"},"actor":{"type":"string","title":"Actor"}},"type":"object","required":["access_token","expires_in","expires_at","actor"],"title":"TokenResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}