@axiomhq/js
Version:
The official javascript bindings for the Axiom API
46 lines (35 loc) • 1.48 kB
text/typescript
import HTTPClient from './httpClient.js';
export namespace monitors {
export type MonitorType = 'Threshold' | 'MatchEvent';
export type MonitorOperator = 'Below' | 'BelowOrEqual' | 'Above' | 'AboveOrEqual';
export interface Monitor {
id: string;
createdAt: string;
createdBy: string;
name: string;
type: MonitorType;
description?: string;
aplQuery: string;
operator: MonitorOperator;
threshold: number;
alertOnNoData: boolean;
notifyByGroup: boolean;
resolvable?: boolean;
notifierIDs: string[];
intervalMinutes: number;
rangeMinutes: number;
disabled?: boolean;
disabledUntil?: string;
}
export interface CreateRequest extends Omit<Monitor, 'id' | 'createdAt' | 'createdBy'> {}
export interface UpdateRequest extends Omit<Monitor, 'id' | 'createdAt' | 'createdBy'> {}
export class Service extends HTTPClient {
private readonly localPath = '/v2/monitors';
list = (): Promise<Monitor[]> => this.client.get(this.localPath);
get = (id: string): Promise<Monitor> => this.client.get(this.localPath + '/' + id);
create = (req: CreateRequest): Promise<Monitor> => this.client.post(this.localPath, { body: JSON.stringify(req) });
update = (id: string, req: UpdateRequest): Promise<Monitor> =>
this.client.put(this.localPath + '/' + id, { body: JSON.stringify(req) });
delete = (id: string): Promise<Response> => this.client.delete(this.localPath + '/' + id);
}
}