packages/qualys_vmdr/data_stream/knowledge_base/agent/stream/input.yml.hbs (631 lines of code) (raw):
config_version: 2
interval: {{interval}}
resource.tracer:
enabled: {{enable_request_tracer}}
filename: "../../logs/cel/http-request-trace-*.ndjson"
maxbackups: 5
maxsize: 5
{{#if proxy_url}}
resource.proxy_url: {{proxy_url}}
{{/if}}
{{#if ssl}}
resource.ssl: {{ssl}}
{{/if}}
{{#if http_client_timeout}}
resource.timeout: {{http_client_timeout}}
{{/if}}
resource.url: {{url}}
state:
user: {{username}}
password: {{password}}
params: {{input_parameters}}
initial_interval: {{initial_interval}}
keep_xml: {{preserve_original_event}}
redact:
fields:
- password
program: |
state.with(
request("GET", state.url.trim_right("/") + "/api/3.0/fo/knowledge_base/vuln/?" +
state.?params.orValue("").parse_query().with({
"action": ["list"],
"last_modified_after": [state.?cursor.last_modified.orValue((now - duration(state.initial_interval)).format(time_layout.RFC3339))],
}).format_query()
).with({
"Header":{
"X-Requested-With": ["curl"],
"Authorization": ["Basic "+(state.user+":"+state.password).base64()],
}
}).do_request().as(resp,
resp.StatusCode == 200
?
resp.Body.as(xml, bytes(xml).decode_xml('qualys_api_3_0').as(body, {
"events": (
has(body.doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.VULN_LIST)
?
body.doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.VULN_LIST.VULN.map(e, {
"message": e.with({
"CVE_LIST": e.?CVE_LIST.CVE.orValue([]).map(c, c.ID),
}).encode_json()
})
:
body.?doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.ID_SET.orValue([{
"qualys_vmdr": {
"knowledge_base": {
"error": "response IDs values are missing",
}
}
}])
),
"cursor": {
?"last_modified": (
has(body.?doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.VULN_LIST.VULN) && body.doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.VULN_LIST.VULN.size() > 0
?
optional.of(body.doc.KNOWLEDGE_BASE_VULN_LIST_OUTPUT.RESPONSE.VULN_LIST.VULN.map(e, e.LAST_SERVICE_MODIFICATION_DATETIME).max())
:
state.?cursor.last_modified
)
},
}))
:
{
"events": {
"error": {
"code": string(resp.StatusCode),
"id": string(resp.Status),
"message": "GET:"+(
size(resp.Body) != 0 ?
string(resp.Body)
:
string(resp.Status) + ' (' + string(resp.StatusCode) + ')'
),
},
},
"want_more": false,
}
)
)
tags:
{{#if preserve_original_event}}
- preserve_original_event
{{/if}}
{{#if preserve_duplicate_custom_fields}}
- preserve_duplicate_custom_fields
{{/if}}
{{#each tags as |tag|}}
- {{tag}}
{{/each}}
{{#contains "forwarded" tags}}
publisher_pipeline.disable_host: true
{{/contains}}
{{#if processors}}
processors:
{{processors}}
{{/if}}
xsd:
qualys_api_3_0: |
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
<xsd:element name='KNOWLEDGE_BASE_VULN_LIST_OUTPUT'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='REQUEST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='RESPONSE'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='REQUEST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='DATETIME'/>
<xsd:element ref='USER_LOGIN'/>
<xsd:element ref='RESOURCE'/>
<xsd:element ref='PARAM_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='POST_DATA' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='DATETIME' type='xsd:string'>
</xsd:element>
<xsd:element name='USER_LOGIN' type='xsd:string'>
</xsd:element>
<xsd:element name='RESOURCE' type='xsd:string'>
</xsd:element>
<xsd:element name='PARAM_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='PARAM' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='PARAM'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='KEY'/>
<xsd:element ref='VALUE'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='KEY' type='xsd:string'>
</xsd:element>
<xsd:element name='VALUE' type='xsd:string'>
</xsd:element>
<xsd:element name='POST_DATA' type='xsd:string'>
</xsd:element>
<xsd:element name='RESPONSE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='DATETIME'/>
<xsd:choice minOccurs='0' maxOccurs='1'>
<xsd:element ref='VULN_LIST'/>
<xsd:element ref='ID_SET'/>
</xsd:choice>
<xsd:element ref='WARNING' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='VULN_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='VULN' minOccurs='0' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='VULN'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='QID'/>
<xsd:element ref='VULN_TYPE'/>
<xsd:element ref='SEVERITY_LEVEL'/>
<xsd:element ref='TITLE'/>
<xsd:element ref='CATEGORY' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='DETECTION_INFO' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='LAST_CUSTOMIZATION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='LAST_SERVICE_MODIFICATION_DATETIME' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='PUBLISHED_DATETIME'/>
<xsd:element ref='BUGTRAQ_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='PATCHABLE'/>
<xsd:element ref='PATCH_PUBLISHED_DATE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='SOFTWARE_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='VENDOR_REFERENCE_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CVE_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='DIAGNOSIS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='DIAGNOSIS_COMMENT' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CONSEQUENCE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CONSEQUENCE_COMMENT' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='SOLUTION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='SOLUTION_COMMENT' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='COMPLIANCE_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CORRELATION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CVSS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CVSS_V3' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='PCI_FLAG' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='AUTOMATIC_PCI_FAIL' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='PCI_REASONS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='THREAT_INTELLIGENCE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='SUPPORTED_MODULES' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='DISCOVERY'/>
<xsd:element ref='IS_DISABLED' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CHANGE_LOG_LIST' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='QID' type='xsd:string'>
</xsd:element>
<xsd:element name='VULN_TYPE' type='xsd:string'>
</xsd:element>
<xsd:element name='SEVERITY_LEVEL' type='xsd:string'>
</xsd:element>
<xsd:element name='TITLE' type='xsd:string'>
</xsd:element>
<xsd:element name='CATEGORY' type='xsd:string'>
</xsd:element>
<xsd:element name='DETECTION_INFO' type='xsd:string'>
</xsd:element>
<xsd:element name='LAST_CUSTOMIZATION'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='DATETIME'/>
<xsd:element ref='USER_LOGIN' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='LAST_SERVICE_MODIFICATION_DATETIME' type='xsd:string'>
</xsd:element>
<xsd:element name='PUBLISHED_DATETIME' type='xsd:string'>
</xsd:element>
<xsd:element name='BUGTRAQ_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='BUGTRAQ' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='BUGTRAQ'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='ID'/>
<xsd:element ref='URL'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='ID' type='xsd:string'>
</xsd:element>
<xsd:element name='URL' type='xsd:string'>
</xsd:element>
<xsd:element name='PATCHABLE' type='xsd:string'>
</xsd:element>
<xsd:element name='PATCH_PUBLISHED_DATE' type='xsd:string'>
</xsd:element>
<xsd:element name='SOFTWARE_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='SOFTWARE' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='SOFTWARE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='PRODUCT'/>
<xsd:element ref='VENDOR'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='PRODUCT' type='xsd:string'>
</xsd:element>
<xsd:element name='VENDOR' type='xsd:string'>
</xsd:element>
<xsd:element name='VENDOR_REFERENCE_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='VENDOR_REFERENCE' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='VENDOR_REFERENCE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='ID'/>
<xsd:element ref='URL'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CVE_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='CVE' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CVE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='ID'/>
<xsd:element ref='URL'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='DIAGNOSIS' type='xsd:string'>
</xsd:element>
<xsd:element name='DIAGNOSIS_COMMENT' type='xsd:string'>
</xsd:element>
<xsd:element name='CONSEQUENCE' type='xsd:string'>
</xsd:element>
<xsd:element name='CONSEQUENCE_COMMENT' type='xsd:string'>
</xsd:element>
<xsd:element name='SOLUTION' type='xsd:string'>
</xsd:element>
<xsd:element name='SOLUTION_COMMENT' type='xsd:string'>
</xsd:element>
<xsd:element name='COMPLIANCE_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='COMPLIANCE' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='COMPLIANCE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='TYPE'/>
<xsd:element ref='SECTION'/>
<xsd:element ref='DESCRIPTION'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='TYPE' type='xsd:string'>
</xsd:element>
<xsd:element name='SECTION' type='xsd:string'>
</xsd:element>
<xsd:element name='DESCRIPTION' type='xsd:string'>
</xsd:element>
<xsd:element name='CORRELATION'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='EXPLOITS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='MALWARE' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='EXPLOITS'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='EXPLT_SRC' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='EXPLT_SRC'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='SRC_NAME'/>
<xsd:element ref='EXPLT_LIST'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='SRC_NAME' type='xsd:string'>
</xsd:element>
<xsd:element name='EXPLT_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='EXPLT' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='EXPLT'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='REF'/>
<xsd:element ref='DESC'/>
<xsd:element ref='LINK' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='REF' type='xsd:string'>
</xsd:element>
<xsd:element name='DESC' type='xsd:string'>
</xsd:element>
<xsd:element name='LINK' type='xsd:string'>
</xsd:element>
<xsd:element name='MALWARE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='MW_SRC' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='MW_SRC'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='SRC_NAME'/>
<xsd:element ref='MW_LIST'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='MW_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='MW_INFO' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='MW_INFO'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='MW_ID'/>
<xsd:element ref='MW_TYPE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='MW_PLATFORM' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='MW_ALIAS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='MW_RATING' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='MW_LINK' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='MW_ID' type='xsd:string'>
</xsd:element>
<xsd:element name='MW_TYPE' type='xsd:string'>
</xsd:element>
<xsd:element name='MW_PLATFORM' type='xsd:string'>
</xsd:element>
<xsd:element name='MW_ALIAS' type='xsd:string'>
</xsd:element>
<xsd:element name='MW_RATING' type='xsd:string'>
</xsd:element>
<xsd:element name='MW_LINK' type='xsd:string'>
</xsd:element>
<xsd:element name='CVSS'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='BASE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='TEMPORAL' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='VECTOR_STRING' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='ACCESS' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='IMPACT' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='AUTHENTICATION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='EXPLOITABILITY' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='REMEDIATION_LEVEL' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='REPORT_CONFIDENCE' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='BASE'>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base='xsd:string'>
<xsd:attribute name='source' type='xsd:string' use='optional'/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name='TEMPORAL' type='xsd:string'>
</xsd:element>
<xsd:element name='VECTOR_STRING' type='xsd:string'>
</xsd:element>
<xsd:element name='CVSS3_VERSION' type='xsd:string'>
</xsd:element>
<xsd:element name='ACCESS'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='VECTOR' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='COMPLEXITY' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='VECTOR' type='xsd:string'>
</xsd:element>
<xsd:element name='COMPLEXITY' type='xsd:string'>
</xsd:element>
<xsd:element name='IMPACT'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='CONFIDENTIALITY' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='INTEGRITY' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='AVAILABILITY' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CONFIDENTIALITY' type='xsd:string'>
</xsd:element>
<xsd:element name='INTEGRITY' type='xsd:string'>
</xsd:element>
<xsd:element name='AVAILABILITY' type='xsd:string'>
</xsd:element>
<xsd:element name='AUTHENTICATION' type='xsd:string'>
</xsd:element>
<xsd:element name='EXPLOITABILITY' type='xsd:string'>
</xsd:element>
<xsd:element name='REMEDIATION_LEVEL' type='xsd:string'>
</xsd:element>
<xsd:element name='REPORT_CONFIDENCE' type='xsd:string'>
</xsd:element>
<xsd:element name='CVSS_V3'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='BASE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='TEMPORAL' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='VECTOR_STRING' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='CVSS3_VERSION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='ATTACK' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='IMPACT' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='PRIVILEGES_REQUIRED' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='USER_INTERACTION' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='SCOPE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='EXPLOIT_CODE_MATURITY' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='REMEDIATION_LEVEL' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='REPORT_CONFIDENCE' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='ATTACK'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='VECTOR' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='COMPLEXITY' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='PRIVILEGES_REQUIRED' type='xsd:string'>
</xsd:element>
<xsd:element name='USER_INTERACTION' type='xsd:string'>
</xsd:element>
<xsd:element name='SCOPE' type='xsd:string'>
</xsd:element>
<xsd:element name='EXPLOIT_CODE_MATURITY' type='xsd:string'>
</xsd:element>
<xsd:element name='PCI_FLAG' type='xsd:string'>
</xsd:element>
<xsd:element name='AUTOMATIC_PCI_FAIL' type='xsd:string'>
</xsd:element>
<xsd:element name='PCI_REASONS'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='PCI_REASON' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='PCI_REASON' type='xsd:string'>
</xsd:element>
<xsd:element name='THREAT_INTELLIGENCE'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='THREAT_INTEL' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='THREAT_INTEL'>
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base='xsd:string'>
<xsd:attribute name='id' type='xsd:string' use='required'/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name='SUPPORTED_MODULES' type='xsd:string'>
</xsd:element>
<xsd:element name='DISCOVERY'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='REMOTE'/>
<xsd:element ref='AUTH_TYPE_LIST' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='ADDITIONAL_INFO' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='REMOTE' type='xsd:string'>
</xsd:element>
<xsd:element name='AUTH_TYPE_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='AUTH_TYPE' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='AUTH_TYPE' type='xsd:string'>
</xsd:element>
<xsd:element name='ADDITIONAL_INFO' type='xsd:string'>
</xsd:element>
<xsd:element name='IS_DISABLED' type='xsd:string'>
</xsd:element>
<xsd:element name='CHANGE_LOG_LIST'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='CHANGE_LOG_INFO' maxOccurs='unbounded'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CHANGE_LOG_INFO'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='CHANGE_DATE'/>
<xsd:element ref='COMMENTS'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CHANGE_DATE' type='xsd:string'>
</xsd:element>
<xsd:element name='COMMENTS' type='xsd:string'>
</xsd:element>
<xsd:element name='ID_SET'>
<xsd:complexType>
<xsd:choice maxOccurs='unbounded'>
<xsd:element ref='ID'/>
<xsd:element ref='ID_RANGE'/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
<xsd:element name='ID_RANGE' type='xsd:string'>
</xsd:element>
<xsd:element name='WARNING'>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref='CODE' minOccurs='0' maxOccurs='1'/>
<xsd:element ref='TEXT'/>
<xsd:element ref='URL' minOccurs='0' maxOccurs='1'/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name='CODE' type='xsd:string'>
</xsd:element>
<xsd:element name='TEXT' type='xsd:string'>
</xsd:element>
</xsd:schema>