To populate SkyPortal with initial data, use tools/data_loader.py. This is also used when doing make load_seed_data and make load_demo_data.

The data loader reads a data file in YAML format. This YAML files matches the SkyPortal API: each entry corresponds to an API endpoint, and contains a list of objects to post (see data/db_demo.yaml for an example).

## References¶

The attributes of a posted object can be saved as references:

groups:
- name: Program A
=id: program_A


Here, the id field of the created group is stored as program_A. This can now be used when, e.g., posting a telescope:

telescope:
- name: Palomar 1.5m
nickname: P60
lat: 33.3633675
lon: -116.8361345
elevation: 1870
diameter: 1.5
group_ids:
- =program_A


Endpoints can also contain references:

groups/=program_A/users:


Here, the endpoint will become, e.g., groups/6/users.

## Files¶

Lists of objects to post can be loaded through a top-level file entry:

telescope:
file: telescopes.yaml


If objects reference png files, those will be read in and posted as b64-encoded bytes:

thumbnail:
- obj_id: 14gqr
ttype: new
data:
file: ../skyportal/tests/data/14gqr_new.png


CSV files are read as columns, each of which becomes an entry in the posted object:

photometry:
- obj_id: 14gqr_unsaved_copy
file: phot.csv
group_ids:
- =program_A


Here, phot.csv has columns filter, mjd, etc., so each of those would become an entry in the posted object, each with a list of values.