package api
type NewDatasetRequest struct {
Name string `json:"name"` // no need to be unique
Data []string `json:"data"`
}
type NewDatasetResponse struct {
Name string `json:"name"`
DateCreated string `json:"date_created"` // RFC8601 with millis
Size int `json:"size"`
}
type RenameDatasetRequest struct {
OldName string `json:"old_name"`
NewName string `json:"new_name"`
}
type DeleteDatasetRequest struct {
Name string `json:"name"`
}
type DatasetVersion struct {
Key string `json:"key"`
Size int `json:"size"`
Date string `json:"date"`
}
type Dataset struct {
Name string `json:"name"`
OwnerOwid string `json:"owner_owid"`
OwnerUsername string `json:"owner_username"`
ReaderOwid string `json:"reader_owid"`
ReaderUsername string `json:"reader_username"`
Versions []DatasetVersion `json:"versions"`
}
type ListDatasetsResponse struct {
Datasets []Dataset `json:"datasets"`
}
type KV struct {
Key string `json:"k"`
Value string `json:"v"`
}
type GetDatasetResponse struct {
DatasetVersion DatasetVersion `json:"dataset_version"`
Records []KV `json:"records"`
}
// BeginNewDatasetRequest is for the new API for uploading datasets.
// It's meant to work for huge datasets as well as small ones.
// The flow goes like this:
// 1. Call /klex/datasets/begin_new and get a version key.
// 2. Repeatedly call /klex/datasets/upload_kv with chunks of data.
// 3. Call /klex/datasets/end_new to commit and name the dataset.
type BeginNewDatasetRequest struct {
Name string `json:"name"`
}
type BeginNewDatasetResponse struct {
VersionKey string `json:"version_key"`
}
// UploadKVRequest is for uploading some of the kv-pairs of a new dataset.
type UploadKVRequest struct {
VersionKey string `json:"version_key"`
Records []KV `json:"records"`
}
type EndNewDatasetRequest struct {
Name string `json:"name"`
VersionKey string `json:"version_key"`
Size int `json:"size"`
}