{"items":[{"type":"link","label":"mATRIC API","link":"/openapi","routeSlug":"/openapi"},{"type":"group","label":"token","link":"/openapi/token","routeSlug":"/openapi/token","items":[{"label":"Login","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/token/login_api_v1_token__post","routeSlug":"/openapi/token/login_api_v1_token__post","metadata":{"seo":{"title":"Login","description":"Login"}},"httpPath":"/api/v1/token/"}]},{"type":"group","label":"users","link":"/openapi/users","routeSlug":"/openapi/users","items":[{"label":"Create First User","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/create_first_user_api_v1_users_public_post","routeSlug":"/openapi/users/create_first_user_api_v1_users_public_post","metadata":{"seo":{"title":"Create First User","description":"Create First User"}},"httpPath":"/api/v1/users/public"},{"label":"Register User","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/register_user_api_v1_users_signup_post","routeSlug":"/openapi/users/register_user_api_v1_users_signup_post","metadata":{"seo":{"title":"Register User","description":"Register User"}},"httpPath":"/api/v1/users/signup"},{"label":"Recover Password","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/recover_password_api_v1_users_password_recovery_post","routeSlug":"/openapi/users/recover_password_api_v1_users_password_recovery_post","metadata":{"seo":{"title":"Recover Password","description":"Recover Password"}},"httpPath":"/api/v1/users/password-recovery"},{"label":"Reset Password","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/reset_password_api_v1_users_reset_password_post","routeSlug":"/openapi/users/reset_password_api_v1_users_reset_password_post","metadata":{"seo":{"title":"Reset Password","description":"Reset Password"}},"httpPath":"/api/v1/users/reset-password"},{"label":"List Users","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/list_users_api_v1_users__get","routeSlug":"/openapi/users/list_users_api_v1_users__get","metadata":{"seo":{"title":"List Users","description":"List Users"}},"httpPath":"/api/v1/users/"},{"label":"Create User","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/create_user_api_v1_users__post","routeSlug":"/openapi/users/create_user_api_v1_users__post","metadata":{"seo":{"title":"Create User","description":"Create User"}},"httpPath":"/api/v1/users/"},{"label":"Update User","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/update_user_api_v1_users__username__put","routeSlug":"/openapi/users/update_user_api_v1_users__username__put","metadata":{"seo":{"title":"Update User","description":"Update User"}},"httpPath":"/api/v1/users/{username}"},{"label":"Delete User","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/delete_user_api_v1_users__username__delete","routeSlug":"/openapi/users/delete_user_api_v1_users__username__delete","metadata":{"seo":{"title":"Delete User","description":"Delete User"}},"httpPath":"/api/v1/users/{username}"},{"label":"Get User","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/get_user_api_v1_users__username__get","routeSlug":"/openapi/users/get_user_api_v1_users__username__get","metadata":{"seo":{"title":"Get User","description":"Get User"}},"httpPath":"/api/v1/users/{username}"},{"label":"Read Users Me","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/users/read_users_me_api_v1_users_me_get","routeSlug":"/openapi/users/read_users_me_api_v1_users_me_get","metadata":{"seo":{"title":"Read Users Me","description":"Read Users Me"}},"httpPath":"/api/v1/users/me"}]},{"type":"group","label":"agents","link":"/openapi/agents","routeSlug":"/openapi/agents","items":[{"label":"Create First Agent","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agents/create_first_agent_api_v1_agents_public_post","routeSlug":"/openapi/agents/create_first_agent_api_v1_agents_public_post","metadata":{"seo":{"title":"Create First Agent","description":"Create First Agent"}},"httpPath":"/api/v1/agents/public"},{"label":"Create Agent","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agents/create_agent_api_v1_agents__post","routeSlug":"/openapi/agents/create_agent_api_v1_agents__post","metadata":{"seo":{"title":"Create Agent","description":"Create Agent"}},"httpPath":"/api/v1/agents/"},{"label":"Get Agent","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agents/get_agent_api_v1_agents__ap_id__get","routeSlug":"/openapi/agents/get_agent_api_v1_agents__ap_id__get","metadata":{"seo":{"title":"Get Agent","description":"Get Agent"}},"httpPath":"/api/v1/agents/{ap_id}"},{"label":"Update Agent","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agents/update_agent_api_v1_agents__ap_id__put","routeSlug":"/openapi/agents/update_agent_api_v1_agents__ap_id__put","metadata":{"seo":{"title":"Update Agent","description":"Update Agent"}},"httpPath":"/api/v1/agents/{ap_id}"},{"label":"Delete Agent","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agents/delete_agent_api_v1_agents__ap_id__delete","routeSlug":"/openapi/agents/delete_agent_api_v1_agents__ap_id__delete","metadata":{"seo":{"title":"Delete Agent","description":"Delete Agent"}},"httpPath":"/api/v1/agents/{ap_id}"}]},{"type":"group","label":"third_party_apps","link":"/openapi/third_party_apps","routeSlug":"/openapi/third_party_apps","items":[{"label":"Create Third Party App","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/third_party_apps/create_third_party_app_api_v1_third_party_apps__post","routeSlug":"/openapi/third_party_apps/create_third_party_app_api_v1_third_party_apps__post","metadata":{"seo":{"title":"Create Third Party App","description":"Create Third Party App"}},"httpPath":"/api/v1/third_party_apps/"},{"label":"Get Third Party App","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/third_party_apps/get_third_party_app_api_v1_third_party_apps__app_name__get","routeSlug":"/openapi/third_party_apps/get_third_party_app_api_v1_third_party_apps__app_name__get","metadata":{"seo":{"title":"Get Third Party App","description":"Get Third Party App"}},"httpPath":"/api/v1/third_party_apps/{app_name}"},{"label":"Update Third Party App","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/third_party_apps/update_third_party_app_api_v1_third_party_apps__app_name__put","routeSlug":"/openapi/third_party_apps/update_third_party_app_api_v1_third_party_apps__app_name__put","metadata":{"seo":{"title":"Update Third Party App","description":"Update Third Party App"}},"httpPath":"/api/v1/third_party_apps/{app_name}"},{"label":"Delete Third Party App","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/third_party_apps/delete_third_party_app_api_v1_third_party_apps__app_name__delete","routeSlug":"/openapi/third_party_apps/delete_third_party_app_api_v1_third_party_apps__app_name__delete","metadata":{"seo":{"title":"Delete Third Party App","description":"Delete Third Party App"}},"httpPath":"/api/v1/third_party_apps/{app_name}"}]},{"type":"group","label":"agent_update","link":"/openapi/agent_update","routeSlug":"/openapi/agent_update","items":[{"label":"Update Agent","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agent_update/update_agent_api_v1_agent_update_update_post","routeSlug":"/openapi/agent_update/update_agent_api_v1_agent_update_update_post","metadata":{"seo":{"title":"Update Agent","description":"Endpoint to handle agent updates."}},"httpPath":"/api/v1/agent_update/update"}]},{"type":"group","label":"agent_details","link":"/openapi/agent_details","routeSlug":"/openapi/agent_details","items":[{"label":"Request All Agents Details","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agent_details/request_all_agents_details_api_v1_agent_details_request_all_agents_details_post","routeSlug":"/openapi/agent_details/request_all_agents_details_api_v1_agent_details_request_all_agents_details_post","metadata":{"seo":{"title":"Request All Agents Details","description":"Endpoint to request details for all agents. Only authenticated users and third-party apps can access this."}},"httpPath":"/api/v1/agent_details/request_all_agents_details"}]},{"type":"group","label":"agent_data","link":"/openapi/agent_data","routeSlug":"/openapi/agent_data","items":[{"label":"Request Agent Data","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agent_data/request_agent_data_api_v1_agent_data_request_agent_data_post","routeSlug":"/openapi/agent_data/request_agent_data_api_v1_agent_data_request_agent_data_post","metadata":{"seo":{"title":"Request Agent Data","description":"Endpoint to request agent data for a specific period. Both authenticated agents and users can request agent data."}},"httpPath":"/api/v1/agent_data/request_agent_data"}]},{"type":"group","label":"send_command","link":"/openapi/send_command","routeSlug":"/openapi/send_command","items":[{"label":"Send Command To Agent","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/send_command/send_command_to_agent_api_v1_send_command_post","routeSlug":"/openapi/send_command/send_command_to_agent_api_v1_send_command_post","metadata":{"seo":{"title":"Send Command To Agent","description":"Endpoint to send a command to a specific agent."}},"httpPath":"/api/v1/send_command"}]},{"type":"group","label":"emulator","link":"/openapi/emulator","routeSlug":"/openapi/emulator","items":[{"label":"Spinup Emulators","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/emulator/spinup_emulators_api_v1_emulator_spinup_post","routeSlug":"/openapi/emulator/spinup_emulators_api_v1_emulator_spinup_post","metadata":{"seo":{"title":"Spinup Emulators","description":"Auth required (user or app).Creates emulator agents using DatabaseManager.add_agent with hashed passwords.Normalises locations to lat/lon and stores them ONLY in agent.configuration.geolocation.Publishes a job to RabbitMQ (routing key: emulator_spinup) including agent creds and locations."}},"httpPath":"/api/v1/emulator/spinup"}]},{"type":"group","label":"metrics","link":"/openapi/metrics","routeSlug":"/openapi/metrics","items":[{"label":"Agent Details","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/metrics/agent_details_api_v1_metrics_agent_details_get","routeSlug":"/openapi/metrics/agent_details_api_v1_metrics_agent_details_get","metadata":{"seo":{"title":"Agent Details","description":"Return agents directly from the database with these fields:id, ap_id, configuration, onboard."}},"httpPath":"/api/v1/metrics/agent_details"},{"label":"Get Agent Data","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/metrics/get_agent_data_api_v1_metrics_agent_data_get","routeSlug":"/openapi/metrics/get_agent_data_api_v1_metrics_agent_data_get","metadata":{"seo":{"title":"Get Agent Data","description":"Pull time series for one agent using your exact InfluxDB reader (JWT required).Works only with the agent's ap_id. Returns the key from Influx as 'key'."}},"httpPath":"/api/v1/metrics/agent_data"},{"label":"Get Agent Multi Metric Data","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/metrics/get_agent_multi_metric_data_api_v1_metrics_agent_multi_metric_data_get","routeSlug":"/openapi/metrics/get_agent_multi_metric_data_api_v1_metrics_agent_multi_metric_data_get","metadata":{"seo":{"title":"Get Agent Multi Metric Data","description":"Return time series for multiple metrics for a given agent over the same time window."}},"httpPath":"/api/v1/metrics/agent_multi_metric_data"},{"label":"List Agent Metrics","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/metrics/list_agent_metrics_api_v1_metrics_agent_metrics_get","routeSlug":"/openapi/metrics/list_agent_metrics_api_v1_metrics_agent_metrics_get","metadata":{"seo":{"title":"List Agent Metrics","description":"Return the list of metric names (Influx 'field' values) available for this agentin the given time window. Used by the frontend to populate the checkbox list."}},"httpPath":"/api/v1/metrics/agent_metrics"}]},{"type":"group","label":"agent_data_callback","link":"/openapi/agent_data_callback","routeSlug":"/openapi/agent_data_callback","items":[{"label":"Agent Data Callback","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agent_data_callback/agent_data_callback_api_v1_callback_agent_data_post","routeSlug":"/openapi/agent_data_callback/agent_data_callback_api_v1_callback_agent_data_post","metadata":{"seo":{"title":"Agent Data Callback","description":"Callback endpoint to receive agent data from the subscriber.The data will be sent to the WebSocket client identified by the job_number."}},"httpPath":"/api/v1/callback/agent_data"}]},{"type":"group","label":"agent_details_callback","link":"/openapi/agent_details_callback","routeSlug":"/openapi/agent_details_callback","items":[{"label":"Agent Details Callback","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/agent_details_callback/agent_details_callback_api_v1_callback_agent_details_post","routeSlug":"/openapi/agent_details_callback/agent_details_callback_api_v1_callback_agent_details_post","metadata":{"seo":{"title":"Agent Details Callback","description":"HTTP callback endpoint to receive agent details from the subscriber."}},"httpPath":"/api/v1/callback/agent_details"}]},{"type":"group","label":"emulator_callback","link":"/openapi/emulator_callback","routeSlug":"/openapi/emulator_callback","items":[{"label":"Agent Details Callback","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/emulator_callback/agent_details_callback_api_v1_callback_emulator_post","routeSlug":"/openapi/emulator_callback/agent_details_callback_api_v1_callback_emulator_post","metadata":{"seo":{"title":"Agent Details Callback","description":"HTTP callback endpoint to receive agent details from the subscriber."}},"httpPath":"/api/v1/callback/emulator"}]}]}