{
  "informationService": {
    "descriptionInformation": {
      "serviceDescriptionIdentification": {
        "serviceDescriptionTitle": "AUGUR RAIM REST API Service Description",
        "serviceDescriptionEdition": "1.0",
        "serviceDescriptionReferenceDate": "12 Jul 2021"
      },
      "abbreviations": [
        {
		  "name": "GPS",
		  "description": "Global Positioning System"
		},
		{
		  "name": "RAIM",
		  "description": "Receiver Autonomous Integrity Monitoring"
		}
	  ]
    },
    "name": "AUGUR RAIM REST API Service",
    "version": "1.0",
    "serviceAbstract": "AUGUR is the web-based service provided by EUROCONTROL for RAIM availability prediction. The AUGUR service is one means by which airspace users can comply with the EASA requirements to verify RAIM availability during pre-flight planning.",
    "serviceProvision": {
      "provider": "GMV Aerospace and Defense",
      "providerDescription": "GMV is a privately owned technological business group with an international presence. Founded in 1984, GMV offers its solutions, services and products in very diverse sectors: Aeronautics, Banking and Finances, Space, Defense, Health, Cybersecurity, Intelligent Transportation Systems, Automotive, Telecommunications, and Information Technology for Public Administration and large corporations.",
      "providerType": [
        "AERONAUTICAL_INFORMATION_SERVICE_PROVIDER",
		"CIVIL_AIRSPACE_USER",
		"CIVIL_AIR_NAVIGATION_SERVICE_PROVIDER"		
      ],
      "pointOfContact": [
        {
          "name": "AUGUR Helpdesk Desk",
          "description": "To reports incidents on services in operation",
          "email": "augur.helpdesk@eurocontrol.int"
        }
      ],
      "dateInOperation": "2021-07-12"
    },
    "serviceCategorisation": {
      "serviceType": "SWIM_CANDIDATE",
      "lifeCycleStage": "OPERATIONAL",
      "businessActivityType": [
        "AIRSPACE_USER_OPERATIONS",
		"INFORMATION_MANAGEMENT"
      ],
      "intendedConsumer": [
	    "AERONAUTICAL_INFORMATION_SERVICE_PROVIDER",
        "CIVIL_AIRSPACE_USER",
		"CIVIL_AIR_NAVIGATION_SERVICE_PROVIDER"
      ],
      "informationCategory": [
        "AERONAUTICAL_INFORMATION_EXCHANGE"
      ],
      "applicationMessageExchangePattern": [
        "REQUEST_REPLY"
      ],
      "geospatialCategorisation": {
        "aerodromeICAOLocationIndicator": ["EU Aerodromes"],
        "stateICAONationalityLetters": ["BG", "BI", "BK", "DA", "DT", "EB", "ED", "EE", "EF", "EG", "EH", "EI", "EK", "EL", "EN", "EP", "ES", "ET", "EV", "EY", "FM", "GC", "GM", "HE", "HL", "LA", "LB", "LC", "LD", "LE", "LF", "LG", "LH", "LI", "LJ", "LK", "LL", "LM", "LN", "LO", "LP", "LQ", "LR", "LS", "LT", "LU", "LV", "LW", "LX", "LY", "LZ", "NL", "NT", "NW", "OL", "SO", "TF", "UA", "UB", "UK", "UT"]
      }
    },
    "serviceGeneralDescription": {
      "operationalNeed": [
        {
          "name": "EASA Requirements Compliance",
          "description": "The AUGUR service is one means by which airspace users can comply with the EASA requirements to verify RAIM availability during pre-flight planning."
        }
      ],
      "functionality": [
        {
          "name": "Retrieve last RAIM prediction",
          "description": "Obtain relevant information for last available RAIM prediction in JSON format.",
          "realWorldEffect": "Network Information Sharing"
        },
		{
          "name": "Retrieve a list of Aerodromes",
          "description": "Obtain the list of available aerodromes configured in the AUGUR tool in JSON format.",
          "realWorldEffect": "Network Information Sharing"
        },
		{
          "name": "Retrieve RAIM outages for a list of Aerodromes",
          "description": "Obtain predicted RAIM outages for a 72 hour period for the provided combination of Aerodromes, Algorithm and Start Time in JSON format.",
          "realWorldEffect": "Network Information Sharing"
        }
      ],
      "qualityOfService": [
        {
          "name": "Availability",
          "description": "99%"
        }
      ],
      "accessAndUseCondition": [
        {
          "name": "Maximum Request Per Minute",
          "description": "A limit on request per minute to the API will be established on a per user basis.",
          "type": "OTHER"
        }
      ],
      "validation": [
		{
          "type": "COLLABORATIVE_VALIDATION",
          "description": "Validation of outputs performed by EUROCONTROL."
        },
		{
          "type": "SELF_VALIDATION",
          "description": "Internal validation of the service performed by GMV."
        }
      ]
    },
    "serviceInformationDescription": {
      "informationDefinition": [
        {
          "name": "Service Information Definition",
          "description": "The information definition is described in a separate document. This includes the semantic correspondence. See References.",
          "airmConformant": true,
          "airmVersion": "1.0.0"
        }
      ],
      "exchangeSchema": [
		{
          "name": "Transport Security Layer",
          "reference": "IETF RFC 5246 (TLV v1.2)",
          "schemaLanguage": "TLS"
        },
		{
          "name": "Hypertext Transfer Protocol",
          "reference": "IETF RFC 2818",
          "schemaLanguage": "HTTP"
        },
        {
          "name": "JavaScript Object Notation",
          "reference": "IETF RFC 7159",
          "schemaLanguage": "JSON"
        }
      ]
    },
    "serviceTechnicalDescription": {
      "securityMechanism": [
        {
          "name": "JWT",
          "description": "JSON Web Token (JWT) is an open standard (RFC 7519) that defines a compact and self-contained way for securely transmitting information between parties as a JSON object. This information can be verified and trusted because it is digitally signed.",
          "type": [
            "AUTHENTICATION"
          ]
        }
      ],
      "technicalConstraint": [
        {
          "name": "User Registration",
          "description": "Any user that wishes to use the service must request a username and password via email to the AUGUR Helpdesk"
        }
      ]
    },
    "serviceDescriptionReferences": {
      "implementedStandard": [
        {
          "title": "EUROCONTROL Specification for SWIM Service Description",
          "description": "This specification contains requirements for describing implemented information services within the context of Initial System Wide Information Management (iSWIM).",
          "standardType": "EUROCONTROL_SPECIFICATION_FOR_SWIM_SERVICE_DESCRIPTION",
          "conformanceStatement": "Compatible",
          "isConformant": true,
          "reference": "EUROCONTROL-SPEC-168",
          "version": "1.0"
        }
      ],
      "serviceDocument": [
        {
          "documentType": "SERVICE_SPECIFICATION",
          "reference": "RAVAPS2-GMV-TN-01_v1.1_SWIM_API",
          "title": "AUGUR RAIM Prediction SWIM API Specification",
          "version": "1.1"
        }
      ]
    },
    "serviceInterface": [
      {
        "name": "AUGUR RAIM Prediction Service",
        "description": "This interface allows requesting RAIM outages for a set of locations.",
        "interfaceProvisionSide": "PROVIDER_SIDE_INTERFACE",
        "tiPrimitiveMessageExchangePattern": "FIRE_AND_FORGET",
        "endPoint": [
		  {
            "name": "JWT Authentication Endpoint", 
            "description": "The service is available for consumption for operational usage at this endpoint.",
            "address": "https://augur.eurocontrol.int/api/v1/token/"
          },
		  {
            "name": "JWT Authentication Refresh Endpoing", 
            "description": "The service is available for consumption for operational usage at this endpoint.",
            "address": "https://augur.eurocontrol.int/api/v1/token/refresh/"
          },
          {
            "name": "GPS Status Endpoint", 
            "description": "The service is available for consumption for operational usage at this endpoint.",
            "address": "https://augur.eurocontrol.int/api/v1/status/"
          },
		  {
            "name": "Available Locations Endpoint",
            "description": "The service is available for consumption for operational usage at this endpoint.",
            "address": "https://augur.eurocontrol.int/api/v1/locations/"
          },
		  {
			"name": "Outages Request Endpoint",
            "description": "The service is available for consumption for operational usage at this endpoint.",
            "address": "https://augur.eurocontrol.int/api/v1/outage/"
          }
        ],
        "serviceInterfaceBinding": "SWIM_TI_YP_1_0_WS_LIGHT",
        "networkInterfaceBinding": "IPV4_UNICAST",
        "interfaceBindingDescription": "JSON requests and replies embedded into REST messages, themselves embedded into HTTP requests and responses. Operation names are associated to REST requests. The interface does not use compression or message transmission optimization mechanism (MTOM).",
        "operation": [
          {
            "name": "getJWT",
            "description": "The getJWT Service Operation receives the user/pass credentials. The operation returns an access and refresh JWT taking into account the processing considerations.",
            "idempotency": "IDEMPOTENT",
            "synchronicity": "SYNCHRONOUS",
			"precondition": "No preconditions identified",
			"tiProtocolMethod": [
              "HTTP POST"
            ],
            "processingConsideration": [
			  {
                "name": "Access Token Expiration Constraint",
                "description": "The provided token will expire 5 minutes after it has been issued."
              },
			  {
                "name": "Refresh Token Expiration Constraint",
                "description": "The provided token will expire 1 week after it has been issued."
              }
            ],
            "operationMessage": [
              {
                "direction": "IN",
                "name": "UserPassRequest",
                "description": "Provided user/pass credentials.",
                "isFault": false,
                "headers": "application\/json",
                "body": "{\"username\": username_value, \"password\": password_value}"
              },
			  {
                "direction": "OUT",
                "name": "JWTResponse",
                "description": "Access and Refresh JWT Tokens",
                "isFault": false,
                "headers": "application\/json",
                "body": "{\"access\": access_jwt_token, \"refresh\": refresh_jwt_token}"
              }
            ]            
          },
		  {
            "name": "getGPSStatus",
            "description": "The getGPSStatus Service Operation returns information regarding the last RAIM prediction available.",
            "idempotency": "IDEMPOTENT",
            "synchronicity": "SYNCHRONOUS",
			"precondition": "Obtained JWT with getJWT operation",
			"tiProtocolMethod": [
              "HTTP GET"
            ],
            "operationMessage": [
              {
                "direction": "IN",
                "name": "GPSStatusRequest",
                "description": "Message which requests the last RAIM prediction information available.",
                "isFault": false,
                "headers": "Authorization: Bearer <access_jwt_token>",
                "body": ""
              },
			  {
                "direction": "OUT",
                "name": "GPSStatusResponse",
                "description": "Message containing the information related to the last RAIM prediction information available.",
                "isFault": false,
                "headers": "application\/json",
                "body": "{\"start_time\": \"2020-10-31T00:00:00Z\", \"end_time\": \"2020-11-03T00:00:00Z\", \"last_update_time\": \"2021-07-05T10:15:14.993624Z\", \"almanac_file\": 303, \"nanus\": [2020050, 2020064]}"
              }
            ]            
          },
		  {
            "name": "getLocations",
            "description": "The getLocations Service Operation returns a list of the available aerodromes in the RAIM prediction.",
            "idempotency": "IDEMPOTENT",
            "synchronicity": "SYNCHRONOUS",
			"precondition": "Obtained JWT with getJWT operation",
			"tiProtocolMethod": [
              "HTTP GET"
            ],
            "operationMessage": [
              {
                "direction": "IN",
                "name": "LocationsRequest",
                "description": "Message which requests the available aerodromes in the RAIM prediction.",
                "isFault": false,
                "headers": "Authorization: Bearer <access_jwt_token>",
                "body": ""
              },
			  {
                "direction": "OUT",
                "name": "LocationsResponse",
                "description": "Message containing a list of available aerodromes (ICAO codes) in the AUGUR service.",
                "isFault": false,
                "headers": "application\/json",
                "body": "[{\"code\": \"BGAA\", \"latitude\": \"68.72194\", \"longitude\": \"-52.78472\"}, {\"code\": \"BGJN\", \"latitude\": \"69.24333\", \"longitude\": \"-51.05722\"}]"
              }
            ]            
          },
		  {
            "name": "requestOutages",
            "description": "The requestOutages Service Operation provides a desired RAIM algorithm, a list of locations with ICAO codes or lat/lon info and optionally a start time. The service returns the related outage information for the requested parameters within a 72 hour time period since the start time.",
            "idempotency": "IDEMPOTENT",
            "synchronicity": "SYNCHRONOUS",
			"precondition": "Obtained JWT with getJWT operation",
			"tiProtocolMethod": [
              "HTTP POST"
            ],
			"processingConsideration": [
			  {
                "name": "Historic Values Constraint",
                "description": "The operation is not available for start times prior to the 1st of September of 2020."
              },
			  {
                "name": "Maximum Locations Constraint",
                "description": "A maximum of 30 locations per request is allowed."
              },
			  {
                "name": "Location Format Constraint",
                "description": "Locations are to be defined by ICAO code or lat/lon pairs. These options are mutually exclusive."
              }
            ],
            "operationMessage": [
              {
                "direction": "IN",
                "name": "OutagesRequest",
                "description": "Message which requests the RAIM outages for a given time, RAIM algorithm and list of locations.",
                "isFault": false,
                "headers": "Authorization: Bearer <access_jwt_token>",
                "body": ""
              },
			  {
                "direction": "OUT",
                "name": "OutagesResponse",
                "description": "Message containing a list of predicted RAIM outages for the provided input information.",
                "isFault": false,
                "headers": "application\/json",
                "body": "{\"algorithm\": {\"mask_angle\": 10,\"algorithm\": \"FD\",\"procedure\": \"RNP_APCH_03\",\"selective_availability\": \"aware_OFF\",\"baro_aiding\": false},\"locations\": [{\"code\": \"OLBA\"}]}"
              }
            ]            
          }
        ],
        "behaviour": [
          {
            "name": "Behaviour Document",
            "description": "The service behaviour is fully described in the SERVICE_SPECIFICATION document."
          }
        ]
      }
    ]
  }
}