This document is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.
1 Introduction
This specification describes services that can be used by X-Road participants to gather operational monitoring information of the security servers. The operational monitoring information contains data about request exchange (such as which services have been called, how many times, what was the size of the response, etc.) of the security servers. The X-Road operational monitoring protocol is intended to support external monitoring systems and other software that can monitor service level agreements, make service statistics, etc.
The operational monitoring services are the following:
getSecurityServerOperationalData - downloading operational data of the specified time period of the security server.
getSecurityServerHealthData - downloading health data of the security server.
The operational monitoring services are implemented as standard X-Road services (see [PR-MESS] for detailed description of the protocol) that are offered by the owner of the security servers.
This protocol builds on existing transport and message encoding mechanisms. Therefore, this specification does not cover the technical details and error conditions related to making HTTP(S) requests together with processing MIME-encoded messages. These concerns are discussed in detail in their respective standards.
The low-level technical details of the operational monitoring services are specified using the WSDL [WSDL] syntax. See [Annex A] for operational monitoring services WSDL file.
Chapters 2 and 3 together with annexes [Annex A] and [Annex B] contain normative information. All the other sections are informative in nature. All the references are normative.
This specification does not include option for partially implementing the protocol – the conformant implementation must implement the entire specification.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document (in uppercase, as shown) are to be interpreted as described in [RFC2119].
1.1 Terms and abbreviations
See X-Road terms and abbreviations documentation [TA-TERMS].
1.2 References
PR-MESS -- Cybernetica AS. X-Road: Message Transport Protocol v4.0. Document ID: PR-MESS.
WSDL -- Web Services Description Language (WSDL) 1.1. World Wide Web Consortium. 15 March 2001, https://www.w3.org/TR/2001/NOTE-wsdl-20010315
SWAREF -- Attachments Profile Version 1.0, http://www.ws-i.org/Profiles/AttachmentsProfile-1.0-2004-08-24.html
RFC1952 -- GZIP file format specification version 4.3, https://tools.ietf.org/html/rfc1952
RFC2119 -- Key words for use in RFCs to Indicate Requirement Levels. Request for Comments 2119, Internet Engineering Task Force, March 1997, https://www.ietf.org/rfc/rfc2119.txt
TA-TERMS -- X-Road Terms and Abbreviations. Document ID: TA-TERMS.
2 Retrieving Operational Data of Security Server
Security server clients can retrieve operational data of the specified time period of the security server. Method is invoked as regular X-Road service.
The service SOAP header MUST contain the identifier of the target service provider (owner of the security server) and the value of the serviceCode element MUST be "getSecurityServerOperationalData". Additionally securityServer SOAP header SHOULD be used to identify the security server that is the target of the request. This is needed to uniquely determine the target security server in a clustered security server configuration. The SOAP header securityServer MUST be used in case the sender of the request is the owner of target security server. This header is used to perform correct authentication of the sender.
The body of the request MUST contain an XML element getSecurityServerOperationalData which contains the following XML elements.
searchCriteria (mandatory) -- Determines the search criteria of the requested monitoring data records. This element contains the following XML elements.
recordsFrom (mandatory) -- Unix timestamp in seconds to determine the beginning of the time period of the monitoring data records. The beginning timestamp MUST be less than the system value of current time - configured offset seconds (all of the operational data before that system timestamp SHOULD be committed. By default 60 seconds are used for the offset).
recordsTo (mandatory) -- Unix timestamp in seconds to determine the end (inclusively) of the time period of the monitoring data records. If the end timestamp is bigger or equal to the system value of current time - configured offset seconds then recordsTo value is shifted to the value of current time - configured offset seconds - 1 (it is allowed to subtract a bigger time buffer to ensure that all the operational data of the specified time period are committed. By default 60 seconds are used for the offset).
client (optional) -- Determines the client identifier of the service provider in the monitoring data records.
outputSpec (optional) -- A sequence of optional outputField elements that determines the set of the requested operational data record fields in the response payload. If omitted or empty sequence, all record fields MUST be included into the response payload. The possible output field values are the following:
monitoringDataTs
securityServerInternalIp
securityServerType
requestInTs
requestOutTs
responseInTs
responseOutTs
clientXRoadInstance
clientMemberClass
clientMemberCode
clientSubsystemCode
serviceXRoadInstance
serviceMemberClass
serviceMemberCode
serviceSubsystemCode
serviceCode
serviceVersion
representedPartyClass
representedPartyCode
messageId
messageUserId
messageIssue
messageProtocolVersion
clientSecurityServerAddress
serviceSecurityServerAddress
requestSize
requestMimeSize
requestAttachmentCount
responseSize
responseMimeSize
responseAttachmentCount
succeeded
serviceType
faultCode
faultString
statusCode
The fields are described in the JSON-schema of the response payload [Annex B].
The XML schema fragment of the operational data request body is shown below. For clarity, documentation in the schema fragment is omitted.
The example request message is presented in [Annex C.1].
The response MUST be MIME multipart message with attachment using swaRef [SWAREF]. The response MUST contain the following MIME parts.
X-Road SOAP response message. The message MUST contain the regular X-Road headers and the body MUST contain the following elements.
recordsCount (mandatory) -- Number of records in the payload.
records (mandatory) -- The reference (CID URI) to the attachment (MIME part) containing the operational data records.
nextRecordsFrom (optional) -- This element MUST be included in case operational data records do not fit into the response (size limitation) and/or in case the recordsTo timestamp in the search criteria was actually shifted earlier. The value MUST be the proper Unix timestamp in seconds for the search criteria element recordsFrom of the next sequential query.
The content type of this part MUST be text/xml.
Operational data (payload). This MIME part MUST contain queried operational data records in JSON format and compressed (GZIP [RFC1952]) . The content type of this part MUST be application/gzip. The JSON-Schema for payload is described in [Annex B].
The XML schema fragment of the operational data response body is shown below. For clarity, documentation in the schema fragment is omitted.
The example response message is presented in [Annex C.2].
3 Retrieving Health Data of Security Server
Security server clients can retrieve health data of the specified security server. Method is invoked as regular X-Road service.
The service SOAP header MUST contain the identifier of the target service provider (owner of the security server) and the value of the serviceCode element MUST be "getSecurityServerHealthData". Additionally securityServer SOAP header SHOULD contain the identifier of the security server retrieving data from. The last one determines the security server uniquely in a clustered security server configuration.
The body of the request MUST contain an XML element getSecurityServerHealthData. This element MAY contain XML element filterCriteria to determine a client (service provider). In this case filtering health data by a client MUST be performed.
The XML schema fragment of the health data request body is shown below. For clarity, documentation in the schema fragment is omitted.
The example response message is presented in [Annex C.4].
Annex A WSDL for Operational Monitoring Messages
The XML-schema for operational monitoring messages is located in the file src/op-monitor-daemon/src/main/resources/op-monitoring.xsd of the X-Road source code.
The WSDL is located in the file src/op-monitor-daemon/src/main/resources/op-monitoring.wsdl of the X-Road source code.
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitionstargetNamespace="http://op-monitor.x-road.eu/"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:opm="http://x-road.eu/xsd/op-monitoring.xsd"xmlns:xrd="http://x-road.eu/xsd/xroad.xsd"xmlns:id="http://x-road.eu/xsd/identifiers"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"xmlns:tns="http://op-monitor.x-road.eu/"> <wsdl:types> <xs:schemaelementFormDefault="qualified"targetNamespace="http://x-road.eu/xsd/identifiers"xmlns="http://x-road.eu/xsd/identifiers"xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexTypename="XRoadIdentifierType"> <xs:annotation> <xs:documentation>Globally unique identifier in the X-Road system. Identifier consists of object type specifier and list of hierarchical codes (starting with code that identifiers the X-Road instance). </xs:documentation> </xs:annotation> <xs:sequence> <xs:elementminOccurs="0"ref="xRoadInstance"/> <xs:elementminOccurs="0"ref="memberClass"/> <xs:elementminOccurs="0"ref="memberCode"/> <xs:elementminOccurs="0"ref="subsystemCode"/> <xs:elementminOccurs="0"ref="groupCode"/> <xs:elementminOccurs="0"ref="serviceCode"/> <xs:elementminOccurs="0"ref="serviceVersion"/> <xs:elementminOccurs="0"ref="serverCode"/> </xs:sequence> <xs:attributeref="objectType"use="required"/> </xs:complexType> <xs:simpleTypename="XRoadObjectType"> <xs:annotation> <xs:documentation>Enumeration for X-Road identifier types. </xs:documentation> </xs:annotation> <xs:restrictionbase="xs:string"> <xs:enumerationvalue="MEMBER"/> <xs:enumerationvalue="SUBSYSTEM"/> <xs:enumerationvalue="SERVER"/> <xs:enumerationvalue="GLOBALGROUP"/> <xs:enumerationvalue="LOCALGROUP"/> <xs:enumerationvalue="SERVICE"/> </xs:restriction> </xs:simpleType> <xs:elementname="xRoadInstance"type="xs:string"> <xs:annotation> <xs:documentation>Identifies the X-Road instance. This field is applicable to all identifier types. </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="memberClass"type="xs:string"> <xs:annotation> <xs:documentation>Type of the member (company, government institution, private person, etc.) </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="memberCode"type="xs:string"> <xs:annotation> <xs:documentation>Code that uniquely identifies a member of given member type. </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="subsystemCode"type="xs:string"> <xs:annotation> <xs:documentation>Code that uniquely identifies a subsystem of given X-Road member. </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="groupCode"type="xs:string"> <xs:annotation> <xs:documentation>Code that uniquely identifies a global group in given X-Road instance. </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="serviceCode"type="xs:string"> <xs:annotation> <xs:documentation>Code that uniquely identifies a service offered by given X-Road member or subsystem. </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="serviceVersion"type="xs:string"> <xs:annotation> <xs:documentation>Version of the service.</xs:documentation> </xs:annotation> </xs:element> <xs:elementname="serverCode"type="xs:string"> <xs:annotation> <xs:documentation>Code that uniquely identifies security server offered by a given X-Road member or subsystem. </xs:documentation> </xs:annotation> </xs:element> <xs:attributename="objectType"type="XRoadObjectType"/> <xs:complexTypename="XRoadClientIdentifierType"> <xs:complexContent> <xs:restrictionbase="XRoadIdentifierType"> <xs:sequence> <xs:elementref="xRoadInstance"/> <xs:elementref="memberClass"/> <xs:elementref="memberCode"/> <xs:elementminOccurs="0"ref="subsystemCode"/> </xs:sequence> <xs:attributeref="objectType"use="required"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexTypename="XRoadServiceIdentifierType"> <xs:complexContent> <xs:restrictionbase="XRoadIdentifierType"> <xs:sequence> <xs:elementref="xRoadInstance"/> <xs:elementref="memberClass"/> <xs:elementref="memberCode"/> <xs:elementminOccurs="0"ref="subsystemCode"/> <xs:elementref="serviceCode"/> <xs:elementminOccurs="0"ref="serviceVersion"/> </xs:sequence> <xs:attributeref="objectType"use="required"fixed="SERVICE"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexTypename="XRoadSecurityServerIdentifierType"> <xs:complexContent> <xs:restrictionbase="XRoadIdentifierType"> <xs:sequence> <xs:elementref="xRoadInstance"/> <xs:elementref="memberClass"/> <xs:elementref="memberCode"/> <xs:elementref="serverCode"/> </xs:sequence> <xs:attributeref="objectType"use="required"fixed="SERVER"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexTypename="XRoadGlobalGroupIdentifierType"> <xs:complexContent> <xs:restrictionbase="XRoadIdentifierType"> <xs:sequence> <xs:elementref="xRoadInstance"/> <xs:elementref="groupCode"/> </xs:sequence> <xs:attributeref="objectType"use="required"fixed="GLOBALGROUP"/> </xs:restriction> </xs:complexContent> </xs:complexType> <xs:complexTypename="XRoadLocalGroupIdentifierType"> <xs:complexContent> <xs:restrictionbase="XRoadIdentifierType"> <xs:sequence> <xs:elementref="groupCode"/> </xs:sequence> <xs:attributeref="objectType"use="required"fixed="LOCALGROUP"/> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:schema> <xs:schemaelementFormDefault="qualified"targetNamespace="http://x-road.eu/xsd/xroad.xsd"xmlns="http://x-road.eu/xsd/xroad.xsd"xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:elementname="version"type="xs:string"/><!-- Header elements --> <xs:elementname="client"type="id:XRoadClientIdentifierType"/> <xs:elementname="service"type="id:XRoadServiceIdentifierType"/> <xs:elementname="securityServer"type="id:XRoadSecurityServerIdentifierType"/> <xs:elementname="userId"type="xs:string"/> <xs:elementfixed="4.0"name="protocolVersion"type="xs:string"/> <xs:elementname="id"type="xs:string"/><!-- Elements describing other elements and operations--> <xs:elementname="title"> <xs:annotation> <xs:documentation>Title</xs:documentation> </xs:annotation> <xs:complexType> <xs:simpleContent> <xs:extensionbase="xs:string"> <xs:attributedefault="en"ref="xml:lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:elementname="notes"> <xs:annotation> <xs:documentation>Notes for user</xs:documentation> </xs:annotation> <xs:complexType> <xs:simpleContent> <xs:extensionbase="xs:string"> <xs:attributedefault="en"ref="xml:lang"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:schema> <xs:schemaelementFormDefault="qualified"targetNamespace="http://x-road.eu/xsd/op-monitoring.xsd"xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns="http://x-road.eu/xsd/op-monitoring.xsd"xmlns:id="http://x-road.eu/xsd/identifiers"xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd"> <xs:importnamespace="http://ws-i.org/profiles/basic/1.1/xsd"schemaLocation="http://ws-i.org/profiles/basic/1.1/swaref.xsd"id="ref"/> <xs:complexTypename="GetSecurityServerOperationalDataType"> <xs:annotation> <xs:documentation>Security server operational data request </xs:documentation> </xs:annotation> <xs:sequence> <xs:elementname="searchCriteria"type="SearchCriteriaType"> <xs:annotation> <xs:documentation>Search criteria</xs:documentation> </xs:annotation> </xs:element> <xs:elementname="outputSpec"type="OutputSpecType"minOccurs="0"> <xs:annotation> <xs:documentation>The set of the requested operational data fields </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="SearchCriteriaType"> <xs:sequence> <xs:elementname="recordsFrom"type="xs:long"> <xs:annotation> <xs:documentation>The beginning of the time interval of requested operational data (Unix timestamp in seconds) </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="recordsTo"type="xs:long"> <xs:annotation> <xs:documentation>The end of the time interval of requested operational data (Unix timestamp in seconds) </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="client"type="id:XRoadClientIdentifierType"minOccurs="0"> <xs:annotation> <xs:documentation>Client identifier of data exchange partner to use for filtering out records </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="OutputSpecType"> <xs:sequence> <xs:elementname="outputField"type="xs:string"minOccurs="0"maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Name of the operational data field </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="GetSecurityServerOperationalDataResponseType"> <xs:annotation> <xs:documentation>Security server operational data response </xs:documentation> </xs:annotation> <xs:sequence> <xs:elementname="recordsCount"type="xs:int"> <xs:annotation> <xs:documentation>The number of records included in the response </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="records"type="ref:swaRef"> <xs:annotation> <xs:documentation>The reference to the attachment containing the records </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="nextRecordsFrom"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>Unix timestamp in seconds to use for field recordsFrom of the next query. This element is present in case the size of the response has been limited or the timestamp of the field recordsTo was in the future. </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="FilterCriteriaType"> <xs:sequence> <xs:elementname="client"type="id:XRoadClientIdentifierType"minOccurs="0"> <xs:annotation> <xs:documentation>Client identifier of data exchange partner to use for filtering out services </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="GetSecurityServerHealthDataType"> <xs:annotation> <xs:documentation>Security server health data request </xs:documentation> </xs:annotation> <xs:sequence> <xs:elementname="filterCriteria"type="FilterCriteriaType"minOccurs="0"> <xs:annotation> <xs:documentation>Filter criteria</xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="GetSecurityServerHealthDataResponseType"> <xs:annotation> <xs:documentation>Security server health data response </xs:documentation> </xs:annotation> <xs:sequence> <xs:elementname="monitoringStartupTimestamp"type="xs:long"> <xs:annotation> <xs:documentation>The Unix timestamp in milliseconds when the operational monitoring daemon was started </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="statisticsPeriodSeconds"type="xs:int"> <xs:annotation> <xs:documentation>Duration of the statistics period in seconds </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="servicesEvents"type="ServicesEventsType"> <xs:annotation> <xs:documentation>Health data of all services </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="ServicesEventsType"> <xs:sequence> <xs:elementname="serviceEvents"type="ServiceEventsType"minOccurs="0"maxOccurs="unbounded"> <xs:annotation> <xs:documentation>Health data of one service </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="ServiceEventsType"> <xs:sequence> <xs:elementname="service"type="id:XRoadServiceIdentifierType"> <xs:annotation> <xs:documentation>The service identifier </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="lastSuccessfulRequestTimestamp"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The timestamp of the last successful request (Unix timestamp in milliseconds) </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="lastUnsuccessfulRequestTimestamp"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The timestamp of the last unsuccessful request (Unix timestamp in milliseconds) </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="serviceType"type="xs:string"minOccurs="0"> <xs:annotation> <xs:documentation>Type of the service</xs:documentation> </xs:annotation> </xs:element> <xs:elementname="lastPeriodStatistics"type="LastPeriodStatisticsType"> <xs:annotation> <xs:documentation>The statistics of the requests occurred during the last period </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:complexTypename="LastPeriodStatisticsType"> <xs:sequence> <xs:elementname="successfulRequestCount"type="xs:int"> <xs:annotation> <xs:documentation>The number of successful requests occurred during the last period </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="unsuccessfulRequestCount"type="xs:int"> <xs:annotation> <xs:documentation>The number of unsuccessful requests occurred during the last period </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestMinDuration"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The minimum duration of the request in milliseconds </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestAverageDuration"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The average duration of the request in milliseconds </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestMaxDuration"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The maximum duration of the request in milliseconds </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestDurationStdDev"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The standard deviation of the duration of the requests </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestMinSize"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The minimum message size of the request in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestAverageSize"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The average message size of the request in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestMaxSize"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The maximum message size of the request in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="requestSizeStdDev"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The standard deviation of the message size of the requests </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="responseMinSize"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The minimum message size of the response in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="responseAverageSize"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The average message size of the response in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="responseMaxSize"type="xs:long"minOccurs="0"> <xs:annotation> <xs:documentation>The maximum message size of the response in bytes </xs:documentation> </xs:annotation> </xs:element> <xs:elementname="responseSizeStdDev"type="xs:double"minOccurs="0"> <xs:annotation> <xs:documentation>The standard deviation of the message size of the responses </xs:documentation> </xs:annotation> </xs:element> </xs:sequence> </xs:complexType> <xs:elementname="getSecurityServerOperationalData"type="GetSecurityServerOperationalDataType"/> <xs:elementname="getSecurityServerOperationalDataResponse"type="GetSecurityServerOperationalDataResponseType"/> <xs:elementname="getSecurityServerHealthData"type="GetSecurityServerHealthDataType"/> <xs:elementname="getSecurityServerHealthDataResponse"type="GetSecurityServerHealthDataResponseType"/> </xs:schema> </wsdl:types> <wsdl:messagename="getSecurityServerOperationalDataResponse"> <wsdl:partname="getSecurityServerOperationalDataResponse"element="opm:getSecurityServerOperationalDataResponse"/> </wsdl:message> <wsdl:messagename="getSecurityServerOperationalData"> <wsdl:partname="getSecurityServerOperationalData"element="opm:getSecurityServerOperationalData"/> </wsdl:message> <wsdl:messagename="getSecurityServerHealthDataResponse"> <wsdl:partname="getSecurityServerHealthDataResponse"element="opm:getSecurityServerHealthDataResponse"/> </wsdl:message> <wsdl:messagename="getSecurityServerHealthData"> <wsdl:partname="getSecurityServerHealthData"element="opm:getSecurityServerHealthData"/> </wsdl:message> <wsdl:messagename="requestheader"> <wsdl:partname="client"element="xrd:client"/> <wsdl:partname="service"element="xrd:service"/> <wsdl:partname="securityServer"element="xrd:securityServer"/> <wsdl:partname="id"element="xrd:id"/> <wsdl:partname="protocolVersion"element="xrd:protocolVersion"/> </wsdl:message> <wsdl:portTypename="opmServicePortType"> <wsdl:operationname="getSecurityServerHealthData"> <wsdl:documentation> <xrd:title>Security server health data</xrd:title> </wsdl:documentation> <wsdl:inputname="getSecurityServerHealthData"message="tns:getSecurityServerHealthData"/> <wsdl:outputname="getSecurityServerHealthDataResponse"message="tns:getSecurityServerHealthDataResponse"/> </wsdl:operation> <wsdl:operationname="getSecurityServerOperationalData"> <wsdl:documentation> <xrd:title>Security server operational data</xrd:title> </wsdl:documentation> <wsdl:inputname="getSecurityServerOperationalData"message="tns:getSecurityServerOperationalData"/> <wsdl:outputname="getSecurityServerOperationalDataResponse"message="tns:getSecurityServerOperationalDataResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:bindingname="opmSoap11Binding"type="tns:opmServicePortType"> <soap:bindingstyle="document"transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operationname="getSecurityServerOperationalData"> <soap:operationsoapAction=""/> <wsdl:inputname="getSecurityServerOperationalData"> <soap:bodyuse="literal"/> <soap:headermessage="tns:requestheader"part="client"use="literal"/> <soap:headermessage="tns:requestheader"part="service"use="literal"/> <soap:headermessage="tns:requestheader"part="securityServer"use="literal"/> <soap:headermessage="tns:requestheader"part="id"use="literal"/> <soap:headermessage="tns:requestheader"part="protocolVersion"use="literal"/> </wsdl:input> <wsdl:outputname="getSecurityServerOperationalDataResponse"> <soap:headermessage="tns:requestheader"part="client"use="literal"/> <soap:headermessage="tns:requestheader"part="service"use="literal"/> <soap:headermessage="tns:requestheader"part="securityServer"use="literal"/> <soap:headermessage="tns:requestheader"part="id"use="literal"/> <soap:headermessage="tns:requestheader"part="protocolVersion"use="literal"/> <mime:multipartRelated> <mime:part> <soap:bodyuse="literal"/> </mime:part> </mime:multipartRelated> </wsdl:output> </wsdl:operation> <wsdl:operationname="getSecurityServerHealthData"> <soap:operationsoapAction=""/> <wsdl:inputname="getSecurityServerHealthData"> <soap:bodyuse="literal"/> <soap:headermessage="tns:requestheader"part="client"use="literal"/> <soap:headermessage="tns:requestheader"part="service"use="literal"/> <soap:headermessage="tns:requestheader"part="securityServer"use="literal"/> <soap:headermessage="tns:requestheader"part="id"use="literal"/> <soap:headermessage="tns:requestheader"part="protocolVersion"use="literal"/> </wsdl:input> <wsdl:outputname="getSecurityServerHealthDataResponse"> <soap:bodyuse="literal"/> <soap:headermessage="tns:requestheader"part="client"use="literal"/> <soap:headermessage="tns:requestheader"part="service"use="literal"/> <soap:headermessage="tns:requestheader"part="securityServer"use="literal"/> <soap:headermessage="tns:requestheader"part="id"use="literal"/> <soap:headermessage="tns:requestheader"part="protocolVersion"use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:servicename="opmService"> <wsdl:portname="opmServiceSoap11Port"binding="tns:opmSoap11Binding"> <soap:addresslocation="https://SECURITYSERVER/"/> </wsdl:port> </wsdl:service></wsdl:definitions>
Annex B JSON-Schema for Payload of getSecurityServerOperationalData Response
The schema is located in the file src/op-monitor-daemon/src/main/resources/query_operational_data_response_payload_schema.yaml of the X-Road source code.
title:Query Operational Data Response Payload Schematype:objectproperties:records:description:Operational Data Recordstype:arrayitems:type:objectproperties:monitoringDataTs:description:The Unix timestamp in seconds when the record was received by the monitoring daemontype:integerminimum:0securityServerInternalIp:description:Internal IP address of the security servertype:stringformat:ipv4maxLength:255securityServerType:description:Type of the security servertype:stringenum: - Client - ProducerrequestInTs: description: 'In the client''s security server: the Unix timestamp in milliseconds when the request was received by the client''s security server. In the service provider''s security server: the Unix timestamp in milliseconds when the request was received by the service provider''s security server. In both cases, the timestamp is taken just before received payload byte array is decoded and processed'
type:integerminimum:0requestOutTs: description: 'In the client''s security server: the Unix timestamp in milliseconds when the request was sent out from the client''s security server to the client''s information system. In the service provider''s security server: the Unix timestamp in milliseconds when the request was sent out from the service provider''s security server. In both cases, the timestamp is taken just before payload byte array is sent out with HTTP POST request'
type:integerminimum:0responseInTs: description: 'In the client''s security server: the Unix timestamp in milliseconds when the response was received by the client''s security server. In the service provider''s security server: the Unix timestamp in milliseconds when the response was received by the service provider''s security server. In both cases, the timestamp is taken just before received payload byte array is decoded and processed.'
type:integerminimum:0responseOutTs: description: 'In the client''s security server: the Unix timestamp in milliseconds when the response was sent out from the client''s security server to the client''s information system. In the service provider''s security server: the Unix timestamp in milliseconds when the response was sent out from the service provider''s security server. In both cases, the timestamp is taken just before payload byte array is sent out with HTTP response'
type:integerminimum:0clientXRoadInstance:description:Instance identifier of the instance used by the clienttype:stringmaxLength:255clientMemberClass:description:Member class of the X-Road member (client)type:stringmaxLength:255clientMemberCode:description:Member code of the X-Road member (client)type:stringmaxLength:255clientSubsystemCode:description:Subsystem code of the X-Road member (client)type:stringmaxLength:255serviceXRoadInstance:description:Instance identifier of the instance used by the service providertype:stringmaxLength:255serviceMemberClass:description:Member class of the X-Road member (service provider)type:stringmaxLength:255serviceMemberCode:description:Member code of the X-Road member (service provider)type:stringmaxLength:255serviceSubsystemCode:description:Subsystem code of the X-Road member (service provider)type:stringmaxLength:255serviceCode:description:Code of the servicetype:stringmaxLength:255serviceVersion:description:Version of the servicetype:stringmaxLength:255representedPartyClass:description:Class of the represented partytype:stringmaxLength:255representedPartyCode:description:Code of the represented partytype:stringmaxLength:255messageId:description:Unique identifier of the messagetype:stringmaxLength:255messageUserId:description:Personal code of the client that initiated the requesttype:stringmaxLength:255messageIssue:description:Client's internal identifier of a file or document related to the servicetype:stringmaxLength:255messageProtocolVersion:description:X-Road message protocol versiontype:stringmaxLength:255clientSecurityServerAddress:description:External address of client's security server (IP or name) defined in global configurationtype:stringmaxLength:255serviceSecurityServerAddress: description: External address of service provider's security server (IP or name) defined in global configuration
type:stringmaxLength:255requestMimeSize:description:Size of the MIME-container of the request (bytes)type:integerminimum:0requestAttachmentCount:description:Number of attachments of the requesttype:integerminimum:0responseMimeSize:description:Size of the MIME-container of the response (bytes)type:integerminimum:0responseAttachmentCount:description:Number of attachments of the responsetype:integerminimum:0succeeded:description:True, if request mediation succeeded, false otherwise.type:booleanfaultCode:description:fault code in case error receivedtype:stringmaxLength:255faultString:description:fault reason in case error receivedtype:stringmaxLength:2048requestSize:description:Size of the request (bytes)type:integerminimum:0responseSize:description:Size of the response (bytes)type:integerminimum:0statusCode:description:HTTP status code for the rest responsetype:integerminimum:0serviceType:description:Type of the service WSDL, REST or OPENAPI3type:stringminimum:0required:- records