observation-js
Version:
A fully-typed TypeScript client for the waarneming.nl API.
63 lines (62 loc) • 1.74 kB
TypeScript
import type { LocationDetail, Photo, Point, Sound, UserDetail } from './base';
import type { SpeciesData } from './species';
export interface Observation {
id: number;
url: string;
species: SpeciesData | null;
species_guess: string;
user: UserDetail;
location: LocationDetail | null;
point: Point;
date: string;
time: string | null;
count: number | null;
count_text: string | null;
photos: Photo[];
sounds: Sound[];
comments_count: number;
likes_count: number;
validation_status: string;
is_validated: boolean;
model_prediction: string;
obscured_by_user: boolean;
created_at: string;
}
export type ObservationField<F extends string> = {
id: number;
field: F;
};
export type ObservationFieldValue = ObservationField<'behaviour' | 'collection_method' | 'counting_method' | 'determination_method' | 'life_stage' | 'sex' | 'substrate' | 'vegetation_type'> & {
value: number;
value_text: string;
};
export type ObservationFieldValueFree = ObservationField<'project'> & {
value_text: string;
};
export type ObservationComment = {
id: number;
user: UserDetail;
comment: string;
created_at: string;
};
export type ObservationLike = {
user: UserDetail;
created_at: string;
};
export interface CreateObservationOptions {
upload_photos?: Blob[];
upload_sounds?: Blob[];
}
export type CreateObservationPayload = {
date: string;
species_id?: number;
species_guess?: string;
location_id?: number;
point?: Point;
time?: string;
notes?: string;
is_certain?: boolean;
count?: number;
upload_media?: string[];
};
export type UpdateObservationPayload = Partial<CreateObservationPayload>;