diff --git a/103120/examples/json/request_ee_config.json b/103120/examples/json/request_ee_config.json new file mode 100644 index 0000000000000000000000000000000000000000..f1363f3e90c3ea898767fed3fd15fbc24740e825 --- /dev/null +++ b/103120/examples/json/request_ee_config.json @@ -0,0 +1,37 @@ +{ + "@xmlns": "http://uri.etsi.org/03120/common/2019/10/Core", + "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "@xmlns:common": "http://uri.etsi.org/03120/common/2016/02/Common", + "@xmlns:task": "http://uri.etsi.org/03120/common/2020/09/Task", + "@xmlns:auth": "http://uri.etsi.org/03120/common/2020/09/Authorisation", + "Header": { + "SenderIdentifier": { + "CountryCode": "XX", + "UniqueIdentifier": "ACTOR01" + }, + "ReceiverIdentifier": { + "CountryCode": "XX", + "UniqueIdentifier": "ACTOR02" + }, + "TransactionIdentifier": "da735c3f-3ab9-4e9e-810e-daf84d973505", + "Timestamp": "2025-05-14T15:21:00.000000Z", + "Version": { + "ETSIVersion": "V1.18.1", + "NationalProfileOwner": "XX", + "NationalProfileVersion": "v1.0" + } + }, + "Payload": { + "RequestPayload": { + "ActionRequests": { + "ActionRequest": [ + { + "ActionIdentifier": 0, + "GETCSPCONFIG": {} + } + ] + } + } + } + } + \ No newline at end of file diff --git a/103120/examples/json/response_config.json b/103120/examples/json/response_config.json index d0f4a1f82b231b8fb273bb2a6d747d533a482bc6..d38cac70c2c1804bcd615f8b70a75973b8bec3b7 100644 --- a/103120/examples/json/response_config.json +++ b/103120/examples/json/response_config.json @@ -33,7 +33,7 @@ "Dictionaries": { "dictionaries:Dictionary": [ { - "dictionaries:Owner": "ACTOR2", + "dictionaries:Owner": "ACTOR02", "dictionaries:Name": "LIServiceTypes", "dictionaries:DictionaryEntries": { "dictionaries:DictionaryEntry": [ diff --git a/103120/examples/json/response_ee_config.json b/103120/examples/json/response_ee_config.json new file mode 100644 index 0000000000000000000000000000000000000000..3024a39c482d899241dc34bb3814c0df3bbfd4a0 --- /dev/null +++ b/103120/examples/json/response_ee_config.json @@ -0,0 +1,210 @@ +{ + "@xmlns": "http://uri.etsi.org/03120/common/2019/10/Core", + "@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance", + "@xmlns:common": "http://uri.etsi.org/03120/common/2016/02/Common", + "@xmlns:task": "http://uri.etsi.org/03120/common/2020/09/Task", + "@xmlns:config": "http://uri.etsi.org/03120/common/2024/06/Config", + "@xmlns:dictionaries": "http://uri.etsi.org/03280/common/2019/10/Dictionaries", + "Header": { + "SenderIdentifier": { + "CountryCode": "XX", + "UniqueIdentifier": "ACTOR01" + }, + "ReceiverIdentifier": { + "CountryCode": "XX", + "UniqueIdentifier": "ACTOR02" + }, + "TransactionIdentifier": "da735c3f-3ab9-4e9e-810e-daf84d973505", + "Timestamp": "2025-05-14T15:21:03.000000Z", + "Version": { + "ETSIVersion": "V1.18.1", + "NationalProfileOwner": "XX", + "NationalProfileVersion": "v1.0" + } + }, + "Payload": { + "ResponsePayload": { + "ActionResponses": { + "ActionResponse": [ + { + "ActionIdentifier": 0, + "GETCSPCONFIGResponse": { + "LastChanged": "2025-04-03T07:25:21Z", + "Dictionaries": { + "dictionaries:Dictionary": [ + { + "dictionaries:Owner": "ACTOR02", + "dictionaries:Name": "LDRequestSubtype", + "dictionaries:DictionaryEntries": { + "dictionaries:DictionaryEntry": [ + { + "dictionaries:Value": "ServiceA", + "dictionaries:Meaning": "Service A allows users to ..." + }, + { + "dictionaries:Value": "ServiceB", + "dictionaries:Meaning": "Service B allows users to ..." + } + ] + } + }, + { + "dictionaries:Owner": "ACTOR02", + "dictionaries:Name": "LPRequestSubtype", + "dictionaries:DictionaryEntries": { + "dictionaries:DictionaryEntry": [ + { + "dictionaries:Value": "ServiceA", + "dictionaries:Meaning": "Service A allows users to ..." + }, + { + "dictionaries:Value": "ServiceB", + "dictionaries:Meaning": "Service B allows users to ..." + } + ] + } + } + ] + }, + "TargetFormatTypeDefinitions": { + "config:FormatOwner": "ACTOR02", + "config:TargetFormatTypeDefinitionEntries": { + "config:TargetFormatTypeDefinitionEntry": [ + { + "config:FormatName": "ProprietaryIdentifier", + "config:Description": "This is an illustration of a proprietary identifier type specific to this CSP, which consists of the string \"CSP\" followed by 10 digits", + "config:FormatRegex": "^CSP[0-9]{10}$" + } + ] + } + }, + "TargetingConfigurations": { + "config:TargetingConfiguration": [ + { + "config:FormatName": "PropietaryIdentifier", + "config:FormatOwner": "ACTOR02", + "config:Guidance": "This targeting configuration defines that the service provider accepts lawful disclosure and lawful preservation requests for the propietary identifier format type described in the TargetFormatTypeDefinitions, associated with Service A for the \"Subscriber Data\" category only", + "config:AssociatedLIServiceTypes": {}, + "config:AssociatedLDRequestTypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "SubscriberData" + } + ] + }, + "config:AssociatedLDRequestSubtypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ACTOR02", + "common:Name": "LDRequestSubtype", + "common:Value": "ServiceA" + } + ] + }, + "config:AssociatedLPRequestTypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "SubscriberData" + } + ] + }, + "config:AssociatedLPRequestSubtypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ACTOR02", + "common:Name": "LPRequestSubtype", + "common:Value": "ServiceA" + } + ] + } + }, + { + "config:FormatName": "InternationalE164", + "config:FormatOwner": "ETSI", + "config:Guidance": "This targeting configuration defines that the service provider accepts lawful disclosure and lawful preservation requests for a telephone number (as ETSI standard format E164 number) associated with Service A and Service B for the \"Traffic Data\" and \"Content Data\" categories", + "config:AssociatedLIServiceTypes": {}, + "config:AssociatedLDRequestTypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "TrafficData" + }, + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "StoredContentData" + } + ] + }, + "config:AssociatedLDRequestSubtypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ACTOR02", + "common:Name": "LDRequestSubtype", + "common:Value": "ServiceA" + }, + { + "common:Owner": "ACTOR02", + "common:Name": "LDRequestSubtype", + "common:Value": "ServiceB" + } + ] + }, + "config:AssociatedLPRequestTypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "TrafficData" + }, + { + "common:Owner": "ETSI", + "common:Name": "RequestType", + "common:Value": "StoredContentData" + } + ] + }, + "config:AssociatedLPRequestSubtypes": { + "common:DictionaryEntry": [ + { + "common:Owner": "ACTOR02", + "common:Name": "LPRequestSubtype", + "common:Value": "ServiceA" + }, + { + "common:Owner": "ACTOR02", + "common:Name": "LPRequestSubtype", + "common:Value": "ServiceB" + } + ] + } + } + ] + }, + "SupportedLIWorkflowEndpoints": {}, + "SupportedLPWorkflowEndpoints": { + "config:SupportedLPWorkflowEndpoint": [ + { + "config:LPWorkflowEndpoint": { + "common:Owner": "ETSI", + "common:Name": "LPWorkflowEndpoint", + "common:Value": "NewAuthorisation" + }, + "config:Guidance": "This tells the LEA what endpoint to use for new warrants. For brevity, in this example, this is the only endpoint specified.", + "config:URL": "https://ts103120.example.com/lp/authorisation/new" + } + ] + } + } + } + ] + } + } + } + } + \ No newline at end of file diff --git a/103120/examples/xml/request_ee_config.xml b/103120/examples/xml/request_ee_config.xml new file mode 100644 index 0000000000000000000000000000000000000000..33a96810b8cf50c509ef8638baf3a788432c0b7f --- /dev/null +++ b/103120/examples/xml/request_ee_config.xml @@ -0,0 +1,31 @@ + + + +
+ + XX + ACTOR01 + + + XX + ACTOR02 + + da735c3f-3ab9-4e9e-810e-daf84d973505 + 2025-05-14T15:21:00.000000Z + + V1.18.1 + XX + v1.0 + +
+ + + + + 0 + + + + + +
\ No newline at end of file diff --git a/103120/examples/xml/response_config.xml b/103120/examples/xml/response_config.xml index bf99aa57af9bf10a742fcbc5e4c8ebb4a2367220..bf268b7037e728c0b787e7aa23861a4a7d7e088b 100644 --- a/103120/examples/xml/response_config.xml +++ b/103120/examples/xml/response_config.xml @@ -26,7 +26,7 @@ 2024-05-10T08:52:32Z - ACTOR2 + ACTOR02 LIServiceTypes diff --git a/103120/examples/xml/response_ee_config.xml b/103120/examples/xml/response_ee_config.xml new file mode 100644 index 0000000000000000000000000000000000000000..bcb763d60df9304df76dabcd51a7331f9607785b --- /dev/null +++ b/103120/examples/xml/response_ee_config.xml @@ -0,0 +1,182 @@ + + + +
+ + XX + + ACTOR01 + + + XX + + ACTOR02 + + da735c3f-3ab9-4e9e-810e-daf84d973505 + 2025-05-14T15:21:03.000000Z + + V1.18.1 + XX + v1.0 + +
+ + + + + 0 + + 2025-04-03T07:25:21Z + + + + ACTOR02 + LDRequestSubtype + + + ServiceA + Service A allows users to ... + + + ServiceB + Service B allows users to ... + + + + + ACTOR02 + LPRequestSubtype + + + ServiceA + Service A allows users to ... + + + ServiceB + Service B allows users to ... + + + + + + + ACTOR02 + + + ProprietaryIdentifier + This is an illustration of a proprietary identifier type specific to this CSP, which consists of the string "CSP" followed by 10 digits + ^CSP[0-9]{10}$ + + + + + + + + PropietaryIdentifier + ACTOR02 + This targeting configuration defines that the service provider accepts lawful disclosure and lawful preservation requests for the propietary identifier format type described in the TargetFormatTypeDefinitions, associated with Service A for the "Subscriber Data" category only + + + + ETSI + RequestType + SubscriberData + + + + + ACTOR02 + LDRequestSubtype + ServiceA + + + + + ETSI + RequestType + SubscriberData + + + + + ACTOR02 + LPRequestSubtype + ServiceA + + + + + + InternationalE164 + ETSI + This targeting configuration defines that the service provider accepts lawful disclosure and lawful preservation requests for a telephone number (as ETSI standard format E164 number) associated with Service A and Service B for the "Traffic Data" and "Content Data" categories + + + + ETSI + RequestType + TrafficData + + + ETSI + RequestType + StoredContentData + + + + + ACTOR02 + LDRequestSubtype + ServiceA + + + ACTOR02 + LDRequestSubtype + ServiceB + + + + + ETSI + RequestType + TrafficData + + + ETSI + RequestType + StoredContentData + + + + + ACTOR02 + LPRequestSubtype + ServiceA + + + ACTOR02 + LPRequestSubtype + ServiceB + + + + + + + + + ETSI + LPWorkflowEndpoint + NewAuthorisation + + This tells the LEA what endpoint to use for new warrants. For brevity, in this example, this is the only endpoint specified. + https://ts103120.example.com/lp/authorisation/new + + + + + + + +
diff --git a/103120/schema/json/ts_103120_Config.schema.json b/103120/schema/json/ts_103120_Config.schema.json index 6686a31991092727e7438abdea454efde324d5be..36cd7743e74a2de0b21307f4b53a88e7bb16cbd6 100644 --- a/103120/schema/json/ts_103120_Config.schema.json +++ b/103120/schema/json/ts_103120_Config.schema.json @@ -79,9 +79,15 @@ "config:AssociatedLIServiceTypes": { "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntries" }, + "config:AssociatedLDRequestTypes": { + "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntries" + }, "config:AssociatedLDRequestSubtypes": { "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntries" }, + "config:AssociatedLPRequestTypes": { + "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntries" + }, "config:AssociatedLPRequestSubtypes": { "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntries" } @@ -140,7 +146,7 @@ "SupportedLPWorkflowEndpoint": { "type": "object", "properties": { - "config:LIWorkflowEndpoint": { + "config:LPWorkflowEndpoint": { "$ref": "ts_103120_Common_2016_02#/$defs/DictionaryEntry" }, "config:Guidance": { @@ -151,7 +157,7 @@ } }, "required": [ - "config:LIWorkflowEndpoint", + "config:LPWorkflowEndpoint", "config:URL" ], "additionalProperties": false diff --git a/103120/schema/xsd/ts_103120_Config.xsd b/103120/schema/xsd/ts_103120_Config.xsd index 4e752e98082cec330220ce182f74ec6c3772093c..ea81df3344d680f5d21ed69ec4bf6e1c1482886c 100644 --- a/103120/schema/xsd/ts_103120_Config.xsd +++ b/103120/schema/xsd/ts_103120_Config.xsd @@ -31,7 +31,9 @@ + + @@ -54,7 +56,8 @@ - + + diff --git a/utils/xml_to_json.py b/utils/xml_to_json.py index 66f4fe1d707c5dada9daea1bdba0685f0ea69d7a..0fc07d79f544df8f8838d02f231433382e350833 100644 --- a/utils/xml_to_json.py +++ b/utils/xml_to_json.py @@ -94,9 +94,11 @@ coerce_to_empty = [ coerce_null_to_empty = [ 'SupportedLIWorkflowEndpoints', 'SupportedLPWorkflowEndpoints', + 'config:AssociatedLDRequestTypes', 'config:AssociatedLDRequestSubtypes', + 'config:AssociatedLPRequestTypes', 'config:AssociatedLPRequestSubtypes', - 'config:AssociatedLIRequestSubtypes', + 'config:AssociatedLIServiceTypes', ] def postprocessor (path, key, value):