@axiomhq/js
Version:
The official javascript bindings for the Axiom API
57 lines (46 loc) • 1.44 kB
text/typescript
import HTTPClient from "./httpClient.js";
export namespace annotations {
export interface Annotation {
id: string;
type: string;
datasets: string[];
title?: string;
description?: string;
url?: string;
time: string;
endTime?: string;
}
export interface ListingQueryParams {
datasets?: string[];
start?: string;
end?: string;
}
export interface CreateRequest {
type: string;
datasets: string[];
title?: string;
description?: string;
url?: string;
time?: string;
endTime?: string;
}
export interface UpdateRequest {
type?: string;
datasets?: string[];
title?: string;
description?: string;
url?: string;
time?: string;
endTime?: string;
}
export class Service extends HTTPClient {
private readonly localPath = "/v2/annotations";
list = (req?: ListingQueryParams): Promise<Annotation[]> => this.client.get(this.localPath, {}, req);
get = (id: string): Promise<Annotation> => this.client.get(this.localPath + "/" + id);
create = (req: CreateRequest): Promise<Annotation> =>
this.client.post(this.localPath, { body: JSON.stringify(req) });
update = (id: string, req: UpdateRequest): Promise<Annotation> =>
this.client.put(this.localPath + "/" + id, { body: JSON.stringify(req) });
delete = (id: string): Promise<Response> => this.client.delete(this.localPath + "/" + id);
}
}