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):