getCurrentUserLlmProxyUsage method

Future<List<Map<String, dynamic>>> getCurrentUserLlmProxyUsage(
  1. String projectId, {
  2. DateTime? start,
  3. DateTime? end,
  4. String? interval,
})

Implementation

Future<List<Map<String, dynamic>>> getCurrentUserLlmProxyUsage(
  String projectId, {
  DateTime? start,
  DateTime? end,
  String? interval,
}) async {
  final encodedProjectId = Uri.encodeComponent(projectId);
  final uri = Uri.parse('$baseUrl/accounts/projects/$encodedProjectId/llm-proxy/usage');

  final queryParameters = <String, String>{
    if (start != null) "start": start.toIso8601String(),
    if (end != null) "end": end.toIso8601String(),
    "interval": ?interval,
  };

  final response = await httpClient.get(uri.replace(queryParameters: queryParameters.isEmpty ? null : queryParameters));

  if (response.statusCode == 403) {
    throw ForbiddenException(
      'User does not have LLM proxy access to this project. Status code: ${response.statusCode}, body: ${response.body}',
    );
  }

  if (response.statusCode >= 400) {
    throw MeshagentException(
      'Failed to retrieve current user LLM proxy usage. Status code: ${response.statusCode}, body: ${response.body}',
    );
  }

  final data = jsonDecode(response.body) as Map<String, dynamic>;
  final list = data["usage"] as List<dynamic>? ?? [];
  return list.whereType<Map<String, dynamic>>().toList();
}