Skip to main content

Methane LDAR Backend Subgraph Reference

The su-methane-ldar-backend subgraph provides comprehensive Leak Detection and Repair (LDAR) operations, emission observation tracking, and inspection workflow management.

Subgraph Information

  • Name: su-methane-ldar-backend
  • Routing URL: https://x2ex1v41i5.execute-api.us-west-2.amazonaws.com/poc/graphql
  • Last Updated: 2025-09-25
  • SDL: View Schema

Overview

This subgraph owns:
  • Emission observations (detections)
  • Inspection requests (OGI, drone)
  • Equipment and component clues
  • Detection resolution workflows
  • Emission observation reports
  • Compliance severity tracking

Root Query Fields

extend type Query {
  emissionObservations: EmissionObservations
  emissionObservationReports: EmissionObservationReports
  inspectionRequests: InspectionRequests
  noDetections: NoDetections
  emissionEvents: EmissionEvents
  methaneLdarBackendDatasets(group: ID!): [CamEngineDataset!]!
  methaneLdarBackendConfig: EmissionConfig
  methaneLdarBackendConfigs(group: ID!): EmissionConfigs
  genAi: GenAi
}

Root Mutation Fields

extend type Mutation {
  # Emission Observation Operations
  createEmissionObservation(input: CreateEmissionObservationInput!): EmissionObservationMutationResult!
  deleteEmissionObservation(input: DeleteEmissionObservationInput!): EmissionObservationMutationResult!
  acknowledgeEmissionObservation(input: AcknowledgeEmissionObservationInput!): EmissionObservationMutationResult!
  attributeEmissionObservationToEquipment(input: AttributeEmissionObservationToEquipmentInput!): AttributeEmissionObservationToEquipmentResult!
  attributeEmissionObservationToSite(input: AttributeEmissionObservationToSiteInput!): AttributeEmissionObservationToSiteResult!
  attributeEmissionObservationsToEquipment(input: AttributeEmissionObservationsToEquipmentInput!): AttributeEmissionObservationsToEquipmentResult!

  # Detection Operations
  createDetection(input: CreateDetectionInput!): DetectionMutationResult!
  updateDetection(input: UpdateDetectionInput!): DetectionMutationResult!
  updateHistoricalDetection(input: UpdateHistoricalDetectionInput!): DetectionMutationResult!
  resolveDetection(input: ResolveDetectionInput!): DetectionMutationResult!
  pendDetection(input: PendDetectionInput!): DetectionMutationResult!

  # Venting Event Operations
  createVentingEvent(input: CreateVentingEventInput!): VentingEventMutationResult!
  updateVentingEvent(input: UpdateVentingEventInput!): UpdateVentingEventResult!

  # Inspection Request Operations
  createInspectionRequest(input: CreateInspectionRequestInput!): InspectionRequestMutationResult!
  updateInspectionRequest(input: UpdateInspectionRequestInput!): InspectionRequestMutationResult!
  updateInspectionRequestStatus(input: UpdateInspectionRequestStatusInput!): InspectionRequestMutationResult!

  # Clue Operations
  updateClue(input: UpdateClueInput!): ClueMutationResult!

  # No Detection Operations
  createNoDetection(input: CreateNoDetectionInput!): NoDetectionMutationResult!
  updateNoDetection(input: UpdateNoDetectionInput!): NoDetectionMutationResult!
  deleteNoDetection(input: DeleteNoDetectionInput!): NoDetectionMutationResult!

  # Emission Event Operations
  createEmissionEvent(input: CreateEmissionEventInput!): EmissionEventMutationResult!
  updateEmissionEventFalseAlarmStatus(input: UpdateEmissionEventFalseAlarmStatusInput!): EmissionEventMutationResult! @deprecated
  updateEmissionEventStatus(input: UpdateEmissionEventStatusInput!): EmissionEventMutationResult!
  attributeEmissionEvent(input: EmissionEventAttributionInput!): EmissionEventMutationResult!
  correlateEmissionEvents(input: EmissionEventsCorrelationInput!): EmissionEventsCorrelationResult!
  unCorrelateEmissionEvents(input: EmissionEventsUncorrelationInput!): EmissionEventsUncorrelationResult!
  deleteEmissionEvents(input: DeleteEmissionEventsInput!): EmissionEventMutationResult!

  # Alarm Operations
  createAlarm(input: CreateEmissionAlarmInput!): EmissionAlarmMutationResult!
  updateAlarm(input: UpdateEmissionAlarmInput!): EmissionAlarmMutationResult!

  # Dataset & Configuration Operations
  reloadMethaneLdarBackendDatasets(group: ID!): [CamEngineDataset!]!
  generateNoDetectionsDatasets(input: NoDetectionsDatasetsInput!): NoDetectionsDatasetsResult!
  setMethaneLdarConfig(group: ID!, id: ID!, value: JSONObject!): EmissionConfigMutationResult
  manageEmissions(dryRun: Boolean): ManageEmissionsMutation
}

Core Types

EmissionObservation

Detected emission event requiring investigation.
type EmissionObservation @key(fields: "id") {
  id: ID!
  displayName: String!
  priority: EmissionObservationPriority!    # HIGH(100), MEDIUM(50), LOW(1)
  status: DetectionStatus!
  detectionType: DetectionType!             # SATELLITE, FLYOVER, DRONE, OGI, etc.
  phenomenonTime: DateTime!
  receivedAt: DateTime!
  geometry: GeoJSONGeometryInterface
  clues: [ClueReference!]
  inspectionRequests: [InspectionRequestReference!]
  resolutionMode: ResolutionMode
  audit: EmissionObservationAudit!
}

Detection Types

enum DetectionType {
  DETECTION_TYPE_SATELLITE
  DETECTION_TYPE_FLYOVER
  DETECTION_TYPE_DRONE
  DETECTION_TYPE_OGI          # Optical Gas Imaging
  DETECTION_TYPE_CMS          # Continuous Monitoring System
  DETECTION_TYPE_OWD          # On-site Walk Down
  DETECTION_TYPE_VENTING_FLARING_BLOWDOWN
  DETECTION_TYPE_MANUAL
}

Detection Status

enum DetectionStatus {
  DETECTION_STATUS_NEW
  DETECTION_STATUS_VISUAL_INSPECTION_SCHEDULED
  DETECTION_STATUS_VISUAL_INSPECTION_COMPLETED
  DETECTION_STATUS_OGI_REQUESTED
  DETECTION_STATUS_OGI_SCHEDULED
  DETECTION_STATUS_OGI_COMPLETED
  DETECTION_STATUS_LEAK_REPAIR_SCHEDULED
  DETECTION_STATUS_LEAK_REPAIRED
  DETECTION_STATUS_VERIFICATION_SCHEDULED
  DETECTION_STATUS_RESOLVED
}

InspectionRequest

Request for follow-up inspection.
type InspectionRequest {
  id: ID!
  detectionReference: DetectionReference!
  inspectionType: InspectionType!     # INSPECTION_OGI, INSPECTION_DRONE
  status: InspectionStatus!
  additionalComment: String
  clues: [ClueReference!]
  requestedBy: InspectionRequestRequester
  audit: InspectionRequestAudit!
  siteId: ID
  multitaskProcedureId: String
}

Equipment & Clues

Equipment context for detections:
type Equipment {
  id: ID!
  name: String!
  description: String
  siteReference: SiteReference!
  components: [EquipmentComponent!]
}

type Clue {
  clueId: ID!
  displayName: String!
  equipment: Equipment
}

Resolution Modes

enum ResolutionMode {
  DETECTION_RESOLVED_CORRELATED         # Correlated with another detection
  DETECTION_RESOLVED_FALSE_ALARM        # False positive
  DETECTION_RESOLVED_READY_TO_RECONCILE # Ready for compliance reporting
}

Entity Extensions

Site

Extends Site with emission observation reports.
type SiteReference @key(fields: "siteId") {
  siteId: ID!
  emissionObservationReports: EmissionObservationMonthSiteReportConnection
}