Database Schema

Contents

Database Schema#

SkyPortal uses a PostgreSQL database to manage persistent state. This section documents the schema of the database and describes how the application interacts with it.

SQLAlchemy Model API Documentation#

The SkyPortal Python backend interacts with the PostgreSQL backend using the SQLAlchemy object relational mapper. Each database table is represented by a Python class, and each table Column is represented by a class attribute. This Section documents each of the SkyPortal and baselayer classes that are mapped to database tables.

class baselayer.app.models.ACL(**kwargs)#

An access control list item representing a privilege within the application. ACLs are aggregated into collections called Roles which are assumed by Users. Examples of ACLs include Upload Data, Comment, and Manage Groups.

Attributes:
created_at

UTC time of insertion of object’s row into the database.

id

ACL name.

modified

UTC time the object’s row was last modified in the database.

created_at#

UTC time of insertion of object’s row into the database.

id#

ACL name.

modified#

UTC time the object’s row was last modified in the database.

class baselayer.app.models.AccessibleIfRelatedRowsAreAccessible(**properties_and_modes)#
Attributes:
properties_and_modes

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy select object
class baselayer.app.models.AccessibleIfUserMatches(relationship_chain)#
Attributes:
relationship_chain
relationship_names

List of names of each relationship in the chain.

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

property relationship_names#

List of names of each relationship in the chain.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy select object
baselayer.app.models.AsyncVerifiedSession(user_or_token)#

Async equivalent of VerifiedSession(). Yields an _AsyncVerifiedSession bound to the configured async engine.

class baselayer.app.models.ComposedAccessControl(*access_controls, logic='and')#
Attributes:
access_controls
logic

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy select object
class baselayer.app.models.CronJobRun(**kwargs)#

A record of a run (or attempted run) of a cron job.

Attributes:
created_at

UTC time of insertion of object’s row into the database.

exit_status

Exit status of cron job subprocess (e.g. 0 or 1).

id

Unique object identifier.

modified

UTC time the object’s row was last modified in the database.

output

Cron job’s subprocess output, or exception string.

script

Name of script being run.

created_at#

UTC time of insertion of object’s row into the database.

exit_status#

Exit status of cron job subprocess (e.g. 0 or 1).

id#

Unique object identifier.

modified#

UTC time the object’s row was last modified in the database.

output#

Cron job’s subprocess output, or exception string.

script#

Name of script being run.

class baselayer.app.models.CustomUserAccessControl(query_or_query_generator)#

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy.Select object
class baselayer.app.models.JoinModel#

Dummy class that join_models subclass. Provides an easy way to access all join_model mapped classes via the __subclasses__() method.

class baselayer.app.models.Public#

A record accessible to anyone.

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy select object
class baselayer.app.models.Restricted#

A record that can only be accessed by a System Admin.

Methods

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy.Select object
class baselayer.app.models.Role(**kwargs)#

A collection of ACLs. Roles map Users to ACLs. One User may assume multiple Roles.

Attributes:
acls

ACLs associated with the Role.

created_at

UTC time of insertion of object’s row into the database.

id

Role name.

modified

UTC time the object’s row was last modified in the database.

users

Users who have this Role.

acls#

ACLs associated with the Role.

created_at#

UTC time of insertion of object’s row into the database.

id#

Role name.

modified#

UTC time the object’s row was last modified in the database.

users#

Users who have this Role.

class baselayer.app.models.RoleACL(**kwargs)#

Join table class mapping Roles to ACLs.

Attributes:
acl
acl_id
created_at

UTC time of insertion of object’s row into the database.

id

Unique object identifier.

modified

UTC time the object’s row was last modified in the database.

role
role_id
create = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
created_at#

UTC time of insertion of object’s row into the database.

id#

Unique object identifier.

modified#

UTC time the object’s row was last modified in the database.

read = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
class baselayer.app.models.Token(**kwargs)#

A command line token that can be used to programmatically access the API as a particular User.

Attributes:
accessible_group_ids

Return a set of group IDs that the user or token has access to.

accessible_groups

Return the list of Groups a User or Token has access to.

accessible_streams

Return the list of Streams a User or Token has access to.

acls

The ACLs granted to the Token.

created_at

UTC time of insertion of object’s row into the database.

created_by

The User that created the token.

created_by_id

The ID of the User that created the Token.

groups

The groups the Token owner is a member of.

id

The value of the token. This field is used for authenticating as a User on the command line.

is_admin
is_system_admin
modified

UTC time the object’s row was last modified in the database.

name

The name of the token.

Methods

assert_group_accessible(group_id)

Raise an error if the user or token does not have access to the given group.

is_readable_by(user_or_token)

Return a boolean indicating whether this Token is readable by the specified User (or Token instance, if a token is passed).

property accessible_group_ids#

Return a set of group IDs that the user or token has access to.

property accessible_groups#

Return the list of Groups a User or Token has access to. For non-admin Users or Token owners, this corresponds to the Groups they are a member of. For System Admins, this corresponds to all Groups.

property accessible_streams#

Return the list of Streams a User or Token has access to.

acls#

The ACLs granted to the Token.

assert_group_accessible(group_id)#

Raise an error if the user or token does not have access to the given group.

Parameters:
group_idint or str

The ID of the group to check.

Raises:
AccessError

If the user or token does not have access to the group.

create = <baselayer.app.models.AccessibleIfUserMatches object>#
created_at#

UTC time of insertion of object’s row into the database.

created_by#

The User that created the token.

created_by_id#

The ID of the User that created the Token.

delete = <baselayer.app.models.AccessibleIfUserMatches object>#
property groups#

The groups the Token owner is a member of.

id#

The value of the token. This field is used for authenticating as a User on the command line.

is_readable_by(user_or_token)#

Return a boolean indicating whether this Token is readable by the specified User (or Token instance, if a token is passed).

Parameters:
user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

Returns:
readablebool

Whether this Token instance is readable by the User or Token.

modified#

UTC time the object’s row was last modified in the database.

name#

The name of the token.

read = <baselayer.app.models.AccessibleIfUserMatches object>#
update = <baselayer.app.models.AccessibleIfUserMatches object>#
class baselayer.app.models.TokenACL(**kwargs)#

Join table mapping Tokens to ACLs

Attributes:
acl
acl_id
created_at

UTC time of insertion of object’s row into the database.

id

Unique object identifier.

modified

UTC time the object’s row was last modified in the database.

token
token_id
create = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
created_at#

UTC time of insertion of object’s row into the database.

id#

Unique object identifier.

modified#

UTC time the object’s row was last modified in the database.

read = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
class baselayer.app.models.User(**kwargs)#

An application user.

Attributes:
accessible_group_ids

Return a set of group IDs that the user or token has access to.

accessible_groups

Return the list of Groups a User or Token has access to.

accessible_streams

Return the list of Streams a User or Token has access to.

acls

ACLs granted to user, separate from role-level ACLs

affiliations

The User’s affiliations (ex: Department of Mathematics, University X)

annotations
annotations_on_photometry
annotations_on_spectra
assignments

Objs the User has assigned to ObservingRuns.

assistant_messages
bio

A short biography of the user, or description for bot accounts.

catalog_queries

The catalog queries this User has made.

comments
comments_on_earthquakes
comments_on_gcns
comments_on_shifts
comments_on_spectra
contact_email

The phone number at which the user prefers to receive communications.

contact_phone

The email at which the user prefers to receive communications.

created_at

UTC time of insertion of object’s row into the database.

default_followup_requests

The default follow-up requests this User has made.

default_gcntags

The default gcn tags this User has made.

default_observationplan_requests

The default observation plan requests this User has made.

earthquakeevents

The EarthquakeEvents saved by this user

earthquakenotices

The EarthquakeNotices saved by this user

expiration_date

The date until which the user’s account is valid. Users are set to view-only upon expiration.

first_name

The User’s first name.

followup_requests

The follow-up requests this User has made.

gcn_event_objs

GcnEventObj rows this User has created.

gcneventextractions

The gcneventextractions saved by this user

gcnevents

The gcnevents saved by this user

gcnnotices

The GcnNotices saved by this user

gcnproperties

The gcnproperties saved by this user

gcnreports

The gcnreports saved by this user

gcnsummaries

The gcnsummaries saved by this user

gcntags

The gcntags saved by this user

gravatar_url

The Gravatar URL inferred from the user’s contact email, or, if the contact email is null, the username.

group_admission_requests

User’s requests to join groups.

groups

The Groups this User is a member of.

id

Unique object identifier.

is_admin
is_bot

Whether or not the user account should be flagged as a bot account.

is_system_admin
last_name

The User’s last name.

listings

The listings saved by this user

localizationproperties

The localizationproperties saved by this user

localizations

The localizations saved by this user

localizationtags

The localizationtags saved by this user

mmadetector_spectra

MMADetectorSpectra uploaded by this User.

mmadetector_time_intervals

MMADetectorTimeInterval uploaded by this User.

modified

UTC time the object’s row was last modified in the database.

notifications

Notifications to be displayed on front-end associated with User

oauth_uid

The user’s OAuth UID.

observationplan_requests

The observation plan requests this User has made.

observing_runs

Observing Runs this User has created.

permissions

List of the names of all of the user’s ACLs (role-level + individual).

photometric_series

PhotometricSeries uploaded by this User.

photometry

Photometry uploaded by this User.

photometryvalidations

PhotometryValidation this User has created.

preferences

The user’s application settings.

recurring_apis
reminders
reminders_on_earthquakes
reminders_on_gcns
reminders_on_shifts
reminders_on_spectra
roles

The roles assumed by this user.

saved_sources
sharing_service_submissions

Sharing submissions this user has made (manual or automatic).

shifts

The Shifts this User is a member of.

single_user_group
source_notifications

Source notifications the User has sent out.

sources

The Sources accessible to this User.

spectra

Spectra uploaded by this User.

streams

The Streams this User has access to.

survey_efficiency_for_observation_plan

The survey efficiency analyses on ObservationPlans this User has made.

survey_efficiency_for_observations

The survey efficiency analyses on Observations this User has made.

tokens

This user’s tokens.

transaction_requests

The FacilityTransactionRequests initiated by this User.

transactions

The FacilityTransactions initiated by this User.

username

The user’s username.

Methods

assert_group_accessible(group_id)

Raise an error if the user or token does not have access to the given group.

is_active()

Boolean flag indicating whether the User is currently active.

is_authenticated()

Boolean flag indicating whether the User is currently authenticated.

user_model()

The base model for User subclasses.

to_dict

property accessible_group_ids#

Return a set of group IDs that the user or token has access to.

property accessible_groups#

Return the list of Groups a User or Token has access to. For non-admin Users or Token owners, this corresponds to the Groups they are a member of. For System Admins, this corresponds to all Groups.

property accessible_streams#

Return the list of Streams a User or Token has access to.

acls#

ACLs granted to user, separate from role-level ACLs

affiliations#

The User’s affiliations (ex: Department of Mathematics, University X)

assert_group_accessible(group_id)#

Raise an error if the user or token does not have access to the given group.

Parameters:
group_idint or str

The ID of the group to check.

Raises:
AccessError

If the user or token does not have access to the group.

assignments#

Objs the User has assigned to ObservingRuns.

bio#

A short biography of the user, or description for bot accounts.

catalog_queries#

The catalog queries this User has made.

contact_email#

The phone number at which the user prefers to receive communications.

contact_phone#

The email at which the user prefers to receive communications.

created_at#

UTC time of insertion of object’s row into the database.

default_followup_requests#

The default follow-up requests this User has made.

default_gcntags#

The default gcn tags this User has made.

default_observationplan_requests#

The default observation plan requests this User has made.

delete = <baselayer.app.models.CustomUserAccessControl object>#
earthquakeevents#

The EarthquakeEvents saved by this user

earthquakenotices#

The EarthquakeNotices saved by this user

expiration_date#

The date until which the user’s account is valid. Users are set to view-only upon expiration.

first_name#

The User’s first name.

followup_requests#

The follow-up requests this User has made.

gcn_event_objs#

GcnEventObj rows this User has created.

gcneventextractions#

The gcneventextractions saved by this user

gcnevents#

The gcnevents saved by this user

gcnnotices#

The GcnNotices saved by this user

gcnproperties#

The gcnproperties saved by this user

gcnreports#

The gcnreports saved by this user

gcnsummaries#

The gcnsummaries saved by this user

gcntags#

The gcntags saved by this user

property gravatar_url#

The Gravatar URL inferred from the user’s contact email, or, if the contact email is null, the username.

group_admission_requests#

User’s requests to join groups.

groups#

The Groups this User is a member of.

id#

Unique object identifier.

is_active()#

Boolean flag indicating whether the User is currently active.

is_authenticated()#

Boolean flag indicating whether the User is currently authenticated.

is_bot#

Whether or not the user account should be flagged as a bot account.

last_name#

The User’s last name.

listings#

The listings saved by this user

localizationproperties#

The localizationproperties saved by this user

localizations#

The localizations saved by this user

localizationtags#

The localizationtags saved by this user

mmadetector_spectra#

MMADetectorSpectra uploaded by this User.

mmadetector_time_intervals#

MMADetectorTimeInterval uploaded by this User.

modified#

UTC time the object’s row was last modified in the database.

notifications#

Notifications to be displayed on front-end associated with User

oauth_uid#

The user’s OAuth UID.

observationplan_requests#

The observation plan requests this User has made.

observing_runs#

Observing Runs this User has created.

property permissions#

List of the names of all of the user’s ACLs (role-level + individual).

photometric_series#

PhotometricSeries uploaded by this User.

photometry#

Photometry uploaded by this User.

photometryvalidations#

PhotometryValidation this User has created.

preferences#

The user’s application settings.

roles#

The roles assumed by this user.

sharing_service_submissions#

Sharing submissions this user has made (manual or automatic).

shifts#

The Shifts this User is a member of.

source_notifications#

Source notifications the User has sent out.

sources#

The Sources accessible to this User.

spectra#

Spectra uploaded by this User.

streams#

The Streams this User has access to.

survey_efficiency_for_observation_plan#

The survey efficiency analyses on ObservationPlans this User has made.

survey_efficiency_for_observations#

The survey efficiency analyses on Observations this User has made.

to_dict()#

Serialize this object to a Python dictionary.

tokens#

This user’s tokens.

transaction_requests#

The FacilityTransactionRequests initiated by this User.

transactions#

The FacilityTransactions initiated by this User.

update = <baselayer.app.models.CustomUserAccessControl object>#
classmethod user_model()#

The base model for User subclasses.

username#

The user’s username.

class baselayer.app.models.UserACL(**kwargs)#

Join table mapping Users to ACLs

Attributes:
acl
acl_id
created_at

UTC time of insertion of object’s row into the database.

id

Unique object identifier.

modified

UTC time the object’s row was last modified in the database.

user
user_id
create = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
created_at#

UTC time of insertion of object’s row into the database.

id#

Unique object identifier.

modified#

UTC time the object’s row was last modified in the database.

read = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
class baselayer.app.models.UserAccessControl#

Logic for controlling user access to database records. Mapped classes can set their create, read, update, or delete attributes to subclasses of this class to ensure they are only accessed by users or tokens with the requisite permissions.

Methods

check_cls_for_attributes(cls, attrs)

Check that a target class has the specified attributes.

select_accessible_rows(cls, user_or_token[, ...])

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

user_id_from_user_or_token(user_or_token)

Return the user_id associated with a specified User or Token object.

static check_cls_for_attributes(cls, attrs)#

Check that a target class has the specified attributes. If not, raise a TypeError.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The class to check.

attrslist of str

The names of the attributes to check for.

select_accessible_rows(cls, user_or_token, columns=None)#

Construct a Select object that, when executed, returns the rows of a specified table that are accessible to a specified user or token.

Parameters:
clsbaselayer.app.models.DeclarativeMeta

The mapped class of the target table.

user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

columnslist of sqlalchemy.Column, optional, default None

The columns to retrieve from the target table. If None, queries the mapped class directly and returns mapped instances.

Returns:
sqlalchemy select object
static user_id_from_user_or_token(user_or_token)#

Return the user_id associated with a specified User or Token object.

Parameters:
user_or_tokenbaselayer.app.models.User or baselayer.app.models.Token

The User or Token to check.

Returns:
user_id: int

The user_id associated with the User or Token object.

class baselayer.app.models.UserRole(**kwargs)#

Join table mapping Users to Roles.

Attributes:
created_at

UTC time of insertion of object’s row into the database.

id

Unique object identifier.

modified

UTC time the object’s row was last modified in the database.

role
role_id
user
user_id
create = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
created_at#

UTC time of insertion of object’s row into the database.

id#

Unique object identifier.

modified#

UTC time the object’s row was last modified in the database.

read = <baselayer.app.models.AccessibleIfRelatedRowsAreAccessible object>#
async baselayer.app.models.async_bulk_verify(session, mode, collection, accessor)#

Async counterpart of bulk_verify. Runs the access-control leak check inside the supplied async session rather than the global sync DBSession.

baselayer.app.models.bulk_verify(mode, collection, accessor)#

Vectorized permission check for a heterogeneous set of records. If an access leak is detected, it will be handled according to the security section of the application’s configuration.

Parameters:
modestr

The access mode to check. Can be create, read, update, or delete.

collectioncollection of baselayer.app.models.Base.

The records to check. These records will be grouped by type, and a single database query will be issued to check access for each record type.

accessorbaselayer.app.models.User or baselayer.app.models.Token

The user or token to check.

baselayer.app.models.db_engine()#

The engine that init_db() bound DBSession to, or None before it runs.

baselayer.app.models.group_by_type(collection)#

Group records by mapped class, so each class needs a single query.

baselayer.app.models.inaccessible_pks_stmt(collection, accessible_rows, pk_cols)#

Build the statement selecting the primary keys of collection that are missing from accessible_rows.

Records are matched on every column of their primary key, so a composite key is checked like a surrogate id.

Parameters:
collectionlist of baselayer.app.models.Base

The records to check, all of the type whose PK columns are pk_cols.

accessible_rowssqlalchemy select object

Query of the pk_cols of the rows the accessor may access.

pk_colslist of sqlalchemy.Column

The primary key columns of the records.

Returns:
sqlalchemy select object

One row per inaccessible record, one column per primary key column.

baselayer.app.models.join_model(join_table, model_1, model_2, column_1=None, column_2=None, fk_1='id', fk_2='id', base=<class 'sqlalchemy.orm.decl_api.Base'>, new_name=None, overlaps=None, index_created_at=True, composite_pk=False)#

Helper function to create a join table for a many-to-many relationship.

Parameters:
join_tablestr

Name of the new table to be created.

model_1str

First model in the relationship.

model_2str

Second model in the relationship.

column_1str, optional

Name of the join table column corresponding to model_1. If None, then {table1`[:-1]_id} will be used (e.g., `user_id for users).

column_2str, optional

Name of the join table column corresponding to model_2. If None, then {table2`[:-1]_id} will be used (e.g., `user_id for users).

fk_1str, optional

Name of the column from model_1 that the foreign key should refer to.

fk_2str, optional

Name of the column from model_2 that the foreign key should refer to.

basesqlalchemy.ext.declarative.api.DeclarativeMeta

SQLAlchemy model base to subclass.

new_name: str, optional

Name of the new model class. If None, then the name will be model_1.__name__ + model_2.__name__.

overlapsstr or list of str, optional

Each relationship defined in this model will have, by default, overlaps=f”{table_1}, {table_2}”. If any additional overalapping relationships or columns need to be added, they can be given as a string or list of strings.

index_created_atbool, optional

Whether to index the auto-added created_at column. Defaults to True.

composite_pkbool, optional

If True, use (column_1, column_2) as the primary key instead of a surrogate id column; the PK’s unique index replaces the forward index. Defaults to False.

Returns:
sqlalchemy.ext.declarative.api.DeclarativeMeta

SQLAlchemy association model class

baselayer.app.models.new_async_session()#

The async counterpart of new_session(): a session of its own, with no access-control check. Close it when the work is done.

baselayer.app.models.new_session()#

A session of its own, independent of the request-scoped DBSession.

For work running outside a web request, where sharing one session between callers would let one caller’s rollback discard another’s pending work. Applies no access-control check; close it when the work is done.

baselayer.app.models.pending_rows(session)#

The rows of session to check, as (read, updated, deleted, new).

baselayer.app.models.pks_of(rows, pk_cols)#

Collect the primary keys of the rows returned by inaccessible_pks_stmt.

Parameters:
rowslist of sqlalchemy.Row

The rows returned by inaccessible_pks_stmt.

pk_colslist of sqlalchemy.Column

The primary key columns the rows were selected on.

Returns:
set

The primary keys, scalars for a single column and tuples for several.

baselayer.app.models.primary_key_keys(cls)#

Return the attribute keys of cls’s primary key columns.

Most mapped classes use a single surrogate id, but join tables may use a composite primary key (e.g. group_id + photometr_id). Access control joins on the primary key, so deriving it here keeps that logic PK-agnostic instead of assuming a column named id.

Uses .mapper.primary_key so it works for both mapped classes and aliased classes (an AliasedInsp has no primary_key of its own).

baselayer.app.models.resolve_pooler(host, port, engine_args, pooler)#

Route the connection through a transaction pooler (pgbouncer/pgcat) when enabled, so backend connections stay bounded across all processes. Returns adjusted (host, port, engine_args).

Entity Relationship Diagram#

The following entity relationship diagram visualizes the structure of the SkyPortal database. Drag to pan, scroll to zoom, and click a table to highlight the tables it is related to.

100%
%3 acls acls id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL role_acls role_acls id [INTEGER] NOT NULL acl_id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL role_id [VARCHAR] NOT NULL acls--role_acls user_acls user_acls id [INTEGER] NOT NULL acl_id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL acls--user_acls token_acls token_acls id [INTEGER] NOT NULL acl_id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL token_id [VARCHAR] NOT NULL acls--token_acls roles roles id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL roles--role_acls user_roles user_roles id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL role_id [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL roles--user_roles invitations invitations id [INTEGER] NOT NULL admin_for_groups [ARRAY] NOT NULL can_save_to_groups [ARRAY] NOT NULL can_share_photometry_for_groups [ARRAY] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL role_id [VARCHAR] NOT NULL token [VARCHAR] NOT NULL used [BOOLEAN] NOT NULL user_email [VARCHAR(255)] user_expiration_date [DATETIME] roles--invitations userapplications userapplications id [INTEGER] NOT NULL affiliation [VARCHAR] contact_email [VARCHAR(255)] NOT NULL created_at [DATETIME] NOT NULL decided_at [DATETIME] decline_reason [VARCHAR] endorsed_by_id [INTEGER] endorser_email [VARCHAR] endorser_id [INTEGER] first_name [VARCHAR] NOT NULL invitation_id [INTEGER] last_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL statement [VARCHAR] status [VARCHAR(8)] NOT NULL invitations--userapplications user_invitations user_invitations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL invitation_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL invitations--user_invitations group_invitations group_invitations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL invitation_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL invitations--group_invitations stream_invitations stream_invitations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL invitation_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL stream_id [INTEGER] NOT NULL invitations--stream_invitations users users id [INTEGER] NOT NULL affiliations [ARRAY] NOT NULL bio [VARCHAR] contact_email [VARCHAR(255)] contact_phone [VARCHAR(20)] created_at [DATETIME] NOT NULL expiration_date [DATETIME] first_name [VARCHAR] is_bot [BOOLEAN] NOT NULL last_name [VARCHAR] modified [DATETIME] NOT NULL oauth_uid [VARCHAR] preferences [JSONB] username [VARCHAR] NOT NULL users--user_acls users--user_roles tokens tokens id [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL created_by_id [INTEGER] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL users--tokens group_users group_users id [INTEGER] NOT NULL admin [BOOLEAN] NOT NULL can_save [BOOLEAN] NOT NULL can_share_photometry [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL users--group_users groupadmissionrequests groupadmissionrequests id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL status [VARCHAR(8)] NOT NULL user_id [INTEGER] NOT NULL users--groupadmissionrequests allocation_users allocation_users id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL users--allocation_users classifications classifications id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL author_name [VARCHAR] NOT NULL classification [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL ml [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] probability [FLOAT] taxonomy_id [INTEGER] NOT NULL users--classifications classificationedits classificationedits id [INTEGER] NOT NULL classification_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL editor_id [INTEGER] NOT NULL editor_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL new_probability [FLOAT] old_probability [FLOAT] users--classificationedits classificationvotes classificationvotes id [INTEGER] NOT NULL classification_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL vote [INTEGER] NOT NULL voter_id [INTEGER] NOT NULL users--classificationvotes candidates candidates id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL filter_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL passed_at [DATETIME] NOT NULL passing_alert_id [BIGINT] uploader_id [INTEGER] NOT NULL users--candidates photometry photometry id [BIGINT] NOT NULL altdata [JSONB] assignment_id [INTEGER] created_at [DATETIME] NOT NULL dec [FLOAT] dec_unc [FLOAT] filter [VARCHAR(13)] NOT NULL flux [FLOAT] NOT NULL fluxerr [FLOAT] NOT NULL followup_request_id [INTEGER] instrument_id [INTEGER] NOT NULL mjd [FLOAT] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] NOT NULL original_user_data [JSONB] owner_id [INTEGER] NOT NULL ra [FLOAT] ra_unc [FLOAT] ref_flux [FLOAT] ref_fluxerr [FLOAT] upload_id [VARCHAR] NOT NULL users--photometry photometric_series photometric_series id [INTEGER] NOT NULL altdata [JSONB] assignment_id [INTEGER] autodelete [BOOLEAN] NOT NULL best_snr [FLOAT] channel [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL dec [FLOAT] dec_unc [FLOAT] exp_time [FLOAT] NOT NULL filename [VARCHAR] NOT NULL filter [VARCHAR(13)] NOT NULL followup_request_id [INTEGER] frame_rate [FLOAT] NOT NULL hash [VARCHAR] NOT NULL instrument_id [INTEGER] NOT NULL is_detected [BOOLEAN] NOT NULL limiting_mag [FLOAT] NOT NULL mag_first [FLOAT] NOT NULL mag_last [FLOAT] NOT NULL mag_last_detected [FLOAT] maxima [JSONB] mean_mag [FLOAT] median_snr [FLOAT] medians [JSONB] minima [JSONB] mjd_first [FLOAT] NOT NULL mjd_last [FLOAT] NOT NULL mjd_last_detected [FLOAT] mjd_mid [FLOAT] NOT NULL modified [DATETIME] NOT NULL num_exp [INTEGER] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] NOT NULL owner_id [INTEGER] NOT NULL ra [FLOAT] ra_unc [FLOAT] ref_flux [FLOAT] ref_fluxerr [FLOAT] rms_mag [FLOAT] robust_mag [FLOAT] robust_rms [FLOAT] series_name [VARCHAR] NOT NULL series_obj_id [VARCHAR] NOT NULL stds [JSONB] time_stamp_alignment [VARCHAR(6)] NOT NULL worst_snr [FLOAT] users--photometric_series spectra spectra id [INTEGER] NOT NULL altdata [JSONB] assignment_id [INTEGER] created_at [DATETIME] NOT NULL errors [ARRAY] fluxes [ARRAY] NOT NULL followup_request_id [INTEGER] instrument_id [INTEGER] NOT NULL label [VARCHAR] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL observed_at [DATETIME] NOT NULL origin [VARCHAR] original_file_filename [VARCHAR] original_file_string [VARCHAR] owner_id [INTEGER] NOT NULL type [VARCHAR(11)] NOT NULL units [VARCHAR] wavelengths [ARRAY] NOT NULL users--spectra spectrum_pis spectrum_pis id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL external_pi [VARCHAR] modified [DATETIME] NOT NULL spectr_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--spectrum_pis spectrum_reducers spectrum_reducers id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL external_reducer [VARCHAR] modified [DATETIME] NOT NULL spectr_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--spectrum_reducers spectrum_observers spectrum_observers id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL external_observer [VARCHAR] modified [DATETIME] NOT NULL spectr_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--spectrum_observers sources sources id [INTEGER] NOT NULL active [BOOLEAN] created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL requested [BOOLEAN] saved_at [DATETIME] NOT NULL saved_by_id [INTEGER] unsaved_at [DATETIME] unsaved_by_id [INTEGER] users--sources users--sources obj_analyses obj_analyses id [INTEGER] NOT NULL _full_name [VARCHAR] _unique_id [VARCHAR] NOT NULL analysis_parameters [TEXT] analysis_service_id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL duration [FLOAT] handled_by_url [VARCHAR] NOT NULL hash [VARCHAR] input_filters [TEXT] invalid_after [DATETIME] NOT NULL last_activity [DATETIME] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL show_corner [BOOLEAN] NOT NULL show_parameters [BOOLEAN] NOT NULL show_plots [BOOLEAN] NOT NULL status [VARCHAR(9)] NOT NULL status_message [VARCHAR] token [VARCHAR] NOT NULL users--obj_analyses gcnevent_analyses gcnevent_analyses id [INTEGER] NOT NULL _full_name [VARCHAR] _unique_id [VARCHAR] NOT NULL analysis_parameters [TEXT] analysis_service_id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL duration [FLOAT] handled_by_url [VARCHAR] NOT NULL hash [VARCHAR] input_filters [TEXT] invalid_after [DATETIME] NOT NULL last_activity [DATETIME] modified [DATETIME] NOT NULL show_corner [BOOLEAN] NOT NULL show_parameters [BOOLEAN] NOT NULL show_plots [BOOLEAN] NOT NULL status [VARCHAR(9)] NOT NULL status_message [VARCHAR] token [VARCHAR] NOT NULL users--gcnevent_analyses default_analyses default_analyses id [INTEGER] NOT NULL analysis_resource_type [VARCHAR] NOT NULL analysis_service_id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL default_analysis_parameters [TEXT] modified [DATETIME] NOT NULL show_corner [BOOLEAN] NOT NULL show_parameters [BOOLEAN] NOT NULL show_plots [BOOLEAN] NOT NULL source_filter [JSONB] NOT NULL stats [JSONB] NOT NULL users--default_analyses annotations annotations id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] NOT NULL users--annotations annotations_on_spectra annotations_on_spectra id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] NOT NULL spectrum_id [INTEGER] NOT NULL users--annotations_on_spectra annotations_on_photometry annotations_on_photometry id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] NOT NULL photometry_id [BIGINT] NOT NULL users--annotations_on_photometry classicalassignments classicalassignments id [INTEGER] NOT NULL comment [VARCHAR] created_at [DATETIME] NOT NULL last_modified_by_id [INTEGER] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL priority [VARCHAR(1)] NOT NULL requester_id [INTEGER] NOT NULL run_id [INTEGER] NOT NULL status [VARCHAR] NOT NULL users--classicalassignments users--classicalassignments assistantmessages assistantmessages id [INTEGER] NOT NULL channel [VARCHAR] context_id [VARCHAR] context_type [VARCHAR] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL notify [JSONB] proposal [JSONB] system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL tool_calls [JSONB] user_id [INTEGER] NOT NULL users--assistantmessages assistantqueries assistantqueries id [INTEGER] NOT NULL active [BOOLEAN] NOT NULL analysis_service_match [VARCHAR] context_type [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL description [VARCHAR] dry_run [BOOLEAN] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL notify_groups [JSONB] owner_id [INTEGER] NOT NULL prompt [VARCHAR] NOT NULL users--assistantqueries assistantquerysubscriptions assistantquerysubscriptions id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL query_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--assistantquerysubscriptions brokercredentials brokercredentials id [INTEGER] NOT NULL _altdata [VARCHAR] broker_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL topic_filter_ids [JSONB] NOT NULL topics [JSONB] NOT NULL user_id [INTEGER] NOT NULL users--brokercredentials comments comments id [INTEGER] NOT NULL _attachment_path [VARCHAR] attachment_bytes [BLOB] attachment_name [VARCHAR] author_id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL channel [VARCHAR] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--comments comments_on_spectra comments_on_spectra id [INTEGER] NOT NULL _attachment_path [VARCHAR] attachment_bytes [BLOB] attachment_name [VARCHAR] author_id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL channel [VARCHAR] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] spectrum_id [INTEGER] NOT NULL system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--comments_on_spectra comments_on_gcns comments_on_gcns id [INTEGER] NOT NULL _attachment_path [VARCHAR] attachment_bytes [BLOB] attachment_name [VARCHAR] author_id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL channel [VARCHAR] created_at [DATETIME] NOT NULL gcn_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL origin [VARCHAR] system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--comments_on_gcns comments_on_earthquakes comments_on_earthquakes id [INTEGER] NOT NULL _attachment_path [VARCHAR] attachment_bytes [BLOB] attachment_name [VARCHAR] author_id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL channel [VARCHAR] created_at [DATETIME] NOT NULL earthquake_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL origin [VARCHAR] system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--comments_on_earthquakes comments_on_shifts comments_on_shifts id [INTEGER] NOT NULL _attachment_path [VARCHAR] attachment_bytes [BLOB] attachment_name [VARCHAR] author_id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL channel [VARCHAR] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL origin [VARCHAR] shift_id [INTEGER] NOT NULL system [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--comments_on_shifts data_access_requests data_access_requests id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data_type [VARCHAR(10)] NOT NULL filter [VARCHAR] granted_group_id [INTEGER] instrument_id [INTEGER] message [VARCHAR] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL owner_group_ids [ARRAY] NOT NULL owner_id [INTEGER] NOT NULL requester_id [INTEGER] NOT NULL responded_by_id [INTEGER] spectrum_id [INTEGER] status [VARCHAR(8)] NOT NULL users--data_access_requests users--data_access_requests users--data_access_requests earthquakenotices earthquakenotices id [INTEGER] NOT NULL content [BLOB] country [VARCHAR] created_at [DATETIME] NOT NULL date [DATETIME] NOT NULL depth [FLOAT] NOT NULL event_id [VARCHAR] NOT NULL lat [FLOAT] NOT NULL lon [FLOAT] NOT NULL magnitude [FLOAT] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL users--earthquakenotices earthquakeevents earthquakeevents id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL event_id [VARCHAR] NOT NULL event_uri [TEXT] modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL status [VARCHAR] NOT NULL users--earthquakeevents facilitytransactions facilitytransactions id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL followup_request_id [INTEGER] initiator_id [INTEGER] modified [DATETIME] NOT NULL observation_plan_request_id [INTEGER] request [JSONB] response [JSONB] users--facilitytransactions facilitytransactionrequests facilitytransactionrequests id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] endpoint [VARCHAR] NOT NULL followup_request_id [INTEGER] headers [JSONB] initiator_id [INTEGER] last_query [DATETIME] NOT NULL method [VARCHAR] NOT NULL modified [DATETIME] NOT NULL observation_plan_request_id [INTEGER] params [JSONB] status [VARCHAR] NOT NULL users--facilitytransactionrequests feedbacks feedbacks id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL category [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL resolved [BOOLEAN] NOT NULL text [VARCHAR] NOT NULL users--feedbacks feedback_replies feedback_replies id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL feedback_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL text [VARCHAR] NOT NULL users--feedback_replies sharingservicecoauthors sharingservicecoauthors id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL order [INTEGER] NOT NULL sharing_service_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--sharingservicecoauthors sharingservicesubmissions sharingservicesubmissions id [INTEGER] NOT NULL archival [BOOLEAN] NOT NULL archival_comment [VARCHAR] auto_submission [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL custom_publishing_string [VARCHAR] custom_remarks_string [VARCHAR] hermes_response [JSONB] hermes_status [VARCHAR] instrument_ids [ARRAY] modified [DATETIME] NOT NULL mpc_payload [JSONB] mpc_response [JSONB] mpc_status [VARCHAR] mpc_submission_id [VARCHAR] obj_id [VARCHAR] NOT NULL photometry_options [JSONB] publish_to_hermes [BOOLEAN] NOT NULL publish_to_mpc [BOOLEAN] NOT NULL publish_to_tns [BOOLEAN] NOT NULL sharing_service_id [INTEGER] NOT NULL stream_ids [ARRAY] tns_payload [JSONB] tns_response [JSONB] tns_status [VARCHAR] tns_submission_id [INTEGER] user_id [INTEGER] NOT NULL users--sharingservicesubmissions defaultfollowuprequests defaultfollowuprequests id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL comment [VARCHAR] constraints [JSONB] created_at [DATETIME] NOT NULL default_followup_name [VARCHAR] NOT NULL implements_update [BOOLEAN] modified [DATETIME] NOT NULL payload [JSONB] NOT NULL priority_order [VARCHAR] requester_id [INTEGER] source_filter [JSONB] NOT NULL validity_days [INTEGER] users--defaultfollowuprequests followuprequests followuprequests id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL comment [VARCHAR] created_at [DATETIME] NOT NULL last_modified_by_id [INTEGER] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] status [VARCHAR] NOT NULL users--followuprequests users--followuprequests followup_request_users followup_request_users id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL followuprequest_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL users--followup_request_users localizations localizations id [INTEGER] NOT NULL _localization_path [VARCHAR] contour [JSONB] created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL distmu [ARRAY] distnorm [ARRAY] distsigma [ARRAY] localization_name [VARCHAR] modified [DATETIME] NOT NULL notice_id [INTEGER] probdensity [ARRAY] NOT NULL sent_by_id [INTEGER] NOT NULL uniq [ARRAY] NOT NULL users--localizations localizationpropertys localizationpropertys id [INTEGER] NOT NULL localization_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL users--localizationpropertys localizationtags localizationtags id [INTEGER] NOT NULL localization_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL text [VARCHAR] NOT NULL users--localizationtags default_gcntags default_gcntags id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL default_tag_name [VARCHAR] NOT NULL filters [JSONB] modified [DATETIME] NOT NULL requester_id [INTEGER] users--default_gcntags gcnreports gcnreports id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL dateobs [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL published [BOOLEAN] NOT NULL report_name [VARCHAR] NOT NULL sent_by_id [INTEGER] NOT NULL users--gcnreports gcnsummarys gcnsummarys id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL text [VARCHAR] NOT NULL title [VARCHAR] NOT NULL users--gcnsummarys gcnnotices gcnnotices id [INTEGER] NOT NULL content [BLOB] NOT NULL created_at [DATETIME] NOT NULL date [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL has_localization [BOOLEAN] NOT NULL ivorn [VARCHAR] localization_ingested [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL notice_format [VARCHAR] notice_type [VARCHAR] sent_by_id [INTEGER] NOT NULL stream [VARCHAR] NOT NULL users--gcnnotices gcnpropertys gcnpropertys id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] dateobs [DATETIME] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL users--gcnpropertys gcneventextractions gcneventextractions id [INTEGER] NOT NULL circular_created_at [DATETIME] circular_id [INTEGER] created_at [DATETIME] NOT NULL data [JSONB] NOT NULL dateobs [DATETIME] NOT NULL modified [DATETIME] NOT NULL origin [VARCHAR] NOT NULL sent_by_id [INTEGER] NOT NULL users--gcneventextractions gcntags gcntags id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL text [VARCHAR] NOT NULL users--gcntags gcnevents gcnevents id [INTEGER] NOT NULL aliases [ARRAY] NOT NULL circulars [JSONB] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL gracedb_labels [JSONB] NOT NULL gracedb_log [JSONB] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL summary [VARCHAR] summary_history [JSONB] tach_id [VARCHAR] trigger_id [VARCHAR] users--gcnevents gcnevent_users gcnevent_users id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL gcnevent_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL users--gcnevent_users gcneventassociations gcneventassociations id [INTEGER] NOT NULL confirmer_id [INTEGER] NOT NULL consistency [FLOAT] created_at [DATETIME] NOT NULL dateobs_1 [DATETIME] NOT NULL dateobs_2 [DATETIME] NOT NULL dt_days [FLOAT] NOT NULL explanation [VARCHAR] modified [DATETIME] NOT NULL overlap [FLOAT] NOT NULL status [VARCHAR(9)] NOT NULL users--gcneventassociations gcneventobjs gcneventobjs id [INTEGER] NOT NULL confirmer_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL explanation [VARCHAR] modified [DATETIME] NOT NULL notes [VARCHAR] obj_id [VARCHAR] NOT NULL status [VARCHAR(9)] NOT NULL users--gcneventobjs detector_spectra detector_spectra id [INTEGER] NOT NULL amplitudes [ARRAY] NOT NULL created_at [DATETIME] NOT NULL detector_id [INTEGER] NOT NULL end_time [DATETIME] NOT NULL frequencies [ARRAY] NOT NULL modified [DATETIME] NOT NULL original_file_filename [VARCHAR] original_file_string [VARCHAR] owner_id [INTEGER] NOT NULL start_time [DATETIME] NOT NULL users--detector_spectra mmadetectortimeintervals mmadetectortimeintervals id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL detector_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL owner_id [INTEGER] NOT NULL time_interval [VARCHAR(255)] users--mmadetectortimeintervals observingruns observingruns id [INTEGER] NOT NULL calendar_date [DATE] NOT NULL created_at [DATETIME] NOT NULL duration [INTEGER] group_id [INTEGER] instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observers [VARCHAR] owner_id [INTEGER] NOT NULL pi [VARCHAR] run_end_utc [DATETIME] users--observingruns reminders reminders id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL next_reminder [DATETIME] NOT NULL number_of_reminders [INTEGER] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] reminder_delay [FLOAT] NOT NULL text [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--reminders reminders_on_spectra reminders_on_spectra id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL next_reminder [DATETIME] NOT NULL number_of_reminders [INTEGER] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] reminder_delay [FLOAT] NOT NULL spectrum_id [INTEGER] NOT NULL text [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--reminders_on_spectra reminders_on_gcns reminders_on_gcns id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL gcn_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL next_reminder [DATETIME] NOT NULL number_of_reminders [INTEGER] NOT NULL origin [VARCHAR] reminder_delay [FLOAT] NOT NULL text [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--reminders_on_gcns reminders_on_earthquakes reminders_on_earthquakes id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL earthquake_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL next_reminder [DATETIME] NOT NULL number_of_reminders [INTEGER] NOT NULL origin [VARCHAR] reminder_delay [FLOAT] NOT NULL text [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--reminders_on_earthquakes reminders_on_shifts reminders_on_shifts id [INTEGER] NOT NULL bot [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL next_reminder [DATETIME] NOT NULL number_of_reminders [INTEGER] NOT NULL origin [VARCHAR] reminder_delay [FLOAT] NOT NULL shift_id [INTEGER] NOT NULL text [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--reminders_on_shifts scanreports scanreports id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL options [JSONB] NOT NULL users--scanreports sourcenotifications sourcenotifications id [INTEGER] NOT NULL additional_notes [VARCHAR] created_at [DATETIME] NOT NULL level [VARCHAR] NOT NULL modified [DATETIME] NOT NULL sent_by_id [INTEGER] NOT NULL source_id [VARCHAR] NOT NULL users--sourcenotifications stream_users stream_users id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL stream_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--stream_users survey_efficiency_for_observations survey_efficiency_for_observations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL gcnevent_id [INTEGER] NOT NULL instrument_id [INTEGER] NOT NULL lightcurves [JSONB] localization_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] NOT NULL status [VARCHAR] NOT NULL users--survey_efficiency_for_observations survey_efficiency_for_observation_plans survey_efficiency_for_observation_plans id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL lightcurves [JSONB] modified [DATETIME] NOT NULL observation_plan_id [INTEGER] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] NOT NULL status [VARCHAR] NOT NULL users--survey_efficiency_for_observation_plans listings listings id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL list_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL params [JSONB] user_id [INTEGER] NOT NULL users--listings defaultobservationplanrequests defaultobservationplanrequests id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL auto_send [BOOLEAN] created_at [DATETIME] NOT NULL default_plan_name [VARCHAR] NOT NULL filters [JSONB] modified [DATETIME] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] users--defaultobservationplanrequests observationplanrequests observationplanrequests id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL combined_id [VARCHAR] created_at [DATETIME] NOT NULL default_plan [BOOLEAN] gcnevent_id [INTEGER] NOT NULL last_modified_by_id [INTEGER] localization_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] status [VARCHAR] NOT NULL users--observationplanrequests users--observationplanrequests photometryvalidations photometryvalidations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL explanation [VARCHAR] modified [DATETIME] NOT NULL notes [VARCHAR] photometry_id [BIGINT] NOT NULL validated [BOOLEAN] validator_id [INTEGER] NOT NULL users--photometryvalidations recurringapis recurringapis id [INTEGER] NOT NULL active [BOOLEAN] NOT NULL call_delay [FLOAT] NOT NULL created_at [DATETIME] NOT NULL endpoint [VARCHAR] NOT NULL method [VARCHAR] NOT NULL modified [DATETIME] NOT NULL next_call [DATETIME] NOT NULL number_of_retries [INTEGER] NOT NULL owner_id [INTEGER] payload [JSONB] NOT NULL users--recurringapis shift_users shift_users id [INTEGER] NOT NULL admin [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL needs_replacement [BOOLEAN] NOT NULL shift_id [INTEGER] NOT NULL user_id [INTEGER] NOT NULL users--shift_users source_interests source_interests id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL description [VARCHAR] link [VARCHAR] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL title [VARCHAR] NOT NULL user_id [INTEGER] NOT NULL users--source_interests sourcelabels sourcelabels id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL labeller_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL users--sourcelabels obj_tags obj_tags id [INTEGER] NOT NULL author_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL objtagoption_id [INTEGER] NOT NULL users--obj_tags termsofserviceacceptances termsofserviceacceptances id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL user_id [INTEGER] NOT NULL version [VARCHAR] NOT NULL users--termsofserviceacceptances users--userapplications users--userapplications usernotifications usernotifications id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL notification_type [VARCHAR] text [VARCHAR] NOT NULL url [VARCHAR] user_id [INTEGER] NOT NULL viewed [BOOLEAN] NOT NULL users--usernotifications catalog_queries catalog_queries id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL payload [JSONB] NOT NULL requester_id [INTEGER] status [VARCHAR] NOT NULL users--catalog_queries users--user_invitations tokens--token_acls sharingservicegroupautopublishers sharingservicegroupautopublishers id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_user_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL sharing_service_group_id [INTEGER] NOT NULL group_users--sharingservicegroupautopublishers classifications--classificationedits classifications--classificationvotes group_classifications group_classifications id [INTEGER] NOT NULL classification_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL classifications--group_classifications photometry--annotations_on_photometry photometry--photometryvalidations group_photometry group_photometry group_id [INTEGER] NOT NULL photometr_id [BIGINT] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL photometry--group_photometry stream_photometry stream_photometry photometr_id [BIGINT] NOT NULL stream_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL photometry--stream_photometry group_photometric_series group_photometric_series id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL photometric_serie_id [INTEGER] NOT NULL photometric_series--group_photometric_series stream_photometric_series stream_photometric_series id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL photometric_serie_id [INTEGER] NOT NULL stream_id [INTEGER] NOT NULL photometric_series--stream_photometric_series spectra--spectrum_pis spectra--spectrum_reducers spectra--spectrum_observers spectra--annotations_on_spectra spectra--comments_on_spectra spectra--data_access_requests spectra--reminders_on_spectra group_spectra group_spectra id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL spectr_id [INTEGER] NOT NULL spectra--group_spectra group_obj_analyses group_obj_analyses id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obj_analyse_id [INTEGER] NOT NULL obj_analyses--group_obj_analyses group_gcnevent_analyses group_gcnevent_analyses id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL gcnevent_analyse_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL gcnevent_analyses--group_gcnevent_analyses group_default_analyses group_default_analyses id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL default_analyse_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL default_analyses--group_default_analyses group_annotations group_annotations id [INTEGER] NOT NULL annotation_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL annotations--group_annotations group_annotations_on_spectra group_annotations_on_spectra id [INTEGER] NOT NULL annotations_on_spectr_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL annotations_on_spectra--group_annotations_on_spectra group_annotations_on_photometry group_annotations_on_photometry id [INTEGER] NOT NULL annotations_on_photometr_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL annotations_on_photometry--group_annotations_on_photometry classicalassignments--photometry classicalassignments--photometric_series classicalassignments--spectra assistantqueries--assistantquerysubscriptions group_comments group_comments id [INTEGER] NOT NULL comment_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL comments--group_comments group_comments_on_spectra group_comments_on_spectra id [INTEGER] NOT NULL comments_on_spectr_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL comments_on_spectra--group_comments_on_spectra group_comments_on_gcns group_comments_on_gcns id [INTEGER] NOT NULL comments_on_gcn_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL comments_on_gcns--group_comments_on_gcns group_comments_on_earthquakes group_comments_on_earthquakes id [INTEGER] NOT NULL comments_on_earthquake_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL comments_on_earthquakes--group_comments_on_earthquakes group_comments_on_shifts group_comments_on_shifts id [INTEGER] NOT NULL comments_on_shift_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL comments_on_shifts--group_comments_on_shifts earthquakeevents--comments_on_earthquakes earthquakeevents--earthquakenotices earthquakeevents--reminders_on_earthquakes earthquakepredictions earthquakepredictions id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL d [FLOAT] NOT NULL detector_id [INTEGER] NOT NULL event_id [INTEGER] NOT NULL lockloss [FLOAT] NOT NULL modified [DATETIME] NOT NULL p [DATETIME] NOT NULL r2p0 [DATETIME] NOT NULL r3p5 [DATETIME] NOT NULL r5p0 [DATETIME] NOT NULL rfamp [FLOAT] NOT NULL s [DATETIME] NOT NULL earthquakeevents--earthquakepredictions earthquakemeasureds earthquakemeasureds id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL detector_id [INTEGER] NOT NULL event_id [INTEGER] NOT NULL lockloss [INTEGER] modified [DATETIME] NOT NULL rfamp [FLOAT] earthquakeevents--earthquakemeasureds feedbacks--feedback_replies default_followup_groups default_followup_groups id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL defaultfollowuprequest_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL defaultfollowuprequests--default_followup_groups followuprequests--photometry followuprequests--photometric_series followuprequests--spectra followuprequests--facilitytransactions followuprequests--facilitytransactionrequests followuprequests--followup_request_users request_groups request_groups id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL followuprequest_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL followuprequests--request_groups localizations--localizationpropertys localizations--localizationtags localizations--survey_efficiency_for_observations localizations--observationplanrequests gcnevent_crossmatch_states gcnevent_crossmatch_states id [INTEGER] NOT NULL archival_done [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL error [VARCHAR] filter_id [INTEGER] NOT NULL gcnevent_id [INTEGER] NOT NULL last_alert_jd [FLOAT] last_queried [DATETIME] localization_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL n_matches [INTEGER] NOT NULL status [VARCHAR] NOT NULL localizations--gcnevent_crossmatch_states localizationtiles localizationtiles dateobs [DATETIME] NOT NULL healpix [INT8RANGE] NOT NULL id [INTEGER] NOT NULL localization_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL probdensity [FLOAT] NOT NULL localizations--localizationtiles localizationtiles_def localizationtiles_def dateobs [DATETIME] NOT NULL healpix [INT8RANGE] NOT NULL id [INTEGER] NOT NULL localization_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL probdensity [FLOAT] NOT NULL localizations--localizationtiles_def event_observation_plan_statistics event_observation_plan_statistics id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL localization_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observation_plan_id [INTEGER] NOT NULL statistics [JSONB] NOT NULL localizations--event_observation_plan_statistics gcnnotices--localizations gcnevents--gcnevent_analyses gcnevents--comments_on_gcns gcnevents--localizations gcnevents--gcnreports gcnevents--gcnsummarys gcnevents--gcnnotices gcnevents--gcnpropertys gcnevents--gcneventextractions gcnevents--gcntags gcnevents--gcnevent_users gcnevents--gcneventassociations gcnevents--gcneventassociations gcnevents--gcneventobjs gcnevents--reminders_on_gcns gcnevents--survey_efficiency_for_observations gcnevents--observationplanrequests group_gcnevents group_gcnevents id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL gcnevent_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL gcnevents--group_gcnevents gcntriggers gcntriggers id [INTEGER] NOT NULL allocation_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL modified [DATETIME] NOT NULL triggered [BOOLEAN] NOT NULL gcnevents--gcntriggers gcnevents--gcnevent_crossmatch_states plannedobservations plannedobservations field_id [INTEGER] NOT NULL id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL exposure_time [INTEGER] NOT NULL filt [VARCHAR] NOT NULL instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observation_plan_id [INTEGER] NOT NULL obstime [DATETIME] NOT NULL overhead_per_exposure [INTEGER] NOT NULL planned_observation_id [INTEGER] NOT NULL weight [FLOAT] NOT NULL gcnevents--plannedobservations eventobservationplans eventobservationplans id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dateobs [DATETIME] NOT NULL instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observation_plan_request_id [INTEGER] NOT NULL plan_name [VARCHAR] status [VARCHAR] NOT NULL validity_window_end [DATETIME] NOT NULL validity_window_start [DATETIME] NOT NULL gcnevents--eventobservationplans gcnevents_mmadetectors gcnevents_mmadetectors id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL gcnevent_id [INTEGER] NOT NULL mmadetector_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL gcnevents--gcnevents_mmadetectors group_mmadetector_spectra group_mmadetector_spectra id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL detector_spectr_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL detector_spectra--group_mmadetector_spectra group_mmadetector_time_intervals group_mmadetector_time_intervals id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL mmadetectortimeinterval_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL mmadetectortimeintervals--group_mmadetector_time_intervals observingruns--classicalassignments group_observingruns group_observingruns id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observingrun_id [INTEGER] NOT NULL observingruns--group_observingruns group_reminders group_reminders id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL reminder_id [INTEGER] NOT NULL reminders--group_reminders group_reminders_on_spectra group_reminders_on_spectra id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL reminders_on_spectr_id [INTEGER] NOT NULL reminders_on_spectra--group_reminders_on_spectra group_reminders_on_gcns group_reminders_on_gcns id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL reminders_on_gcn_id [INTEGER] NOT NULL reminders_on_gcns--group_reminders_on_gcns group_reminders_on_earthquakes group_reminders_on_earthquakes id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL reminders_on_earthquake_id [INTEGER] NOT NULL reminders_on_earthquakes--group_reminders_on_earthquakes group_reminders_on_shifts group_reminders_on_shifts id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL reminders_on_shift_id [INTEGER] NOT NULL reminders_on_shifts--group_reminders_on_shifts group_scan_reports group_scan_reports id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL scanreport_id [INTEGER] NOT NULL scanreports--group_scan_reports scanreportitems scanreportitems id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL scan_report_id [INTEGER] NOT NULL scanreports--scanreportitems group_notifications group_notifications id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL sourcenotification_id [INTEGER] NOT NULL sourcenotifications--group_notifications group_survey_efficiency_for_observations group_survey_efficiency_for_observations id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL survey_efficiency_for_observation_id [INTEGER] NOT NULL survey_efficiency_for_observations--group_survey_efficiency_for_observations group_survey_efficiency_for_observation_plan group_survey_efficiency_for_observation_plan id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL survey_efficiency_for_observation_plan_id [INTEGER] NOT NULL survey_efficiency_for_observation_plans--group_survey_efficiency_for_observation_plan default_observationplan_groups default_observationplan_groups id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL defaultobservationplanrequest_id [INTEGER] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL defaultobservationplanrequests--default_observationplan_groups defaultsurveyefficiencyrequests defaultsurveyefficiencyrequests id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL default_observationplan_request_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL payload [JSONB] NOT NULL defaultobservationplanrequests--defaultsurveyefficiencyrequests observationplanrequests--facilitytransactions observationplanrequests--facilitytransactionrequests observationplan_groups observationplan_groups id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL observationplanrequest_id [INTEGER] NOT NULL observationplanrequests--observationplan_groups observationplanrequests--eventobservationplans group_obj_tags group_obj_tags id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obj_tag_id [INTEGER] NOT NULL obj_tags--group_obj_tags catalog_queries_groups catalog_queries_groups id [INTEGER] NOT NULL catalog_querie_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL catalog_queries--catalog_queries_groups cronjobruns cronjobruns id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL exit_status [INTEGER] modified [DATETIME] NOT NULL output [VARCHAR] script [VARCHAR] NOT NULL groups groups id [INTEGER] NOT NULL auto_accept_requests [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL description [TEXT] discoverable_data [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL nickname [VARCHAR] private [BOOLEAN] NOT NULL single_user_group [BOOLEAN] groups--group_users groups--groupadmissionrequests groups--sources groups--assistantqueries groups--data_access_requests groups--gcnreports groups--gcnsummarys groups--observingruns groups--sourcelabels allocations allocations id [INTEGER] NOT NULL _altdata [VARCHAR] created_at [DATETIME] NOT NULL default_share_group_ids [ARRAY] group_id [INTEGER] NOT NULL hours_allocated [FLOAT] NOT NULL instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL pi [VARCHAR] proposal_id [VARCHAR] types [ARRAY] NOT NULL validity_ranges [JSONB] groups--allocations filters filters id [INTEGER] NOT NULL altdata [JSONB] autosave [BOOLEAN] NOT NULL broker_id [INTEGER] created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL stream_id [INTEGER] NOT NULL groups--filters sharingservicegroups sharingservicegroups id [INTEGER] NOT NULL auto_share_to_hermes [BOOLEAN] NOT NULL auto_share_to_mpc [BOOLEAN] NOT NULL auto_share_to_tns [BOOLEAN] NOT NULL auto_sharing_allow_bots [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL owner [BOOLEAN] NOT NULL sharing_service_id [INTEGER] NOT NULL groups--sharingservicegroups groups--default_followup_groups groups--request_groups gcnassociationrules gcnassociationrules id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL days [FLOAT] NOT NULL detector_type_1 [VARCHAR(18)] NOT NULL detector_type_2 [VARCHAR(18)] NOT NULL group_id [INTEGER] NOT NULL min_consistency [FLOAT] NOT NULL modified [DATETIME] NOT NULL tags_1 [ARRAY] NOT NULL tags_2 [ARRAY] NOT NULL groups--gcnassociationrules groups--group_obj_analyses groups--group_gcnevent_analyses group_analysisservices group_analysisservices id [INTEGER] NOT NULL analysis_service_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL groups--group_analysisservices groups--group_default_analyses group_taxonomy group_taxonomy id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL taxonomie_id [INTEGER] NOT NULL groups--group_taxonomy groups--group_comments groups--group_reminders groups--group_survey_efficiency_for_observation_plan groups--group_survey_efficiency_for_observations groups--group_annotations groups--group_classifications groups--group_photometry groups--group_photometric_series groups--group_mmadetector_spectra groups--group_mmadetector_time_intervals groups--group_spectra groups--group_comments_on_spectra groups--group_reminders_on_spectra groups--group_annotations_on_spectra groups--group_annotations_on_photometry groups--group_comments_on_gcns groups--group_reminders_on_gcns groups--group_comments_on_shifts groups--group_reminders_on_shifts groups--group_comments_on_earthquakes groups--group_reminders_on_earthquakes groups--group_invitations groups--group_notifications group_streams group_streams id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL stream_id [INTEGER] NOT NULL groups--group_streams group_public_releases group_public_releases id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL publicrelease_id [INTEGER] NOT NULL groups--group_public_releases groups--group_scan_reports groups--group_gcnevents groups--group_observingruns groups--default_observationplan_groups groups--observationplan_groups shifts shifts id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL description [TEXT] end_date [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] required_users_number [INTEGER] start_date [DATETIME] NOT NULL groups--shifts groups--group_obj_tags group_teams group_teams id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL group_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL team_id [INTEGER] NOT NULL groups--group_teams groups--catalog_queries_groups allocations--allocation_users allocations--defaultfollowuprequests allocations--followuprequests allocations--defaultobservationplanrequests allocations--observationplanrequests allocations--catalog_queries allocations--gcntriggers filters--candidates filters--gcnevent_crossmatch_states sharingservicegroups--sharingservicegroupautopublishers shifts--comments_on_shifts shifts--reminders_on_shifts shifts--shift_users taxonomies taxonomies id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL hierarchy [JSONB] NOT NULL isLatest [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL provenance [VARCHAR] version [VARCHAR] NOT NULL taxonomies--classifications taxonomies--group_taxonomy thumbnails thumbnails id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL file_uri [VARCHAR] is_grayscale [BOOLEAN] modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL origin [VARCHAR] public_url [VARCHAR] survey [VARCHAR] type [VARCHAR(7)] objs objs id [VARCHAR] NOT NULL alias [ARRAY] altdata [JSONB] created_at [DATETIME] NOT NULL dec [FLOAT] dec_dis [FLOAT] dec_err [FLOAT] detect_photometry_count [INTEGER] dist_nearest_source [FLOAT] e_mag_nearest_source [FLOAT] healpix [BIGINT] host_id [INTEGER] internal_key [VARCHAR] NOT NULL is_roid [BOOLEAN] mag_nearest_source [FLOAT] modified [DATETIME] NOT NULL mpc_name [VARCHAR] offset [FLOAT] origin [VARCHAR] ra [FLOAT] ra_dis [FLOAT] ra_err [FLOAT] redshift [FLOAT] redshift_error [FLOAT] redshift_history [JSONB] redshift_origin [VARCHAR] score [FLOAT] summary [VARCHAR] summary_history [JSONB] t0 [FLOAT] tns_info [JSONB] tns_name [VARCHAR] transient [BOOLEAN] varstar [BOOLEAN] objs--classifications objs--candidates objs--photometry objs--photometric_series objs--spectra objs--sources objs--obj_analyses objs--annotations objs--annotations_on_spectra objs--annotations_on_photometry objs--classicalassignments objs--comments objs--comments_on_spectra objs--data_access_requests objs--sharingservicesubmissions objs--followuprequests objs--gcneventobjs objs--reminders objs--reminders_on_spectra objs--sourcenotifications objs--listings objs--source_interests objs--sourcelabels objs--obj_tags objs--thumbnails photstats photstats id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL decay_rate [FLOAT] deepest_limit_global [FLOAT] deepest_limit_per_filter [JSONB] faintest_mag_global [FLOAT] faintest_mag_per_filter [JSONB] first_detected_filter [VARCHAR] first_detected_mag [FLOAT] first_detected_mjd [FLOAT] first_detected_no_forced_phot_filter [VARCHAR] first_detected_no_forced_phot_mag [FLOAT] first_detected_no_forced_phot_mjd [FLOAT] last_detected_filter [VARCHAR] last_detected_mag [FLOAT] last_detected_mjd [FLOAT] last_detected_no_forced_phot_filter [VARCHAR] last_detected_no_forced_phot_mag [FLOAT] last_detected_no_forced_phot_mjd [FLOAT] last_full_update [DATETIME] last_non_detection_mjd [FLOAT] last_update [DATETIME] mag_rms_global [FLOAT] mag_rms_per_filter [JSONB] mean_color [JSONB] mean_mag_global [FLOAT] mean_mag_per_filter [JSONB] modified [DATETIME] NOT NULL num_det_global [INTEGER] NOT NULL num_det_no_forced_phot_global [INTEGER] NOT NULL num_det_per_filter [JSONB] num_obs_global [INTEGER] NOT NULL num_obs_per_filter [JSONB] obj_id [VARCHAR] NOT NULL peak_mag_global [FLOAT] peak_mag_per_filter [JSONB] peak_mjd_global [FLOAT] peak_mjd_per_filter [JSONB] predetection_mjds [ARRAY] recent_obs_mjd [FLOAT] rise_rate [FLOAT] time_to_non_detection [FLOAT] objs--photstats objs--scanreportitems sourceviews sourceviews id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL is_token [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL obj_id [VARCHAR] NOT NULL username_or_token_id [VARCHAR] NOT NULL objs--sourceviews summary_embeddings summary_embeddings obj_id [TEXT] NOT NULL created_at [DATETIME] NOT NULL embedding [vector] NOT NULL model [TEXT] NOT NULL modified [DATETIME] NOT NULL objs--summary_embeddings obj_to_super_obj obj_to_super_obj id [INTEGER] NOT NULL obj_id [VARCHAR] NOT NULL super_obj_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL objs--obj_to_super_obj analysis_services analysis_services id [INTEGER] NOT NULL _authinfo [VARCHAR] analysis_type [VARCHAR(18)] NOT NULL authentication_type [VARCHAR(14)] NOT NULL contact_email [VARCHAR(255)] contact_name [VARCHAR] created_at [DATETIME] NOT NULL description [VARCHAR] display_name [VARCHAR] NOT NULL display_on_resource_dropdown [BOOLEAN] enabled [BOOLEAN] NOT NULL input_data_types [ARRAY] is_summary [BOOLEAN] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL optional_analysis_parameters [TEXT] timeout [FLOAT] upload_only [BOOLEAN] url [TEXT] NOT NULL version [VARCHAR] analysis_services--obj_analyses analysis_services--gcnevent_analyses analysis_services--default_analyses analysis_services--group_analysisservices brokers brokers id [INTEGER] NOT NULL _altdata [VARCHAR] active [BOOLEAN] NOT NULL broker_classname [VARCHAR(16)] NOT NULL created_at [DATETIME] NOT NULL default_alert_search [BOOLEAN] NOT NULL default_crossmatch [BOOLEAN] NOT NULL default_photometry [BOOLEAN] NOT NULL ingest [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL brokers--brokercredentials brokers--filters deployments deployments id [INTEGER] NOT NULL commit [JSONB] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL version [VARCHAR] NOT NULL sharingservices sharingservices id [INTEGER] NOT NULL _mpc_altdata [VARCHAR] _tns_altdata [VARCHAR] acknowledgments [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL enable_sharing_with_hermes [BOOLEAN] NOT NULL enable_sharing_with_tns [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL photometry_options [JSONB] publish_existing_tns_objects [BOOLEAN] testing [BOOLEAN] NOT NULL tns_bot_id [INTEGER] tns_bot_name [VARCHAR] tns_source_group_id [INTEGER] sharingservices--sharingservicecoauthors sharingservices--sharingservicesubmissions sharingservices--sharingservicegroups instrument_sharingservices instrument_sharingservices id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL sharing_service_id [INTEGER] NOT NULL sharingservices--instrument_sharingservices stream_sharingservices stream_sharingservices id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL sharing_service_id [INTEGER] NOT NULL stream_id [INTEGER] NOT NULL sharingservices--stream_sharingservices instrumentfields instrumentfields id [INTEGER] NOT NULL contour [JSONB] NOT NULL contour_summary [JSONB] NOT NULL created_at [DATETIME] NOT NULL dec [FLOAT] field_id [INTEGER] instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL ra [FLOAT] reference_filter_mags [ARRAY] reference_filters [ARRAY] instrumentfieldtiles instrumentfieldtiles healpix [INT8RANGE] NOT NULL id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL instrument_field_id [INTEGER] NOT NULL instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL instrumentfields--instrumentfieldtiles executedobservations executedobservations id [INTEGER] NOT NULL instrument_field_id [INTEGER] NOT NULL observation_id [BIGINT] NOT NULL airmass [FLOAT] created_at [DATETIME] NOT NULL exposure_time [INTEGER] NOT NULL filt [VARCHAR] instrument_id [INTEGER] NOT NULL limmag [FLOAT] modified [DATETIME] NOT NULL obstime [DATETIME] NOT NULL processed_fraction [FLOAT] NOT NULL seeing [FLOAT] target_name [VARCHAR] instrumentfields--executedobservations queuedobservations queuedobservations id [INTEGER] NOT NULL instrument_field_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL exposure_time [INTEGER] NOT NULL filt [VARCHAR] instrument_id [INTEGER] NOT NULL modified [DATETIME] NOT NULL obstime [DATETIME] NOT NULL queue_name [VARCHAR] validity_window_end [DATETIME] validity_window_start [DATETIME] instrumentfields--queuedobservations instrumentfields--plannedobservations instrumentlogs instrumentlogs id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL end_date [DATETIME] NOT NULL instrument_id [INTEGER] NOT NULL log [JSONB] NOT NULL modified [DATETIME] NOT NULL start_date [DATETIME] NOT NULL instruments instruments id [INTEGER] NOT NULL acknowledgment [VARCHAR] across_id [VARCHAR] api_classname [VARCHAR(17)] api_classname_obsplan [VARCHAR(17)] band [VARCHAR] configuration_data [JSONB] created_at [DATETIME] NOT NULL filters [ArrayOfEnum (220 values)] NOT NULL has_fields [BOOLEAN] NOT NULL has_region [BOOLEAN] NOT NULL last_status_update [DATETIME] listener_classname [VARCHAR(12)] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL region [VARCHAR] sensitivity_data [JSONB] status [JSONB] telescope_id [INTEGER] NOT NULL tns_id [INTEGER] treasuremap_id [INTEGER] type [VARCHAR(20)] NOT NULL instruments--photometry instruments--photometric_series instruments--spectra instruments--data_access_requests instruments--observingruns instruments--survey_efficiency_for_observations instruments--allocations instruments--instrument_sharingservices instruments--instrumentfields instruments--instrumentfieldtiles instruments--executedobservations instruments--queuedobservations instruments--plannedobservations instruments--instrumentlogs instruments--eventobservationplans eventobservationplans--survey_efficiency_for_observation_plans eventobservationplans--plannedobservations eventobservationplans--event_observation_plan_statistics galaxycatalogs galaxycatalogs id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL description [VARCHAR] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL url [VARCHAR] galaxys galaxys id [INTEGER] NOT NULL a [FLOAT] alt_name [VARCHAR] b2a [FLOAT] btc [FLOAT] catalog_id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL dec [FLOAT] distmpc [FLOAT] distmpc_unc [FLOAT] healpix [BIGINT] mag_fuv [FLOAT] mag_nuv [FLOAT] mag_w1 [FLOAT] mag_w2 [FLOAT] mag_w3 [FLOAT] mag_w4 [FLOAT] magb [FLOAT] magk [FLOAT] modified [DATETIME] NOT NULL mstar [FLOAT] name [VARCHAR] NOT NULL pa [FLOAT] ra [FLOAT] redshift [FLOAT] redshift_error [FLOAT] sfr_fuv [FLOAT] sfr_w4 [FLOAT] galaxycatalogs--galaxys galaxys--objs mmadetectors mmadetectors id [INTEGER] NOT NULL aliases [ARRAY] NOT NULL created_at [DATETIME] NOT NULL elevation [FLOAT] fixed_location [BOOLEAN] NOT NULL lat [FLOAT] lon [FLOAT] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL nickname [VARCHAR] NOT NULL type [VARCHAR(18)] NOT NULL mmadetectors--detector_spectra mmadetectors--mmadetectortimeintervals mmadetectors--earthquakepredictions mmadetectors--earthquakemeasureds mmadetectors--gcnevents_mmadetectors publicreleases publicreleases id [INTEGER] NOT NULL auto_publish_enabled [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL description [VARCHAR] NOT NULL is_visible [BOOLEAN] NOT NULL link_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL options [JSON] NOT NULL publicreleases--group_public_releases publicsourcepages publicsourcepages id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL hash [VARCHAR] NOT NULL is_auto_published [BOOLEAN] NOT NULL is_visible [BOOLEAN] NOT NULL modified [DATETIME] NOT NULL release_id [INTEGER] source_id [VARCHAR] NOT NULL publicreleases--publicsourcepages streams streams id [INTEGER] NOT NULL altdata [JSONB] auto_join [BOOLEAN] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL streams--stream_users streams--filters streams--group_streams streams--stream_photometry streams--stream_photometric_series streams--stream_sharingservices streams--stream_invitations spatial_catalogs spatial_catalogs id [INTEGER] NOT NULL catalog_name [VARCHAR] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL spatial_catalog_entries spatial_catalog_entries catalog_id [INTEGER] NOT NULL id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL data [JSONB] NOT NULL entry_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL probdensity [ARRAY] NOT NULL uniq [ARRAY] NOT NULL spatial_catalogs--spatial_catalog_entries spatial_catalog_entriess spatial_catalog_entriess healpix [INT8RANGE] NOT NULL id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL entry_name [VARCHAR] NOT NULL modified [DATETIME] NOT NULL probdensity [FLOAT] NOT NULL spatial_catalog_entries--spatial_catalog_entriess super_objs super_objs id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL is_roid [BOOLEAN] modified [DATETIME] NOT NULL name [VARCHAR] super_objs--obj_to_super_obj objtagoptions objtagoptions id [INTEGER] NOT NULL color [VARCHAR] created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL objtagoptions--obj_tags teams teams id [INTEGER] NOT NULL background_url [VARCHAR] created_at [DATETIME] NOT NULL description [TEXT] logo_url [VARCHAR] modified [DATETIME] NOT NULL name [VARCHAR] NOT NULL nickname [VARCHAR] primary_color [VARCHAR] secondary_color [VARCHAR] teams--group_teams telescopes telescopes id [INTEGER] NOT NULL acknowledgment [VARCHAR] created_at [DATETIME] NOT NULL diameter [FLOAT] NOT NULL elevation [FLOAT] fixed_location [BOOLEAN] NOT NULL lat [FLOAT] lon [FLOAT] modified [DATETIME] NOT NULL mpc_obscode [VARCHAR] name [VARCHAR] NOT NULL nickname [VARCHAR] NOT NULL robotic [BOOLEAN] NOT NULL skycam_link [TEXT] weather_link [TEXT] telescopes--instruments weathers weathers id [INTEGER] NOT NULL created_at [DATETIME] NOT NULL modified [DATETIME] NOT NULL retrieved_at [DATETIME] telescope_id [INTEGER] NOT NULL weather_info [JSONB] telescopes--weathers