Skip to content

Datasets.CreateOrUpdate

func (datasetClient) CreateOrUpdate(
ctx context.Context,
kind datasets.DatasetKind,
codeName string,
name string,
fields []datasets.Field,
options ...datasets.DatasetOption,
) (*datasets.Dataset, error)

Create a dataset or update an existing dataset if a dataset with the given codeName already exists.

If the dataset already exists, Tilebox applies the same schema update rules as a direct update. New fields can be added to non-empty datasets. Breaking schema changes are only allowed for empty datasets. New queryable fields and changes to an existing field’s queryable annotation are also only allowed for empty datasets.

kind datasets.DatasetKind required

The dataset kind.

codeName string required

The stable code identifier for the dataset.

name string required

The display name of the dataset.

fields []datasets.Field required

The custom fields in the dataset schema.

options []datasets.DatasetOption

Options for dataset metadata.

datasets.WithSummary(summary string)

Set a short dataset summary.

datasets.WithDescription(description string)

Set the dataset’s markdown description.

KindTemporal datasets.DatasetKind

A dataset that contains timestamp, ID, and ingestion time fields.

KindSpatiotemporal datasets.DatasetKind

A dataset that contains timestamp, ID, ingestion time, and geometry fields.

field.String(name string) Field

A string field

field.Bytes(name string) Field

A bytes field

field.Bool(name string) Field

A boolean field

field.Int32(name string) Field

A 32-bit signed integer field

field.Int64(name string) Field

A 64-bit signed integer field

field.Uint64(name string) Field

A 64-bit unsigned integer field

field.Float64(name string) Field

A 64-bit floating-point number field

field.Duration(name string) Field

A duration field

field.Timestamp(name string) Field

A timestamp field

field.UUID(name string) Field

A UUID field

field.Geometry(name string) Field

A geometry field

Repeated()

Indicate that the field is an array

Description(description string)

Set the description of the field to provide more context and details about the data

ExampleValue(exampleValue string)

Set the example value of the field for documentation purposes

SourceJSONPointer(sourceJSONPointer string)

Optional. Set the RFC 6901 path to this field in the source JSON, such as /properties/eo:cloud_cover. This is useful when transforming datapoints to JSON because Tilebox can reconstruct nested source objects from flattened dataset fields.

Queryable()

Make a non-repeated String, Bool, Int32, Int64, Uint64, or Float64 field available for server-side custom field filters. A dataset can contain at most two queryable string fields.

JSONSchemaRef(jsonSchemaRef string)

Optional. Set a JSON Schema reference URI or URI fragment for the field. Use this when the field follows a well-known schema, such as a STAC extension. Tilebox emits the reference as $ref when advertising the field in STAC queryables.

Roles(roles ...FieldRole)

Set semantic display roles for the field. The only currently supported role is field.RolePrimaryTitle.

Queryable string values can contain at most 1,024 Unicode code points. See Queryable fields for schema constraints and Filter by custom fields for query syntax.

The created or updated dataset object.