Mobile apps (iOS, Android, Mac)
Native apps can use the same login flow: POST /api/auth/login returns a JWT. Send it as Authorization: Bearer <jwt> on every later request. CSRF is skipped for Bearer tokens. Refresh tokens with POST /api/auth/refresh, passing the refresh token in the request body (or the X-Client-Type: mobile header).
From the Visual Sentinel OpenAPI 3.1 specification at https://docs.visualsentinel.com/openapi.json. Endpoint details are in the API reference.