From 3f2a6c3aa04089e664208899d5f1e179397f638b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20L=C3=BChrs?= Date: Thu, 21 Oct 2021 11:30:13 -0300 Subject: [PATCH] Updated schema file. --- .../lucuma/schemas/ObservationDB.graphql | 4328 +++++++++-------- .../scala/lucuma/schemas/ObservationDB.scala | 1 + 2 files changed, 2231 insertions(+), 2098 deletions(-) diff --git a/templates/src/main/resources/lucuma/schemas/ObservationDB.graphql b/templates/src/main/resources/lucuma/schemas/ObservationDB.graphql index 370be19f..54cfd8af 100644 --- a/templates/src/main/resources/lucuma/schemas/ObservationDB.graphql +++ b/templates/src/main/resources/lucuma/schemas/ObservationDB.graphql @@ -1,4 +1,4 @@ -# DatasetEvent creation parameters +"""DatasetEvent creation parameters""" input AddDatasetEventInput { eventId: ExecutionEventId observationId: ObservationId! @@ -9,7 +9,7 @@ input AddDatasetEventInput { stageType: DatasetStage! } -# SequenceEvent creation parameters +"""SequenceEvent creation parameters""" input AddSequenceEventInput { eventId: ExecutionEventId observationId: ObservationId! @@ -17,7 +17,7 @@ input AddSequenceEventInput { command: SequenceCommand! } -# StepEvent creation parameters +"""StepEvent creation parameters""" input AddStepEventInput { eventId: ExecutionEventId observationId: ObservationId! @@ -27,64 +27,31 @@ input AddStepEventInput { stage: StepStage! } -type AirMassRange { - # Minimum Airmass (unitless) - min: BigDecimal! - - # Maximum Airmass (unitless) - max: BigDecimal! -} - -# Sequence atom -interface Atom { - # Atom id - id: AtomId! -} - -# AtomId id formatted as `m-([1-9a-f][0-9a-f]*)` -scalar AtomId - -# Bias calibration step -type Bias implements StepConfig { - # Step type - stepType: StepType! -} - -# The `BigDecimal` scalar type represents signed fractional values with arbitrary precision. -scalar BigDecimal - -# Stopping point in a series of steps -enum Breakpoint { - # Breakpoint Enabled - ENABLED - - # Breakpoint Disabled - DISABLED -} - -# Input for bulk editing multiple observations +"""Input for bulk editing multiple observations""" input BulkEditConstraintSetInput { selectProgram: ProgramId selectObservations: [ObservationId!] edit: EditConstraintSetInput! } -# Input for bulk editing multiple observations +"""Input for bulk editing multiple observations""" input BulkEditScienceRequirementsInput { selectProgram: ProgramId selectObservations: [ObservationId!] edit: EditScienceRequirementsInput! } -# Target environment edit parameters +"""Target environment edit parameters""" input BulkEditTargetEnvironmentInput { select: SelectTargetEnvironmentInput! - # The explicitBase field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The explicitBase field may be unset by assigning a null value, or ignored by skipping it altogether + """ explicitBase: CoordinatesInput } -# Target editing parameters +"""Target editing parameters""" input BulkEditTargetInput { select: SelectTargetEnvironmentInput addSidereal: CreateSiderealInput @@ -94,202 +61,37 @@ input BulkEditTargetInput { delete: SelectTargetInput } -# Target editing parameters +"""Target editing parameters""" input BulkEditTargetListInput { select: SelectTargetEnvironmentInput edits: [EditTargetInput!]! } -# Target list set/replace parameters +"""Target list set/replace parameters""" input BulkReplaceTargetListInput { select: SelectTargetEnvironmentInput! replace: [CreateTargetInput!]! } -type CatalogId { - # Catalog name option - name: CatalogName! - - # Catalog id string - id: String! -} - -# Catalog id consisting of catalog name and string identifier +"""Catalog id consisting of catalog name and string identifier""" input CatalogIdInput { name: CatalogName! id: String! } -# Catalog name values -enum CatalogName { - # CatalogName Simbad - SIMBAD - - # CatalogName Horizon - HORIZON - - # CatalogName Gaia - GAIA -} - -# Cloud extinction -enum CloudExtinction { - # CloudExtinction PointOne - POINT_ONE - - # CloudExtinction PointThree - POINT_THREE - - # CloudExtinction PointFive - POINT_FIVE - - # CloudExtinction OnePointZero - ONE_POINT_ZERO - - # CloudExtinction OnePointFive - ONE_POINT_FIVE - - # CloudExtinction TwoPointZero - TWO_POINT_ZERO - - # CloudExtinction ThreePointZero - THREE_POINT_ZERO -} - -type CommonTarget implements TargetDescription { - # Target IDs that share the common target information - ids: [TargetId!]! - - # Target name. - name: NonEmptyString! - - # Information required to find a target in the sky. - tracking: Tracking! - - # Target magnitudes - magnitudes: [Magnitude!]! -} - -type CommonTargetEnvironment { - # When set, overrides the default base position of the target group - explicitBase: Coordinates - - # All science targets, if any - scienceTargets: [CommonTarget!]! - - # First science target, if any - firstScienceTarget: CommonTarget -} - -# Instrument configuration -interface Config { - # Instrument type - instrument: InstrumentType! - - # Planned time for this configuration - plannedTime: PlannedTime! - - # Estimated setup time - setupTime: Duration! -} - -# ConfigurationMode -enum ConfigurationModeType { - # ConfigurationModeType GmosNorthLongSlit - GMOS_NORTH_LONG_SLIT - - # ConfigurationModeType GmosSouthLongSlit - GMOS_SOUTH_LONG_SLIT -} - -type ConstraintSet { - # Image quality - imageQuality: ImageQuality! - - # Cloud extinction - cloudExtinction: CloudExtinction! - - # Sky background - skyBackground: SkyBackground! - - # Water vapor - waterVapor: WaterVapor! - - # Either airmass range or elevation range - elevationRange: ElevationRange! - - # Airmass range if elevation range is an Airmass range - airmassRange: AirMassRange - - # Hour angle range if elevation range is an Hour angle range - hourAngleRange: HourAngleRange -} - -type ConstraintSetGroup { - # IDs of observations that use the same constraints - observationIds: [ObservationId!]! - - # Observations that use this constraint set - observations( - # Retrieve `first` values after the given cursor - first: Int - - # Retrieve values after the one associated with this cursor - after: Cursor - - # Set to true to include deleted values - includeDeleted: Boolean! = false - ): ObservationConnection! - - # Commonly held value across the observations - constraintSet: ConstraintSet! -} - -# Observations grouped by common properties -type ConstraintSetGroupConnection { - # The nodes in all the edges from the current page - nodes: [ConstraintSetGroup!]! - - # Edges in the current page - edges: [ConstraintSetGroupEdge!]! - - # Count of all nodes in all pages - totalCount: Int! - - # Paging information - pageInfo: PageInfo! -} - -# An observation group and its cursor -type ConstraintSetGroupEdge { - # ConstraintSetGroupEdge element - node: ConstraintSetGroup! - - # ConstraintSetGroupEdge element cursor - cursor: Cursor! -} - -type Coordinates { - # Right Ascension - ra: RightAscension! - - # Declination - dec: Declination! -} - -# Absolute coordinates relative base epoch +"""Absolute coordinates relative base epoch""" input CoordinatesInput { ra: RightAscensionInput! dec: DeclinationInput! } -# Airmass range creation parameters +"""Airmass range creation parameters""" input CreateAirmassRangeInput { min: BigDecimal! max: BigDecimal! } -# Constraint set creation parameters +"""Constraint set creation parameters""" input CreateConstraintSetInput { imageQuality: ImageQuality! cloudExtinction: CloudExtinction! @@ -298,33 +100,33 @@ input CreateConstraintSetInput { elevationRange: CreateElevationRangeInput! } -# Elevation range creation parameters +"""Elevation range creation parameters""" input CreateElevationRangeInput { airmassRange: CreateAirmassRangeInput hourAngleRange: CreateHourAngleRangeInput } -# Create a configuration for a GMOS North Long Slit observation +"""Create a configuration for a GMOS North Long Slit observation""" input CreateGmosNorthLongSlit { filter: GmosNorthFilter disperser: GmosNorthDisperser! slitWidth: SlitWidthInput! } -# Create a configuration for a GMOS South Long Slit observation +"""Create a configuration for a GMOS South Long Slit observation""" input CreateGmosSouthLongSlit { filter: GmosSouthFilter disperser: GmosSouthDisperser! slitWidth: SlitWidthInput! } -# Hour angle range creation parameters +"""Hour angle range creation parameters""" input CreateHourAngleRangeInput { minHours: BigDecimal! maxHours: BigDecimal! } -# Nonsidereal target parameters +"""Nonsidereal target parameters""" input CreateNonsiderealInput { name: NonEmptyString! keyType: EphemerisKeyType! @@ -332,13 +134,13 @@ input CreateNonsiderealInput { magnitudes: [MagnitudeCreateInput!] } -# Create observation configuration +"""Create observation configuration""" input CreateObservationConfigInput { gmosNorthLongSlit: CreateGmosNorthLongSlit gmosSouthLongSlit: CreateGmosSouthLongSlit } -# Observation creation parameters +"""Observation creation parameters""" input CreateObservationInput { observationId: ObservationId programId: ProgramId! @@ -351,13 +153,13 @@ input CreateObservationInput { scienceConfiguration: CreateObservationConfigInput } -# Program creation parameters +"""Program creation parameters""" input CreateProgramInput { programId: ProgramId name: NonEmptyString } -# Sidereal target parameters +"""Sidereal target parameters""" input CreateSiderealInput { name: NonEmptyString! catalogId: CatalogIdInput @@ -370,135 +172,29 @@ input CreateSiderealInput { magnitudes: [MagnitudeCreateInput!] } -# Target environment creation input parameters +"""Target environment creation input parameters""" input CreateTargetEnvironmentInput { targetEnvironmentId: TargetEnvironmentId explicitBase: CoordinatesInput science: [CreateTargetInput!] } -# Target creation parameters +"""Target creation parameters""" input CreateTargetInput { nonsidereal: CreateNonsiderealInput sidereal: CreateSiderealInput } -# Opaque object cursor -scalar Cursor - -# Dark calibration step -type Dark implements StepConfig { - # Step type - stepType: StepType! -} - -type Dataset { - # Observation associated with this dataset - observation: Observation! - - # Step that produced the dataset - step: Step! - - # Dataset index - index: Int! - - # Dataset filename - filename: DatasetFilename! -} - -# Datasets in the current page -type DatasetConnection { - # The nodes in all the edges from the current page - nodes: [Dataset!]! - - # Edges in the current page - edges: [DatasetEdge!]! - - # Count of all nodes in all pages - totalCount: Int! - - # Paging information - pageInfo: PageInfo! -} - -# A Dataset and its cursor -type DatasetEdge { - # DatasetEdge element - node: Dataset! - - # DatasetEdge element cursor - cursor: Cursor! -} - -# Dataset-level events -type DatasetEvent implements ExecutionEvent { - # Step from which the dataset comes - step: Step! - - # Dataset filename, when known - filename: DatasetFilename - - # Dataset stage - stage: DatasetStage! - - # Event id - id: ExecutionEventId! - - # Observation whose execution produced this event - observation: Observation! - - # Time at which this event was generated, according to the caller (e.g., Observe) - generated: Instant! - - # Time at which this event was received - received: Instant! -} - -# Dataset filename in standard format in format 'N20210519S0001.fits' -scalar DatasetFilename - -# Execution stage or phase of an individual dataset -enum DatasetStage { - # DatasetStage END_OBSERVE - END_OBSERVE - - # DatasetStage END_READOUT - END_READOUT - - # DatasetStage END_WRITE - END_WRITE - - # DatasetStage START_OBSERVE - START_OBSERVE - - # DatasetStage START_READOUT - START_READOUT - - # DatasetStage START_WRITE - START_WRITE -} - -type Declination { - # Declination in DD:MM:SS.SS format - dms: DmsString! - - # Declination in signed degrees - degrees: BigDecimal! - - # Declination in signed µas - microarcseconds: Long! -} - -# Decimal value in Declination +"""Decimal value in Declination""" input DeclinationDecimalInput { - # decimal value in associated units + """decimal value in associated units""" value: BigDecimal! - # units for associated value + """units for associated value""" units: DeclinationUnits! } -# Declination, choose one of the available units +"""Declination, choose one of the available units""" input DeclinationInput { microarcseconds: Long degrees: BigDecimal @@ -507,195 +203,246 @@ input DeclinationInput { fromDecimal: DeclinationDecimalInput } -# Integral value in Declination +"""Integral value in Declination""" input DeclinationLongInput { - # integral value in associated units + """integral value in associated units""" value: Long! - # units for associated value + """units for associated value""" units: DeclinationUnits! } -# Unit options for Declination values +"""Unit options for Declination values""" enum DeclinationUnits { - # DeclinationUnits Microarcseconds + """DeclinationUnits Microarcseconds""" MICROARCSECONDS - # DeclinationUnits Degrees + """DeclinationUnits Degrees""" DEGREES } -# Target declination coordinate in format '[+/-]DD:MM:SS.sss' -scalar DmsString - -# Equivalent time amount in several unit options (e.g., 120 seconds or 2 minutes) -type Duration { - # Duration in µs - microseconds: Long! - - # Duration in ms - milliseconds: BigDecimal! - - # Duration in seconds - seconds: BigDecimal! - - # Duration in minutes - minutes: BigDecimal! - - # Duration in hours - hours: BigDecimal! -} - -# Edit constraint set +"""Edit constraint set""" input EditConstraintSetInput { - # The imageQuality field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The imageQuality field must be either specified or skipped altogether. It cannot be unset with a null value. + """ imageQuality: ImageQuality - # The cloudExtinction field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The cloudExtinction field must be either specified or skipped altogether. It cannot be unset with a null value. + """ cloudExtinction: CloudExtinction - # The skyBackground field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The skyBackground field must be either specified or skipped altogether. It cannot be unset with a null value. + """ skyBackground: SkyBackground - # The waterVapor field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The waterVapor field must be either specified or skipped altogether. It cannot be unset with a null value. + """ waterVapor: WaterVapor - # The elevationRange field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The elevationRange field must be either specified or skipped altogether. It cannot be unset with a null value. + """ elevationRange: CreateElevationRangeInput } -# Edit GMOS North Long Slit configuration +"""Edit GMOS North Long Slit configuration""" input EditGmosNorthLongSlit { - # The filter field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The filter field must be either specified or skipped altogether. It cannot be unset with a null value. + """ filter: GmosNorthFilter - # The disperser field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The disperser field must be either specified or skipped altogether. It cannot be unset with a null value. + """ disperser: GmosNorthDisperser - # The slitWidth field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The slitWidth field must be either specified or skipped altogether. It cannot be unset with a null value. + """ slitWidth: SlitWidthInput } -# Edit GMOS South Long Slit configuration +"""Edit GMOS South Long Slit configuration""" input EditGmosSouthLongSlit { - # The filter field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The filter field must be either specified or skipped altogether. It cannot be unset with a null value. + """ filter: GmosSouthFilter - # The disperser field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The disperser field must be either specified or skipped altogether. It cannot be unset with a null value. + """ disperser: GmosSouthDisperser - # The slitWidth field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The slitWidth field must be either specified or skipped altogether. It cannot be unset with a null value. + """ slitWidth: SlitWidthInput } -# Nonsidereal target edit parameters +"""Nonsidereal target edit parameters""" input EditNonsiderealInput { select: SelectTargetInput! - # The name field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The name field must be either specified or skipped altogether. It cannot be unset with a null value. + """ name: NonEmptyString - # The key field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The key field must be either specified or skipped altogether. It cannot be unset with a null value. + """ key: EphemerisKey } -# Edit observation +"""Edit observation""" input EditObservationInput { observationId: ObservationId! - # The existence field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The existence field must be either specified or skipped altogether. It cannot be unset with a null value. + """ existence: Existence - # The name field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The name field may be unset by assigning a null value, or ignored by skipping it altogether + """ name: NonEmptyString - # The status field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The status field must be either specified or skipped altogether. It cannot be unset with a null value. + """ status: ObsStatus - # The activeStatus field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The activeStatus field must be either specified or skipped altogether. It cannot be unset with a null value. + """ activeStatus: ObsActiveStatus - # The constraintSet field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The constraintSet field must be either specified or skipped altogether. It cannot be unset with a null value. + """ constraintSet: EditConstraintSetInput - # The scienceRequirements field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The scienceRequirements field may be unset by assigning a null value, or ignored by skipping it altogether + """ scienceRequirements: EditScienceRequirementsInput - # The scienceConfiguration field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The scienceConfiguration field may be unset by assigning a null value, or ignored by skipping it altogether + """ scienceConfiguration: EditScienceConfigurationInput } -# Edit program +"""Edit program""" input EditProgramInput { programId: ProgramId! - # The existence field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The existence field must be either specified or skipped altogether. It cannot be unset with a null value. + """ existence: Existence - # The name field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The name field may be unset by assigning a null value, or ignored by skipping it altogether + """ name: NonEmptyString } -# Edit observation configuration +"""Edit observation configuration""" input EditScienceConfiguration { - # The gmosNorthLongSlit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The gmosNorthLongSlit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ gmosNorthLongSlit: EditGmosNorthLongSlit - # The gmosSouthLongSlit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The gmosSouthLongSlit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ gmosSouthLongSlit: EditGmosSouthLongSlit } -# Edit or set observation configuration +"""Edit or set observation configuration""" input EditScienceConfigurationInput { - # The set field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The set field must be either specified or skipped altogether. It cannot be unset with a null value. + """ set: CreateObservationConfigInput - # The edit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The edit field must be either specified or skipped altogether. It cannot be unset with a null value. + """ edit: EditScienceConfiguration } -# Edit science requirements +"""Edit science requirements""" input EditScienceRequirementsInput { - # The mode field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The mode field must be either specified or skipped altogether. It cannot be unset with a null value. + """ mode: ScienceMode - # The spectroscopyRequirements field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The spectroscopyRequirements field must be either specified or skipped altogether. It cannot be unset with a null value. + """ spectroscopyRequirements: SpectroscopyScienceRequirementsInput } -# Sidereal target edit parameters +"""Sidereal target edit parameters""" input EditSiderealInput { select: SelectTargetInput! - # Edit magnitudes + """Edit magnitudes""" magnitudes: MagnitudeEditList - # The name field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The name field must be either specified or skipped altogether. It cannot be unset with a null value. + """ name: NonEmptyString - # The catalogId field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The catalogId field may be unset by assigning a null value, or ignored by skipping it altogether + """ catalogId: CatalogIdInput - # The ra field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The ra field must be either specified or skipped altogether. It cannot be unset with a null value. + """ ra: RightAscensionInput - # The dec field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The dec field must be either specified or skipped altogether. It cannot be unset with a null value. + """ dec: DeclinationInput - # The epoch field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + The epoch field must be either specified or skipped altogether. It cannot be unset with a null value. + """ epoch: EpochString - # The properMotion field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The properMotion field may be unset by assigning a null value, or ignored by skipping it altogether + """ properMotion: ProperMotionInput - # The radialVelocity field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The radialVelocity field may be unset by assigning a null value, or ignored by skipping it altogether + """ radialVelocity: RadialVelocityInput - # The parallax field may be unset by assigning a null value, or ignored by skipping it altogether + """ + The parallax field may be unset by assigning a null value, or ignored by skipping it altogether + """ parallax: ParallaxModelInput } -# Single target edit options +"""Single target edit options""" input EditTargetInput { addSidereal: CreateSiderealInput addNonsidereal: CreateNonsiderealInput @@ -704,2805 +451,3190 @@ input EditTargetInput { delete: SelectTargetInput } -# Type of edit that triggered an event +"""Type of edit that triggered an event""" enum EditType { - # EditType Created + """EditType Created""" CREATED - # EditType Updated + """EditType Updated""" UPDATED } -# Either airmass range or elevation range -union ElevationRange = AirMassRange | HourAngleRange - -# Horizons ID in format '[Comet|AsteroidNew|AsteroidOld|MajorBody]_des' +"""Horizons ID in format '[Comet|AsteroidNew|AsteroidOld|MajorBody]_des'""" scalar EphemerisKey -# Ephemeris key type options -enum EphemerisKeyType { - # EphemerisKeyType Comet - COMET +"""Common fields shared by all events""" +interface Event { + id: Long! +} - # EphemerisKeyType AsteroidNew - ASTEROID_NEW +"""Focal plane angle source angle in appropriate units""" +input FocalPlaneAngleInput { + microarcseconds: Long + milliarcseconds: BigDecimal + arcseconds: BigDecimal +} - # EphemerisKeyType AsteroidOld - ASTEROID_OLD +"""GMOS amp count""" +enum GmosAmpCount { + """GmosAmpCount Three""" + THREE - # EphemerisKeyType MajorBody - MAJOR_BODY + """GmosAmpCount Six""" + SIX - # EphemerisKeyType UserSupplied - USER_SUPPLIED + """GmosAmpCount Twelve""" + TWELVE } -# Reference observation epoch in format '[JB]YYYY.YYY' -scalar EpochString +"""GMOS amp gain""" +enum GmosAmpGain { + """GmosAmpGain Low""" + LOW -# Common fields shared by all events -interface Event { - id: Long! + """GmosAmpGain High""" + HIGH } -# Executed step -type ExecutedStep { - # Step id - id: StepId! - - # The executed step itself - step: Step! +"""GMOS amp read mode""" +enum GmosAmpReadMode { + """GmosAmpReadMode Slow""" + SLOW - # The atom containing the executed step - atom: Atom! + """GmosAmpReadMode Fast""" + FAST +} - # Datasets associated with this step - datasets( - # Retrieve `first` values after the given cursor - first: Int - - # Retrieve values after the one associated with this cursor - after: Cursor - ): DatasetConnection! -} - -# Executed steps in the current page -type ExecutedStepConnection { - # The nodes in all the edges from the current page - nodes: [ExecutedStep!]! - - # Edges in the current page - edges: [ExecutedStepEdge!]! - - # Count of all nodes in all pages - totalCount: Int! - - # Paging information - pageInfo: PageInfo! -} - -# An executed step and its cursor -type ExecutedStepEdge { - # ExecutedStepEdge element - node: ExecutedStep! - - # ExecutedStepEdge element cursor - cursor: Cursor! -} - -type Execution { - # Datasets associated with the observation - datasets( - # Retrieve `first` values after the given cursor - first: Int - - # Retrieve values after the one associated with this cursor - after: Cursor - ): DatasetConnection! - - # Events associated with the observation - events( - # Retrieve `first` values after the given cursor - first: Int - - # Retrieve values after the one associated with this cursor - after: Cursor - ): ExecutionEventConnection! - - # Executed steps associated with the observation - executedSteps( - # Retrieve `first` values after the given cursor - first: Int - - # Retrieve values after the one associated with this cursor - after: Cursor - ): ExecutedStepConnection! - - # Execution config - executionConfig: ExecutionConfig -} - -# Execution configuration -interface ExecutionConfig { - # Instrument type - instrument: InstrumentType! -} - -# Execution event (sequence, step, or dataset events) -interface ExecutionEvent { - # Event id - id: ExecutionEventId! - - # Observation whose execution produced this event - observation: Observation! - - # Time at which this event was generated, according to the caller (e.g., Observe) - generated: Instant! - - # Time at which this event was received - received: Instant! -} - -# ExecutionEvents in the current page -type ExecutionEventConnection { - # The nodes in all the edges from the current page - nodes: [ExecutionEvent!]! - - # Edges in the current page - edges: [ExecutionEventEdge!]! - - # Count of all nodes in all pages - totalCount: Int! - - # Paging information - pageInfo: PageInfo! -} - -# An ExecutionEvent and its cursor -type ExecutionEventEdge { - # ExecutionEventEdge element - node: ExecutionEvent! - - # ExecutionEventEdge element cursor - cursor: Cursor! -} - -# ExecutionEventId id formatted as `e-([1-9a-f][0-9a-f]*)` -scalar ExecutionEventId - -# State of being: either Deleted or Present -enum Existence { - # Existence Present - PRESENT - - # Existence Deleted - DELETED -} - -# Focal plane Single/Multi/IFU -enum FocalPlane { - # FocalPlane SingleSlit - SINGLE_SLIT - - # FocalPlane MultipleSlit - MULTIPLE_SLIT - - # FocalPlane IFU - IFU -} - -type focalPlaneAngle { - # Focal plane angle in µas - microarcseconds: Long! - - # Focal plane angle in mas - milliarcseconds: BigDecimal! - - # Focal plane angle in arcsec - arcseconds: BigDecimal! -} - -# Focal plane angle source angle in appropriate units -input FocalPlaneAngleInput { - microarcseconds: Long - milliarcseconds: BigDecimal - arcseconds: BigDecimal -} - -# GCAL calibration step (flat / arc) -type Gcal implements StepConfig { - # GCAL continuum, present if no arcs are used - continuum: GcalContinuum - - # GCAL arcs, one or more present if no continuum is used - arcs: [GcalArc!]! - - # GCAL filter - filter: GcalFilter! - - # GCAL diffuser - diffuser: GcalDiffuser! - - # GCAL shutter - shutter: GcalShutter! - - # Step type - stepType: StepType! -} - -# GCAL arc -enum GcalArc { - # GcalArc ArArc - AR_ARC - - # GcalArc ThArArc - TH_AR_ARC - - # GcalArc CuArArc - CU_AR_ARC - - # GcalArc XeArc - XE_ARC -} - -# GCAL continuum -enum GcalContinuum { - # GcalContinuum IrGreyBodyLow - IR_GREY_BODY_LOW - - # GcalContinuum IrGreyBodyHigh - IR_GREY_BODY_HIGH - - # GcalContinuum QuartzHalogen - QUARTZ_HALOGEN -} - -# GCAL diffuser -enum GcalDiffuser { - # GcalDiffuser Ir - IR - - # GcalDiffuser Visible - VISIBLE -} - -# GCAL filter -enum GcalFilter { - # GcalFilter None - NONE - - # GcalFilter Gmos - GMOS - - # GcalFilter Hros - HROS - - # GcalFilter Nir - NIR - - # GcalFilter Nd10 - ND10 - - # GcalFilter Nd16 - ND16 - - # GcalFilter Nd20 - ND20 - - # GcalFilter Nd30 - ND30 - - # GcalFilter Nd40 - ND40 - - # GcalFilter Nd45 - ND45 - - # GcalFilter Nd50 - ND50 -} - -# GCAL shutter -enum GcalShutter { - # GcalShutter Open - OPEN - - # GcalShutter Closed - CLOSED -} - -# GMOS amp count -enum GmosAmpCount { - # GmosAmpCount Three - THREE - - # GmosAmpCount Six - SIX - - # GmosAmpCount Twelve - TWELVE -} - -# GMOS amp read mode -enum GmosAmpReadMode { - # GmosAmpReadMode Slow - SLOW - - # GmosAmpReadMode Fast - FAST -} - -# CCD Readout Configuration +"""CCD Readout Configuration""" type GmosCcdMode { - # GMOS X-binning + """GMOS X-binning""" xBin: GmosXBinning! - # GMOS Y-binning + """GMOS Y-binning""" yBin: GmosYBinning! - # GMOS Amp Count + """GMOS Amp Count""" ampCount: GmosAmpCount! - # GMOS Amp Gain - ampGain: GmosAmpCount! + """GMOS Amp Gain""" + ampGain: GmosAmpGain! - # GMOS Amp Read Mode + """GMOS Amp Read Mode""" ampReadMode: GmosAmpReadMode! } -# GMOS Custom Mask +"""GMOS Custom Mask""" type GmosCustomMask { - # Custom Mask Filename + """Custom Mask Filename""" filename: String! - # Custom Slit Width + """Custom Slit Width""" slitWidth: GmosCustomSlitWidth! } -# GMOS Custom Slit Width +"""GMOS Custom Slit Width""" enum GmosCustomSlitWidth { - # GmosCustomSlitWidth CustomWidth_0_25 + """GmosCustomSlitWidth CustomWidth_0_25""" CUSTOM_WIDTH_0_25 - # GmosCustomSlitWidth CustomWidth_0_50 + """GmosCustomSlitWidth CustomWidth_0_50""" CUSTOM_WIDTH_0_50 - # GmosCustomSlitWidth CustomWidth_0_75 + """GmosCustomSlitWidth CustomWidth_0_75""" CUSTOM_WIDTH_0_75 - # GmosCustomSlitWidth CustomWidth_1_00 + """GmosCustomSlitWidth CustomWidth_1_00""" CUSTOM_WIDTH_1_00 - # GmosCustomSlitWidth CustomWidth_1_50 + """GmosCustomSlitWidth CustomWidth_1_50""" CUSTOM_WIDTH_1_50 - # GmosCustomSlitWidth CustomWidth_2_00 + """GmosCustomSlitWidth CustomWidth_2_00""" CUSTOM_WIDTH_2_00 - # GmosCustomSlitWidth CustomWidth_5_00 + """GmosCustomSlitWidth CustomWidth_5_00""" CUSTOM_WIDTH_5_00 } -# GMOS disperser order +"""GMOS disperser order""" enum GmosDisperserOrder { - # GmosDisperserOrder Zero + """GmosDisperserOrder Zero""" ZERO - # GmosDisperserOrder One + """GmosDisperserOrder One""" ONE - # GmosDisperserOrder Two + """GmosDisperserOrder Two""" TWO } -# GMOS Detector Translation X Offset +"""GMOS Detector Translation X Offset""" enum GmosDtax { - # GmosDtax MinusSix + """GmosDtax MinusSix""" MINUS_SIX - # GmosDtax MinusFive + """GmosDtax MinusFive""" MINUS_FIVE - # GmosDtax MinusFour + """GmosDtax MinusFour""" MINUS_FOUR - # GmosDtax MinusThree + """GmosDtax MinusThree""" MINUS_THREE - # GmosDtax MinusTwo + """GmosDtax MinusTwo""" MINUS_TWO - # GmosDtax MinusOne + """GmosDtax MinusOne""" MINUS_ONE - # GmosDtax Zero + """GmosDtax Zero""" ZERO - # GmosDtax One + """GmosDtax One""" ONE - # GmosDtax Two + """GmosDtax Two""" TWO - # GmosDtax Three + """GmosDtax Three""" THREE - # GmosDtax Four + """GmosDtax Four""" FOUR - # GmosDtax Five + """GmosDtax Five""" FIVE - # GmosDtax Six + """GmosDtax Six""" SIX } -# Electronic offsetting +"""Electronic offsetting""" enum GmosEOffsetting { - # GmosEOffsetting On + """GmosEOffsetting On""" ON - # GmosEOffsetting Off + """GmosEOffsetting Off""" OFF } type GmosNodAndShuffle { - # Offset position A + """Offset position A""" posA: Offset! - # Offset position B + """Offset position B""" posB: Offset! - # Whether to use electronic offsetting + """Whether to use electronic offsetting""" eOffset: GmosEOffsetting! - # Shuffle offset + """Shuffle offset""" shuffleOffset: Int! - # Shuffle cycles + """Shuffle cycles""" shuffleCycles: Int! } -# GmosNorth atom, a collection of steps that should be executed in their entirety +""" +GmosNorth atom, a collection of steps that should be executed in their entirety +""" type GmosNorthAtom implements Atom { - # Individual steps that comprise the atom + """Individual steps that comprise the atom""" steps: [GmosNorthStep!]! - # Time estimate for this atom's execution, the sum of each step's time. + """Time estimate for this atom's execution, the sum of each step's time.""" time: StepTime! - # Atom id + """Atom id""" id: AtomId! } -# GMOS North builtin-in FPU +"""GMOS North builtin-in FPU""" type GmosNorthBuiltinFpu { - # GMOS North builtin-fpu + """GMOS North builtin-fpu""" builtin: GmosNorthFpu! } -# GMOS North Configuration +"""GMOS North Configuration""" type GmosNorthConfig implements Config { - # Static/unchanging configuration + """Static/unchanging configuration""" static: GmosNorthStatic! - # Acquisition sequence. + """Acquisition sequence.""" acquisition: GmosNorthSequence! - # Science sequence. + """Science sequence.""" science: GmosNorthSequence! - # Instrument type + """Instrument type""" instrument: InstrumentType! - # Planned time for this configuration + """Planned time for this configuration""" plannedTime: PlannedTime! - # Estimated setup time + """Estimated setup time""" setupTime: Duration! } -# GmosNorth Detector type +"""GmosNorth Detector type""" enum GmosNorthDetector { - # GmosNorthDetector E2V + """GmosNorthDetector E2V""" E2_V - # GmosNorthDetector HAMAMATSU + """GmosNorthDetector HAMAMATSU""" HAMAMATSU } -# GMOS North Disperser -enum GmosNorthDisperser { - # GmosNorthDisperser B1200_G5301 - B1200_G5301 - - # GmosNorthDisperser R831_G5302 - R831_G5302 - - # GmosNorthDisperser B600_G5303 - B600_G5303 - - # GmosNorthDisperser B600_G5307 - B600_G5307 - - # GmosNorthDisperser R600_G5304 - R600_G5304 - - # GmosNorthDisperser B480_G5309 - B480_G5309 - - # GmosNorthDisperser R400_G5305 - R400_G5305 - - # GmosNorthDisperser R150_G5306 - R150_G5306 - - # GmosNorthDisperser R150_G5308 - R150_G5308 -} - -# GMOS North dynamic step configuration +"""GMOS North dynamic step configuration""" type GmosNorthDynamic { - # GMOS exposure time + """GMOS exposure time""" exposure: Duration! - # GMOS CCD Readout + """GMOS CCD Readout""" readout: GmosCcdMode! - # GMOS detector x offset + """GMOS detector x offset""" dtax: GmosDtax! - # GMOS region of interest + """GMOS region of interest""" roi: GmosRoi! - # GMOS North grating + """GMOS North grating""" grating: GmosNorthGrating - # GMOS North filter + """GMOS North filter""" filter: GmosNorthFilter - # GMOS North FPU + """GMOS North FPU""" fpu: GmosNorthFpuUnion } -# GMOS North Execution Config +"""GMOS North Execution Config""" type GmosNorthExecutionConfig implements ExecutionConfig { - # GMOS North static configuration + """GMOS North static configuration""" static: GmosNorthStatic! - # GMOS North acquisition execution + """GMOS North acquisition execution""" acquisition: GmosNorthExecutionSequence! - # GMOS North science execution + """GMOS North science execution""" science: GmosNorthExecutionSequence! - # Instrument type + """Instrument type""" instrument: InstrumentType! } -# Next atom to execute and potential future atoms +"""Next atom to execute and potential future atoms""" type GmosNorthExecutionSequence { - # Next atom to execute, if any + """Next atom to execute, if any""" nextAtom: GmosNorthAtom - # Remaining atoms to execute, if any + """Remaining atoms to execute, if any""" possibleFuture: [GmosNorthAtom!]! } -# GMOS North Filter -enum GmosNorthFilter { - # GmosNorthFilter GPrime - G_PRIME +"""GMOS North FPU""" +enum GmosNorthFpu { + """GmosNorthFpu Ns0""" + NS0 - # GmosNorthFilter RPrime - R_PRIME + """GmosNorthFpu Ns1""" + NS1 - # GmosNorthFilter IPrime - I_PRIME + """GmosNorthFpu Ns2""" + NS2 - # GmosNorthFilter ZPrime - Z_PRIME + """GmosNorthFpu Ns3""" + NS3 - # GmosNorthFilter Z - Z + """GmosNorthFpu Ns4""" + NS4 - # GmosNorthFilter Y - Y + """GmosNorthFpu Ns5""" + NS5 - # GmosNorthFilter GG455 - GG455 + """GmosNorthFpu LongSlit_0_25""" + LONG_SLIT_0_25 - # GmosNorthFilter OG515 - OG515 + """GmosNorthFpu LongSlit_0_50""" + LONG_SLIT_0_50 - # GmosNorthFilter RG610 - RG610 + """GmosNorthFpu LongSlit_0_75""" + LONG_SLIT_0_75 - # GmosNorthFilter CaT - CA_T + """GmosNorthFpu LongSlit_1_00""" + LONG_SLIT_1_00 - # GmosNorthFilter Ha - HA + """GmosNorthFpu LongSlit_1_50""" + LONG_SLIT_1_50 - # GmosNorthFilter HaC - HA_C + """GmosNorthFpu LongSlit_2_00""" + LONG_SLIT_2_00 - # GmosNorthFilter DS920 - DS920 + """GmosNorthFpu LongSlit_5_00""" + LONG_SLIT_5_00 - # GmosNorthFilter SII - SII + """GmosNorthFpu Ifu2Slits""" + IFU2_SLITS - # GmosNorthFilter OIII - OIII + """GmosNorthFpu IfuBlue""" + IFU_BLUE - # GmosNorthFilter OIIIC - OIIIC + """GmosNorthFpu IfuRed""" + IFU_RED +} - # GmosNorthFilter HeII - HE_II +"""Either custom mask or builtin-FPU""" +union GmosNorthFpuUnion = GmosCustomMask | GmosNorthBuiltinFpu - # GmosNorthFilter HeIIC - HE_IIC +"""GMOS North Grating""" +type GmosNorthGrating { + """GMOS North Disperser""" + disperser: GmosNorthDisperser! - # GmosNorthFilter HartmannA_RPrime - HARTMANN_A_R_PRIME + """GMOS disperser order""" + order: GmosDisperserOrder! - # GmosNorthFilter HartmannB_RPrime - HARTMANN_B_R_PRIME + """Grating wavelength""" + wavelength: Wavelength! +} - # GmosNorthFilter GPrime_GG455 - G_PRIME_GG455 +"""A series of GmosNorth atoms that comprise the sequence""" +type GmosNorthSequence { + """Sequence atoms""" + atoms: [GmosNorthAtom!]! - # GmosNorthFilter GPrime_OG515 - G_PRIME_OG515 - - # GmosNorthFilter RPrime_RG610 - R_PRIME_RG610 - - # GmosNorthFilter IPrime_CaT - I_PRIME_CA_T - - # GmosNorthFilter ZPrime_CaT - Z_PRIME_CA_T - - # GmosNorthFilter UPrime - U_PRIME -} - -# GMOS North FPU -enum GmosNorthFpu { - # GmosNorthFpu Ns0 - NS0 - - # GmosNorthFpu Ns1 - NS1 - - # GmosNorthFpu Ns2 - NS2 - - # GmosNorthFpu Ns3 - NS3 - - # GmosNorthFpu Ns4 - NS4 - - # GmosNorthFpu Ns5 - NS5 - - # GmosNorthFpu LongSlit_0_25 - LONG_SLIT_0_25 - - # GmosNorthFpu LongSlit_0_50 - LONG_SLIT_0_50 - - # GmosNorthFpu LongSlit_0_75 - LONG_SLIT_0_75 - - # GmosNorthFpu LongSlit_1_00 - LONG_SLIT_1_00 - - # GmosNorthFpu LongSlit_1_50 - LONG_SLIT_1_50 - - # GmosNorthFpu LongSlit_2_00 - LONG_SLIT_2_00 - - # GmosNorthFpu LongSlit_5_00 - LONG_SLIT_5_00 - - # GmosNorthFpu Ifu2Slits - IFU2_SLITS - - # GmosNorthFpu IfuBlue - IFU_BLUE - - # GmosNorthFpu IfuRed - IFU_RED -} - -# Either custom mask or builtin-FPU -union GmosNorthFpuUnion = GmosCustomMask | GmosNorthBuiltinFpu - -# GMOS North Grating -type GmosNorthGrating { - # GMOS North Disperser - disperser: GmosNorthDisperser! - - # GMOS disperser order - order: GmosDisperserOrder! - - # Grating wavelength - wavelength: Wavelength! -} - -# Basic configuration for GMOS North Long Slit -type GmosNorthLongSlit implements ScienceConfiguration { - # GMOS North Filter - filter: GmosNorthFilter - - # GMOS North Disperser - disperser: GmosNorthDisperser! - - # Slit width in appropriate units - slitWidth: slitWidth! - - # Instrument - instrument: InstrumentType! - - # Configuration mode - mode: ConfigurationModeType! -} - -# A series of GmosNorth atoms that comprise the sequence -type GmosNorthSequence { - # Sequence atoms - atoms: [GmosNorthAtom!]! - - # Time required for the full execution of this sequence + """Time required for the full execution of this sequence""" time: StepTime! } -# GMOS North stage mode +"""GMOS North stage mode""" enum GmosNorthStageMode { - # GmosNorthStageMode NoFollow + """GmosNorthStageMode NoFollow""" NO_FOLLOW - # GmosNorthStageMode FollowXyz + """GmosNorthStageMode FollowXyz""" FOLLOW_XYZ - # GmosNorthStageMode FollowXy + """GmosNorthStageMode FollowXy""" FOLLOW_XY - # GmosNorthStageMode FollowZ + """GmosNorthStageMode FollowZ""" FOLLOW_Z } -# Unchanging (over the course of the sequence) configuration values +"""Unchanging (over the course of the sequence) configuration values""" type GmosNorthStatic { - # Stage mode + """Stage mode""" stageMode: GmosNorthStageMode! - # Detector in use (always HAMAMATSU for recent and new observations) + """Detector in use (always HAMAMATSU for recent and new observations)""" detector: GmosNorthDetector! - # Is MOS Pre-Imaging Observation + """Is MOS Pre-Imaging Observation""" mosPreImaging: MosPreImaging! - # Nod-and-shuffle configuration + """Nod-and-shuffle configuration""" nodAndShuffle: GmosNodAndShuffle } -# GmosNorth step with potential breakpoint +"""GmosNorth step with potential breakpoint""" type GmosNorthStep implements Step { - # Instrument configuration for this step + """Instrument configuration for this step""" instrumentConfig: GmosNorthDynamic! - # Step id + """Step id""" id: StepId! - # Whether to pause before the execution of this step + """Whether to pause before the execution of this step""" breakpoint: Breakpoint! - # Step type + """Step type""" stepType: StepType! - # The sequence step itself + """The sequence step itself""" stepConfig: StepConfig! - # Time estimate for this step's execution + """Time estimate for this step's execution""" time: StepTime! } -# GMOS Region Of Interest +"""GMOS Region Of Interest""" enum GmosRoi { - # GmosRoi FullFrame + """GmosRoi FullFrame""" FULL_FRAME - # GmosRoi Ccd2 + """GmosRoi Ccd2""" CCD2 - # GmosRoi CentralSpectrum + """GmosRoi CentralSpectrum""" CENTRAL_SPECTRUM - # GmosRoi CentralStamp + """GmosRoi CentralStamp""" CENTRAL_STAMP - # GmosRoi TopSpectrum + """GmosRoi TopSpectrum""" TOP_SPECTRUM - # GmosRoi BottomSpectrum + """GmosRoi BottomSpectrum""" BOTTOM_SPECTRUM - # GmosRoi Custom + """GmosRoi Custom""" CUSTOM } -# GmosSouth atom, a collection of steps that should be executed in their entirety +""" +GmosSouth atom, a collection of steps that should be executed in their entirety +""" type GmosSouthAtom implements Atom { - # Individual steps that comprise the atom + """Individual steps that comprise the atom""" steps: [GmosSouthStep!]! - # Time estimate for this atom's execution, the sum of each step's time. + """Time estimate for this atom's execution, the sum of each step's time.""" time: StepTime! - # Atom id + """Atom id""" id: AtomId! } -# GMOS South builtin-in FPU +"""GMOS South builtin-in FPU""" type GmosSouthBuiltinFpu { - # GMOS South builtin-fpu + """GMOS South builtin-fpu""" builtin: GmosSouthFpu! } -# GMOS South Configuration +"""GMOS South Configuration""" type GmosSouthConfig implements Config { - # Static/unchanging configuration + """Static/unchanging configuration""" static: GmosSouthStatic! - # Acquisition sequence. + """Acquisition sequence.""" acquisition: GmosSouthSequence! - # Science sequence. + """Science sequence.""" science: GmosSouthSequence! - # Instrument type + """Instrument type""" instrument: InstrumentType! - # Planned time for this configuration + """Planned time for this configuration""" plannedTime: PlannedTime! - # Estimated setup time + """Estimated setup time""" setupTime: Duration! } -# GmosSouth Detector type +"""GmosSouth Detector type""" enum GmosSouthDetector { - # GmosSouthDetector E2V + """GmosSouthDetector E2V""" E2_V - # GmosSouthDetector HAMAMATSU + """GmosSouthDetector HAMAMATSU""" HAMAMATSU } -# GMOS South Disperser -enum GmosSouthDisperser { - # GmosSouthDisperser B1200_G5321 - B1200_G5321 - - # GmosSouthDisperser R831_G5322 - R831_G5322 - - # GmosSouthDisperser B600_G5323 - B600_G5323 - - # GmosSouthDisperser R600_G5324 - R600_G5324 - - # GmosSouthDisperser B480_G5327 - B480_G5327 - - # GmosSouthDisperser R400_G5325 - R400_G5325 - - # GmosSouthDisperser R150_G5326 - R150_G5326 -} - -# GMOS South dynamic step configuration +"""GMOS South dynamic step configuration""" type GmosSouthDynamic { - # GMOS exposure time + """GMOS exposure time""" exposure: Duration! - # GMOS CCD Readout + """GMOS CCD Readout""" readout: GmosCcdMode! - # GMOS detector x offset + """GMOS detector x offset""" dtax: GmosDtax! - # GMOS region of interest + """GMOS region of interest""" roi: GmosRoi! - # GMOS South grating + """GMOS South grating""" grating: GmosSouthGrating - # GMOS South filter + """GMOS South filter""" filter: GmosSouthFilter - # GMOS South FPU + """GMOS South FPU""" fpu: GmosSouthFpuUnion } -# GMOS South Execution Config +"""GMOS South Execution Config""" type GmosSouthExecutionConfig implements ExecutionConfig { - # GMOS South static configuration + """GMOS South static configuration""" static: GmosSouthStatic! - # GMOS South acquisition execution + """GMOS South acquisition execution""" acquisition: GmosSouthExecutionSequence! - # GMOS South science execution + """GMOS South science execution""" science: GmosSouthExecutionSequence! - # Instrument type + """Instrument type""" instrument: InstrumentType! } -# Next atom to execute and potential future atoms +"""Next atom to execute and potential future atoms""" type GmosSouthExecutionSequence { - # Next atom to execute, if any + """Next atom to execute, if any""" nextAtom: GmosSouthAtom - # Remaining atoms to execute, if any + """Remaining atoms to execute, if any""" possibleFuture: [GmosSouthAtom!]! } -# GMOS South Filter -enum GmosSouthFilter { - # GmosSouthFilter UPrime - U_PRIME +"""GMOS South FPU""" +enum GmosSouthFpu { + """GmosSouthFpu Bhros""" + BHROS - # GmosSouthFilter GPrime - G_PRIME + """GmosSouthFpu Ns1""" + NS1 - # GmosSouthFilter RPrime - R_PRIME + """GmosSouthFpu Ns2""" + NS2 - # GmosSouthFilter IPrime - I_PRIME + """GmosSouthFpu Ns3""" + NS3 - # GmosSouthFilter ZPrime - Z_PRIME + """GmosSouthFpu Ns4""" + NS4 - # GmosSouthFilter Z - Z + """GmosSouthFpu Ns5""" + NS5 - # GmosSouthFilter Y - Y + """GmosSouthFpu LongSlit_0_25""" + LONG_SLIT_0_25 - # GmosSouthFilter GG455 - GG455 + """GmosSouthFpu LongSlit_0_50""" + LONG_SLIT_0_50 - # GmosSouthFilter OG515 - OG515 + """GmosSouthFpu LongSlit_0_75""" + LONG_SLIT_0_75 - # GmosSouthFilter RG610 - RG610 + """GmosSouthFpu LongSlit_1_00""" + LONG_SLIT_1_00 - # GmosSouthFilter RG780 - RG780 + """GmosSouthFpu LongSlit_1_50""" + LONG_SLIT_1_50 - # GmosSouthFilter CaT - CA_T + """GmosSouthFpu LongSlit_2_00""" + LONG_SLIT_2_00 - # GmosSouthFilter HartmannA_RPrime - HARTMANN_A_R_PRIME + """GmosSouthFpu LongSlit_5_00""" + LONG_SLIT_5_00 - # GmosSouthFilter HartmannB_RPrime - HARTMANN_B_R_PRIME + """GmosSouthFpu Ifu2Slits""" + IFU2_SLITS - # GmosSouthFilter GPrime_GG455 - G_PRIME_GG455 + """GmosSouthFpu IfuBlue""" + IFU_BLUE - # GmosSouthFilter GPrime_OG515 - G_PRIME_OG515 + """GmosSouthFpu IfuRed""" + IFU_RED - # GmosSouthFilter RPrime_RG610 - R_PRIME_RG610 + """GmosSouthFpu IfuNS2Slits""" + IFU_NS2_SLITS - # GmosSouthFilter IPrime_RG780 - I_PRIME_RG780 + """GmosSouthFpu IfuNSBlue""" + IFU_NS_BLUE - # GmosSouthFilter IPrime_CaT - I_PRIME_CA_T + """GmosSouthFpu IfuNSRed""" + IFU_NS_RED +} - # GmosSouthFilter ZPrime_CaT - Z_PRIME_CA_T +"""Either custom mask or builtin-FPU""" +union GmosSouthFpuUnion = GmosCustomMask | GmosSouthBuiltinFpu - # GmosSouthFilter Ha - HA +"""GMOS South Grating""" +type GmosSouthGrating { + """GMOS South Disperser""" + disperser: GmosSouthDisperser! - # GmosSouthFilter SII - SII + """GMOS disperser order""" + order: GmosDisperserOrder! - # GmosSouthFilter HaC - HA_C + """Grating wavelength""" + wavelength: Wavelength! +} - # GmosSouthFilter OIII - OIII +"""A series of GmosSouth atoms that comprise the sequence""" +type GmosSouthSequence { + """Sequence atoms""" + atoms: [GmosSouthAtom!]! - # GmosSouthFilter OIIIC - OIIIC + """Time required for the full execution of this sequence""" + time: StepTime! +} - # GmosSouthFilter HeII - HE_II +"""GMOS South stage mode""" +enum GmosSouthStageMode { + """GmosSouthStageMode NoFollow""" + NO_FOLLOW - # GmosSouthFilter HeIIC - HE_IIC + """GmosSouthStageMode FollowXyz""" + FOLLOW_XYZ - # GmosSouthFilter Lya395 - LYA395 + """GmosSouthStageMode FollowXy""" + FOLLOW_XY + + """GmosSouthStageMode FollowZ""" + FOLLOW_Z } -# GMOS South FPU -enum GmosSouthFpu { - # GmosSouthFpu Bhros - BHROS +"""Unchanging (over the course of the sequence) configuration values""" +type GmosSouthStatic { + """Stage mode""" + stageMode: GmosSouthStageMode! - # GmosSouthFpu Ns1 - NS1 + """Detector in use (always HAMAMATSU for recent and new observations)""" + detector: GmosSouthDetector! - # GmosSouthFpu Ns2 - NS2 + """Is MOS Pre-Imaging Observation""" + mosPreImaging: MosPreImaging! - # GmosSouthFpu Ns3 - NS3 + """Nod-and-shuffle configuration""" + nodAndShuffle: GmosNodAndShuffle +} - # GmosSouthFpu Ns4 - NS4 +"""GmosSouth step with potential breakpoint""" +type GmosSouthStep implements Step { + """Instrument configuration for this step""" + instrumentConfig: GmosSouthDynamic! - # GmosSouthFpu Ns5 - NS5 + """Step id""" + id: StepId! - # GmosSouthFpu LongSlit_0_25 - LONG_SLIT_0_25 + """Whether to pause before the execution of this step""" + breakpoint: Breakpoint! - # GmosSouthFpu LongSlit_0_50 - LONG_SLIT_0_50 + """Step type""" + stepType: StepType! - # GmosSouthFpu LongSlit_0_75 - LONG_SLIT_0_75 + """The sequence step itself""" + stepConfig: StepConfig! - # GmosSouthFpu LongSlit_1_00 - LONG_SLIT_1_00 + """Time estimate for this step's execution""" + time: StepTime! +} - # GmosSouthFpu LongSlit_1_50 - LONG_SLIT_1_50 +"""GMOS X Binning""" +enum GmosXBinning { + """GmosXBinning One""" + ONE - # GmosSouthFpu LongSlit_2_00 - LONG_SLIT_2_00 + """GmosXBinning Two""" + TWO - # GmosSouthFpu LongSlit_5_00 - LONG_SLIT_5_00 + """GmosXBinning Four""" + FOUR +} + +"""GMOS Y Binning""" +enum GmosYBinning { + """GmosYBinning One""" + ONE + + """GmosYBinning Two""" + TWO + + """GmosYBinning Four""" + FOUR +} + +"""Magnitude creation parameters""" +input MagnitudeCreateInput { + band: MagnitudeBand! + value: BigDecimal! + error: BigDecimal + system: MagnitudeSystem = VEGA +} + +"""Magnitude edit action (choose one option only)""" +input MagnitudeEditAction { + add: MagnitudeCreateInput + delete: MagnitudeBand + edit: MagnitudeEditInput +} + +"""Magnitude editing parameters""" +input MagnitudeEditInput { + band: MagnitudeBand! + + """ + The value field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + value: BigDecimal + + """ + The system field must be either specified or skipped altogether. It cannot be unset with a null value. + """ + system: MagnitudeSystem + + """ + The error field may be unset by assigning a null value, or ignored by skipping it altogether + """ + error: BigDecimal +} + +"""Magnitude list editing (choose one option only)""" +input MagnitudeEditList { + replaceList: [MagnitudeCreateInput!] + editList: [MagnitudeEditAction!] +} + +"""MOS pre-imaging observation""" +enum MosPreImaging { + """MosPreImaging IsMosPreImaging""" + IS_MOS_PRE_IMAGING + + """MosPreImaging IsNotMosPreImaging""" + IS_NOT_MOS_PRE_IMAGING +} + +type Mutation { + createProgram( + """Program description""" + input: CreateProgramInput! + ): Program + updateProgram( + """Edit program""" + input: EditProgramInput! + ): Program! + createObservation( + """Observation description""" + input: CreateObservationInput! + ): Observation + updateObservation( + """Edit observation""" + input: EditObservationInput! + ): Observation! + updateConstraintSet( + """Bulk edit constraintSet""" + input: BulkEditConstraintSetInput! + ): [Observation!]! + updateScienceRequirements( + """Bulk edit scienceRequirements""" + input: BulkEditScienceRequirementsInput! + ): [Observation!]! + deleteObservation( + """Observation ID""" + observationId: ObservationId! + ): Observation! + undeleteObservation( + """Observation ID""" + observationId: ObservationId! + ): Observation! + + """Creates a new target environment unaffiliated with any observation""" + createTargetEnvironment( + """Program ID""" + programId: ProgramId! + + """Parameters for creating a new target environment""" + input: CreateTargetEnvironmentInput! + ): TargetEnvironment! + updateScienceTarget( + """Editing input for a single science target""" + input: BulkEditTargetInput! + ): [TargetListEditDesc!]! + updateScienceTargetList( + """Editing input for multiple science targets""" + input: BulkEditTargetListInput! + ): [TargetListEditDesc!]! + replaceScienceTargetList( + """Editing input for replacing or setting science target lists""" + input: BulkReplaceTargetListInput! + ): [TargetListEditDesc!]! + updateTargetEnvironment( + """Editing input for editing target environment properties""" + input: BulkEditTargetEnvironmentInput! + ): [TargetEnvironmentContext!]! + addSequenceEvent( + """Sequence event description""" + input: AddSequenceEventInput! + ): SequenceEvent! + addStepEvent( + """Step event description""" + input: AddStepEventInput! + ): StepEvent! + addDatasetEvent( + """Dataset event description""" + input: AddDatasetEventInput! + ): DatasetEvent! +} + +"""Event sent when a new object is created or updated""" +type ObservationEdit implements Event { + """Type of edit""" + editType: EditType! + + """Edited object""" + value: Observation! + id: Long! +} + +"""Decimal value in Parallax""" +input ParallaxDecimalInput { + """decimal value in associated units""" + value: BigDecimal! + + """units for associated value""" + units: ParallaxUnits! +} + +"""Integral value in Parallax""" +input ParallaxLongInput { + """integral value in associated units""" + value: Long! + + """units for associated value""" + units: ParallaxUnits! +} + +"""Parallax, choose one of the available units""" +input ParallaxModelInput { + microarcseconds: Long + milliarcseconds: BigDecimal + fromLong: ParallaxLongInput + fromDecimal: ParallaxDecimalInput +} + +"""Unit options for parallax values""" +enum ParallaxUnits { + """ParallaxUnits Microarcseconds""" + MICROARCSECONDS + + """ParallaxUnits Milliarcseconds""" + MILLIARCSECONDS +} + +"""Event sent when a new object is created or updated""" +type ProgramEdit implements Event { + """Type of edit""" + editType: EditType! + + """Edited object""" + value: Program! + id: Long! +} + +"""Decimal value in ProperMotionComponent""" +input ProperMotionComponentDecimalInput { + """decimal value in associated units""" + value: BigDecimal! + + """units for associated value""" + units: ProperMotionComponentUnits! +} + +"""Proper motion component, choose one of the available units""" +input ProperMotionComponentInput { + microarcsecondsPerYear: Long + milliarcsecondsPerYear: BigDecimal + fromLong: ProperMotionComponentLongInput + fromDecimal: ProperMotionComponentDecimalInput +} + +"""Integral value in ProperMotionComponent""" +input ProperMotionComponentLongInput { + """integral value in associated units""" + value: Long! + + """units for associated value""" + units: ProperMotionComponentUnits! +} + +"""Unit options for proper motion components (RA and Dec)""" +enum ProperMotionComponentUnits { + """ProperMotionComponentUnits MicroarcsecondsPerYear""" + MICROARCSECONDS_PER_YEAR + + """ProperMotionComponentUnits MilliarcsecondsPerYear""" + MILLIARCSECONDS_PER_YEAR +} + +"""Proper motion, choose one of the available units""" +input ProperMotionInput { + ra: ProperMotionComponentInput! + dec: ProperMotionComponentInput! +} + +"""Decimal value in RadialVelocity""" +input RadialVelocityDecimalInput { + """decimal value in associated units""" + value: BigDecimal! + + """units for associated value""" + units: RadialVelocityUnits! +} + +"""Radial velocity, choose one of the available units""" +input RadialVelocityInput { + centimetersPerSecond: Long + metersPerSecond: BigDecimal + kilometersPerSecond: BigDecimal + fromLong: RadialVelocityLongInput + fromDecimal: RadialVelocityDecimalInput +} + +"""Integral value in RadialVelocity""" +input RadialVelocityLongInput { + """integral value in associated units""" + value: Long! + + """units for associated value""" + units: RadialVelocityUnits! +} + +"""Unit options for radial velocity values""" +enum RadialVelocityUnits { + """RadialVelocityUnits CentimetersPerSecond""" + CENTIMETERS_PER_SECOND + + """RadialVelocityUnits MetersPerSecond""" + METERS_PER_SECOND + + """RadialVelocityUnits KilometersPerSecond""" + KILOMETERS_PER_SECOND +} + +"""Decimal value in RightAscension""" +input RightAscensionDecimalInput { + """decimal value in associated units""" + value: BigDecimal! + + """units for associated value""" + units: RightAscensionUnits! +} + +"""Right Ascension, choose one of the available units""" +input RightAscensionInput { + microarcseconds: Long + degrees: BigDecimal + hours: BigDecimal + hms: HmsString + fromLong: RightAscensionLongInput + fromDecimal: RightAscensionDecimalInput +} + +"""Integral value in RightAscension""" +input RightAscensionLongInput { + """integral value in associated units""" + value: Long! + + """units for associated value""" + units: RightAscensionUnits! +} + +"""Unit options for RightAscension values""" +enum RightAscensionUnits { + """RightAscensionUnits Microarcseconds""" + MICROARCSECONDS + + """RightAscensionUnits Degrees""" + DEGREES + + """RightAscensionUnits Hours""" + HOURS +} + +"""Science requirement input params""" +input ScienceRequirementsInput { + mode: ScienceMode! + spectroscopyRequirements: SpectroscopyScienceRequirementsInput! +} + +"""Target environment selection parameters. Choose at least one option.""" +input SelectTargetEnvironmentInput { + all: ProgramId + program: ProgramId + observations: [ObservationId!] + targetEnvironments: [TargetEnvironmentId!] +} + +""" +Target selection parameters. Choose at least one of `names` or `targetIds`. +""" +input SelectTargetInput { + names: [NonEmptyString!] + targetIds: [TargetId!] +} + +"""Slit width in appropriate units""" +input SlitWidthInput { + microarcseconds: Long + milliarcseconds: BigDecimal + arcseconds: BigDecimal +} + +"""Spectroscopy science requirements create params""" +input SpectroscopyScienceRequirementsInput { + wavelength: WavelengthModelInput + resolution: PosInt + signalToNoise: PosBigDecimal + signalToNoiseAt: WavelengthModelInput + wavelengthCoverage: WavelengthModelInput + focalPlane: FocalPlane + focalPlaneAngle: FocalPlaneAngleInput + capabilities: SpectroscopyCapabilities +} + +type Subscription { + """ + + Subscribes to an event that is generated whenever a(n) observation is + created or updated. If a(n) observation id is provided, the event is only + generated for edits to that particular observation. If a program id is + provided then the event must correspond to a(n) observation referenced by + that program. + + """ + observationEdit( + """Observation ID""" + observationId: ObservationId + + """Program ID""" + programId: ProgramId + ): ObservationEdit! + + """ + + Subscribes to an event that is generated whenever a(n) targetEnvironment is + created or updated. If a(n) targetEnvironment id is provided, the event is only + generated for edits to that particular targetEnvironment. If a program id is + provided then the event must correspond to a(n) targetEnvironment referenced by + that program. + + """ + targetEnvironmentEdit( + """Target environment ID""" + targetEnvironmentId: TargetEnvironmentId + + """Program ID""" + programId: ProgramId + ): TargetEnvironmentEdit! + + """ + + Subscribes to an event that is generated whenever a program is created + or edited. A particular program id may be provided to limit events to + that program. + + """ + programEdit( + """Program ID""" + programId: ProgramId + ): ProgramEdit! +} + +type TargetEditDesc { + """Which operation was performed""" + op: TargetEditDescOp! + + """Target that was edited""" + target: Target! +} + +"""The target edit that was performed""" +enum TargetEditDescOp { + """TargetEditDescOp Create""" + CREATE + + """TargetEditDescOp Edit""" + EDIT + + """TargetEditDescOp Delete""" + DELETE +} + +type TargetEnvironmentContext { + """Target environment that was edited""" + targetEnvironment: TargetEnvironment! + + """Observation that houses the target environment, if any""" + observation: Observation + + """Program that houses the target environment""" + program: Program! +} + +"""Event sent when a new object is created or updated""" +type TargetEnvironmentEdit implements Event { + """Type of edit""" + editType: EditType! + + """Edited object""" + value: TargetEnvironment! + id: Long! +} + +type TargetListEditDesc { + """Target environment that was edited""" + targetEnvironment: TargetEnvironment! + + """Observation that houses the target environment, if any""" + observation: Observation + + """Program that houses the target environment""" + program: Program! + + """Details any edits that were performed""" + edits: [TargetEditDesc!]! +} + +"""Decimal value in Wavelength""" +input WavelengthDecimalInput { + """decimal value in associated units""" + value: BigDecimal! + + """units for associated value""" + units: WavelengthUnits! +} + +"""Integral value in Wavelength""" +input WavelengthLongInput { + """integral value in associated units""" + value: Long! + + """units for associated value""" + units: WavelengthUnits! +} + +"""Wavelength, choose one of the available units""" +input WavelengthModelInput { + picometers: Long + angstroms: BigDecimal + nanometers: BigDecimal + micrometers: BigDecimal + fromLong: WavelengthLongInput + fromDecimal: WavelengthDecimalInput +} + +"""Wavelength units""" +enum WavelengthUnits { + """WavelengthUnits Picometers""" + PICOMETERS + + """WavelengthUnits Angstroms""" + ANGSTROMS + + """WavelengthUnits Nanometers""" + NANOMETERS + + """WavelengthUnits Micrometers""" + MICROMETERS +} + +type AirMassRange { + """Minimum Airmass (unitless)""" + min: BigDecimal! + + """Maximum Airmass (unitless)""" + max: BigDecimal! +} + +"""Sequence atom""" +interface Atom { + """Atom id""" + id: AtomId! +} + +"""AtomId id formatted as `m-([1-9a-f][0-9a-f]*)`""" +scalar AtomId + +"""Bias calibration step""" +type Bias implements StepConfig { + """Step type""" + stepType: StepType! +} + +"""Stopping point in a series of steps""" +enum Breakpoint { + """Breakpoint Enabled""" + ENABLED + + """Breakpoint Disabled""" + DISABLED +} + +type CatalogId { + """Catalog name option""" + name: CatalogName! + + """Catalog id string""" + id: String! +} + +"""Catalog name values""" +enum CatalogName { + """CatalogName Simbad""" + SIMBAD + + """CatalogName Horizon""" + HORIZON + + """CatalogName Gaia""" + GAIA +} + +"""Cloud extinction""" +enum CloudExtinction { + """CloudExtinction PointOne""" + POINT_ONE + + """CloudExtinction PointThree""" + POINT_THREE + + """CloudExtinction PointFive""" + POINT_FIVE + + """CloudExtinction OnePointZero""" + ONE_POINT_ZERO + + """CloudExtinction OnePointFive""" + ONE_POINT_FIVE + + """CloudExtinction TwoPointZero""" + TWO_POINT_ZERO + + """CloudExtinction ThreePointZero""" + THREE_POINT_ZERO +} + +type CommonTarget implements TargetDescription { + """Target IDs that share the common target information""" + ids: [TargetId!]! + + """Target name.""" + name: NonEmptyString! + + """Information required to find a target in the sky.""" + tracking: Tracking! + + """Target magnitudes""" + magnitudes: [Magnitude!]! +} + +type CommonTargetEnvironment { + """When set, overrides the default base position of the target group""" + explicitBase: Coordinates + + """All science targets, if any""" + scienceTargets: [CommonTarget!]! + + """First science target, if any""" + firstScienceTarget: CommonTarget +} + +"""Instrument configuration""" +interface Config { + """Instrument type""" + instrument: InstrumentType! + + """Planned time for this configuration""" + plannedTime: PlannedTime! + + """Estimated setup time""" + setupTime: Duration! +} + +"""ConfigurationMode""" +enum ConfigurationModeType { + """ConfigurationModeType GmosNorthLongSlit""" + GMOS_NORTH_LONG_SLIT + + """ConfigurationModeType GmosSouthLongSlit""" + GMOS_SOUTH_LONG_SLIT +} + +type ConstraintSet { + """Image quality""" + imageQuality: ImageQuality! + + """Cloud extinction""" + cloudExtinction: CloudExtinction! + + """Sky background""" + skyBackground: SkyBackground! + + """Water vapor""" + waterVapor: WaterVapor! + + """Either airmass range or elevation range""" + elevationRange: ElevationRange! + + """Airmass range if elevation range is an Airmass range""" + airmassRange: AirMassRange + + """Hour angle range if elevation range is an Hour angle range""" + hourAngleRange: HourAngleRange +} + +type ConstraintSetGroup { + """IDs of observations that use the same constraints""" + observationIds: [ObservationId!]! + + """Observations that use this constraint set""" + observations( + """Retrieve `first` values after the given cursor""" + first: Int + + """Retrieve values after the one associated with this cursor""" + after: Cursor + + """Set to true to include deleted values""" + includeDeleted: Boolean! = false + ): ObservationConnection! + + """Commonly held value across the observations""" + constraintSet: ConstraintSet! +} + +"""Observations grouped by common properties""" +type ConstraintSetGroupConnection { + """The nodes in all the edges from the current page""" + nodes: [ConstraintSetGroup!]! + + """Edges in the current page""" + edges: [ConstraintSetGroupEdge!]! + + """Count of all nodes in all pages""" + totalCount: Int! + + """Paging information""" + pageInfo: PageInfo! +} + +"""An observation group and its cursor""" +type ConstraintSetGroupEdge { + """ConstraintSetGroupEdge element""" + node: ConstraintSetGroup! + + """ConstraintSetGroupEdge element cursor""" + cursor: Cursor! +} + +type Coordinates { + """Right Ascension""" + ra: RightAscension! + + """Declination""" + dec: Declination! +} + +"""Opaque object cursor""" +scalar Cursor + +"""Dark calibration step""" +type Dark implements StepConfig { + """Step type""" + stepType: StepType! +} + +type Dataset { + """Observation associated with this dataset""" + observation: Observation! + + """Step that produced the dataset""" + step: Step! + + """Dataset index""" + index: Int! + + """Dataset filename""" + filename: DatasetFilename! +} + +"""Datasets in the current page""" +type DatasetConnection { + """The nodes in all the edges from the current page""" + nodes: [Dataset!]! + + """Edges in the current page""" + edges: [DatasetEdge!]! + + """Count of all nodes in all pages""" + totalCount: Int! + + """Paging information""" + pageInfo: PageInfo! +} + +"""A Dataset and its cursor""" +type DatasetEdge { + """DatasetEdge element""" + node: Dataset! + + """DatasetEdge element cursor""" + cursor: Cursor! +} + +"""Dataset-level events""" +type DatasetEvent implements ExecutionEvent { + """Step from which the dataset comes""" + step: Step! + + """Dataset filename, when known""" + filename: DatasetFilename + + """Dataset stage""" + stage: DatasetStage! + + """Event id""" + id: ExecutionEventId! + + """Observation whose execution produced this event""" + observation: Observation! + + """ + Time at which this event was generated, according to the caller (e.g., Observe) + """ + generated: Instant! + + """Time at which this event was received""" + received: Instant! +} + +"""Dataset filename in standard format in format 'N20210519S0001.fits'""" +scalar DatasetFilename + +"""Execution stage or phase of an individual dataset""" +enum DatasetStage { + """DatasetStage END_OBSERVE""" + END_OBSERVE + + """DatasetStage END_READOUT""" + END_READOUT + + """DatasetStage END_WRITE""" + END_WRITE + + """DatasetStage START_OBSERVE""" + START_OBSERVE + + """DatasetStage START_READOUT""" + START_READOUT + + """DatasetStage START_WRITE""" + START_WRITE +} + +type Declination { + """Declination in DD:MM:SS.SS format""" + dms: DmsString! + + """Declination in signed degrees""" + degrees: BigDecimal! + + """Declination in signed µas""" + microarcseconds: Long! +} + +"""Target declination coordinate in format '[+/-]DD:MM:SS.sss'""" +scalar DmsString + +""" +Equivalent time amount in several unit options (e.g., 120 seconds or 2 minutes) +""" +type Duration { + """Duration in µs""" + microseconds: Long! + + """Duration in ms""" + milliseconds: BigDecimal! + + """Duration in seconds""" + seconds: BigDecimal! + + """Duration in minutes""" + minutes: BigDecimal! + + """Duration in hours""" + hours: BigDecimal! +} + +"""Either airmass range or elevation range""" +union ElevationRange = AirMassRange | HourAngleRange + +"""Ephemeris key type options""" +enum EphemerisKeyType { + """EphemerisKeyType Comet""" + COMET + + """EphemerisKeyType AsteroidNew""" + ASTEROID_NEW + + """EphemerisKeyType AsteroidOld""" + ASTEROID_OLD + + """EphemerisKeyType MajorBody""" + MAJOR_BODY + + """EphemerisKeyType UserSupplied""" + USER_SUPPLIED +} + +"""Reference observation epoch in format '[JB]YYYY.YYY'""" +scalar EpochString + +"""Executed step""" +type ExecutedStep { + """Step id""" + id: StepId! + + """The executed step itself""" + step: Step! + + """The atom containing the executed step""" + atom: Atom! + + """Datasets associated with this step""" + datasets( + """Retrieve `first` values after the given cursor""" + first: Int + + """Retrieve values after the one associated with this cursor""" + after: Cursor + ): DatasetConnection! +} + +"""Executed steps in the current page""" +type ExecutedStepConnection { + """The nodes in all the edges from the current page""" + nodes: [ExecutedStep!]! + + """Edges in the current page""" + edges: [ExecutedStepEdge!]! + + """Count of all nodes in all pages""" + totalCount: Int! + + """Paging information""" + pageInfo: PageInfo! +} + +"""An executed step and its cursor""" +type ExecutedStepEdge { + """ExecutedStepEdge element""" + node: ExecutedStep! + + """ExecutedStepEdge element cursor""" + cursor: Cursor! +} + +type Execution { + """Datasets associated with the observation""" + datasets( + """Retrieve `first` values after the given cursor""" + first: Int + + """Retrieve values after the one associated with this cursor""" + after: Cursor + ): DatasetConnection! + + """Events associated with the observation""" + events( + """Retrieve `first` values after the given cursor""" + first: Int + + """Retrieve values after the one associated with this cursor""" + after: Cursor + ): ExecutionEventConnection! + + """Executed steps associated with the observation""" + executedSteps( + """Retrieve `first` values after the given cursor""" + first: Int + + """Retrieve values after the one associated with this cursor""" + after: Cursor + ): ExecutedStepConnection! + + """Execution config""" + executionConfig: ExecutionConfig +} + +"""Execution configuration""" +interface ExecutionConfig { + """Instrument type""" + instrument: InstrumentType! +} + +"""Execution event (sequence, step, or dataset events)""" +interface ExecutionEvent { + """Event id""" + id: ExecutionEventId! + + """Observation whose execution produced this event""" + observation: Observation! + + """ + Time at which this event was generated, according to the caller (e.g., Observe) + """ + generated: Instant! + + """Time at which this event was received""" + received: Instant! +} + +"""ExecutionEvents in the current page""" +type ExecutionEventConnection { + """The nodes in all the edges from the current page""" + nodes: [ExecutionEvent!]! + + """Edges in the current page""" + edges: [ExecutionEventEdge!]! + + """Count of all nodes in all pages""" + totalCount: Int! + + """Paging information""" + pageInfo: PageInfo! +} + +"""An ExecutionEvent and its cursor""" +type ExecutionEventEdge { + """ExecutionEventEdge element""" + node: ExecutionEvent! + + """ExecutionEventEdge element cursor""" + cursor: Cursor! +} + +"""ExecutionEventId id formatted as `e-([1-9a-f][0-9a-f]*)`""" +scalar ExecutionEventId + +"""State of being: either Deleted or Present""" +enum Existence { + """Existence Present""" + PRESENT + + """Existence Deleted""" + DELETED +} + +"""Focal plane Single/Multi/IFU""" +enum FocalPlane { + """FocalPlane SingleSlit""" + SINGLE_SLIT + + """FocalPlane MultipleSlit""" + MULTIPLE_SLIT + + """FocalPlane IFU""" + IFU +} + +"""GCAL calibration step (flat / arc)""" +type Gcal implements StepConfig { + """GCAL continuum, present if no arcs are used""" + continuum: GcalContinuum + + """GCAL arcs, one or more present if no continuum is used""" + arcs: [GcalArc!]! + + """GCAL filter""" + filter: GcalFilter! + + """GCAL diffuser""" + diffuser: GcalDiffuser! + + """GCAL shutter""" + shutter: GcalShutter! + + """Step type""" + stepType: StepType! +} + +"""GCAL arc""" +enum GcalArc { + """GcalArc ArArc""" + AR_ARC + + """GcalArc ThArArc""" + TH_AR_ARC + + """GcalArc CuArArc""" + CU_AR_ARC + + """GcalArc XeArc""" + XE_ARC +} + +"""GCAL continuum""" +enum GcalContinuum { + """GcalContinuum IrGreyBodyLow""" + IR_GREY_BODY_LOW + + """GcalContinuum IrGreyBodyHigh""" + IR_GREY_BODY_HIGH + + """GcalContinuum QuartzHalogen""" + QUARTZ_HALOGEN +} + +"""GCAL diffuser""" +enum GcalDiffuser { + """GcalDiffuser Ir""" + IR + + """GcalDiffuser Visible""" + VISIBLE +} + +"""GCAL filter""" +enum GcalFilter { + """GcalFilter None""" + NONE + + """GcalFilter Gmos""" + GMOS + + """GcalFilter Hros""" + HROS + + """GcalFilter Nir""" + NIR + + """GcalFilter Nd10""" + ND10 + + """GcalFilter Nd16""" + ND16 + + """GcalFilter Nd20""" + ND20 + + """GcalFilter Nd30""" + ND30 + + """GcalFilter Nd40""" + ND40 + + """GcalFilter Nd45""" + ND45 + + """GcalFilter Nd50""" + ND50 +} + +"""GCAL shutter""" +enum GcalShutter { + """GcalShutter Open""" + OPEN + + """GcalShutter Closed""" + CLOSED +} + +"""GMOS North Disperser""" +enum GmosNorthDisperser { + """GmosNorthDisperser B1200_G5301""" + B1200_G5301 + + """GmosNorthDisperser R831_G5302""" + R831_G5302 + + """GmosNorthDisperser B600_G5303""" + B600_G5303 + + """GmosNorthDisperser B600_G5307""" + B600_G5307 + + """GmosNorthDisperser R600_G5304""" + R600_G5304 + + """GmosNorthDisperser B480_G5309""" + B480_G5309 + + """GmosNorthDisperser R400_G5305""" + R400_G5305 + + """GmosNorthDisperser R150_G5306""" + R150_G5306 + + """GmosNorthDisperser R150_G5308""" + R150_G5308 +} + +"""GMOS North Filter""" +enum GmosNorthFilter { + """GmosNorthFilter GPrime""" + G_PRIME + + """GmosNorthFilter RPrime""" + R_PRIME + + """GmosNorthFilter IPrime""" + I_PRIME + + """GmosNorthFilter ZPrime""" + Z_PRIME + + """GmosNorthFilter Z""" + Z + + """GmosNorthFilter Y""" + Y + + """GmosNorthFilter GG455""" + GG455 + + """GmosNorthFilter OG515""" + OG515 + + """GmosNorthFilter RG610""" + RG610 + + """GmosNorthFilter CaT""" + CA_T + + """GmosNorthFilter Ha""" + HA + + """GmosNorthFilter HaC""" + HA_C + + """GmosNorthFilter DS920""" + DS920 + + """GmosNorthFilter SII""" + SII + + """GmosNorthFilter OIII""" + OIII + + """GmosNorthFilter OIIIC""" + OIIIC + + """GmosNorthFilter HeII""" + HE_II + + """GmosNorthFilter HeIIC""" + HE_IIC + + """GmosNorthFilter HartmannA_RPrime""" + HARTMANN_A_R_PRIME + + """GmosNorthFilter HartmannB_RPrime""" + HARTMANN_B_R_PRIME + + """GmosNorthFilter GPrime_GG455""" + G_PRIME_GG455 + + """GmosNorthFilter GPrime_OG515""" + G_PRIME_OG515 + + """GmosNorthFilter RPrime_RG610""" + R_PRIME_RG610 + + """GmosNorthFilter IPrime_CaT""" + I_PRIME_CA_T + + """GmosNorthFilter ZPrime_CaT""" + Z_PRIME_CA_T + + """GmosNorthFilter UPrime""" + U_PRIME +} + +"""Basic configuration for GMOS North Long Slit""" +type GmosNorthLongSlit implements ScienceConfiguration { + """GMOS North Filter""" + filter: GmosNorthFilter + + """GMOS North Disperser""" + disperser: GmosNorthDisperser! + + """Slit width in appropriate units""" + slitWidth: slitWidth! + + """Instrument""" + instrument: InstrumentType! + + """Configuration mode""" + mode: ConfigurationModeType! +} + +"""GMOS South Disperser""" +enum GmosSouthDisperser { + """GmosSouthDisperser B1200_G5321""" + B1200_G5321 - # GmosSouthFpu Ifu2Slits - IFU2_SLITS + """GmosSouthDisperser R831_G5322""" + R831_G5322 - # GmosSouthFpu IfuBlue - IFU_BLUE + """GmosSouthDisperser B600_G5323""" + B600_G5323 - # GmosSouthFpu IfuRed - IFU_RED + """GmosSouthDisperser R600_G5324""" + R600_G5324 - # GmosSouthFpu IfuNS2Slits - IFU_NS2_SLITS + """GmosSouthDisperser B480_G5327""" + B480_G5327 - # GmosSouthFpu IfuNSBlue - IFU_NS_BLUE + """GmosSouthDisperser R400_G5325""" + R400_G5325 - # GmosSouthFpu IfuNSRed - IFU_NS_RED + """GmosSouthDisperser R150_G5326""" + R150_G5326 } -# Either custom mask or builtin-FPU -union GmosSouthFpuUnion = GmosCustomMask | GmosSouthBuiltinFpu +"""GMOS South Filter""" +enum GmosSouthFilter { + """GmosSouthFilter UPrime""" + U_PRIME -# GMOS South Grating -type GmosSouthGrating { - # GMOS South Disperser - disperser: GmosSouthDisperser! + """GmosSouthFilter GPrime""" + G_PRIME - # GMOS disperser order - order: GmosDisperserOrder! + """GmosSouthFilter RPrime""" + R_PRIME - # Grating wavelength - wavelength: Wavelength! -} + """GmosSouthFilter IPrime""" + I_PRIME -# Basic configuration for GMOS South Long Slit -type GmosSouthLongSlit implements ScienceConfiguration { - # GMOS South Filter - filter: GmosSouthFilter + """GmosSouthFilter ZPrime""" + Z_PRIME - # GMOS South Disperser - disperser: GmosSouthDisperser! + """GmosSouthFilter Z""" + Z - # Slit width in appropriate units - slitWidth: slitWidth! + """GmosSouthFilter Y""" + Y - # Instrument - instrument: InstrumentType! + """GmosSouthFilter GG455""" + GG455 - # Configuration mode - mode: ConfigurationModeType! -} + """GmosSouthFilter OG515""" + OG515 -# A series of GmosSouth atoms that comprise the sequence -type GmosSouthSequence { - # Sequence atoms - atoms: [GmosSouthAtom!]! + """GmosSouthFilter RG610""" + RG610 - # Time required for the full execution of this sequence - time: StepTime! -} + """GmosSouthFilter RG780""" + RG780 -# GMOS South stage mode -enum GmosSouthStageMode { - # GmosSouthStageMode NoFollow - NO_FOLLOW + """GmosSouthFilter CaT""" + CA_T - # GmosSouthStageMode FollowXyz - FOLLOW_XYZ + """GmosSouthFilter HartmannA_RPrime""" + HARTMANN_A_R_PRIME - # GmosSouthStageMode FollowXy - FOLLOW_XY + """GmosSouthFilter HartmannB_RPrime""" + HARTMANN_B_R_PRIME - # GmosSouthStageMode FollowZ - FOLLOW_Z -} + """GmosSouthFilter GPrime_GG455""" + G_PRIME_GG455 -# Unchanging (over the course of the sequence) configuration values -type GmosSouthStatic { - # Stage mode - stageMode: GmosSouthStageMode! + """GmosSouthFilter GPrime_OG515""" + G_PRIME_OG515 - # Detector in use (always HAMAMATSU for recent and new observations) - detector: GmosSouthDetector! + """GmosSouthFilter RPrime_RG610""" + R_PRIME_RG610 - # Is MOS Pre-Imaging Observation - mosPreImaging: MosPreImaging! + """GmosSouthFilter IPrime_RG780""" + I_PRIME_RG780 - # Nod-and-shuffle configuration - nodAndShuffle: GmosNodAndShuffle -} + """GmosSouthFilter IPrime_CaT""" + I_PRIME_CA_T -# GmosSouth step with potential breakpoint -type GmosSouthStep implements Step { - # Instrument configuration for this step - instrumentConfig: GmosSouthDynamic! + """GmosSouthFilter ZPrime_CaT""" + Z_PRIME_CA_T - # Step id - id: StepId! + """GmosSouthFilter Ha""" + HA - # Whether to pause before the execution of this step - breakpoint: Breakpoint! + """GmosSouthFilter SII""" + SII - # Step type - stepType: StepType! + """GmosSouthFilter HaC""" + HA_C - # The sequence step itself - stepConfig: StepConfig! + """GmosSouthFilter OIII""" + OIII - # Time estimate for this step's execution - time: StepTime! -} + """GmosSouthFilter OIIIC""" + OIIIC -# GMOS X Binning -enum GmosXBinning { - # GmosXBinning One - ONE + """GmosSouthFilter HeII""" + HE_II - # GmosXBinning Two - TWO + """GmosSouthFilter HeIIC""" + HE_IIC - # GmosXBinning Four - FOUR + """GmosSouthFilter Lya395""" + LYA395 } -# GMOS Y Binning -enum GmosYBinning { - # GmosYBinning One - ONE +"""Basic configuration for GMOS South Long Slit""" +type GmosSouthLongSlit implements ScienceConfiguration { + """GMOS South Filter""" + filter: GmosSouthFilter - # GmosYBinning Two - TWO + """GMOS South Disperser""" + disperser: GmosSouthDisperser! - # GmosYBinning Four - FOUR + """Slit width in appropriate units""" + slitWidth: slitWidth! + + """Instrument""" + instrument: InstrumentType! + + """Configuration mode""" + mode: ConfigurationModeType! } type GroupByTarget { - # IDs of target environments that share the common value + """IDs of target environments that share the common value""" targetEnvironmentIds: [TargetEnvironmentId!]! - # IDs of observations that share the common value + """IDs of observations that share the common value""" observationIds: [ObservationId!]! - # Target environments that share the common value + """Target environments that share the common value""" targetEnvironments: [TargetEnvironment!]! - # Commonly held value across the target environments + """Commonly held value across the target environments""" commonTarget: CommonTarget! } type GroupByTargetEnvironment { - # IDs of target environments that share the common value + """IDs of target environments that share the common value""" targetEnvironmentIds: [TargetEnvironmentId!]! - # IDs of observations that share the common value + """IDs of observations that share the common value""" observationIds: [ObservationId!]! - # Target environments that share the common value + """Target environments that share the common value""" targetEnvironments: [TargetEnvironment!]! - # Commonly held value across the target environments + """Commonly held value across the target environments""" commonTargetEnvironment: CommonTargetEnvironment! } type GroupByTargetList { - # IDs of target environments that share the common value + """IDs of target environments that share the common value""" targetEnvironmentIds: [TargetEnvironmentId!]! - # IDs of observations that share the common value + """IDs of observations that share the common value""" observationIds: [ObservationId!]! - # Target environments that share the common value + """Target environments that share the common value""" targetEnvironments: [TargetEnvironment!]! - # Commonly held value across the target environments + """Commonly held value across the target environments""" commonTargetList: [CommonTarget!]! } -# Target right ascension coordinate in format 'HH:MM:SS.sss' +"""Target right ascension coordinate in format 'HH:MM:SS.sss'""" scalar HmsString type HourAngleRange { - # Minimum Hour Angle (hours) + """Minimum Hour Angle (hours)""" minHours: BigDecimal! - # Maximum Hour Angle (hours) + """Maximum Hour Angle (hours)""" maxHours: BigDecimal! } -# Image quality +"""Image quality""" enum ImageQuality { - # ImageQuality PointOne + """ImageQuality PointOne""" POINT_ONE - # ImageQuality PointTwo + """ImageQuality PointTwo""" POINT_TWO - # ImageQuality PointThree + """ImageQuality PointThree""" POINT_THREE - # ImageQuality PointFour + """ImageQuality PointFour""" POINT_FOUR - # ImageQuality PointSix + """ImageQuality PointSix""" POINT_SIX - # ImageQuality PointEight + """ImageQuality PointEight""" POINT_EIGHT - # ImageQuality OnePointZero + """ImageQuality OnePointZero""" ONE_POINT_ZERO - # ImageQuality OnePointFive + """ImageQuality OnePointFive""" ONE_POINT_FIVE - # ImageQuality TwoPointZero + """ImageQuality TwoPointZero""" TWO_POINT_ZERO } -# Instant of time in ISO-8601 representation in format '2011-12-03T10:15:30Z' +""" +Instant of time in ISO-8601 representation in format '2011-12-03T10:15:30Z' +""" scalar Instant -# Instrument +"""Instrument""" enum InstrumentType { - # InstrumentType AcqCam + """InstrumentType AcqCam""" ACQ_CAM - # InstrumentType Bhros + """InstrumentType Bhros""" BHROS - # InstrumentType Flamingos2 + """InstrumentType Flamingos2""" FLAMINGOS2 - # InstrumentType Ghost + """InstrumentType Ghost""" GHOST - # InstrumentType GmosNorth + """InstrumentType GmosNorth""" GMOS_NORTH - # InstrumentType GmosSouth + """InstrumentType GmosSouth""" GMOS_SOUTH - # InstrumentType Gnirs + """InstrumentType Gnirs""" GNIRS - # InstrumentType Gpi + """InstrumentType Gpi""" GPI - # InstrumentType Gsaoi + """InstrumentType Gsaoi""" GSAOI - # InstrumentType Michelle + """InstrumentType Michelle""" MICHELLE - # InstrumentType Nici + """InstrumentType Nici""" NICI - # InstrumentType Nifs + """InstrumentType Nifs""" NIFS - # InstrumentType Niri + """InstrumentType Niri""" NIRI - # InstrumentType Phoenix + """InstrumentType Phoenix""" PHOENIX - # InstrumentType Trecs + """InstrumentType Trecs""" TRECS - # InstrumentType Visitor + """InstrumentType Visitor""" VISITOR - # InstrumentType Scorpio + """InstrumentType Scorpio""" SCORPIO - # InstrumentType Alopeke + """InstrumentType Alopeke""" ALOPEKE - # InstrumentType Zorro + """InstrumentType Zorro""" ZORRO } -# The `Long` scalar type represents non-fractional signed whole numeric values. -# Long can represent values between -(2^63) and 2^63 - 1. -scalar Long - type Magnitude { - # Magnitude value (unitless) + """Magnitude value (unitless)""" value: BigDecimal! - # Magnitude band + """Magnitude band""" band: MagnitudeBand! - # Magnitude System + """Magnitude System""" system: MagnitudeSystem! } -# Magnitude band +"""Magnitude band""" enum MagnitudeBand { - # MagnitudeBand SloanU + """MagnitudeBand SloanU""" SLOAN_U - # MagnitudeBand SloanG + """MagnitudeBand SloanG""" SLOAN_G - # MagnitudeBand SloanR + """MagnitudeBand SloanR""" SLOAN_R - # MagnitudeBand SloanI + """MagnitudeBand SloanI""" SLOAN_I - # MagnitudeBand SloanZ + """MagnitudeBand SloanZ""" SLOAN_Z - # MagnitudeBand U + """MagnitudeBand U""" U - # MagnitudeBand B + """MagnitudeBand B""" B - # MagnitudeBand V + """MagnitudeBand V""" V - # MagnitudeBand Uc + """MagnitudeBand Uc""" UC - # MagnitudeBand R + """MagnitudeBand R""" R - # MagnitudeBand I + """MagnitudeBand I""" I - # MagnitudeBand Y + """MagnitudeBand Y""" Y - # MagnitudeBand J + """MagnitudeBand J""" J - # MagnitudeBand H + """MagnitudeBand H""" H - # MagnitudeBand K + """MagnitudeBand K""" K - # MagnitudeBand L + """MagnitudeBand L""" L - # MagnitudeBand M + """MagnitudeBand M""" M - # MagnitudeBand N + """MagnitudeBand N""" N - # MagnitudeBand Q + """MagnitudeBand Q""" Q - # MagnitudeBand Ap + """MagnitudeBand Ap""" AP } -# Magnitude creation parameters -input MagnitudeCreateInput { - band: MagnitudeBand! - value: BigDecimal! - error: BigDecimal - system: MagnitudeSystem = VEGA -} - -# Magnitude edit action (choose one option only) -input MagnitudeEditAction { - add: MagnitudeCreateInput - delete: MagnitudeBand - edit: MagnitudeEditInput -} - -# Magnitude editing parameters -input MagnitudeEditInput { - band: MagnitudeBand! - - # The value field must be either specified or skipped altogether. It cannot be unset with a null value. - value: BigDecimal - - # The system field must be either specified or skipped altogether. It cannot be unset with a null value. - system: MagnitudeSystem - - # The error field may be unset by assigning a null value, or ignored by skipping it altogether - error: BigDecimal -} - -# Magnitude list editing (choose one option only) -input MagnitudeEditList { - replaceList: [MagnitudeCreateInput!] - editList: [MagnitudeEditAction!] -} - -# Magnitude system +"""Magnitude system""" enum MagnitudeSystem { - # MagnitudeSystem Vega + """MagnitudeSystem Vega""" VEGA - # MagnitudeSystem AB + """MagnitudeSystem AB""" AB - # MagnitudeSystem Jy + """MagnitudeSystem Jy""" JY - # MagnitudeSystem Watts + """MagnitudeSystem Watts""" WATTS - # MagnitudeSystem ErgsWavelength + """MagnitudeSystem ErgsWavelength""" ERGS_WAVELENGTH - # MagnitudeSystem ErgsFrequency + """MagnitudeSystem ErgsFrequency""" ERGS_FREQUENCY } -# MOS pre-imaging observation -enum MosPreImaging { - # MosPreImaging IsMosPreImaging - IS_MOS_PRE_IMAGING - - # MosPreImaging IsNotMosPreImaging - IS_NOT_MOS_PRE_IMAGING -} - -type Mutation { - createProgram( - # Program description - input: CreateProgramInput! - ): Program - updateProgram( - # Edit program - input: EditProgramInput! - ): Program! - createObservation( - # Observation description - input: CreateObservationInput! - ): Observation - updateObservation( - # Edit observation - input: EditObservationInput! - ): Observation! - updateConstraintSet( - # Bulk edit constraintSet - input: BulkEditConstraintSetInput! - ): [Observation!]! - updateScienceRequirements( - # Bulk edit scienceRequirements - input: BulkEditScienceRequirementsInput! - ): [Observation!]! - deleteObservation( - # Observation ID - observationId: ObservationId! - ): Observation! - undeleteObservation( - # Observation ID - observationId: ObservationId! - ): Observation! - - # Creates a new target environment unaffiliated with any observation - createTargetEnvironment( - # Program ID - programId: ProgramId! - - # Parameters for creating a new target environment - input: CreateTargetEnvironmentInput! - ): TargetEnvironment! - updateScienceTarget( - # Editing input for a single science target - input: BulkEditTargetInput! - ): [TargetListEditDesc!]! - updateScienceTargetList( - # Editing input for multiple science targets - input: BulkEditTargetListInput! - ): [TargetListEditDesc!]! - replaceScienceTargetList( - # Editing input for replacing or setting science target lists - input: BulkReplaceTargetListInput! - ): [TargetListEditDesc!]! - updateTargetEnvironment( - # Editing input for editing target environment properties - input: BulkEditTargetEnvironmentInput! - ): [TargetEnvironmentContext!]! - addSequenceEvent( - # Sequence event description - input: AddSequenceEventInput! - ): SequenceEvent! - addStepEvent( - # Step event description - input: AddStepEventInput! - ): StepEvent! - addDatasetEvent( - # Dataset event description - input: AddDatasetEventInput! - ): DatasetEvent! -} - -# A String value that cannot be empty +"""A String value that cannot be empty""" scalar NonEmptyString type Nonsidereal { - # Human readable designation that discriminates among ephemeris keys of the same type. + """ + Human readable designation that discriminates among ephemeris keys of the same type. + """ des: String! - # Nonsidereal target lookup type. + """Nonsidereal target lookup type.""" keyType: EphemerisKeyType! } -# Observation operational/active status options +"""Observation operational/active status options""" enum ObsActiveStatus { - # ObsActiveStatus Active + """ObsActiveStatus Active""" ACTIVE - # ObsActiveStatus Inactive + """ObsActiveStatus Inactive""" INACTIVE } +"""Observation status options""" +enum ObsStatus { + """ObsStatus New""" + NEW + + """ObsStatus Included""" + INCLUDED + + """ObsStatus Proposed""" + PROPOSED + + """ObsStatus Approved""" + APPROVED + + """ObsStatus ForReview""" + FOR_REVIEW + + """ObsStatus Ready""" + READY + + """ObsStatus Ongoing""" + ONGOING + + """ObsStatus Observed""" + OBSERVED +} + type Observation { - # Observation ID + """Observation ID""" id: ObservationId! - # Deleted or Present + """Deleted or Present""" existence: Existence! - # Observation name + """Observation name""" name: NonEmptyString - # Observation status + """Observation status""" status: ObsStatus! - # Observation operational status + """Observation operational status""" activeStatus: ObsActiveStatus! - # Observation planned time calculation. + """Observation planned time calculation.""" plannedTime: PlannedTimeSummary! - # The program that contains this observation + """The program that contains this observation""" program( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): Program! - # The observation's target(s) + """The observation's target(s)""" targets: TargetEnvironment! - # The constraint set for the observation + """The constraint set for the observation""" constraintSet: ConstraintSet! - # The top level science requirements + """The top level science requirements""" scienceRequirements( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ScienceRequirements! - # The science configuration + """The science configuration""" scienceConfiguration( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ScienceConfiguration - # Manual instrument configuration + """Manual instrument configuration""" manualConfig: Config - # Execution sequence and runtime artifacts + """Execution sequence and runtime artifacts""" execution: Execution! } -# Matching observations +"""Matching observations""" type ObservationConnection { - # The nodes in all the edges from the current page + """The nodes in all the edges from the current page""" nodes: [Observation!]! - # Edges in the current page + """Edges in the current page""" edges: [ObservationEdge!]! - # Count of all nodes in all pages + """Count of all nodes in all pages""" totalCount: Int! - # Paging information + """Paging information""" pageInfo: PageInfo! } -# An observation and its cursor +"""An observation and its cursor""" type ObservationEdge { - # ObservationEdge element + """ObservationEdge element""" node: Observation! - # ObservationEdge element cursor + """ObservationEdge element cursor""" cursor: Cursor! } -# Event sent when a new object is created or updated -type ObservationEdit implements Event { - # Type of edit - editType: EditType! - - # Edited object - value: Observation! - id: Long! -} - -# ObservationId id formatted as `o-([1-9a-f][0-9a-f]*)` +"""ObservationId id formatted as `o-([1-9a-f][0-9a-f]*)`""" scalar ObservationId -# Observation status options -enum ObsStatus { - # ObsStatus New - NEW - - # ObsStatus Included - INCLUDED - - # ObsStatus Proposed - PROPOSED - - # ObsStatus Approved - APPROVED - - # ObsStatus ForReview - FOR_REVIEW - - # ObsStatus Ready - READY - - # ObsStatus Ongoing - ONGOING - - # ObsStatus Observed - OBSERVED -} - type Offset { - # Offset in p + """Offset in p""" p: p! - # Offset in q + """Offset in q""" q: q! } -type p { - # p offset in µas - microarcseconds: Long! - - # p offset in mas - milliarcseconds: BigDecimal! - - # p offset in arcsec - arcseconds: BigDecimal! -} - -# Information that supports paging through a list of elements +"""Information that supports paging through a list of elements""" type PageInfo { - # Cursor pointing to the first element in the result set, if any + """Cursor pointing to the first element in the result set, if any""" startCursor: Cursor - # Cursor pointing to the last element in the result set, if any + """Cursor pointing to the last element in the result set, if any""" endCursor: Cursor - # Whether there are any pages left to retrieve - hasNextPage: Boolean! -} - -type Parallax { - # Parallax in microarcseconds - microarcseconds: Long! - - # Parallax in milliarcseconds - milliarcseconds: BigDecimal! -} - -# Decimal value in Parallax -input ParallaxDecimalInput { - # decimal value in associated units - value: BigDecimal! - - # units for associated value - units: ParallaxUnits! -} - -# Integral value in Parallax -input ParallaxLongInput { - # integral value in associated units - value: Long! - - # units for associated value - units: ParallaxUnits! -} - -# Parallax, choose one of the available units -input ParallaxModelInput { - microarcseconds: Long - milliarcseconds: BigDecimal - fromLong: ParallaxLongInput - fromDecimal: ParallaxDecimalInput + """Whether there are any pages left to retrieve""" + hasNextPage: Boolean! } -# Unit options for parallax values -enum ParallaxUnits { - # ParallaxUnits Microarcseconds - MICROARCSECONDS +type Parallax { + """Parallax in microarcseconds""" + microarcseconds: Long! - # ParallaxUnits Milliarcseconds - MILLIARCSECONDS + """Parallax in milliarcseconds""" + milliarcseconds: BigDecimal! } -# Time estimates for executing this configuration +"""Time estimates for executing this configuration""" type PlannedTime { - # Estimated setup time + """Estimated setup time""" setup: Duration! - # Estimated acquisition time for each atom + """Estimated acquisition time for each atom""" acquisition: [StepTime!]! - # Total estimated acquisition time + """Total estimated acquisition time""" acquisitionTotal: StepTime! - # Estimated science time for each atom + """Estimated science time for each atom""" science: [StepTime!]! - # Total estimated science time + """Total estimated science time""" scienceTotal: StepTime! - # Total planned time across acquisition and science + """Total planned time across acquisition and science""" total: Duration! } type PlannedTimeSummary { - # The portion of planned time that will be charged + """The portion of planned time that will be charged""" pi: Duration! - # The portion of planned time that will not be charged + """The portion of planned time that will not be charged""" uncharged: Duration! - # The total estimated execution time + """The total estimated execution time""" execution: Duration! } -# A `BigDecimal` greater than 0 +"""A `BigDecimal` greater than 0""" scalar PosBigDecimal -# An `Int` in the range from 1 to `Int.MaxValue` +"""An `Int` in the range from 1 to `Int.MaxValue`""" scalar PosInt type Program { - # Program ID + """Program ID""" id: ProgramId! - # Deleted or Present + """Deleted or Present""" existence: Existence! - # Program name + """Program name""" name: NonEmptyString - # All observations associated with the program (needs pagination). + """All observations associated with the program (needs pagination).""" observations( - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ObservationConnection! - # Program planned time calculation. + """Program planned time calculation.""" plannedTime( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): PlannedTimeSummary! } -# Programs in the current page +"""Programs in the current page""" type ProgramConnection { - # The nodes in all the edges from the current page + """The nodes in all the edges from the current page""" nodes: [Program!]! - # Edges in the current page + """Edges in the current page""" edges: [ProgramEdge!]! - # Count of all nodes in all pages + """Count of all nodes in all pages""" totalCount: Int! - # Paging information + """Paging information""" pageInfo: PageInfo! } -# A Program node and its cursor +"""A Program node and its cursor""" type ProgramEdge { - # ProgramEdge element + """ProgramEdge element""" node: Program! - # ProgramEdge element cursor + """ProgramEdge element cursor""" cursor: Cursor! } -# Event sent when a new object is created or updated -type ProgramEdit implements Event { - # Type of edit - editType: EditType! - - # Edited object - value: Program! - id: Long! -} - -# ProgramId id formatted as `p-([1-9a-f][0-9a-f]*)` +"""ProgramId id formatted as `p-([1-9a-f][0-9a-f]*)`""" scalar ProgramId type ProperMotion { - # Proper motion in RA + """Proper motion in RA""" ra: ProperMotionRA! - # Proper motion in declination + """Proper motion in declination""" dec: ProperMotionDeclination! } -# Decimal value in ProperMotionComponent -input ProperMotionComponentDecimalInput { - # decimal value in associated units - value: BigDecimal! - - # units for associated value - units: ProperMotionComponentUnits! -} - -# Proper motion component, choose one of the available units -input ProperMotionComponentInput { - microarcsecondsPerYear: Long - milliarcsecondsPerYear: BigDecimal - fromLong: ProperMotionComponentLongInput - fromDecimal: ProperMotionComponentDecimalInput -} - -# Integral value in ProperMotionComponent -input ProperMotionComponentLongInput { - # integral value in associated units - value: Long! - - # units for associated value - units: ProperMotionComponentUnits! -} - -# Unit options for proper motion components (RA and Dec) -enum ProperMotionComponentUnits { - # ProperMotionComponentUnits MicroarcsecondsPerYear - MICROARCSECONDS_PER_YEAR - - # ProperMotionComponentUnits MilliarcsecondsPerYear - MILLIARCSECONDS_PER_YEAR -} - type ProperMotionDeclination { - # Proper motion in properMotion μas/year + """Proper motion in properMotion μas/year""" microarcsecondsPerYear: Long! - # Proper motion in properMotion mas/year + """Proper motion in properMotion mas/year""" milliarcsecondsPerYear: BigDecimal! } -# Proper motion, choose one of the available units -input ProperMotionInput { - ra: ProperMotionComponentInput! - dec: ProperMotionComponentInput! -} - type ProperMotionRA { - # Proper motion in properMotion μas/year + """Proper motion in properMotion μas/year""" microarcsecondsPerYear: Long! - # Proper motion in properMotion mas/year + """Proper motion in properMotion mas/year""" milliarcsecondsPerYear: BigDecimal! } -type q { - # q offset in µas - microarcseconds: Long! - - # q offset in mas - milliarcseconds: BigDecimal! - - # q offset in arcsec - arcseconds: BigDecimal! -} - type Query { - # Returns all observations associated with the given ids or program, or all observations if neither is specified. + """ + Returns all observations associated with the given ids or program, or all observations if neither is specified. + """ observations( - # (Optional) listing of specific observations to retrieve + """(Optional) listing of specific observations to retrieve""" observationIds: [ObservationId!] - # (Optional) program whose observations are sought + """(Optional) program whose observations are sought""" programId: ProgramId - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ObservationConnection! - # Returns the observation with the given id, if any. + """Returns the observation with the given id, if any.""" observation( - # Observation ID + """Observation ID""" observationId: ObservationId! - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): Observation - # Observations grouped by commonly held constraints + """Observations grouped by commonly held constraints""" constraintSetGroup( - # Program ID + """Program ID""" programId: ProgramId! - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ConstraintSetGroupConnection! - # Observations grouped by commonly held science requirements + """Observations grouped by commonly held science requirements""" scienceRequirementsGroup( - # Program ID + """Program ID""" programId: ProgramId! - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ScienceRequirementsGroupConnection! - # Pages through all requested programs (or all programs if no ids are given). + """ + Pages through all requested programs (or all programs if no ids are given). + """ programs( - # (Optional) listing of programs to retrieve (all programs if empty) + """(Optional) listing of programs to retrieve (all programs if empty)""" programIds: [ProgramId!] - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ProgramConnection! - # Returns the program with the given id, if any. + """Returns the program with the given id, if any.""" program( - # Program ID + """Program ID""" programId: ProgramId! - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): Program - # The first (or only) science target (if any) for the given observation (or environment) + """ + The first (or only) science target (if any) for the given observation (or environment) + """ scienceTarget( - # Observation ID + """Observation ID""" observationId: ObservationId - # Target environment ID + """Target environment ID""" targetEnvironmentId: TargetEnvironmentId ): Target - # All science targets (if any) for the given observation (or environment) + """ + All science targets (if any) for the given observation (or environment) + """ scienceTargetList( - # Observation ID + """Observation ID""" observationId: ObservationId - # Target environment ID + """Target environment ID""" targetEnvironmentId: TargetEnvironmentId ): [Target!]! - # Target environment for the given observation (or environment id) + """Target environment for the given observation (or environment id)""" targetEnvironment( - # Observation ID + """Observation ID""" observationId: ObservationId - # Target environment ID + """Target environment ID""" targetEnvironmentId: TargetEnvironmentId ): TargetEnvironment - # Target environments grouped by those that share the same target + """Target environments grouped by those that share the same target""" scienceTargetGroup( - # Program ID + """Program ID""" programId: ProgramId! - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): [GroupByTarget!]! - # Target environments grouped by those that share the same collection of targets + """ + Target environments grouped by those that share the same collection of targets + """ scienceTargetListGroup( - # Program ID + """Program ID""" programId: ProgramId! - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): [GroupByTargetList!]! - # Target environments grouped by those that share the same properties and targets + """ + Target environments grouped by those that share the same properties and targets + """ targetEnvironmentGroup( - # Program ID + """Program ID""" programId: ProgramId! - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): [GroupByTargetEnvironment!]! } type RadialVelocity { - # Radial velocity in cm/s + """Radial velocity in cm/s""" centimetersPerSecond: Long! - # Radial velocity in m/s + """Radial velocity in m/s""" metersPerSecond: BigDecimal! - # Radial velocity in km/s + """Radial velocity in km/s""" kilometersPerSecond: BigDecimal! } -# Decimal value in RadialVelocity -input RadialVelocityDecimalInput { - # decimal value in associated units - value: BigDecimal! - - # units for associated value - units: RadialVelocityUnits! -} - -# Radial velocity, choose one of the available units -input RadialVelocityInput { - centimetersPerSecond: Long - metersPerSecond: BigDecimal - kilometersPerSecond: BigDecimal - fromLong: RadialVelocityLongInput - fromDecimal: RadialVelocityDecimalInput -} - -# Integral value in RadialVelocity -input RadialVelocityLongInput { - # integral value in associated units - value: Long! - - # units for associated value - units: RadialVelocityUnits! -} - -# Unit options for radial velocity values -enum RadialVelocityUnits { - # RadialVelocityUnits CentimetersPerSecond - CENTIMETERS_PER_SECOND - - # RadialVelocityUnits MetersPerSecond - METERS_PER_SECOND - - # RadialVelocityUnits KilometersPerSecond - KILOMETERS_PER_SECOND -} - type RightAscension { - # Right Ascension (RA) in HH:MM:SS.SSS format + """Right Ascension (RA) in HH:MM:SS.SSS format""" hms: HmsString! - # Right Ascension (RA) in hours + """Right Ascension (RA) in hours""" hours: BigDecimal! - # Right Ascension (RA) in degrees + """Right Ascension (RA) in degrees""" degrees: BigDecimal! - # Right Ascension (RA) in µas + """Right Ascension (RA) in µas""" microarcseconds: Long! } -# Decimal value in RightAscension -input RightAscensionDecimalInput { - # decimal value in associated units - value: BigDecimal! - - # units for associated value - units: RightAscensionUnits! -} - -# Right Ascension, choose one of the available units -input RightAscensionInput { - microarcseconds: Long - degrees: BigDecimal - hours: BigDecimal - hms: HmsString - fromLong: RightAscensionLongInput - fromDecimal: RightAscensionDecimalInput -} - -# Integral value in RightAscension -input RightAscensionLongInput { - # integral value in associated units - value: Long! - - # units for associated value - units: RightAscensionUnits! -} - -# Unit options for RightAscension values -enum RightAscensionUnits { - # RightAscensionUnits Microarcseconds - MICROARCSECONDS - - # RightAscensionUnits Degrees - DEGREES - - # RightAscensionUnits Hours - HOURS -} - -# Science step +"""Science step""" type Science implements StepConfig { - # Offset + """Offset""" offset: Offset! - # Step type + """Step type""" stepType: StepType! } -# Base science configuration +"""Base science configuration""" interface ScienceConfiguration { - # Instrument + """Instrument""" instrument: InstrumentType! - # Configuration mode + """Configuration mode""" mode: ConfigurationModeType! } -# Mode Spectroscopy/Imaging +"""Mode Spectroscopy/Imaging""" enum ScienceMode { - # ScienceMode Imaging + """ScienceMode Imaging""" IMAGING - # ScienceMode Spectroscopy + """ScienceMode Spectroscopy""" SPECTROSCOPY } type ScienceRequirements { - # Science mode + """Science mode""" mode: ScienceMode! - # Spectroscopy requirements + """Spectroscopy requirements""" spectroscopyRequirements: SpectroscopyScienceRequirements! } type ScienceRequirementsGroup { - # IDs of observations that use the same constraints + """IDs of observations that use the same constraints""" observationIds: [ObservationId!]! - # Observations that use this constraint set + """Observations that use this constraint set""" observations( - # Retrieve `first` values after the given cursor + """Retrieve `first` values after the given cursor""" first: Int - # Retrieve values after the one associated with this cursor + """Retrieve values after the one associated with this cursor""" after: Cursor - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): ObservationConnection! - # Commonly held value across the observations + """Commonly held value across the observations""" scienceRequirements: ScienceRequirements! } -# Observations grouped by common properties +"""Observations grouped by common properties""" type ScienceRequirementsGroupConnection { - # The nodes in all the edges from the current page + """The nodes in all the edges from the current page""" nodes: [ScienceRequirementsGroup!]! - # Edges in the current page + """Edges in the current page""" edges: [ScienceRequirementsGroupEdge!]! - # Count of all nodes in all pages + """Count of all nodes in all pages""" totalCount: Int! - # Paging information + """Paging information""" pageInfo: PageInfo! } -# An observation group and its cursor +"""An observation group and its cursor""" type ScienceRequirementsGroupEdge { - # ScienceRequirementsGroupEdge element + """ScienceRequirementsGroupEdge element""" node: ScienceRequirementsGroup! - # ScienceRequirementsGroupEdge element cursor + """ScienceRequirementsGroupEdge element cursor""" cursor: Cursor! } -# Science requirement input params -input ScienceRequirementsInput { - mode: ScienceMode! - spectroscopyRequirements: SpectroscopyScienceRequirementsInput! -} - -# Target environment selection parameters. Choose at least one option. -input SelectTargetEnvironmentInput { - all: ProgramId - program: ProgramId - observations: [ObservationId!] - targetEnvironments: [TargetEnvironmentId!] -} - -# Target selection parameters. Choose at least one of `names` or `targetIds`. -input SelectTargetInput { - names: [NonEmptyString!] - targetIds: [TargetId!] -} - -# Sequence-level command +"""Sequence-level command""" enum SequenceCommand { - # SequenceCommand ABORT + """SequenceCommand ABORT""" ABORT - # SequenceCommand CONTINUE + """SequenceCommand CONTINUE""" CONTINUE - # SequenceCommand PAUSE + """SequenceCommand PAUSE""" PAUSE - # SequenceCommand SLEW + """SequenceCommand SLEW""" SLEW - # SequenceCommand START + """SequenceCommand START""" START - # SequenceCommand STOP + """SequenceCommand STOP""" STOP } -# Sequence-level events +"""Sequence-level events""" type SequenceEvent implements ExecutionEvent { - # Sequence command + """Sequence command""" command: SequenceCommand! - # Event id + """Event id""" id: ExecutionEventId! - # Observation whose execution produced this event + """Observation whose execution produced this event""" observation: Observation! - # Time at which this event was generated, according to the caller (e.g., Observe) + """ + Time at which this event was generated, according to the caller (e.g., Observe) + """ generated: Instant! - # Time at which this event was received + """Time at which this event was received""" received: Instant! } -# Type of sequence, acquisition or science +"""Type of sequence, acquisition or science""" enum SequenceType { - # SequenceType ACQUISITION + """SequenceType ACQUISITION""" ACQUISITION - # SequenceType SCIENCE + """SequenceType SCIENCE""" SCIENCE } type Sidereal { - # Catalog id, if any, describing from where the information in this target was obtained + """ + Catalog id, if any, describing from where the information in this target was obtained + """ catalogId: CatalogId - # Coordinates at epoch + """Coordinates at epoch""" coordinates: Coordinates! - # Epoch, time of base observation + """Epoch, time of base observation""" epoch: EpochString! - # Proper motion per year in right ascension and declination + """Proper motion per year in right ascension and declination""" properMotion: ProperMotion - # Radial velocity + """Radial velocity""" radialVelocity: RadialVelocity - # Parallax + """Parallax""" parallax: Parallax } -# Sky background +"""Sky background""" enum SkyBackground { - # SkyBackground Darkest + """SkyBackground Darkest""" DARKEST - # SkyBackground Dark + """SkyBackground Dark""" DARK - # SkyBackground Gray + """SkyBackground Gray""" GRAY - # SkyBackground Bright + """SkyBackground Bright""" BRIGHT } -type slitWidth { - # Slit width in µas - microarcseconds: Long! - - # Slit width in mas - milliarcseconds: BigDecimal! - - # Slit width in arcsec - arcseconds: BigDecimal! -} - -# Slit width in appropriate units -input SlitWidthInput { - microarcseconds: Long - milliarcseconds: BigDecimal - arcseconds: BigDecimal -} - -# Spectroscopy capabilities Nod&Shuffle/Polarimetry/Corongraphy +"""Spectroscopy capabilities Nod&Shuffle/Polarimetry/Corongraphy""" enum SpectroscopyCapabilities { - # SpectroscopyCapabilities NodAndShuffle + """SpectroscopyCapabilities NodAndShuffle""" NOD_AND_SHUFFLE - # SpectroscopyCapabilities Polarimetry + """SpectroscopyCapabilities Polarimetry""" POLARIMETRY - # SpectroscopyCapabilities Coronagraphy + """SpectroscopyCapabilities Coronagraphy""" CORONAGRAPHY } type SpectroscopyScienceRequirements { - # Requested central wavelength + """Requested central wavelength""" wavelength: Wavelength - # Requested resolution + """Requested resolution""" resolution: PosInt - # Requested signal to noise ratio + """Requested signal to noise ratio""" signalToNoise: PosBigDecimal - # Requested wavelength for the requested signal to noise + """Requested wavelength for the requested signal to noise""" signalToNoiseAt: Wavelength - # Wavelength range + """Wavelength range""" wavelengthCoverage: Wavelength - # Focal plane choice + """Focal plane choice""" focalPlane: FocalPlane - # Focal plane angle + """Focal plane angle""" focalPlaneAngle: focalPlaneAngle - # Spectroscopy Capabilities - capabilities: SpectroscopyCapabilities -} - -# Spectroscopy science requirements create params -input SpectroscopyScienceRequirementsInput { - wavelength: WavelengthModelInput - resolution: PosInt - signalToNoise: PosBigDecimal - signalToNoiseAt: WavelengthModelInput - wavelengthCoverage: WavelengthModelInput - focalPlane: FocalPlane - focalPlaneAngle: FocalPlaneAngleInput + """Spectroscopy Capabilities""" capabilities: SpectroscopyCapabilities } -# Sequence step +"""Sequence step""" interface Step { - # Step id + """Step id""" id: StepId! - # Whether to pause before the execution of this step + """Whether to pause before the execution of this step""" breakpoint: Breakpoint! - # Step type + """Step type""" stepType: StepType! - # The sequence step itself + """The sequence step itself""" stepConfig: StepConfig! - # Time estimate for this step's execution + """Time estimate for this step's execution""" time: StepTime! } -# Step (bias, dark, gcal, science, etc.) +"""Step (bias, dark, gcal, science, etc.)""" interface StepConfig { - # Step type + """Step type""" stepType: StepType! } -# Step-level events +"""Step-level events""" type StepEvent implements ExecutionEvent { - # Step to which the event applies + """Step to which the event applies""" step: Step! - # Sequence type + """Sequence type""" sequenceType: SequenceType! - # Step stage + """Step stage""" stage: StepStage! - # Event id + """Event id""" id: ExecutionEventId! - # Observation whose execution produced this event + """Observation whose execution produced this event""" observation: Observation! - # Time at which this event was generated, according to the caller (e.g., Observe) + """ + Time at which this event was generated, according to the caller (e.g., Observe) + """ generated: Instant! - # Time at which this event was received + """Time at which this event was received""" received: Instant! } -# StepId id formatted as `s-([1-9a-f][0-9a-f]*)` +"""StepId id formatted as `s-([1-9a-f][0-9a-f]*)`""" scalar StepId -# Execution stage or phase of an individual step +"""Execution stage or phase of an individual step""" enum StepStage { - # StepStage END_CONFIGURE + """StepStage END_CONFIGURE""" END_CONFIGURE - # StepStage END_OBSERVE + """StepStage END_OBSERVE""" END_OBSERVE - # StepStage END_STEP + """StepStage END_STEP""" END_STEP - # StepStage START_CONFIGURE + """StepStage START_CONFIGURE""" START_CONFIGURE - # StepStage START_OBSERVE + """StepStage START_OBSERVE""" START_OBSERVE - # StepStage START_STEP + """StepStage START_STEP""" START_STEP } -# Time required for a step or steps, categorized according to use +"""Time required for a step or steps, categorized according to use""" type StepTime { - # Time spent making configuration changes + """Time spent making configuration changes""" configChange: Duration! - # Time spent collecting photons + """Time spent collecting photons""" exposure: Duration! - # Time spent reading out the detector + """Time spent reading out the detector""" readout: Duration! - # Time spent writing the dataset file + """Time spent writing the dataset file""" write: Duration! - # Total time across all categories + """Total time across all categories""" total: Duration! } -# Step type +"""Step type""" enum StepType { - # StepType Bias + """StepType Bias""" BIAS - # StepType Dark + """StepType Dark""" DARK - # StepType Gcal + """StepType Gcal""" GCAL - # StepType Science + """StepType Science""" SCIENCE - # StepType SmartGcal + """StepType SmartGcal""" SMART_GCAL } -type Subscription { - # - # Subscribes to an event that is generated whenever a(n) observation is - # created or updated. If a(n) observation id is provided, the event is only - # generated for edits to that particular observation. If a program id is - # provided then the event must correspond to a(n) observation referenced by - # that program. - # - observationEdit( - # Observation ID - observationId: ObservationId - - # Program ID - programId: ProgramId - ): ObservationEdit! - - # - # Subscribes to an event that is generated whenever a(n) targetEnvironment is - # created or updated. If a(n) targetEnvironment id is provided, the event is only - # generated for edits to that particular targetEnvironment. If a program id is - # provided then the event must correspond to a(n) targetEnvironment referenced by - # that program. - # - targetEnvironmentEdit( - # Target environment ID - targetEnvironmentId: TargetEnvironmentId - - # Program ID - programId: ProgramId - ): TargetEnvironmentEdit! - - # - # Subscribes to an event that is generated whenever a program is created - # or edited. A particular program id may be provided to limit events to - # that program. - # - programEdit( - # Program ID - programId: ProgramId - ): ProgramEdit! -} - type Target implements TargetDescription { - # Target ID + """Target ID""" id: TargetId! - # Target environment ID + """Target environment ID""" targetEnvironmentId: TargetEnvironmentId! - # Target environment that houses this target + """Target environment that houses this target""" targetEnvironment: TargetEnvironment! - # Observation that references this target, if any. + """Observation that references this target, if any.""" observation( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): Observation - # Target name. + """Target name.""" name: NonEmptyString! - # Information required to find a target in the sky. + """Information required to find a target in the sky.""" tracking: Tracking! - # Target magnitudes + """Target magnitudes""" magnitudes: [Magnitude!]! } -# Target data fields +"""Target data fields""" interface TargetDescription { - # Target name. + """Target name.""" name: NonEmptyString! - # Information required to find a target in the sky. + """Information required to find a target in the sky.""" tracking: Tracking! - # Target magnitudes + """Target magnitudes""" magnitudes: [Magnitude!]! } -type TargetEditDesc { - # Which operation was performed - op: TargetEditDescOp! - - # Target that was edited - target: Target! -} - -# The target edit that was performed -enum TargetEditDescOp { - # TargetEditDescOp Create - CREATE - - # TargetEditDescOp Edit - EDIT - - # TargetEditDescOp Delete - DELETE -} - type TargetEnvironment { - # Target environment id + """Target environment id""" id: TargetEnvironmentId! - # When set, overrides the default base position of the target group + """When set, overrides the default base position of the target group""" explicitBase: Coordinates - # All science targets, if any + """All science targets, if any""" scienceTargets: [Target!]! - # First science target, if any + """First science target, if any""" firstScienceTarget: Target - # Observation housing this environment, if any + """Observation housing this environment, if any""" observation( - # Set to true to include deleted values + """Set to true to include deleted values""" includeDeleted: Boolean! = false ): Observation } -type TargetEnvironmentContext { - # Target environment that was edited - targetEnvironment: TargetEnvironment! - - # Observation that houses the target environment, if any - observation: Observation - - # Program that houses the target environment - program: Program! -} - -# Event sent when a new object is created or updated -type TargetEnvironmentEdit implements Event { - # Type of edit - editType: EditType! - - # Edited object - value: TargetEnvironment! - id: Long! -} - -# TargetEnvironmentId id formatted as `v-([1-9a-f][0-9a-f]*)` +"""TargetEnvironmentId id formatted as `v-([1-9a-f][0-9a-f]*)`""" scalar TargetEnvironmentId -# TargetId id formatted as `t-([1-9a-f][0-9a-f]*)` +"""TargetId id formatted as `t-([1-9a-f][0-9a-f]*)`""" scalar TargetId -type TargetListEditDesc { - # Target environment that was edited - targetEnvironment: TargetEnvironment! - - # Observation that houses the target environment, if any - observation: Observation - - # Program that houses the target environment - program: Program! - - # Details any edits that were performed - edits: [TargetEditDesc!]! -} - -# Either Nonsidereal ephemeris lookup key or Sidereal proper motion. +"""Either Nonsidereal ephemeris lookup key or Sidereal proper motion.""" union Tracking = Nonsidereal | Sidereal -# Water vapor +"""Water vapor""" enum WaterVapor { - # WaterVapor VeryDry + """WaterVapor VeryDry""" VERY_DRY - # WaterVapor Dry + """WaterVapor Dry""" DRY - # WaterVapor Median + """WaterVapor Median""" MEDIAN - # WaterVapor Wet + """WaterVapor Wet""" WET } type Wavelength { - # Wavelength in pm + """Wavelength in pm""" picometers: Int! - # Wavelength in Å + """Wavelength in Å""" angstroms: BigDecimal! - # Wavelength in nm + """Wavelength in nm""" nanometers: BigDecimal! - # Wavelength in µm + """Wavelength in µm""" micrometers: BigDecimal! } -# Decimal value in Wavelength -input WavelengthDecimalInput { - # decimal value in associated units - value: BigDecimal! +type focalPlaneAngle { + """Focal plane angle in µas""" + microarcseconds: Long! - # units for associated value - units: WavelengthUnits! + """Focal plane angle in mas""" + milliarcseconds: BigDecimal! + + """Focal plane angle in arcsec""" + arcseconds: BigDecimal! } -# Integral value in Wavelength -input WavelengthLongInput { - # integral value in associated units - value: Long! +type p { + """p offset in µas""" + microarcseconds: Long! - # units for associated value - units: WavelengthUnits! -} + """p offset in mas""" + milliarcseconds: BigDecimal! -# Wavelength, choose one of the available units -input WavelengthModelInput { - picometers: Long - angstroms: BigDecimal - nanometers: BigDecimal - micrometers: BigDecimal - fromLong: WavelengthLongInput - fromDecimal: WavelengthDecimalInput + """p offset in arcsec""" + arcseconds: BigDecimal! } -# Wavelength units -enum WavelengthUnits { - # WavelengthUnits Picometers - PICOMETERS +type q { + """q offset in µas""" + microarcseconds: Long! - # WavelengthUnits Angstroms - ANGSTROMS + """q offset in mas""" + milliarcseconds: BigDecimal! - # WavelengthUnits Nanometers - NANOMETERS + """q offset in arcsec""" + arcseconds: BigDecimal! +} - # WavelengthUnits Micrometers - MICROMETERS +type slitWidth { + """Slit width in µas""" + microarcseconds: Long! + + """Slit width in mas""" + milliarcseconds: BigDecimal! + + """Slit width in arcsec""" + arcseconds: BigDecimal! } +""" +The `BigDecimal` scalar type represents signed fractional values with arbitrary precision. +""" +scalar BigDecimal + +""" +The `Long` scalar type represents non-fractional signed whole numeric values. Long can represent values between -(2^63) and 2^63 - 1. +""" +scalar Long + diff --git a/templates/src/main/scala/lucuma/schemas/ObservationDB.scala b/templates/src/main/scala/lucuma/schemas/ObservationDB.scala index f11c9324..55ca91de 100644 --- a/templates/src/main/scala/lucuma/schemas/ObservationDB.scala +++ b/templates/src/main/scala/lucuma/schemas/ObservationDB.scala @@ -51,6 +51,7 @@ trait ObservationDB { type GcalFilter = enum.GcalFilter type GcalShutter = enum.GcalShutter type GmosAmpCount = enum.GmosAmpCount + type GmosAmpGain = enum.GmosAmpGain type GmosAmpReadMode = enum.GmosAmpReadMode type GmosCustomSlitWidth = enum.GmosCustomSlitWidth type GmosDisperserOrder = enum.GmosDisperserOrder