{
  "informationService": {
    "descriptionInformation": {
      "descriptionIdentification": {
        "title": "OPMET API and PUB/SUB - METAR",
        "edition": "0.1",
        "referenceDate": "2025-12-19"
      },
      "abbreviations": [
        { "name": "AIRM", "description": "ATM Information Reference Model" },
        { "name": "AMQP", "description": "Advanced Queueing Message Protocol (1.0) – per SWIM TI Yellow Profile Messaging" },
        { "name": "ATC", "description": "Air Traffic Control" },
        { "name": "ATM", "description": "Air Traffic Management" },
        { "name": "LHMS", "description": "Lithuanian hydrometeorological service under the Ministry of Environment" },
        { "name": "HTTP", "description": "Hypertext Transfer Protocol" },
        { "name": "ICAO", "description": "International Civil Aviation Organization" },
        { "name": "IER", "description": "Information Exchange Requirement" },
        { "name": "IR", "description": "Implementation Rules" },
        { "name": "ISRM", "description": "Information Service Reference Model" },
        { "name": "IWXXM", "description": "ICAO Meteorological Information Exchange Model" },
        { "name": "METAR", "description": "Meteorological Aerodrome Report" },
        { "name": "NWS", "description": "National Weather Service" },
        { "name": "OGC", "description": "Open Geospatial Consortium" },
        { "name": "PCP", "description": "Pilot Common Project" },
        { "name": "REQ", "description": "Requirement" },
        { "name": "WMO", "description": "World Meteorological Organization" },
        { "name": "SIGMET", "description": "Significant meteorological phenomena" },
        { "name": "TAF", "description": "Terminal Aerodrome Forecast" }
      ]
    },
    "serviceIdentification": {
      "name": "OPMET API and PUB/SUB - METAR",
      "version": "0.1"
    },
    "serviceAbstract": "The service provides the latest METAR reports in IWXXM for Lithuanian aerodromes in compliance with ICAO Annex 3, PANS-MET and EU Implementing Regulations. Retrieval is available via (1) an OGC API - Environmental Data Retrieval (EDR) endpoint and (2) subscription over AMQP 1.0 where the IWXXM payload and message headers conform to the EUROCONTROL SWIM Technical Infrastructure Yellow Profile (Messaging).",
    "serviceProvider": {
      "providerType": [
        "REGULATED_METEOROLOGICAL_SERVICE_PROVIDER"
      ],
      "pointOfContact": [
        {
          "name": "SWIM.METEO contact group",
          "contactInformation": [
            { "type": "EMAIL", "address": "swim@meteo.lt" },
            { "type": "PHONE", "address": "+370 648 06 320" },
            { "type": "URL", "address": "https://www.meteo.lt" }
          ],
          "role": "Data Provider"
        }
      ],
      "provider": "LHMS",
      "providerDescription": "LHMS is designated meteorological service provider for International Air Navigation within the Vilniaus FIR in accordance with ICAO Annex 3 and Commission Implementing Regulation (EU) No. 2017/373."
    },
    "serviceCategorisation": {
      "serviceType": "SWIM_COMPLIANT",
      "businessActivityType": [
        "AERODROME_OPERATION",
        "AIRSPACE_ORGANISATION_AND_MANAGEMENT",
        "INFORMATION_MANAGEMENT",
        "SERVICE_DELIVERY_MANAGEMENT"
      ],
      "intendedConsumer": [
        "AIR_TRAFFIC_SERVICE_PROVIDER",
        "AIRPORT_OPERATOR",
        "AIRSIDE_GROUND_HANDLER",
        "CIVIL_AIR_NAVIGATION_SERVICE_PROVIDER",
        "CIVIL_AIRSPACE_USER",
        "COMMUNICATION_NAVIGATION_AND_SURVEILLANCE_SERVICE_PROVIDER",
        "MILITARY_AIR_NAVIGATION_SERVICE_PROVIDER",
        "MILITARY_AIRSPACE_USER",
        "PROVIDER_OF_DATA_SERVICES",
        "REGULATED_METEOROLOGICAL_SERVICE_PROVIDER"
      ],
      "informationCategory": [
        "METEOROLOGICAL_INFORMATION_EXCHANGE"
      ],
      "applicationMessageExchangePattern": [
        { "name": "Request/Reply" },
        { "name": "Publish/Subscribe with Push Mechanism" }
      ],
      "geospatialCategorisation": {
        "countryCode": [ "LT" ],
        "fir": [ "EYVI" ],
        "description": "The dataset is valid for Lithuania (Vilnius FIR/EYVI)."
      },
      "other": [
        {
          "name": "Service Type: METEOROLOGICAL_FEATURE_ACCESS_SERVICE",
          "value": "METEOROLOGICAL_FEATURE_ACCESS_SERVICE",
          "categorisationScheme": {
            "url": "http://reference.swim.aero/information-services/service-categories/CodeServiceType.html"
          }
        },
        {
          "name": "Service Type: METEOROLOGICAL_INFORMATION_SUBSCRIPTION_SERVICE",
          "value": "METEOROLOGICAL_INFORMATION_SUBSCRIPTION_SERVICE",
          "categorisationScheme": {
            "url": "http://reference.swim.aero/information-services/service-categories/CodeServiceType.html"
          }
        }
      ],
      "lifeCycle": [
        { "lifeCycleStage": "OPERATIONAL", "from": "2025-12-29" }
      ]
    },
    "generalDescription": {
      "operationalEnvironment": {
        "operationalNeeds": [
          {
            "name": "Operational Needs",
            "description": "This service contributes to fulfilling operational needs as defined in Commission Implementing Regulation (EU) 2017/373 and ICAO Annex 3. It supports the EU Implementing Regulation 2021/116 - Common Project One."
          },
          {
            "name": "Information Exchange Requirements",
            "description": "IER 1 - The information currently included in the METAR as defined in Commission Implementing Regulation (EU) 2017/373, ICAO Annex 3 Amendment 82, and PANS-MET."
          }
        ],
        "capabilities": [
          {
            "name": "Capabilities",
            "description": "The service provides high quality, up-to-date, trusted, regulated meteorological information in digital form for use by service consumers within the aviation domain."
          }
        ]
      },
      "functionality": [
        {
          "name": "Distribute Data",
          "description": "The service distributes the data according to the stored subscriptions and topics.",
          "realWorldEffect": "Information has been shared; the service consumer gets the requested data."
        },
        {
          "name": "Request Data",
          "description": "The consumer can request data from the service using an OGC API - EDR endpoint.",
          "realWorldEffect": "Information has been shared; the service consumer gets the requested data."
        },
        {
          "name": "Subscribe to Data",
          "description": "The user can receive data via AMQP 1.0. Messages follow the SWIM TI Yellow Profile (Messaging).",
          "realWorldEffect": "Subscription established; data is received upon publication."
        }
      ],
      "qualitiesOfService": {
        "performance": [
          { 
		  "name": "Performance", 
		  "description": "Actual pre-operational status." 
		  }
		],
        "reliability": [
          { 
		  "name": "Reliability", 
		  "description": "Actual pre-operational status." 
		  }
        ],
        "security": [
          {
            "name": "Security",
            "description": "SWIM TI Yellow Profile-compliant security controls (confidentiality, integrity, authentication)."
          }
        ]
      },
      "accessAndUseConditions": [
        {
          "name": "General Terms and Conditions of Business",
          "type": "LEGAL_CONSTRAINT",
          "description": "Terms and conditions are provided by LHMS upon request."
        },
        {
          "name": "Customization",
          "type": "SERVICE_POLICY",
          "description": "Within the given constraints, the user can customize the service to individual needs if applicable. LHMS provides the service delivery from beginning to end of the subscription. If no start time is given, the subscription starts immediately. If no end time is given, the subscription continues until the service is retired."
        },
        {
          "name": "Information Retainment",
          "type": "SERVICE_CONSUMPTION_CONSTRAINT",
          "description": "According to ICAO Annex 3, meteorological information is retained for a period of at least 30 days from the date of issue."
        },
        {
          "name": "Subscription",
          "type": "SERVICE_CONSUMPTION_CONSTRAINT",
          "description": "Consumers begin receiving data by connecting to the published endpoints with appropriate credentials; no explicit subscribe/unsubscribe API is provided."
        },
        {
          "name": "Authentication and authorization",
          "type": "SECURITY_CONSTRAINT",
          "description": "Access is limited to authorized users per SWIM TI Yellow Profile."
        },
        {
          "name": "Encryption",
          "type": "SECURITY_CONSTRAINT",
          "description": "Communication is encrypted per SWIM TI Yellow Profile."
        },
        {
          "name": "Signature",
          "type": "SECURITY_CONSTRAINT",
          "description": "The requested information may contain a digital signature using SHA-256 or stronger."
        }
      ],
      "validation": [
        { "type": "SELF_VALIDATION", 
		   "description": { "evidence": "Service tested by LHMS" } }
      ],
      "dateInOperation": "2025-12-29"
    },
    "informationDescription": {
      "filtering": {
        "capability": [
          {
            "name": "Filtering Capabilities (EDR)",
            "description": "Filtering is exposed through OGC API - EDR query parameters and collections, including spatial, temporal, and parameter subsetting of IWXXM-derived attributes (e.g., aerodrome ICAO designator, observation/issue times).",
            "reference": { "url": "https://ogcapi.ogc.org/edr/" }
          },
          {
            "name": "Filtering Capabilities (AMQP)",
            "description": "Topic-based filtering is available through the broker’s topic hierarchy. Private queues with provider-defined selectors consistent with SWIM TI Yellow Profile may be provisioned."
          }
        ]
      },
      "sourceOfInformation": "The service provider ensures that the data offered within this service is created by LHMS, a REGULATED_METEOROLOGICAL_SERVICE_PROVIDER.",
      "informationDefinition": [
        {
          "name": "METAR (Meteorological Aerodrome Report)",
          "definition": "A digital aeronautical meteorological observation for an aerodrome, encoded and exchanged using IWXXM.",
          "airmCorrespondence": "AIRM 1.0.0 :: METAR — correspondence and mapping notes: https://airm.aero/developers/icao-wxxm-3.0.0-to-airm-1.0.0-index",
          "datatype": "IWXXM 3.x METAR",
          "cardinality": "0..*",
          "constraints": "IWXXM version 2023-1 (https://schemas.wmo.int/iwxxm/2023-1/iwxxm.xsd). Payload is raw XML in AMQP messages and EDR responses; no size constraints.",
          "path": "/metar"
        }
      ]
    },
    "technicalDescription": {
      "serviceMonitoring": {
        "monitoringDescription": "LHMS IT components are monitored with 24/7 maintenance."
      },
      "technicalConstraint": [
        {
          "name": "Topic Structure",
          "description": "Messages are published under weather.aviation.{taf,metar,sigmet}. This covers all messages in the Lithuania FIR. AMQP 1.0 filters (e.g., ICAO location identifier) can be applied via message headers as defined by the message schema."
        },
        {
          "name": "Payload Encoding",
          "description": "IWXXM content is carried as plain text XML (not gzipped)."
        },
        {
          "name": "Flow Control and Limits",
          "description": "Default link credit and connection limits are to be confirmed; values will be documented in narrative connection documentation when available."
        }
      ],
      "behaviour": [
        {
          "name": "Typical Request/Reply Behaviour",
          "description": "The request is sent from the consumer to the EDR service, which processes the request and returns the METAR IWXXM payload. The service follows OGC API - EDR behaviour.",
          "reference": {
            "description": "OGC API - EDR",
            "url": "https://ogcapi.ogc.org/edr/"
          }
        },
        {
          "name": "Typical Data Distribution Behaviour",
          "description": "The service sends data to consumers when available and matching their connection parameters using AMQP 1.0 per SWIM TI Yellow Profile Messaging."
        }
      ]
    },
    "serviceInterface": [
      {
        "name": "EDR Request",
        "description": "The interface is used to receive the data via OGC API - EDR.",
        "provisionSide": "PROVIDER_SIDE",
        "schema": { "url": "https://www.meteo.lt" },
        "endpoints": [
          {
            "name": "LHMS EDR API",
            "description": "Connection between the service provider and the consumer via OGC API - EDR. Contact LHMS SWIM.METEO group for credentials and collection details.",
            "url": "https://swim.meteo.lt:8443/"
          }
        ],
        "serviceInterfaceBinding": {
          "name": "SWIM_TI_YP_1_1_HTTP_REST",
          "description": "HTTP(S) REST binding per SWIM Technical Infrastructure Yellow Profile."
        },
        "networkInterfaceBinding": {
          "name": "IPV4_SECURE_UNICAST",
          "description": "Service supports IPv4 secure unicast and IPv6 secure unicast over TLS (mTLS per policy)."
        },
        "operations": [
          {
            "name": "EDR operations",
            "description": "Standard EDR retrieval operations (collection discovery, position/area/trajectory queries, temporal subsetting).",
            "idempotency": "IDEMPOTENT",
            "messages": [
              { "name": "EDR Request", "direction": "IN" },
              { "name": "EDR Response", "direction": "OUT" }
            ]
          }
        ],
        "messages": [
          {
            "name": "EDR Response",
            "description": "Response payload structure and parameters are defined by the OpenAPI document.",
            "schema": { "url": "https://www.meteo.lt" }
          }
        ],
        "messageExchangePattern": "SYNCHRONOUS_REQUEST_RESPONSE"
      },
      {
        "name": "AMQP Push Service",
        "description": "The interface is used to receive published data via AMQP 1.0 per SWIM TI Yellow Profile Messaging.",
        "provisionSide": "PROVIDER_SIDE",
        "schema": {
          "url": "https://raw.githubusercontent.com/iblsoft/swimdemo/acf23736bca2a55a0184988acbcd52cd8f8b88c3/schema/cp1/metar.json"
        },
        "endpoints": [
          {
            "name": "AMQPBrokerLHMS",
            "description": "Connection for AMQP 1.0 notifications and payload delivery according to the consumer’s connection.",
            "url": "amqps://swim.meteo.lt:5671"
          }
        ],
        "serviceInterfaceBinding": {
          "name": "AMQP_MESSAGING",
          "description": "Binding aligned with EUROCONTROL SWIM Technical Infrastructure Yellow Profile (Messaging)."
        },
        "networkInterfaceBinding": {
          "name": "IPV4_SECURE_UNICAST",
          "description": "Service supports IPv4 secure unicast and IPv6 secure unicast over TLS (mTLS per policy)."
        },
        "operations": [
          {
            "name": "dataDelivery",
            "description": "The IWXXM payload is delivered directly in the AMQP message or via reference to an EDR resource.",
            "idempotency": "NON_IDEMPOTENT",
            "messages": [
              { "name": "dataDelivery", "direction": "OUT" }
            ]
          }
        ],
        "messages": [
          {
            "name": "dataDelivery",
            "description": "AMQP message contract including headers/properties and IWXXM payload shape for METAR.",
            "schema": {
              "url": "https://raw.githubusercontent.com/iblsoft/swimdemo/acf23736bca2a55a0184988acbcd52cd8f8b88c3/schema/cp1/metar.json"
            }
          }
        ],
        "messageExchangePattern": "BROKERED_PUBLISH_SUBSCRIBE_WITH_PUSH_MECHANISM"
      }
    ],
    "references": {
      "serviceDocument": [
        {
          "documentType": "POLICY_DOCUMENT",
          "title": "Appendix A: References",
          "version": "-",
          "reference": {
            "url": "https://swim-eurocontrol.atlassian.net/wiki/spaces/MSS/pages/60162182/IWXXM+METAR-SPECI+Subscription+and+Request+Service+-+Service+Definition#IWXXMMETAR-SPECISubscriptionandRequestService-ServiceDefinition-AppendixA"
          },
          "description": "Reference list for the service."
        },
        {
          "documentType": "POLICY_DOCUMENT",
          "title": "Appendix B: Operational Needs",
          "version": "-",
          "reference": {
            "url": "https://swim-eurocontrol.atlassian.net/wiki/spaces/MSS/pages/60162182/IWXXM+METAR-SPECI+Subscription+and+Request+Service+-+Service+Definition#IWXXMMETAR-SPECISubscriptionandRequestService-ServiceDefinition-AppendixB"
          },
          "description": "Operational needs supported by the service."
        },
        {
          "documentType": "SPECIFICATION",
          "title": "Meteorological SWIM Services Subscription Interface Standard",
          "version": "-",
          "reference": {
            "url": "https://swim-eurocontrol.atlassian.net/wiki/spaces/MSS/pages/60162052/Meteorological+SWIM+Services+Subscription+Interface+Standard"
          },
          "description": "Subscription interface specification."
        }
      ],
      "implementedStandard": [
        {
          "title": "OGC API - Environmental Data Retrieval (EDR)",
          "standardType": "SERVICE_STANDARD",
          "conformanceStatement": "is conformant",
          "version": "1.1.0",
          "description": "OGC API - Environmental Data Retrieval"
        },
        {
          "title": "EUROCONTROL SWIM Technical Infrastructure - Yellow Profile (Messaging, AMQP 1.0)",
          "standardType": "EUROCONTROL_SPECIFICATION_FOR_SWIM_TECHNICAL_INFRASTRUCTURE",
          "conformanceStatement": "is conformant",
          "version": "2.0",
          "description": "Advanced Message Queuing Protocol 1.0 per SWIM TI Yellow Profile"
        }
      ]
    }
  }
}
