From 97bbf19c176f45dddb75fc6a26d6d2f27a39c636 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 18:26:07 +0200 Subject: [PATCH 01/41] Add some lines to StructureOfTestCaseCollection.md --- .../StructureOfTestCaseCollection.md | 57 ++++++++++++------ .../230504 Pictures InterfaceValidator.pptx | Bin 0 -> 108523 bytes .../pictures/OuterStructure.png | Bin 10783 -> 9822 bytes 3 files changed, 38 insertions(+), 19 deletions(-) create mode 100644 doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/pictures/230504 Pictures InterfaceValidator.pptx diff --git a/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/StructureOfTestCaseCollection.md b/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/StructureOfTestCaseCollection.md index 94a3b44c..5794aa1f 100644 --- a/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/StructureOfTestCaseCollection.md +++ b/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/StructureOfTestCaseCollection.md @@ -2,36 +2,55 @@ The Test Case Collection is implemented in a kind of framework. -First there is Postman. Postman supports the sending of requests to REST interfaces. -Several methods are provided. Some are more for quick and dirty shots. Some facilitate to create sophisticated programs. -The TCC uses Postman in an advanced form where many requests are combined and executed in a predefined sequence. - -Second there is the InterfaceValidator. The InterfaceValidator was originally designed to test implementations of the ONF TR-532. +First there is Postman. +Postman supports the sending of HTTP requests to REST interfaces. +Several different approaches are supported. +Some are more for quick and dirty shots. +Some facilitate to create sophisticated programs. +The TCC uses Postman in an advanced form where many Requests get executed in a sequential order. +Every individual Request consists of a +- Pre-request Script that is used for preparing sending the HTTP request, an +- HTTP request and a +- Tests Script that is used for analysing the response of the HTTP request. +Both Scripts are written a JavaScript code into the respective Postman sandbox. + +Second there is the InterfaceValidator. +The InterfaceValidator was originally designed to test implementations of the ONF TR-532. It basically provides -- a set of basic requests that are always required, -- a concept for handling variables and -- methods for retrieving results from the test case execution. - -This results in a framework that can be flexibly adapted to the respective application. +- a structure of folders that allows flexibly adding test cases, +- a set of basic requests that are always required, +- a concept for handling variables, +- a scripting structure that allows to quickly read and navigate code contributed by different people, +- a simple programming method that prevents the program flow from being interrupted when an error occurs, +- a harmonized way to represent testing results and +- a unified way to display error messages and warnings that pop up during TCC execution. + +The framework can be flexibly adapted to the respective application under test. It can hold high numbers of test cases. Every test case may combine multiple Requests. -Each Request combines Pre-Request Script, request and Test Script. +Each Request combines Pre-Request Script, HTTP request and Test Script. ![OuterStructure](./pictures/OuterStructure.png) +Postman allows presenting Output in two ways: +- in the CollectionRunner +- in the PostmanConsole + +The InterfaceValidator uses these two possibilities in the following way: +- The CollectionRunner represents the results of the test case. + The represented information is related with the application under test. +- PostmanConsole shows information about the program flow of the InterfaceValidator. + This covers the sent requests, the data inside the InterfaceValidator, and notifications provided by the InterfaceValidator, etc. + +. +. +. -Postman -- GUI -- Sending request - - individually - - or fully automated collections of sequentially executed requests -- Sandbox for code being executed before => preparation e.g. composing the URI and the body -- Sandbox for code being executed afterwards => assessing the response -- for rest of text: Request = combination of Sandbox + request + Sandbox +Stoffsammlung - Properly assessing the response requires reference values - could either be read from file diff --git a/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/pictures/230504 Pictures InterfaceValidator.pptx b/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/pictures/230504 Pictures InterfaceValidator.pptx new file mode 100644 index 0000000000000000000000000000000000000000..8b5540413c541160a11eedc5bb6b429c28fdaa9c GIT binary patch literal 108523 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 O8wSS1(@>yafcQUpgDztL literal 0 HcmV?d00001 diff --git a/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/pictures/OuterStructure.png b/doc/ElementsApplicationPattern/Functions/StructureOfTestCaseCollection/pictures/OuterStructure.png index dcdf4fde11b83615f699fb888ef6c71988e16313..4d441c49296c5f9d57e3efc3b2124643c8c06bdf 100644 GIT binary patch literal 9822 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 literal 10783 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

7b z1V-Kb>ZQwbc?Oe@M2_!TW5Dc!s;e3gsZ}s}Q#~yse%;EU#iEL?F81r1FZ|F2PQe>V z>exGx8o~3yu6B}YMlhPy*04|68anMj9khhX&1-|m098>CVDtk}HG>1uZc(EYu zC2;`NiA`i|*>j@!&ioOVM0lo_dc~(u4t$zzLfF!3Qa4iF2P66T?<0nbkBn40%0km+ zJzskm^Dr>lH=gX707{ApCWfYMLQ&i8+A>-J;DQn@h`U0NTIIS-(BIc<){JEp#5bzrU4rdDjrJ>s-a%;n&Kdvilh63UHg zzj^2XfjRc?W>(?AiOJ+WD_BM#)9QHMOj=stngXFxim^y-M!?-l>RYVx(Ep8Fmgqi2 zBtz2-9^Klt-3j;at_jC%ZLR(cPCXWn`~3F)Z`Q&nc)F~Iz^#do0MN0-gI!h=coWB~ zN`^U_t@~oHuJ)KxRE$TFhf+Qv$QJ7TnBcIa(;#VT@|!FN-QXS-ToV$4ExiLXt<9vs zcW=jzw;G4Phz3u(zUQ)IM6-&>O8Pc4Y;1_72Y7|daCKE^dAm$K`-c@qybIKS(qvV$Lmw;Ud?nH%J)^4810VRBm%=!Z4J%gWTnllWZ|g)~4TiFsOPK8>dt zt9*w?0|tJ>y~%S0$M`kXATprjxu22x-Wtg=q-R3B`^UpJQOiix7b7P z#51>U%5F#*$#N!|?!P~km6o|&8=pOE#LUyQzw#0j=fru~(i|T%!C#$_Y@t{fb^B}7 zGZx0HfuPugBL~0Tz9aS^DM=O7ix_bT860d5+Cu*AA>Hf8+Z4ywoK~IByHy&WYrwq_ z29vl4>90a{$M~nqDivkc#X6M4ef|uWz@eJqgkL$N`j;<=`x9qE{$?qIGy@JkMF)YG z)B>g;qhrw(s(cF!;4&vf8y(`E&7zplbP1h<|9zVDeRKa~IuOx#c%bk6Lfg3y|D&jyflU%YwtdPTk8_;twiaoy)ThW~BgVS^koA zuz5Zj_}YPG_-t6?Ilx`l|KFT4jv<(aX;|r;xm7}LSWQ2x!Y~c$6W*_ij1-og9t zCl&-XE+KPK1<3{`N^ytdUC1*PF& z^OtA^W9C?p3ZX{>L9y@&L1PVB-GGtA!iCU$QhncExd27u=({!L>s&ajxG3c_;B&If zUVdPsMRZSDg*xwNmZ<-Bp%^Fg?d!QOi)^Y3OpCPtdj;+}tBe7Q~&<8jJWOkHG=bTjTbrKt0ay0Z4u@+Z$j{uf)sYgqsQ From eaf0b210c27f0d574aa70030bbfaa5ba765e62ff Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 20:28:27 +0200 Subject: [PATCH 02/41] Change datatype of enumeration attribute Fixes #556 --- spec/ApplicationPattern.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..0c43a5c4 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -4178,7 +4178,9 @@ paths: string-name: type: string enumeration: - type: string + type: array + items: + type: string pattern: type: string string-profile-configuration: @@ -5293,7 +5295,9 @@ paths: string-name: type: string enumeration: - type: string + type: array + items: + type: string pattern: type: string string-profile-configuration: From 23af6c061bbcdf239397141dbce0b10066bdea8b Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 20:41:39 +0200 Subject: [PATCH 03/41] Correct example in getGenericResponseProfileFieldN Fixes #559 --- spec/ApplicationPattern.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..69ad118b 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -5661,8 +5661,9 @@ paths: type: string field-name-reference: type: string - example: - static-field-name: 'applicationName' + example: + response-profile-1-0:field-name: + static-field-name: 'applicationName' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': From 2dc31be592c9ffe376b5323cfc6f2d2a60757619 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 21:20:24 +0200 Subject: [PATCH 04/41] Add comment about value range of integer-value Fixes #561 --- spec/ApplicationPattern.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..3baf4b20 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -6469,6 +6469,7 @@ paths: properties: integer-profile-1-0:integer-value: type: integer + description: 'Value must be between /integer-profile-capability/minimum and /integer-profile-capability/maximum to be accepted, if those attributes are available in the Capability section' example: 1000000 responses: '204': From 791248da8fa3193b50a5f84d94bc284f28992f40 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 21:29:34 +0200 Subject: [PATCH 05/41] Add comment about value range of string-value Fixes #562 --- spec/ApplicationPattern.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..6d04bb57 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -6671,6 +6671,7 @@ paths: properties: string-profile-1-0:string-value: type: string + description: 'Value must be one of the options defined in /string-profile-capability/enumeration to be accepted, if such enumeration is available in the Capability section' example: 'string-profile-1-0:STRING_VALUE_TYPE_OFF' responses: '204': From 4c81f5ad1af043ec9e621a0f6f7097d67906257b Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 21:41:14 +0200 Subject: [PATCH 06/41] Correct example in getElasticsearchClientServiceRe Fixes #574 --- spec/ApplicationPattern.yaml | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..b9f6c6eb 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -8342,18 +8342,19 @@ paths: properties: policy: type: string - example: - service-records-policy-name: 'eatl_service_records_policy' - phases: - hot: - min-age: '30s' - actions: - rollover: - max-age: '5d' - delete: - min-age: '5d' - actions: - delete: + example: + elasticsearch-client-interface-1-0:service-records-policy: + service-records-policy-name: 'eatl_service_records_policy' + phases: + hot: + min-age: '30s' + actions: + rollover: + max-age: '5d' + delete: + min-age: '5d' + actions: + delete: '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': From 24aaa750c819d63689a055580f04f36b6170c807 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 21:47:11 +0200 Subject: [PATCH 07/41] Correct example in putElasticsearchClientServiceRe Fixes #575 --- spec/ApplicationPattern.yaml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..fd1e4579 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -8677,19 +8677,20 @@ paths: properties: policy: type: string - example: - service-records-policy-name: 'eatl_service_records_policy' - phases: - hot: - min-age: '30s' - actions: - rollover: - max-age: '5d' - delete: - min-age: '5d' - actions: - delete: - delete-searchable-snapshot: true + example: + elasticsearch-client-interface-1-0:service-records-policy: + service-records-policy-name: 'eatl_service_records_policy' + phases: + hot: + min-age: '30s' + actions: + rollover: + max-age: '5d' + delete: + min-age: '5d' + actions: + delete: + delete-searchable-snapshot: true responses: '204': description: 'Service records policy configured' From 657e5d1cb3fed66391b02a0561e2949103a0c26e Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 22:00:47 +0200 Subject: [PATCH 08/41] add additionalProperties: false in actionProfile Fixes #578 --- spec/ApplicationPattern.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..acc6af4f 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -3944,6 +3944,7 @@ paths: # - action-profile-1-0:action-profile-pac # workaround code is: # - empty line - + additionalProperties: false properties: uuid: type: string From 27175fc458d121bee9866518c661b02651f0fe51 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 29 Sep 2023 22:20:22 +0200 Subject: [PATCH 09/41] Change find to from in life-cycle-state Fixes #621 --- spec/ApplicationPattern.yaml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..e8adb872 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -123,7 +123,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -650,7 +650,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1005,7 +1005,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1253,7 +1253,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1504,7 +1504,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1701,7 +1701,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1838,7 +1838,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2103,7 +2103,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2243,7 +2243,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2496,7 +2496,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3383,7 +3383,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3482,7 +3482,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3553,7 +3553,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '403': @@ -3656,7 +3656,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3740,7 +3740,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3818,7 +3818,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3881,7 +3881,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': From ea472cdbdf41b04be38f4199288c6aed4e31eccd Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 09:12:21 +0200 Subject: [PATCH 10/41] Remove BackendTime from responses >400 Fixes #663 --- spec/ApplicationPattern.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..a410e98e 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -9286,11 +9286,6 @@ components: type: integer example: 1100 description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' - backend-time: - schema: - type: integer - example: 850 - description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' responseForErroredOamRequests: description: 'Response in case of errored OaM requests' content: From c50af3c1e494f1d560ac677e1f20111d729897e3 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 09:29:05 +0200 Subject: [PATCH 11/41] Change release-number "update" to "find or update" Fixes #714 --- spec/ApplicationPattern.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..c0645b6d 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -479,7 +479,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'If body provided, release of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' registration-operation: type: string minLength: 6 @@ -862,7 +862,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' relay-server-replacement-operation: type: string minLength: 6 @@ -1167,7 +1167,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' service-log-operation: type: string minLength: 6 @@ -1418,7 +1418,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the OaM request - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-log-operation: type: string minLength: 6 @@ -1752,7 +1752,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-approval-operation: type: string minLength: 6 @@ -2298,7 +2298,7 @@ paths: pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' topology-operation-ltp-update: type: string minLength: 6 From 605b5899aa1a8841616597af8b6352242618eb1e Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 10:10:02 +0200 Subject: [PATCH 12/41] Exclude OldRelease & NewRelease from updates Fixes #758 --- spec/ApplicationPattern.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..04ca7d24 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -1977,7 +1977,7 @@ paths: operationId: updateClient summary: 'Allows updating connection data of a serving application' description: > - 'Initiates update of release number and TCP/IP address at existing HttpClients and TcpClients. + 'Initiates update of release number and TCP/IP address at existing HttpClients and TcpClients, but not at OldRelease or NewRelease. If combination of {future-application-name, future-release-number} is different from combination {current-application-name, current-release-number} and if HttpClient with combination of {future-application-name, future-release-number} already exists, HttpClient with combination {current-application-name, current-release-number} shall not be updated, @@ -2005,13 +2005,13 @@ paths: type: string description: > 'Current name of the application that has updated connection data - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' current-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Current release number of the application that has updated connection data - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' future-application-name: type: string description: > @@ -3426,13 +3426,13 @@ paths: type: string description: > 'Name of the application that has an updated operation - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release number of the application that has an updated operation - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' old-operation-name: type: string minLength: 6 From ac5bb31384bf75ecc8948efa70680b22d66fa76c Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 11:29:04 +0200 Subject: [PATCH 13/41] Remove CurrentController http/tcp from CONFIGfile Fixes #836 --- spec/ApplicationPattern+config.json | 47 ----------------------------- 1 file changed, 47 deletions(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 5382e932..c034034a 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -1609,53 +1609,6 @@ } } ] - }, - { - "uuid": "xx-1-0-0-http-c-cc-1-0-0-000", - "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", - "client-ltp": [ - ], - "server-ltp": [ - "xx-1-0-0-tcp-c-cc-1-0-0-000" - ], - "layer-protocol": [ - { - "local-id": "0", - "layer-protocol-name": "http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER", - "http-client-interface-1-0:http-client-interface-pac": { - "http-client-interface-configuration": { - "application-name": "CurrentController", - "release-number": "1.0.0" - } - } - } - ] - }, - { - "uuid": "xx-1-0-0-tcp-c-cc-1-0-0-000", - "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", - "client-ltp": [ - "xx-1-0-0-http-c-cc-1-0-0-000" - ], - "server-ltp": [ - ], - "layer-protocol": [ - { - "local-id": "0", - "layer-protocol-name": "tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER", - "tcp-client-interface-1-0:tcp-client-interface-pac": { - "tcp-client-interface-configuration": { - "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", - "remote-address": { - "ip-address": { - "ipv-4-address": "1.1.4.1" - } - }, - "remote-port": 4001 - } - } - } - ] } ], "forwarding-domain": [ From c8090216a929b694df5daf5bbb93cd6a3c1e2693 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 12:08:52 +0200 Subject: [PATCH 14/41] Replace file-path by file-name Fixes #646 --- .../ConceptOfProfiles/ConceptOfProfiles.md | 2 +- .../InformationModel/Profile/Profile.md | 2 +- .../CreatingProfileInstanceList.md | 4 +-- spec/ApplicationPattern+profileInstances.yaml | 2 +- spec/ApplicationPattern+profiles.yaml | 2 +- spec/ApplicationPattern.yaml | 35 ++++++++++--------- 6 files changed, 24 insertions(+), 23 deletions(-) diff --git a/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md b/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md index efa656de..7f6b1257 100644 --- a/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md +++ b/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md @@ -59,7 +59,7 @@ It occurs several times in all existing applications. **FileProfile** The _FileProfile_ contains the information, which is required for connecting with a file that holds application data. -Aside identifying and describing the referenced file, it makes file path, access credentials and allowed operations available for configuration. +Aside identifying and describing the referenced file, it makes file name, access credentials and allowed operations available for configuration. The _FileProfile_ is used whenever the application uses one or several files for storing internal data. **GenericResponseProfile** diff --git a/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md b/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md index 7f8de9b5..9ee8837a 100644 --- a/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md +++ b/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md @@ -75,7 +75,7 @@ In case of the **FileProfile** the following attributes get augmented: "file-description": "Application name, release number and registration time stamp" }, "file-profile-configuration": { - "file-path": "../application-data/application-data.json", + "file-name": "application-data.json", "user-name": "RegistryOffice", "password": "Operations to add password", "operation": "file-profile-1-0:OPERATION_TYPE_READ_WRITE" diff --git a/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md b/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md index 63394229..f69425cd 100644 --- a/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md +++ b/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md @@ -87,9 +87,9 @@ This is a step by step cookbook for creating the _ProfileInstanceList_. * Document the content of the file. * Even if the exact format of the information is to be defined by the implementer, the information could be listed here. -**file-path** +**file-name** * The content of this field is actually determined by the implementer. -* Maybe, '../application-data/application-data.json' is a good choice for being a default value. +* Maybe, 'application-data.json' is a good choice for being a default value. **UserName** * This field is not mandatory. diff --git a/spec/ApplicationPattern+profileInstances.yaml b/spec/ApplicationPattern+profileInstances.yaml index d1b2f967..8ba0fdcf 100644 --- a/spec/ApplicationPattern+profileInstances.yaml +++ b/spec/ApplicationPattern+profileInstances.yaml @@ -144,7 +144,7 @@ profile-instances: file-identifier: ## TODO: Add invariant identifier of the referenced file file-description: ## TODO: Add a description of the content of the referenced file configuration: - file-path: ## TODO: Add file name, like e.g. '../application-data/application-data.json' + file-name: ## TODO: Add file name, like e.g. 'application-data.json' user-name: ## TODO: If file protected, add user-name password: ## TODO: If file protected, add password operation: ## TODO: Choose from read/write/off diff --git a/spec/ApplicationPattern+profiles.yaml b/spec/ApplicationPattern+profiles.yaml index 36d3008b..c6a2673d 100644 --- a/spec/ApplicationPattern+profiles.yaml +++ b/spec/ApplicationPattern+profiles.yaml @@ -30,7 +30,7 @@ profiles: file-identifier: string file-description: string configuration: - file-path: string + file-name: string user-name: string password: string operation: string diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..496e1f83 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -4089,9 +4089,9 @@ paths: file-profile-configuration: type: object required: - - file-path + - file-name properties: - file-path: + file-name: type: string user-name: type: string @@ -5204,9 +5204,9 @@ paths: file-profile-configuration: type: object required: - - file-path + - file-name properties: - file-path: + file-name: type: string user-name: type: string @@ -5935,7 +5935,7 @@ paths: $ref: '#/components/responses/responseForErroredOamRequests' default: $ref: '#/components/responses/responseForErroredOamRequests' - /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/file-path: + /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/file-name: parameters: - in: path name: uuid @@ -5945,25 +5945,25 @@ paths: pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' example: 'ro-2-0-1-file-p-000' get: - operationId: getFileProfileFilePath - summary: 'Returns the path of the file' + operationId: getFileProfileFileName + summary: 'Returns the name of the file' tags: - FileProfile security: - basicAuth: [] responses: '200': - description: 'File path provided' + description: 'File name provided' content: application/json: schema: type: object required: - - file-profile-1-0:file-path + - file-profile-1-0:file-name properties: - file-profile-1-0:file-path: + file-profile-1-0:file-name: type: string - example: '../application-data/application-data.json' + example: 'application-data.json' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -5977,8 +5977,8 @@ paths: default: $ref: '#/components/responses/responseForErroredOamRequests' put: - operationId: putFileProfileFilePath - summary: 'Configures path of the file' + operationId: putFileProfileFileName + summary: 'Configures name of the file' tags: - FileProfile security: @@ -5990,14 +5990,15 @@ paths: schema: type: object required: - - file-profile-1-0:file-path + - file-profile-1-0:file-name properties: - file-profile-1-0:file-path: + file-profile-1-0:file-name: type: string - example: '../application-data/application-data.json' + pattern: '^([A-Za-z0-9-_,\s]{3,})\.([A-Za-z]{3})$' + example: 'application-data.json' responses: '204': - description: 'File path configured' + description: 'File name configured' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': From a61ffd91953eb2fbd28ecf507c8042ff1a9c2c12 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 12:30:01 +0200 Subject: [PATCH 15/41] Correct StructureOfInternalForwardings.md --- .../StructureOfInternalForwarding.md | 10 ++++++---- .../{ => pictures}/InternalForwardings.pptx | Bin 2 files changed, 6 insertions(+), 4 deletions(-) rename doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/{ => pictures}/InternalForwardings.pptx (100%) diff --git a/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/StructureOfInternalForwarding.md b/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/StructureOfInternalForwarding.md index da99d09d..4aebdf05 100644 --- a/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/StructureOfInternalForwarding.md +++ b/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/StructureOfInternalForwarding.md @@ -4,13 +4,15 @@ _ForwardingConstructs_ are describing relationships between events and reactions Since we are dealing with REST servers, - an event is a request, which has been received (_Input_) by one of the _OperationServers_ offered by the application and - the reaction is a request, which has to be sent (_Output_) via one of the _OperationClients_ that are for addressing other applications. + Obviously, a definition of a _ForwardingConstruct_ must comprise at least one _Input_ (reference to an _OperationServer_) and at least one _Output_ (reference to an _OperationClient_). ![scheme](https://user-images.githubusercontent.com/57349523/230372750-3ad03353-7854-49d6-a7ab-4b2780806de5.jpg) -As described above, we are documenting the relationships, because we want to be able to modify them. -If we want to automate the modification, there must be services available on the REST API for facilitating this. -Thus, a definition of a _ForwardingConstruct_ needs also to comprise a _Management_ (reference to an _OperationServer_), if it shall be possible to automate changes (otherwise, the _ForwardingConstruct_ would have to be altered by editing in the CONFIGfile). +We are documenting the relationships, because we want to be able to modify them. +If we want to automate the modification (e.g. creating a subscription), there must be services available on the REST API for facilitating this. +In this case, the definition of a _ForwardingConstruct_ needs also to comprise a _Management_ (reference to an _OperationServer_). +Otherwise, the _ForwardingConstruct_ would have to be altered by editing in the CONFIGfile. ![fc](https://user-images.githubusercontent.com/57349523/230372906-aef8be4b-38e2-43bd-a5d5-4553628eba4c.jpg) @@ -21,6 +23,6 @@ A _Forwarding_ from registration to notifying the _TypeApprovalRegister_ has to This _Forwarding_ has to comprise the following _Servers_ and _Clients_: - _Management_: The _TypeApprovalRegister_ is informing the _RegistryOffice_ about its TCP/IP address and _OperationName_ for receiving notifications about new registrations by addressing the _RegistryOffice's OperationServer /v1/inquire-application-type-approvals_. The _RegistryOffice_ creates or updates a stack of _Clients_ with these information and it complements the corresponding _ForwardingConstruct_ by an _Output_ reference to the _OperationClient_. - _Input_: Some new application is addressing the _RegistryOffice's OperationServer /v1/register-application_ for registering. -- _Output_: The _RegistryOffice_ is activating its _OperationClient _TypeApprovalRegister://v1/regard-application_ for sending the notification to the _TypeApprovalRegister_. +- _Output_: The _RegistryOffice_ is activating its _OperationClient_ _TypeApprovalRegister://v1/regard-application_ for sending the notification to the _TypeApprovalRegister_. ![example](https://user-images.githubusercontent.com/57349523/230372426-089b8ee3-9244-4570-b98f-879b67d64c7d.jpg) diff --git a/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/InternalForwardings.pptx b/doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/pictures/InternalForwardings.pptx similarity index 100% rename from doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/InternalForwardings.pptx rename to doc/ElementsApplicationPattern/Functions/StructureOfInternalForwarding/pictures/InternalForwardings.pptx From c47d5773f78a96d1286bceb9c3a09f43d336c76f Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 09:14:45 +0200 Subject: [PATCH 16/41] Delete oldRelease in required /v1/embed-yourself Fixes #871 --- spec/ApplicationPattern.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..d823b0f7 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -848,9 +848,6 @@ paths: - registry-office-protocol - registry-office-address - registry-office-port - - old-release-protocol - - old-release-address - - old-release-port properties: registry-office-application: type: string From c832bbaf3123da92ff2bd9df2e060a0370f441f4 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 30 Sep 2023 09:01:08 +0200 Subject: [PATCH 17/41] Remove username/password from file-profile Fixes #643 --- .../ConceptOfProfiles/ConceptOfProfiles.md | 2 +- .../InformationModel/Profile/Profile.md | 2 - .../CreatingProfileInstanceList.md | 9 - spec/ApplicationPattern+profileInstances.yaml | 2 - spec/ApplicationPattern+profiles.yaml | 2 - spec/ApplicationPattern.yaml | 158 ------------------ 6 files changed, 1 insertion(+), 174 deletions(-) diff --git a/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md b/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md index efa656de..13cc4cfd 100644 --- a/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md +++ b/doc/ElementsApplicationPattern/Functions/ConceptOfProfiles/ConceptOfProfiles.md @@ -59,7 +59,7 @@ It occurs several times in all existing applications. **FileProfile** The _FileProfile_ contains the information, which is required for connecting with a file that holds application data. -Aside identifying and describing the referenced file, it makes file path, access credentials and allowed operations available for configuration. +Aside identifying and describing the referenced file, it makes file path and allowed operations available for configuration. The _FileProfile_ is used whenever the application uses one or several files for storing internal data. **GenericResponseProfile** diff --git a/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md b/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md index 7f8de9b5..d1404c63 100644 --- a/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md +++ b/doc/ElementsApplicationPattern/InformationModel/Profile/Profile.md @@ -76,8 +76,6 @@ In case of the **FileProfile** the following attributes get augmented: }, "file-profile-configuration": { "file-path": "../application-data/application-data.json", - "user-name": "RegistryOffice", - "password": "Operations to add password", "operation": "file-profile-1-0:OPERATION_TYPE_READ_WRITE" } } diff --git a/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md b/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md index 63394229..6898e52c 100644 --- a/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md +++ b/doc/SpecifyingApplications/CreatingProfileInstanceList/CreatingProfileInstanceList.md @@ -91,15 +91,6 @@ This is a step by step cookbook for creating the _ProfileInstanceList_. * The content of this field is actually determined by the implementer. * Maybe, '../application-data/application-data.json' is a good choice for being a default value. -**UserName** -* This field is not mandatory. -* If access to the file shall be protected by user name and password, some value should be added here. -* Maybe, the application's name is a good choice. - -**Password** -* This field is not mandatory. -* If access to the file shall be protected by user name and password, some value should be added here. - **Operations** * This field allows restricting the access rights of the application to the file. * Values are to be chosen from 'read', 'write' or 'off'. diff --git a/spec/ApplicationPattern+profileInstances.yaml b/spec/ApplicationPattern+profileInstances.yaml index d1b2f967..176c638d 100644 --- a/spec/ApplicationPattern+profileInstances.yaml +++ b/spec/ApplicationPattern+profileInstances.yaml @@ -145,8 +145,6 @@ profile-instances: file-description: ## TODO: Add a description of the content of the referenced file configuration: file-path: ## TODO: Add file name, like e.g. '../application-data/application-data.json' - user-name: ## TODO: If file protected, add user-name - password: ## TODO: If file protected, add password operation: ## TODO: Choose from read/write/off ## TODO: Potentially add further instances of FileProfile diff --git a/spec/ApplicationPattern+profiles.yaml b/spec/ApplicationPattern+profiles.yaml index 36d3008b..7ae65cdc 100644 --- a/spec/ApplicationPattern+profiles.yaml +++ b/spec/ApplicationPattern+profiles.yaml @@ -31,8 +31,6 @@ profiles: file-description: string configuration: file-path: string - user-name: string - password: string operation: string - profile-name: 'IntegerProfile' diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..258a016d 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -4093,10 +4093,6 @@ paths: properties: file-path: type: string - user-name: - type: string - password: - type: string operation: type: string enum: @@ -5208,10 +5204,6 @@ paths: properties: file-path: type: string - user-name: - type: string - password: - type: string operation: type: string enum: @@ -6010,156 +6002,6 @@ paths: $ref: '#/components/responses/responseForErroredOamRequests' default: $ref: '#/components/responses/responseForErroredOamRequests' - /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/user-name: - parameters: - - in: path - name: uuid - required: true - schema: - type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' - get: - operationId: getFileProfileUserName - summary: 'Returns the user name for acccessing the file' - tags: - - FileProfile - security: - - basicAuth: [] - responses: - '200': - description: 'User name provided' - content: - application/json: - schema: - type: object - required: - - file-profile-1-0:user-name - properties: - file-profile-1-0:user-name: - type: string - example: 'firstname.surname' - '400': - $ref: '#/components/responses/responseForErroredOamRequests' - '401': - $ref: '#/components/responses/responseForErroredOamRequests' - '403': - $ref: '#/components/responses/responseForErroredOamRequests' - '404': - $ref: '#/components/responses/responseForErroredOamRequests' - '500': - $ref: '#/components/responses/responseForErroredOamRequests' - default: - $ref: '#/components/responses/responseForErroredOamRequests' - put: - operationId: putFileProfileUserName - summary: 'Configures the user name for acccessing the file' - tags: - - FileProfile - security: - - basicAuth: [] - requestBody: - required: true - content: - application/json: - schema: - type: object - required: - - file-profile-1-0:user-name - properties: - file-profile-1-0:user-name: - type: string - example: 'firstname.surname' - responses: - '204': - description: 'User name configured' - '400': - $ref: '#/components/responses/responseForErroredOamRequests' - '401': - $ref: '#/components/responses/responseForErroredOamRequests' - '403': - $ref: '#/components/responses/responseForErroredOamRequests' - '404': - $ref: '#/components/responses/responseForErroredOamRequests' - '500': - $ref: '#/components/responses/responseForErroredOamRequests' - default: - $ref: '#/components/responses/responseForErroredOamRequests' - /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/password: - parameters: - - in: path - name: uuid - required: true - schema: - type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' - get: - operationId: getFileProfilePassword - summary: 'Returns the password for acccessing the file' - tags: - - FileProfile - security: - - basicAuth: [] - responses: - '200': - description: 'Password provided' - content: - application/json: - schema: - type: object - required: - - file-profile-1-0:password - properties: - file-profile-1-0:password: - type: string - example: 'stupid_phrase' - '400': - $ref: '#/components/responses/responseForErroredOamRequests' - '401': - $ref: '#/components/responses/responseForErroredOamRequests' - '403': - $ref: '#/components/responses/responseForErroredOamRequests' - '404': - $ref: '#/components/responses/responseForErroredOamRequests' - '500': - $ref: '#/components/responses/responseForErroredOamRequests' - default: - $ref: '#/components/responses/responseForErroredOamRequests' - put: - operationId: putFileProfilePassword - summary: 'Configures the password for acccessing the file' - tags: - - FileProfile - security: - - basicAuth: [] - requestBody: - required: true - content: - application/json: - schema: - type: object - required: - - file-profile-1-0:password - properties: - file-profile-1-0:password: - type: string - example: 'stupid_phrase' - responses: - '204': - description: 'Password configured' - '400': - $ref: '#/components/responses/responseForErroredOamRequests' - '401': - $ref: '#/components/responses/responseForErroredOamRequests' - '403': - $ref: '#/components/responses/responseForErroredOamRequests' - '404': - $ref: '#/components/responses/responseForErroredOamRequests' - '500': - $ref: '#/components/responses/responseForErroredOamRequests' - default: - $ref: '#/components/responses/responseForErroredOamRequests' /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/operation: parameters: - in: path From 7c1bf777ea1a967b077f71d03f29b7c4a71c9920 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 14:56:19 +0200 Subject: [PATCH 18/41] Remove fake IP from docu and HTTPS IP from CONFIG Fixes #247 --- .../ConceptOfServiceList.md | 2 +- .../CreatingConfigFile/CreatingConfigFile.md | 4 +-- .../CreatingServiceList.md | 8 +++--- .../FakeAddresses/IpAddresses.md | 27 +++++++++++------- .../TestingApplications.md | 2 +- spec/ApplicationPattern+config.json | 28 +------------------ spec/ApplicationPattern+services.yaml | 5 ---- 7 files changed, 26 insertions(+), 50 deletions(-) diff --git a/doc/SpecifyingApplications/ConceptOfServiceList/ConceptOfServiceList.md b/doc/SpecifyingApplications/ConceptOfServiceList/ConceptOfServiceList.md index 0f72fc7f..0c0f9423 100644 --- a/doc/SpecifyingApplications/ConceptOfServiceList/ConceptOfServiceList.md +++ b/doc/SpecifyingApplications/ConceptOfServiceList/ConceptOfServiceList.md @@ -12,7 +12,7 @@ It provides full focus on composing a complete and well-structured set of _Opera * The _ReleaseNumber_ ... * ... has to follow the definitions in [Structure of _ReleaseNumbers_](../../ElementsApplicationPattern/Names/StructureOfReleaseNumbers/StructureOfReleaseNumbers.md), * ... has to identify the version resulting from the specification (if originally planned to fix some bugs and later decided to add functionality the _ReleaseNumber_ has to be changed accordingly). -* The CONFIGfile contains all data that is necessary to establish the connections, which are required for properly operating the application. TCP/IP addresses, _OperationNames_ and _ReleaseNumber_ might depend on the environment (e.g. SDN test laboratory or live network) in which the application gets instantiated in. As a consequence the CONFIGfile has to be adapted to the environment before instantiation. This adaption shall be automated. For supporting the automation, fake IP addresses have to be put into the _ServiceList_ during specification. Fake IP addresses will be replaced by environmental specific addresses during the creation of docker image. New IP addresses and TCP ports will be assigned by the _PlatformOwner_. Please, request for an address and look it up at [Fake TCP/IP addresses](../../TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md). +* The CONFIGfile contains all data that is necessary to establish the connections, which are required for properly operating the application. TCP/IP addresses, _OperationNames_ and _ReleaseNumber_ might depend on the environment (e.g. SDN test laboratory or live network) in which the application gets instantiated in. As a consequence the CONFIGfile has to be adapted to the environment before instantiation. This adaption has been automated by running a script. The automation requires a default IP address and an idividual TCP port to be put into the into the _ServiceList_ during specification. This fake address will be replaced by environmental specific addresses during the creation of docker image. New TCP ports will be assigned by the _PlatformOwner_. Please, request for an address and look it up at [Fake TCP/IP addresses](../../TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md). ### OperationServers diff --git a/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md b/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md index e917c5a7..f24d85b7 100644 --- a/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md +++ b/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md @@ -31,7 +31,7 @@ Several need to be added, and it is recommended to copy and paste the existing o - Use CTRL+h for replacing 'xx-1-0-0' by the abbreviation of your application's name and release number e.g. 'ro-2-0-1'. - Use CTRL+f for searching '"http-server-interface-1-0:http-server-interface-pac":', and update the information about your application. Keep being consistent with the ServiceList. -- Use CTRL+f for searching '"tcp-server-interface-1-0:tcp-server-interface-pac":', and update the FakeIP address information of your application. Keep being consistent with the ServiceList. It might be required to add or delete a TcpServer instance. +- Use CTRL+f for searching '"tcp-server-interface-1-0:tcp-server-interface-pac":', and update the fake TCP port of your application. Keep being consistent with the ServiceList. It might be required to add or delete a TcpServer instance. #### Profiles @@ -59,7 +59,7 @@ Several need to be added, and it is recommended to copy and paste the existing o - Search for 'http-s-000",' and put the same UUIDs into the clientLtp list attribute. - Check the HttpClients in the CONFIGfile and delete all stacks of OperationClients, HttpClients and TcpClients that belong to HttpClients that are not required in your ServiceList. -- Step through the HttpClients in your ServiceList and check, whether all the required OperationClients are available in the CONFIGfile. If not, copy a stack of one OperationClient, an HttpClient and a TcpClient, adapt the values of the applicationName and releaseNumber attributes at the HttpClient and the fakeIP address and port at the TcpClient. Take care that the UUIDs at the three new objects get update with the official abbreviation of the application's name. +- Step through the HttpClients in your ServiceList and check, whether all the required OperationClients are available in the CONFIGfile. If not, copy a stack of one OperationClient, an HttpClient and a TcpClient, adapt the values of the applicationName and releaseNumber attributes at the HttpClient and the fake TCP port at the TcpClient. Take care that the UUIDs at the three new objects get update with the official abbreviation of the application's name. - Double check that all the HttpClients of the ServiceList are now covered in the same ordering as in the CONFIGfile. - Step through the list of HttpClients in the CONFIGfile and check, whether all the OperationClients from the ServiceList are available in the CONFIGfile. If not, copy an existing OperationClient object on the same HttpClient and replace the value of the operationName attribute. Delete obsolete OperationClient objects. Update the clientLtp list attribute at the HttpClient objects. - After you updated the OperationClients at all the HttpClients, double check whether the ordering of the OperationClients is consistent with the ServiceList. diff --git a/doc/SpecifyingApplications/CreatingServiceList/CreatingServiceList.md b/doc/SpecifyingApplications/CreatingServiceList/CreatingServiceList.md index 32bbb5ca..4e59d541 100644 --- a/doc/SpecifyingApplications/CreatingServiceList/CreatingServiceList.md +++ b/doc/SpecifyingApplications/CreatingServiceList/CreatingServiceList.md @@ -28,7 +28,7 @@ This is a step by step cookbook for creating the _ServiceList_. ### HttpServer and TcpServer * Add the official _ApplicationName_ and _ReleaseNumber_ of the application. -* Add fake IP address and TCP port from [official List](../../TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md). +* Add fake address from [official List](../../TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md). ### OperationServers @@ -53,13 +53,13 @@ This is a step by step cookbook for creating the _ServiceList_. ### OldRelease * Add official _ReleaseNumber_ of the operational version of the application. In case of new application, put the same value as in _HttpServer_ above. -* Add fake IP address and TCP port of the operational version of the application. In case of new application, put the same value as in TcpServer above. +* Add fake address of the operational version of the application. In case of new application, put the same value as in TcpServer above. ### NewRelease * Add same value as in _HttpServer_ above as the substituting _ReleaseNumber_. -* Add fake IP address and TCP port from _TcpServer_ above as IP address and TCP port of the substituting release. +* Add fake address from _TcpServer_ above as IP address and TCP port of the substituting release. * Add _OperationsClients_ that will be required for handing-over the configuration information to the _NewRelease_. * Add the following two lines for every _OperationsClient_ that shall be defined: ``` @@ -90,7 +90,7 @@ This is a step by step cookbook for creating the _ServiceList_. * Start with specifying the HttpClients and TcpClients. * Add the official _ApplicationName_ and _ReleaseNumber_ of the application, which shall be addressed, into the _HttpClient_. * Add a UUID according to [structure of UUIDs](../../ElementsApplicationPattern/Names/StructureOfUuids/StructureOfUuids.md). - * Add the fake IP address and TCP port of the application to be addressed to the _TcpClient_. + * Add the fake address of the application to be addressed to the _TcpClient_. * Add a UUID according to [structure of UUIDs](../../ElementsApplicationPattern/Names/StructureOfUuids/StructureOfUuids.md). * Add the usual two lines for defining an _OperationClient_ to the _operation-clients/service/individual_ section: ``` diff --git a/doc/TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md b/doc/TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md index 4278f85a..24dafbd1 100644 --- a/doc/TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md +++ b/doc/TestingApplications/Infrastructure/SdnLaboratory/FakeAddresses/IpAddresses.md @@ -1,7 +1,14 @@ -# Up-to-date Fake IP Addresses +# Up-to-date Fake Addresses The following fake TCP/IP addresses have to be used in public documentation and specifications to establish a homogeneous system of unique addresses that can be replaced by actual values during later automated processing. +UPDATE on 2nd of October 2023: +The following rules have changed: +- As the automation script is chosing the IP address based on ApplicationName and ReleaseNumber, it is no longer necessary to have individual fake IP addresses. The local host IP address shall be used as a default instead. +- The idea of addressing diverse applications from outside the GCP VPC has been replaced by the concept of using Proxies. It is no longer required to administrate a separate IP address for HTTPS connections. + +Both changes shall be applied on applications that did not yet reach milestone v1.0.0_spec. + | Cathegory | Abbr. | Component | Release | IP_1* | TCP_1* | IP_2** | TCP_2** | |---|---|---|---|---|---|---|---| | Controller | | | | | | | | @@ -24,19 +31,19 @@ The following fake TCP/IP addresses have to be used in public documentation and | DataBases | | | | | | | | ES | ElasticSearch | 1.0.0 | 1.1.3.15 | 3015 | Application | | | | | | -| | CC | CurrentController | 1.0.0 | 1.1.4.1 | 4001 | 1.2.4.1 | 4201 -| | RESO | Resolver | 1.0.0 | 1.1.4.2 | 4002 | 1.2.4.2 | 4202 -| | A2LT | Accessport2LtpTranslator | 1.0.0 | 1.1.4.3 | 4003 | 1.2.4.3 | 4203 +| | CC | CurrentController | 1.0.0 | 127.0.0.1 | 4001 | | +| | RESO | Resolver | 1.0.0 | 127.0.0.1 | 4002 | | +| | A2LT | Accessport2LtpTranslator | 1.0.0 | 127.0.0.1 | 4003 | | | | MWDI | MicroWaveDeviceInventory  | 1.0.0 | 1.1.4.4 | 4004 | 1.2.4.4 | 4204 | | MATR | MacAddressTableRecorder | 1.0.0 | 1.1.4.5 | 4005 | 1.2.4.5 | 4205 -| | MM | MediatorManager | 1.0.0 | 1.1.4.6 | 4006 | 1.2.4.6 | 4206 -| | AIPS | AirInterfacePowerSaver | 1.0.0 | 1.1.4.7 | 4007 | 1.2.4.7 | 4207 -| | L2LT | Linkid2LtpTranslator | 1.0.0 | 1.1.4.8 | 4008 | 1.2.4.8 | 4208 +| | MM | MediatorManager | 1.0.0 | 127.0.0.1 | 4006 | | +| | AIPS | AirInterfacePowerSaver | 1.0.0 | 127.0.0.1 | 4007 | | +| | L2LT | Linkid2LtpTranslator | 1.0.0 | 127.0.0.1 | 4008 | | | | ALAP | AutomatedLinkAcceptanceProxy | 1.0.0 | 1.1.4.9 | 4009 | 1.2.4.9 | 4209 -| | MO | MountingOrchestrator | 1.0.0 | 1.1.4.10 | 4010 | 1.2.4.10 | 4210 +| | MO | MountingOrchestrator | 1.0.0 | 127.0.0.1 | 4010 | | | | NP | NotificationProxy | 1.0.0 | 1.1.4.11 | 4011 | 1.2.4.11 | 4211 -| | MB | MycomButler | 1.0.0 | 1.1.4.12 | 4012 | 1.2.4.12 | 4212 -| | HMWDI | HistoricalMicroWaveDeviceInventory | 1.0.0 | 1.1.4.13 | 4013 | 1.2.4.13 | 4213 +| | MB | MycomButler | 1.0.0 | 127.0.0.1 | 4012 | | +| | HMWDI | HistoricalMicroWaveDeviceInventory | 1.0.0 | 127.0.0.1 | 4013 | | \*) IP_1 + TCP_1 = address from **within** the GCP VPC (HTTP). \*\*) IP_2 + TCP_2 = address from **outside** the GCP VPC (HTTP**S**). diff --git a/doc/TestingApplications/TestingApplications.md b/doc/TestingApplications/TestingApplications.md index 8d100c65..faaf734d 100644 --- a/doc/TestingApplications/TestingApplications.md +++ b/doc/TestingApplications/TestingApplications.md @@ -14,7 +14,7 @@ Software Defined Networking (SDN) is an architecture that uses open protocols to **Step-by-Step Guidelines** A user can update the applications with proper actual addresses in two ways. -* Manually updating ip-address and port for each application from respective swagger API's. +* Manually updating IP address and TCP port for each application from respective swagger API's. * Automated updating through script developed that could update the load.json file for the respective application. This script needs to be run once while deployment. Refer this for further details [FakeToOriginalIPConverter](../../server/FakeToOriginalIPConverter/README.md) ## Tools diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 5382e932..151954bc 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -669,8 +669,7 @@ "xx-1-0-0-op-s-bs-005" ], "server-ltp": [ - "xx-1-0-0-tcp-s-000", - "xx-1-0-0-tcp-s-001" + "xx-1-0-0-tcp-s-000" ], "layer-protocol": [ { @@ -722,31 +721,6 @@ } ] }, - { - "uuid": "xx-1-0-0-tcp-s-001", - "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", - "client-ltp": [ - "xx-1-0-0-http-s-000" - ], - "server-ltp": [ - ], - "layer-protocol": [ - { - "local-id": "0", - "layer-protocol-name": "tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER", - "tcp-server-interface-1-0:tcp-server-interface-pac": { - "tcp-server-interface-configuration": { - "description": "With TLS layer", - "local-protocol": "tcp-server-interface-1-0:PROTOCOL_TYPE_HTTPS", - "local-address": { - "ipv-4-address": " >>> ownIpAddress and Port (below) <<< " - }, - "local-port": 3208 - } - } - } - ] - }, { "uuid": "xx-1-0-0-es-c-es-1-0-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index 4b20ba76..ea326ced 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -55,11 +55,6 @@ servers: own-ip-address: ## TODO: Add OwnIpAddress own-tcp-port: ## TODO: Add OwnTcpPort uuid: xx-1-0-0-tcp-s-000 - - description: With TLS layer - local-protocol: https - own-ip-address: ## TODO: Add OwnIpAddress - own-tcp-port: ## TODO: Add OwnTcpPort - uuid: xx-1-0-0-tcp-s-001 clients: From 53fc1c9e79710f33d2bdf5d53e25cea85ac89bfa Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 15:54:40 +0200 Subject: [PATCH 19/41] Reverse change to CONFIGfile --- spec/ApplicationPattern+config.json | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 151954bc..5382e932 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -669,7 +669,8 @@ "xx-1-0-0-op-s-bs-005" ], "server-ltp": [ - "xx-1-0-0-tcp-s-000" + "xx-1-0-0-tcp-s-000", + "xx-1-0-0-tcp-s-001" ], "layer-protocol": [ { @@ -721,6 +722,31 @@ } ] }, + { + "uuid": "xx-1-0-0-tcp-s-001", + "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", + "client-ltp": [ + "xx-1-0-0-http-s-000" + ], + "server-ltp": [ + ], + "layer-protocol": [ + { + "local-id": "0", + "layer-protocol-name": "tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER", + "tcp-server-interface-1-0:tcp-server-interface-pac": { + "tcp-server-interface-configuration": { + "description": "With TLS layer", + "local-protocol": "tcp-server-interface-1-0:PROTOCOL_TYPE_HTTPS", + "local-address": { + "ipv-4-address": " >>> ownIpAddress and Port (below) <<< " + }, + "local-port": 3208 + } + } + } + ] + }, { "uuid": "xx-1-0-0-es-c-es-1-0-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", From de985d3bcaf31053511cbc7afddc64bd08041bba Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 15:56:00 +0200 Subject: [PATCH 20/41] Reverse change to ServiceList --- spec/ApplicationPattern+services.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index ea326ced..4b20ba76 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -55,6 +55,11 @@ servers: own-ip-address: ## TODO: Add OwnIpAddress own-tcp-port: ## TODO: Add OwnTcpPort uuid: xx-1-0-0-tcp-s-000 + - description: With TLS layer + local-protocol: https + own-ip-address: ## TODO: Add OwnIpAddress + own-tcp-port: ## TODO: Add OwnTcpPort + uuid: xx-1-0-0-tcp-s-001 clients: From 12f036c7d99a825b7bba2fc6098746e4d6b7b570 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 16:32:49 +0200 Subject: [PATCH 21/41] Roll-back of multiple TcpServers Fixes #649 --- .../LogicalTerminationPoint.md | 6 +- spec/ApplicationPattern+config.json | 28 +--------- spec/ApplicationPattern+services.yaml | 5 -- spec/ApplicationPattern.yaml | 56 ++++--------------- 4 files changed, 14 insertions(+), 81 deletions(-) diff --git a/doc/ElementsApplicationPattern/InformationModel/LogicalTerminationPoint/LogicalTerminationPoint.md b/doc/ElementsApplicationPattern/InformationModel/LogicalTerminationPoint/LogicalTerminationPoint.md index 3ea1b030..3adf87ae 100644 --- a/doc/ElementsApplicationPattern/InformationModel/LogicalTerminationPoint/LogicalTerminationPoint.md +++ b/doc/ElementsApplicationPattern/InformationModel/LogicalTerminationPoint/LogicalTerminationPoint.md @@ -12,7 +12,7 @@ The following attributes are hold by the LogicalTerminationPoint: - **core-model-1-4:TERMINATION_DIRECTION_SOURCE**: Looking at the _Forwarding_ inside the applications, it is the OperationServer, where the event, which causes a reaction at the OperationClient, happens. Consequently, the LTPs that are describing servers (OperationServer, HttpServer, TcpServer) are identified by being sources of the internal flow. - **core-model-1-4:TERMINATION_DIRECTION_SINK**: Again looking at the internal _Forwarding_, the information is propagating towards the clients (OperationClient, ElasticsearchClient, HttpClient, TcpClient). Consequently, these interfaces are associated with being sinks of the internal flow. - **clientLtp**: This attribute does not relate to the relationship between applications, but OSI network layers. Example: An Ethernet PHY would be required for transporting an Ethernet MAC, and an Ethernet MAC would be required for transporting an IP layer. So, the Ethernet PHY is serving the Ethernet MAC, and the IP is client of the Ethernet MAC. Example in case of applications: OperationClients/OperationServers are referenced in the clientLtp attribute of the HttpClient/HttpServer. -- **serverLtp**: Example in case of applications: TcpClients/TcpServers are referenced in the serverLtp attribute of the HttpClient/HttpServer. +- **serverLtp**: Example in case of applications: the TcpClient/TcpServer is referenced in the serverLtp attribute of the HttpClient/HttpServer. - **layerProtocol**: List of logical layers that are terminated at the LTP. In case of MW SDN applications, but also in case of the MW information model, there is always just a single instance of LayerProtocol in this list. ![ClientServerRelationships](pictures/clientServerLtp.png) @@ -78,7 +78,7 @@ Each service that is provided by the application is represented as an **Operatio } ``` -- The **TcpServer** represents the current IP address and port of the application that is subject to the specification. There must be at least one instance of TcpServer. If the application shall be reachable from within and from outside the virtual private cloud (name space behind TLS layer termination), separate TcpServers are required for http and https. The TcpServer has a complex data structure that offers multiple ways of expressing the address information. Several attributes are for alternative usage (means: exclusive alternatives). It is recommended to study the definition of the ControlConstruct in the OpenApiSpecification of the ApplicationPattern, if a different way of expressing the application's own address would be required. In all the existing applications, the following attributes got augmented: +- The **TcpServer** represents the current IP address and port of the application that is subject to the specification. The TcpServer has a complex data structure that offers multiple ways of expressing the address information. Several attributes are for alternative usage (means: exclusive alternatives). It is recommended to study the definition of the ControlConstruct in the OpenApiSpecification of the ApplicationPattern, if a different way of expressing the application's own address would be required. In all the existing applications, the following attributes got augmented: ``` "tcp-server-interface-1-0:tcp-server-interface-pac": { "tcp-server-interface-configuration": { @@ -133,7 +133,7 @@ Each service that is provided by the application is represented as an **Operatio } ``` -- The **TcpClient** stores the IP address and port of a serving application. In contrast to the TcpServer, just a single TcpClient shall be described. Alike the TcpServer, the TcpClient has a complex data structure that offers multiple ways of expressing the address information. Several attributes are for alternative usage (means: exclusive alternatives). It is recommended to study the definition of the ControlConstruct in the OpenApiSpecification of the ApplicationPattern, if a different way of expressing the serving application's address would be required. In all the existing applications, the following attributes got augmented: +- The **TcpClient** stores the IP address and port of a serving application. Alike the TcpServer, the TcpClient has a complex data structure that offers multiple ways of expressing the address information. Several attributes are for alternative usage (means: exclusive alternatives). It is recommended to study the definition of the ControlConstruct in the OpenApiSpecification of the ApplicationPattern, if a different way of expressing the serving application's address would be required. In all the existing applications, the following attributes got augmented: ``` "tcp-client-interface-1-0:tcp-client-interface-pac": { "tcp-client-interface-configuration": { diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 5382e932..151954bc 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -669,8 +669,7 @@ "xx-1-0-0-op-s-bs-005" ], "server-ltp": [ - "xx-1-0-0-tcp-s-000", - "xx-1-0-0-tcp-s-001" + "xx-1-0-0-tcp-s-000" ], "layer-protocol": [ { @@ -722,31 +721,6 @@ } ] }, - { - "uuid": "xx-1-0-0-tcp-s-001", - "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", - "client-ltp": [ - "xx-1-0-0-http-s-000" - ], - "server-ltp": [ - ], - "layer-protocol": [ - { - "local-id": "0", - "layer-protocol-name": "tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER", - "tcp-server-interface-1-0:tcp-server-interface-pac": { - "tcp-server-interface-configuration": { - "description": "With TLS layer", - "local-protocol": "tcp-server-interface-1-0:PROTOCOL_TYPE_HTTPS", - "local-address": { - "ipv-4-address": " >>> ownIpAddress and Port (below) <<< " - }, - "local-port": 3208 - } - } - } - ] - }, { "uuid": "xx-1-0-0-es-c-es-1-0-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index 4b20ba76..ea326ced 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -55,11 +55,6 @@ servers: own-ip-address: ## TODO: Add OwnIpAddress own-tcp-port: ## TODO: Add OwnTcpPort uuid: xx-1-0-0-tcp-s-000 - - description: With TLS layer - local-protocol: https - own-ip-address: ## TODO: Add OwnIpAddress - own-tcp-port: ## TODO: Add OwnTcpPort - uuid: xx-1-0-0-tcp-s-001 clients: diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e9dadb0..95a99777 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -539,57 +539,21 @@ paths: type: string pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > - 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == http - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > - 'If provided, own domain name, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == http - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + 'If provided, own domain name, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' http-port: type: integer minimum: 0 maximum: 65535 description: > - 'If provided, own TCP port, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == http - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' - https-address: - type: object - minProperties: 1 - maxProperties: 1 - additionalProperties: false - properties: - ip-address: - type: object - minProperties: 1 - additionalProperties: false - properties: - ipv-4-address: - type: string - pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' - description: > - 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == https - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' - domain-name: - type: string - pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' - description: > - 'If provided, own domain name, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == https - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' - https-port: - type: integer - minimum: 0 - maximum: 65535 - description: > - 'If provided, own TCP port, which has to be documented (but not be directly used for formulating the callback) into the TcpServer with - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol] == https - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + 'If provided, own TCP port, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' preceding-application-name: type: string minLength: 3 @@ -9358,13 +9322,13 @@ components: description: > 'Request that shall be called, when button gets pressed from - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol}] + [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol}] :// - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address} + [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address} or - {/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name}] + {/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name}] : - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-*/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port}] + [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port}] [{/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-configuration/consequent-operation-reference}]' input-value-list: type: array From f531b771d8b411ed7c6add13a755b5595fde1806 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 17:09:27 +0200 Subject: [PATCH 22/41] Change pattern: to single TcpServer --- spec/ApplicationPattern.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 95a99777..131acfc1 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -7197,7 +7197,7 @@ paths: required: true schema: type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-([0-9]{3})$' + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' example: 'ro-2-0-1-tcp-s-000' get: operationId: getTcpServerDescription @@ -7270,7 +7270,7 @@ paths: required: true schema: type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-([0-9]{3})$' + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' example: 'ro-2-0-1-tcp-s-000' get: operationId: getTcpServerLocalProtocol @@ -7351,7 +7351,7 @@ paths: required: true schema: type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-([0-9]{3})$' + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' example: 'ro-2-0-1-tcp-s-000' get: operationId: getTcpServerLocalAddress @@ -7445,7 +7445,7 @@ paths: required: true schema: type: string - pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-([0-9]{3})$' + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' example: 'ro-2-0-1-tcp-s-000' get: operationId: getTcpServerLocalPort From 449bc9f11d5c0d232fe54a17bcac18306a65989c Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 2 Oct 2023 18:29:12 +0200 Subject: [PATCH 23/41] Limit TcpServers to 1 while registering --- spec/ApplicationPattern.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 131acfc1..e543ea62 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -690,6 +690,8 @@ paths: from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' tcp-server-list: type: array + minItems: 1 + maxItems: 1 items: type: object required: From 2b8a93f30f0880f7a2c03f1e13ec72c3689b9d97 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Tue, 3 Oct 2023 09:13:15 +0200 Subject: [PATCH 24/41] Expanded on additional services Fixes #758 --- spec/ApplicationPattern.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 04ca7d24..9d89d3b6 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -1161,13 +1161,13 @@ paths: type: string description: > 'Name of application that shall record the service requests - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' service-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' service-log-operation: type: string minLength: 6 @@ -1412,13 +1412,13 @@ paths: type: string description: > 'Name of application that shall record the OaM requests - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the OaM request - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-log-operation: type: string minLength: 6 @@ -1746,13 +1746,13 @@ paths: type: string description: > 'Name of application that shall approve the OaM requests - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-approval-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-approval-operation: type: string minLength: 6 @@ -2292,13 +2292,13 @@ paths: type: string description: > 'Name of application that shall document the application layer topology - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' topology-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' topology-operation-ltp-update: type: string minLength: 6 From d49d2e7327b623945c62da3b5493f3252c9d0d6d Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Wed, 4 Oct 2023 09:17:08 +0200 Subject: [PATCH 25/41] Fix broken links in CreatingConfigFile.md Fixes #587 --- .../CreatingConfigFile/CreatingConfigFile.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md b/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md index e917c5a7..d8c9fe8c 100644 --- a/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md +++ b/doc/SpecifyingApplications/CreatingConfigFile/CreatingConfigFile.md @@ -4,7 +4,7 @@ This is the step by step cookbook for creating the _CONFIGfile_. Please read the following conceptual documents before working on the _CONFIGfile_: - [Concept of the CONFIGfile](../../ElementsApplicationPattern/Functions/ConceptOfConfigFile/ConceptOfConfigFile.md) -- [Structure of the CONFIGfile](../../ElementsApplicationPattern/Functions/ConceptOfConfigFile/ConceptOfConfigFile.md) +- [Structure of the CONFIGfile](../../ElementsApplicationPattern/Functions/StructureOfConfigFile/StructureOfConfigFile.md) - [ONF Core Information Model](../../ElementsApplicationPattern/InformationModel/Overview/Overview.md) From df8f60d1d1e6a609a253c0f1676c7f2cc2641aa2 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Thu, 19 Oct 2023 12:07:27 +0200 Subject: [PATCH 26/41] Add URL & execTime to ServiceRecord (fixes #908) --- spec/ApplicationPattern.yaml | 55 ++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index cd1b7e76..963481e0 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -1322,18 +1322,49 @@ paths: stringified-response: type: string description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' - example: - x-correlator: '550e8400-e29b-11d4-a716-446655440000' - trace-indicator: '1.1' - user: 'User Name' - originator: 'RegistryOffice' - application-name: 'OwnApplicationName' - release-number: '1.0.0' - operation-name: '/v1/embed-yourself' - response-code: 500 - timestamp: '2010-11-20T14:00:00+01:00' - stringified-body: '' - stringified-response: '' + url: + type: string + description: 'Complete URL that has been addressed by the request; only to be provided, if the client is sending the record to EaTL, because the server could not be reached' + exec-time: + type: integer + description: 'Total elapsed time for the execution of the request; value identical with responseHeaders.exec-time; only to be provided, if the server is sending the record to EaTL after processing the request' + examples: + ProvidedByServer: + value: + x-correlator: '550e8400-e29b-11d4-a716-446655440000' + trace-indicator: '1.1' + user: 'UserName' + originator: 'RegistryOffice' + application-name: 'NewApplicationName' + release-number: '1.0.1' + operation-name: '/v1/embed-yourself' + response-code: 204 + exec-time: 1100 + ProvidedByDetailedServer: + value: + x-correlator: '550e8400-e29b-11d4-a716-446655440123' + trace-indicator: '1' + user: 'UserName' + originator: 'Subscriber' + application-name: 'ServingApplication' + release-number: '1.0.0' + operation-name: '/v1/end-subscription' + response-code: 204 + timestamp: '2010-11-20T14:00:00+01:02' + stringified-body: '{"subscriber-application":"Subscriber","subscriber-release-number":"1.2.1","subscription":"/v1/send-notifications"}' + stringified-response: '' + exec-time: 1100 + ProvidedByClient: + value: + x-correlator: '883e8400-e29b-11d4-a716-446655440333' + trace-indicator: '1.1' + user: 'UserName' + originator: 'RegistryOffice' + application-name: 'OfflineApplicationName' + release-number: '1.0.0' + operation-name: '/v1/embed-yourself' + response-code: 500 + url: 'http://1.1.4.1:4001/v1/embed-yourself' responses: '204': description: 'Request recorded' From f81ce43627c1ae9d263c74e0b8ad1e4658d64f7a Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Thu, 19 Oct 2023 12:26:02 +0200 Subject: [PATCH 27/41] Remove obsolete TcpServer from example Fixes #649 --- spec/ApplicationPattern.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index e543ea62..4ca0e157 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -739,11 +739,6 @@ paths: ip-address: ipv-4-address: '1.1.3.9' port: 3009 - - protocol: 'HTTPS' - address: - ip-address: - ipv-4-address: '1.2.3.9' - port: 3209 responses: '204': description: 'Application registered' From 5796cc21d9ef93fc251cf162e4b1937a90bcebdd Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sun, 22 Oct 2023 15:07:54 +0200 Subject: [PATCH 28/41] Add diagram of embedding new applications --- .../diagrams/systemScope/EmbedNewApp.plantuml | 178 ++++++++++++++++++ spec/diagrams/systemScope/EmbedNewApp.png | Bin 0 -> 153721 bytes 2 files changed, 178 insertions(+) create mode 100644 spec/diagrams/systemScope/EmbedNewApp.plantuml create mode 100644 spec/diagrams/systemScope/EmbedNewApp.png diff --git a/spec/diagrams/systemScope/EmbedNewApp.plantuml b/spec/diagrams/systemScope/EmbedNewApp.plantuml new file mode 100644 index 00000000..d485d310 --- /dev/null +++ b/spec/diagrams/systemScope/EmbedNewApp.plantuml @@ -0,0 +1,178 @@ +@startuml EmbedNewApp +skinparam responseMessageBelowArrow true + +title +Embedding process of a completely new application into a properly running environment +(Status = as is ; Problems indicated in red) +end title + +participant "Admin" as Admin +participant "NewApp://v1/register-yourself" as NewAppRegYs +participant "RO://v1/register-application" as RoRegiA +participant "TAR://v1/regard-application" as TarRegaA +participant "RO://v1/regard-updated-approval-status" as RoRegaUa +participant "NewApp://v1/embed-yourself" as NewAppEmbYs + participant "OR://v1/bequeath-your-data-and-die" as OrBydad +participant "EaTL://v1/regard-application" as EatlRegaA + participant "EaTL://v1/record-service-request" as EatlRsr + participant "NewApp://v1/redirect-service-request-information" as NewAppRsri +participant "OL://v1/regard-application" as OlRegaA + participant "OL://v1/record-oam-request" as OlRor + participant "NewApp://v1/redirect-oam-request-information" as NewAppRori +participant "AA://v1/regard-application" as AaRegaA + participant "AA://v1/approve-oam-request" as AaAor + participant "NewApp://v1/inquire-oam-request-approvals" as NewAppIora +participant "ALT://v1/regard-application" as AltRegaA + participant "ALT://v1/update-ltp" as AltUltp + participant "ALT://v1/delete-ltp-and-dependents" as AltDltpAd + participant "ALT://v1/update-fc" as AltUfc + participant "ALT://v1/update-fc-port" as AltUfcP + participant "ALT://v1/delete-fc-port" as AltDfcP + participant "NewApp://v1/redirect-topology-change-information" as NewAppRtci +participant "OKM://v1/regard-application" as OkmRegaA + participant "ALT:///v1/list-link-uuids" as AltLiu + participant "ALT://v1/list-end-points-of-link" as AltLepol + participant "NewApp://v1/update-operation-key" as NewAppUok + + +Admin -> NewAppRegYs : (default ApiKey) + +activate NewAppRegYs +NewAppRegYs -> RoRegiA : (./.) +deactivate NewAppRegYs + +activate RoRegiA +RoRegiA -> TarRegaA : (known ApiKey) +deactivate RoRegiA + +activate TarRegaA +TarRegaA -> RoRegaUa : (known ApiKey) +deactivate TarRegaA + +activate RoRegaUa +RoRegaUa -> NewAppEmbYs : (default ApiKey) + + activate NewAppEmbYs + NewAppEmbYs -> OrBydad : (ApiKey) + deactivate NewAppEmbYs + + note over OrBydad + Further processing + in casae of updates + end note + /' activate OrBydad + 'RO://v1/relay-server-replacement' + 'RO://v1/deregister-application' + deactivate OrBydad '/ + +RoRegaUa -> EatlRegaA : (known ApiKey) + + activate EatlRegaA + EatlRegaA -> NewAppRsri : (default ApiKey) + deactivate EatlRegaA + + activate NewAppRsri + NewAppRsri -> AltUltp : (ApiKey) \n (ALT address unknow until NewApp://v1/redirect-topology-change-information received) \n (but problem compensated by NewApp://v1/redirect-topology-change-information responding entire ControlContruct) + NewAppRsri -> EatlRsr : (ApiKey) + note over NewAppRsri + Sends service records + to EaTL in future + end note + NewAppRsri -> EatlRsr : (ApiKey) + deactivate NewAppRsri + +RoRegaUa -> OlRegaA : (known ApiKey) + + activate OlRegaA + OlRegaA -> NewAppRori : (default ApiKey) + deactivate OlRegaA + + activate NewAppRori + NewAppRori -> AltUltp : (ApiKey) \n (ALT address unknow until NewApp://v1/redirect-topology-change-information received) \n (but problem compensated by NewApp://v1/redirect-topology-change-information responding entire ControlContruct) + NewAppRori -> EatlRsr : (ApiKey) + note over NewAppRori + Sends oam records + to OL in future + end note + NewAppRori -> OlRor : (ApiKey) + deactivate NewAppRori + +RoRegaUa -> AaRegaA : (known ApiKey) + + activate AaRegaA + AaRegaA -> NewAppIora : (default ApiKey) + deactivate AaRegaA + + activate NewAppIora + NewAppIora -> AltUltp : (ApiKey) \n (ALT address unknow until NewApp://v1/redirect-topology-change-information received) \n (but problem compensated by NewApp://v1/redirect-topology-change-information responding entire ControlContruct) + NewAppIora -> EatlRsr : (ApiKey) + note over NewAppIora + Inquires approvals of oam + request at AA in future + end note + NewAppIora -> AaAor : (ApiKey) + deactivate NewAppIora + +RoRegaUa -> AltRegaA : (known ApiKey) + + activate AltRegaA + AltRegaA -> NewAppRtci : (default ApiKey) + NewAppRtci --> AltRegaA : {entire ControlConstruct} + deactivate AltRegaA + + activate NewAppRtci + NewAppRtci -> AltUltp : (ApiKey) + NewAppRtci -> EatlRsr : (ApiKey) + + note over NewAppRtci + Sends info about + updated LTPs in future + end note + NewAppRtci -> AltUltp : (ApiKey) + + note over NewAppRtci + Sends info about + deleted LTPs in future + end note + NewAppRtci -> AltDltpAd : (ApiKey) + + note over NewAppRtci + Sends info about + updated FCs in future + end note + NewAppRtci -> AltUfc : (ApiKey) + + note over NewAppRtci + Sends info about + updated FcPorts in future + end note + NewAppRtci -> AltUfcP : (ApiKey) + + note over NewAppRtci + Sends info about + deleted FcPorts in future + end note + NewAppRtci -> AltDfcP : (ApiKey) + + deactivate NewAppRtci + +RoRegaUa -> OkmRegaA : (known ApiKey) + + note over OkmRegaA + As part of cyclic operation: + overwrites default ApiKeys + at all OperationServers of new application + end note + activate OkmRegaA + OkmRegaA -> AltLiu : (known ApiKey) + OkmRegaA -> AltLepol : (known ApiKey) + OkmRegaA -> NewAppUok : (ApiKey) + deactivate OkmRegaA + + activate NewAppUok + NewAppUok -> EatlRsr : (ApiKey) + deactivate NewAppUok + +deactivate RoRegaUa + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/EmbedNewApp.png b/spec/diagrams/systemScope/EmbedNewApp.png new file mode 100644 index 0000000000000000000000000000000000000000..2813e984ac1d8a7a9d9cbb234ee6490ba9d98b5d GIT binary patch literal 153721 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

Hgpqkloluc-sy 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 v26JyaABA0OkV{9Y|IlP*6nNg60(@;*lLNi_ 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 Date: Mon, 23 Oct 2023 18:20:24 +0200 Subject: [PATCH 29/41] Add diagrams about Embedding --- .../systemScope/001_Registering.plantuml | 50 +++++ .../systemScope/010_Embedding.plantuml | 59 +++++ .../systemScope/011_EmbedWithAlt.plantuml | 131 +++++++++++ .../systemScope/013_EmbedWithEatl.plantuml | 96 ++++++++ .../systemScope/017_EmbedWithOkm.plantuml | 99 +++++++++ spec/diagrams/systemScope/EmbedNewApp.png | Bin 153721 -> 0 bytes ...wApp.plantuml => old_EmbedNewApp.plantuml} | 0 .../old_Improved_EmbedNewApp.plantuml | 210 ++++++++++++++++++ 8 files changed, 645 insertions(+) create mode 100644 spec/diagrams/systemScope/001_Registering.plantuml create mode 100644 spec/diagrams/systemScope/010_Embedding.plantuml create mode 100644 spec/diagrams/systemScope/011_EmbedWithAlt.plantuml create mode 100644 spec/diagrams/systemScope/013_EmbedWithEatl.plantuml create mode 100644 spec/diagrams/systemScope/017_EmbedWithOkm.plantuml delete mode 100644 spec/diagrams/systemScope/EmbedNewApp.png rename spec/diagrams/systemScope/{EmbedNewApp.plantuml => old_EmbedNewApp.plantuml} (100%) create mode 100644 spec/diagrams/systemScope/old_Improved_EmbedNewApp.plantuml diff --git a/spec/diagrams/systemScope/001_Registering.plantuml b/spec/diagrams/systemScope/001_Registering.plantuml new file mode 100644 index 00000000..256b67d7 --- /dev/null +++ b/spec/diagrams/systemScope/001_Registering.plantuml @@ -0,0 +1,50 @@ +@startuml 001_Registering +skinparam responseMessageBelowArrow true + +title +001_Registering +Registering process of either new applications or application updates +end title + +participant "Admin" as Admin +participant "NewApp://v1/register-yourself" as NewAppRegYs +participant "RO://v1/register-application" as RoRegiA +participant "TAR://v1/regard-application" as TarRegaA +participant "RO://v1/regard-updated-approval-status" as RoRegaUa + +note over NewAppRegYs #LightCoral +Default ApiKey has to be assured +by either CONFIGfile or OaM interface +end note + +Admin -> NewAppRegYs : (default ApiKey) + +activate NewAppRegYs +NewAppRegYs -> RoRegiA : (./.) +deactivate NewAppRegYs + +activate RoRegiA +RoRegiA -> TarRegaA : (known ApiKey) +deactivate RoRegiA + +activate TarRegaA +note over TarRegaA +Either manual or stored +type approval of new application +end note +note left TarRegaA #LightBlue +Issue #tar294 for improving +documenting approvals is pending +end note +TarRegaA -> RoRegaUa : (known ApiKey) +deactivate TarRegaA + +activate RoRegaUa + +note over RoRegaUa +010_Embedding +end note + +deactivate RoRegaUa + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/010_Embedding.plantuml b/spec/diagrams/systemScope/010_Embedding.plantuml new file mode 100644 index 00000000..34430aac --- /dev/null +++ b/spec/diagrams/systemScope/010_Embedding.plantuml @@ -0,0 +1,59 @@ +@startuml 010_Embedding +skinparam responseMessageBelowArrow true + +title +010_Embedding +Improved Embedding process for new or updated applications into a properly running environment +end title + +participant "TAR://v1/regard-application" as TarRegaA +participant "RO://v1/regard-updated-approval-status" as RoRegaUa +participant "ALT://v1/regard-application" as AltRegaA +participant "EaTL://v1/regard-application" as EatlRegaA +participant "OL://v1/regard-application" as OlRegaA +participant "AA://v1/regard-application" as AaRegaA +participant "OKM://v1/regard-application" as OkmRegaA +participant "NewApp://v1/embed-yourself" as NewAppEmbYs + +activate TarRegaA +note over TarRegaA +001_Registering +end note +TarRegaA -> RoRegaUa : (known ApiKey) +deactivate TarRegaA + +activate RoRegaUa + +RoRegaUa -> AltRegaA : (known ApiKey) + note over AltRegaA + 011_EmbedWithAlt + end note + +RoRegaUa -> EatlRegaA : (known ApiKey) + note over EatlRegaA + 013_EmbedWithEatl + end note + +RoRegaUa -> OlRegaA : (known ApiKey) + note over OlRegaA + 014_EmbedWithOl + end note + +RoRegaUa -> AaRegaA : (known ApiKey) + note over AaRegaA + 015_EmbedWithAa + end note + +RoRegaUa -> OkmRegaA : (known ApiKey) + note over OkmRegaA + 017_EmbedWithOkm + end note + +RoRegaUa -> NewAppEmbYs : (default ApiKey) + note over NewAppEmbYs + 020_EmbedYourself + end note + +deactivate RoRegaUa + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml b/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml new file mode 100644 index 00000000..43a81104 --- /dev/null +++ b/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml @@ -0,0 +1,131 @@ +@startuml 011_EmbedWithAlt +skinparam responseMessageBelowArrow true + +title +011_EmbedWithAlt +Improved Embedding process for new or updated applications at ALT +end title + +participant "RO://v1/regard-updated-approval-status" as RoRegaUa +participant "ALT://v1/regard-application" as AltRegaA +participant "ALT://v1/update-ltp" as AltUltp +participant "ALT://v1/delete-ltp-and-dependents" as AltDltpAd +participant "ALT://v1/update-fc" as AltUfc +participant "ALT://v1/update-fc-port" as AltUfcP +participant "ALT://v1/delete-fc-port" as AltDfcP +participant "NewApp://v1/redirect-topology-change-information" as NewAppRtci +participant "EaTL://v1/record-service-request" as EatlRsr +participant "ALT://v1/add-operation-client-to-link" as AltAoctL +participant "OKM://v2/regard-updated-link" as OkmReguL +participant "NewApp://v1/update-operation-key" as NewAppUok + +activate RoRegaUa +note over RoRegaUa +010_Embedding +end note + +RoRegaUa -> AltRegaA : (known ApiKey) + + activate AltRegaA + note over NewAppRtci #LightCoral + Default ApiKeys have to be assured in both + OperationClient and OperationServer + end note + AltRegaA -> NewAppRtci : (default ApiKey) + + activate NewAppRtci + note right NewAppRtci #LightBlue + NewApplication needs to internally update + clients for ALT and its services before (!) + sending the response, otherwise ALT content + is wrong as ALT://v1/update-ltp will fail + in the next step + end note + NewAppRtci --> AltRegaA : {entire ControlConstruct} + note over AltRegaA #White + ControlConstruct available in ALT + end note + + + NewAppRtci ->x AltUltp : (ApiKey) + NewAppRtci ->x EatlRsr : (ApiKey and EaTL address) + note over NewAppRtci #White + ControlConstruct provided to ALT, + but all notifications fail as ApiKeys + in OperationClients are invalid + end note + + note over AltRegaA + Add + - ALT to Link of NewApplication://v1/redirect-topology-change-information + - NewApplication to Link of ALT://v1/update-ltp + - NewApplication to Link of ALT://v1/delete-ltp-and-dependents + - NewApplication to Link of ALT://v1/update-fc + - NewApplication to Link of ALT://v1/update-fc-port + - NewApplication to Link of ALT://v1/delete-fc-port + end note + AltRegaA -> AltAoctL : (known ApiKey) + note right AltRegaA #LightBlue + Automation of Link creation + requires issue #eatl498 to be implemented + end note + + activate AltAoctL + note left AltAoctL #LightBlue + Addressing OKM://v2/regard-updated-link + requires issue #alt485 to be implemented + end note + AltAoctL -> OkmReguL : (known ApiKey) + deactivate AltAoctL + + activate OkmReguL + note left OkmReguL #LightBlue + Applying OKM://v2/regard-updated-link + requires issue #okm295 to be implemented + end note + OkmReguL ->x NewAppUok : (default ApiKey, NewApplication address) + note over NewAppUok #White + OKM cannot yet overwrite Default ApiKeys as + it didn't receive OKM://v1/regard-application, + but Links are in ALT and ApiKeys would match + in case key management would be activated + end note + deactivate OkmReguL + + deactivate AltRegaA + +deactivate RoRegaUa + + note over NewAppRtci + Sends info about + updated LTPs in future + end note + NewAppRtci ->x AltUltp : (ApiKey) + + note over NewAppRtci + Sends info about + deleted LTPs in future + end note + NewAppRtci ->x AltDltpAd : (ApiKey) + + note over NewAppRtci + Sends info about + updated FCs in future + end note + NewAppRtci ->x AltUfc : (ApiKey) + + note over NewAppRtci + Sends info about + updated FcPorts in future + end note + NewAppRtci ->x AltUfcP : (ApiKey) + + note over NewAppRtci + Sends info about + deleted FcPorts in future + end note + NewAppRtci ->x AltDfcP : (ApiKey) + + deactivate NewAppRtci + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml b/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml new file mode 100644 index 00000000..32cc045f --- /dev/null +++ b/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml @@ -0,0 +1,96 @@ +@startuml 013_EmbedWithEatl +skinparam responseMessageBelowArrow true + +title +013_EmbedWithEatl +Improved Embedding process for new or updated applications at EaTL +end title + +participant "RO://v1/regard-updated-approval-status" as RoRegaUa +participant "ALT://v1/update-ltp" as AltUltp +participant "ALT://v1/add-operation-client-to-link" as AltAoctL +participant "OKM://v2/regard-updated-link" as OkmReguL +participant "NewApp://v1/update-operation-key" as NewAppUok +participant "EaTL://v1/regard-application" as EatlRegaA +participant "EaTL://v1/record-service-request" as EatlRsr +participant "NewApp://v1/redirect-service-request-information" as NewAppRsri + + +activate RoRegaUa +note over RoRegaUa +010_Embedding +end note + +RoRegaUa -> EatlRegaA : (known ApiKey) + + activate EatlRegaA + note over EatlRegaA + Add + - EaTL to Link of NewApplication://v1/redirect-service-request-information + - NewApplication to Link of EaTL://v1/record-service-request + (ALT must hold ControlConstruct of NewApplication) + end note + EatlRegaA -> AltAoctL : (known ApiKey) + note right EatlRegaA #LightBlue + Automation of Link creation + requires issue #eatl323 to be implemented + end note + + activate AltAoctL + note left AltAoctL #LightBlue + Addressing OKM://v2/regard-updated-link + requires issue #alt485 to be implemented + end note + AltAoctL -> OkmReguL : (known ApiKey) + deactivate AltAoctL + + activate OkmReguL + note left OkmReguL #LightBlue + Applying OKM://v2/regard-updated-link + requires issue #okm295 to be implemented + end note + OkmReguL ->x NewAppUok : (default ApiKey, NewApplication address) + note over NewAppUok #White + OKM cannot yet overwrite Default ApiKeys as + it didn't receive OKM://v1/regard-application, + but Links are in ALT and ApiKeys would match + in case key management would be activated + end note + deactivate OkmReguL + + note over EatlRegaA + Request new application to + address EaTL://v1/record-service-request + end note + note over NewAppRsri #LightCoral + For smooth embedding with the first attempt + Default ApiKeys need to be in both + OperationClient and OperationServer + If not given, re-starting the Embedding + process after a complete run might help. + end note + EatlRegaA -> NewAppRsri : (default ApiKey) + + activate NewAppRsri + note over NewAppRsri #White + All notifications fail as ApiKeys + in OperationClients are invalid + end note + NewAppRsri ->x AltUltp : (ApiKey) + NewAppRsri ->x EatlRsr : (ApiKey) + + deactivate EatlRegaA + +deactivate RoRegaUa + + note over NewAppRsri + Sends service records + to EaTL in future + end note + NewAppRsri ->x EatlRsr : (ApiKey) + deactivate NewAppRsri + + + + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml b/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml new file mode 100644 index 00000000..42e82bcc --- /dev/null +++ b/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml @@ -0,0 +1,99 @@ +@startuml 017_EmbedWithOkm +skinparam responseMessageBelowArrow true + +title +017_EmbedWithOkm +Improved Embedding process for new or updated applications at OKM +end title + +participant "RO://v1/regard-updated-approval-status" as RoRegaUa +participant "ALT://v1/update-ltp" as AltUltp +participant "ALT://v1/add-operation-client-to-link" as AltAoctL +participant "ALT://v1/list-end-points-of-link" as AltLepol +participant "OKM://v2/regard-updated-link" as OkmReguL +participant "NewApp://v1/update-operation-key" as NewAppUok +participant "OKM://v1/regard-application" as OkmRegaA + participant "ALT:///v1/list-link-uuids" as AltLiu + +activate RoRegaUa +note over RoRegaUa +010_Embedding +end note + +RoRegaUa -> OkmRegaA : (known ApiKey) + + activate OkmRegaA + note over OkmRegaA #White + Starting from now on OKM could properly + address requests for updating ApiKeys + whenever activated at + OKM://v2/regard-updated-link + end note + + +note over OkmRegaA + Add OKM to Link of NewApplication://v1/update-operation-key + end note + OkmRegaA -> AltAoctL : (known ApiKey) + note right OkmRegaA #LightBlue + Automation of Link creation + requires issue #okm305 to be implemented + end note + + activate AltAoctL + note left AltAoctL #LightBlue + Addressing OKM://v2/regard-updated-link + requires issue #alt485 to be implemented + end note + AltAoctL -> OkmReguL : (known ApiKey) + note over AltAoctL #White + Starting from now on, + OKM would attempt to update the ApiKey at + Client and Server of /v1/update-operation-key + during its cyclic operation + end note + deactivate AltAoctL + + activate OkmReguL + note left OkmReguL #LightBlue + Applying OKM://v2/regard-updated-link + requires issue #okm295 to be implemented + end note + note over NewAppUok #LightCoral + Default ApiKeys have to be assured in both + OperationClient and OperationServer + end note + OkmReguL -> NewAppUok : (default ApiKey) + note over NewAppUok #White + Now, OKM reached NewApplication and + locked NewApp://v1/update-operation-key + by replacing the Default ApiKey + end note + deactivate OkmReguL + + note over OkmRegaA #LightCoral + It is important that the cyclic operation + did not replace the Default ApiKey at the + NewApp://v1/update-operation-key Server + before it got Linked with the Client in OKM. + + Even after that, it is important that the + Server gets its new ApiKey first and the + Client right after. + end note + note over OkmRegaA #White + Now, OKM starts its cyclic + operation and overwrites + default ApiKeys at all + OperationServers of + NewApplication + end note + OkmRegaA -> AltLiu : (known ApiKey) + OkmRegaA -> AltLepol : (known ApiKey) + AltLepol --> OkmRegaA + OkmRegaA -> NewAppUok : (ApiKey) + deactivate OkmRegaA + +deactivate RoRegaUa + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/EmbedNewApp.png b/spec/diagrams/systemScope/EmbedNewApp.png deleted file mode 100644 index 2813e984ac1d8a7a9d9cbb234ee6490ba9d98b5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 153721 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

Hgpqkloluc-sy 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 v26JyaABA0OkV{9Y|IlP*6nNg60(@;*lLNi_ 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 NewAppRegYs : (default ApiKey) + +activate NewAppRegYs +NewAppRegYs -> RoRegiA : (./.) +deactivate NewAppRegYs + +activate RoRegiA +RoRegiA -> TarRegaA : (known ApiKey) +deactivate RoRegiA + +activate TarRegaA +TarRegaA -> RoRegaUa : (known ApiKey) +deactivate TarRegaA + +activate RoRegaUa +RoRegaUa -> NewAppEmbYs : (default ApiKey) + + activate NewAppEmbYs + NewAppEmbYs -> OrBydad : (ApiKey) + deactivate NewAppEmbYs + + note over OrBydad + Further processing + in casae of updates + end note + /' activate OrBydad + 'RO://v1/relay-server-replacement' + 'RO://v1/deregister-application' + deactivate OrBydad '/ + +RoRegaUa -> AltRegaA : (known ApiKey) + + activate AltRegaA + AltRegaA -> NewAppRtci : (default ApiKey) + NewAppRtci --> AltRegaA : {entire ControlConstruct} + deactivate AltRegaA + + activate NewAppRtci + NewAppRtci -> AltUltp : (ApiKey) + NewAppRtci -> EatlRsr : (ApiKey) \n (EaTL address and ApiKey unknow until \n NewApp://v1/redirect-service-request-information received) + + note over NewAppRtci + Sends info about + updated LTPs in future + end note + NewAppRtci -> AltUltp : (ApiKey) + + note over NewAppRtci + Sends info about + deleted LTPs in future + end note + NewAppRtci -> AltDltpAd : (ApiKey) + + note over NewAppRtci + Sends info about + updated FCs in future + end note + NewAppRtci -> AltUfc : (ApiKey) + + note over NewAppRtci + Sends info about + updated FcPorts in future + end note + NewAppRtci -> AltUfcP : (ApiKey) + + note over NewAppRtci + Sends info about + deleted FcPorts in future + end note + NewAppRtci -> AltDfcP : (ApiKey) + + deactivate NewAppRtci + +RoRegaUa -> EatlRegaA : (known ApiKey) + + activate EatlRegaA + note over EatlRegaA + Add EaTL to Link of + NewApplication://v1/redirect-service-request-information + end note + EatlRegaA -> AltAoctL : (known ApiKey) + + activate AltAoctL + AltAoctL -> OkmReguL : (known ApiKey) + deactivate AltAoctL + + activate OkmReguL + OkmReguL -> AltLepol : (known ApiKey) + AltLepol --> OkmReguL + OkmReguL -> NewAppUok : (default ApiKey) + note over EatlRegaA + Add new application to + Link of EaTL://v1/record-service-request + end note + EatlRegaA -> AltAoctL : (known ApiKey) + + activate AltAoctL + AltAoctL -> OkmReguL : (known ApiKey) + deactivate AltAoctL + + activate OkmReguL + OkmReguL -> AltLepol : (known ApiKey) + AltLepol --> OkmReguL + OkmReguL -> NewAppUok : (default ApiKey) + + note over EatlRegaA + Request new application to + address EaTL://v1/record-service-request + end note + EatlRegaA -> NewAppRsri : (default ApiKey) + deactivate EatlRegaA + + activate NewAppRsri + NewAppRsri -> AltUltp : (ApiKey) + NewAppRsri -> EatlRsr : (ApiKey) + note over NewAppRsri + Sends service records + to EaTL in future + end note + NewAppRsri -> EatlRsr : (ApiKey) + deactivate NewAppRsri + +RoRegaUa -> OlRegaA : (known ApiKey) + + activate OlRegaA + OlRegaA -> NewAppRori : (default ApiKey) + deactivate OlRegaA + + activate NewAppRori + NewAppRori -> AltUltp : (ApiKey) + NewAppRori -> EatlRsr : (ApiKey) + note over NewAppRori + Sends oam records + to OL in future + end note + NewAppRori -> OlRor : (ApiKey) + deactivate NewAppRori + +RoRegaUa -> AaRegaA : (known ApiKey) + + activate AaRegaA + AaRegaA -> NewAppIora : (default ApiKey) + deactivate AaRegaA + + activate NewAppIora + NewAppIora -> AltUltp : (ApiKey) + NewAppIora -> EatlRsr : (ApiKey) + note over NewAppIora + Inquires approvals of oam + request at AA in future + end note + NewAppIora -> AaAor : (ApiKey) + deactivate NewAppIora + +RoRegaUa -> OkmRegaA : (known ApiKey) + + note over OkmRegaA + As part of cyclic operation: + overwrites default ApiKeys + at all OperationServers of new application + end note + activate OkmRegaA + OkmRegaA -> AltLiu : (known ApiKey) + OkmRegaA -> AltLepol : (known ApiKey) + AltLepol --> OkmRegaA + OkmRegaA -> NewAppUok : (ApiKey) + deactivate OkmRegaA + +deactivate RoRegaUa + +@enduml \ No newline at end of file From 8eec60c5a3ea2d6c64c44cf88be44e4cf5bffac9 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 23 Oct 2023 18:32:02 +0200 Subject: [PATCH 30/41] Add png for Embedding diagrams --- spec/diagrams/systemScope/001_Registering.png | Bin 0 -> 37475 bytes spec/diagrams/systemScope/010_Embedding.png | Bin 0 -> 54291 bytes spec/diagrams/systemScope/011_EmbedWithAlt.png | Bin 0 -> 177032 bytes .../diagrams/systemScope/013_EmbedWithEatl.png | Bin 0 -> 115548 bytes spec/diagrams/systemScope/017_EmbedWithOkm.png | Bin 0 -> 129135 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 spec/diagrams/systemScope/001_Registering.png create mode 100644 spec/diagrams/systemScope/010_Embedding.png create mode 100644 spec/diagrams/systemScope/011_EmbedWithAlt.png create mode 100644 spec/diagrams/systemScope/013_EmbedWithEatl.png create mode 100644 spec/diagrams/systemScope/017_EmbedWithOkm.png diff --git a/spec/diagrams/systemScope/001_Registering.png b/spec/diagrams/systemScope/001_Registering.png new file mode 100644 index 0000000000000000000000000000000000000000..d01b84852d36ee1e8657813867b14845de6b8988 GIT binary patch literal 37475 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 YEM<10&YG0BAOdj`qS7J-La)63A2zALJOBUy literal 0 HcmV?d00001 diff --git a/spec/diagrams/systemScope/010_Embedding.png b/spec/diagrams/systemScope/010_Embedding.png new file mode 100644 index 0000000000000000000000000000000000000000..c65c0a37dd6098daa14b5c874638173384522925 GIT binary patch literal 54291 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 literal 0 HcmV?d00001 diff --git a/spec/diagrams/systemScope/013_EmbedWithEatl.png b/spec/diagrams/systemScope/013_EmbedWithEatl.png new file mode 100644 index 0000000000000000000000000000000000000000..a61530c465b3cf42e9568e46fb9068f045eb0bd7 GIT binary patch literal 115548 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фkI$r5xEzyiTwW}>?-KT4`gHz5 ztBi6XR-;si0ne~N>P^y*TWiHWK@VDkb#8!lVd!g+YHZ=fcOm$aRuqR#<%eMFsLlMe z85=~|jts$O7O42v>ZDeO8~`9Y=`<08A#@_WFv1bz%##|{+U}0AsDnF&?B(BP!Yjve z4xPE!ItJXNRDpm6Nk^N#MW20;DtJx~meBKTHBJK#aX#oP5IW!BN6-x33T>qv4zw@rreO5*0O=90d8Ct!x`?! zsgSI(#@^75CkK1;|Gv68)kf$w*Pi{#gIxjP777yFmb&JGi_C{`)&7!D!n=-@FkOYN z*(_zmLheDYHNT3I+C}E$zP{JV7(|O{M=Bl{hq7)mL`%n^(>=vh{PnYIaS|(ws%qIK z4elLDnfm53&YUryowG|GB9L~7m9tp}CWhT!_S)x`$p#;sMHZiz2yhuI8EMQG@9zOt5_Tn+YEHip&@ z&bQnL89dr!?u83gD-Y!jm6Vj6AMnobW$4uLY=I(ZoNvImOv+h=j_7%viWDeAvk0GW zFp~0<0Zw=5_YkAzbg2eL`q1Ad-(&?2%a}}Tu(>Zd`N&)djWt)YF^q7x_3V&1Kv{md zW~*9u>G=VUee>ir+BEcB5b$AXK*)MnD|cHa7FuSW&!pdVVASogtQ-#WA815Qwpx`1 zoy-Lnl$#s9O}q3ajGs#!kM7+3#Z!4eSHEjv`rLk*?LcQcPTFq*rLR#(v$em|ahUo+ zk;~}CO`^hFN(l`3#GBE^J9g{nXI<@^OqV0Hl4H(s1T^}G#+@!z%J~%;3!pT_sW7-qy>WeJhR2zSEdTQE)QPDkn*B;_Ptd zYUV1%%+p337`;Z5GrtPyw5v(3sq*gE2Dfa(te~%8KP-Q8Z%9=*2Nst#(X*b?qdF|7Dsx#uPDW~K zQK$1)!72er0LKZPtPn}sWSc0huoKC(;q}g3wo`(lvv}oE;`t)Dp25M@|dS15Y#Xi`C%M zTQtgEfwu0lD=PlI)~mj8Z8o24S|+upSWKJNvF)85-PLAQL>Fyt-P2he7SrL&n|Y)rzTR6H0(z|KtIyp&uz##HtJ`T<2iS?#iZ~iyPvWwA%1~uF#%H_C zckOi;-#*mFXahHc|*(c3*;U8SgLe23N?CUq4KtF#%(nPKK*aBE@s9&3$d z0HJ@lu#h4y)s{uZ%sOY;_Bs#B!XB3R^T@?X*X8GZjzK|}4EB#7&8o;Q)_494_51pa zo_{XhPASQY%geAVzDn-C%ifZ?U zz3+7JJFE<5bp#H((%T*mjToAY)LmV+ijg*j8nvg(=8T3L>4v#Dg|#{gkP4EN5_KzK zz|D!*jEywm5XF(gDL&^d^OMvG!j{BiXa0d~Vb)8@)e-CWd!IDE1{vq-ApBgy30YEV zd67HR#@)#{XPcpgu-9q#cUxW~-_k)IxtY0fa~+^gGc_L>OKcsv|af2m~2aooLr2f-Q z2>T$kR4R&!in{KbqzP}4%B+&{+}oar9UgM_@tQ0=2($4F+uZqU_~w7}l^~)=4kPh3 z`4e|SU9|Pr3n3Vc=$uNA;HG`3@TYtI@(=IziwY|?Zb3pnYk8h8+B0?)#FB_dW7~$^ znZ6S{^wVw~LxuOKCcl+^%B?&uY<4&o-QQs473Tp=bhHRIzaFQfp>(VX>d!pxN5V}t zJhlPD1rvb{x}JwtRpwnC|I<0N_C;5-nn0C6yj`4_s);Cwc`lK@CIF4T!g_Q^w9?_V zs+Pw2GsrN^mq)L4NCzPUe{8fi=+Dk!F?MxsHM;oq9jl1(H@^1eH0xaXOux!!DoY?n z09MPVFH$Q4C?dmMzu4yvE9GvpR81GE$u*vzrWtf`sqUs%7OE`$_$bbUufKV1`6UPv zHVAMkvLVU?xAFb>q=tFQgI6ue=x>#L8cSDo@vk;$^|FJ;bQ55h@Yslf z8Ev;)4C!&!JsVC1Q;)L!e-lbPTjVZnz`5B;ub0f##7t^g6#C}7EQV~Y$oY|iKA2H~ zuu?CIExNnaVLvQ1%+V?2N$s4Z8o^JSw+|)UJ}gZH%-&4k|2WxKtxm7EWjy@aR=!rr zda0AwPPrD2W4%>yWoZ=dxXu-LeA{{E;(h9uV};_4#SN11br(Ljm9b8fJb#1o0wd9> zr5@d<)6l~W*Tl=9cj3UIC7eQrm@CF^E^vt)nUn3E!v&+ zPYcv;8uD1p;xWTmj!Np%@*ZLzv(Seukwh0vUE_z{7Vbw&W`kOzfehMC03 zYdJSx$5Zqy-ijzsU85SoITEy5G=|K`#c^`5rR1z?ZNztMo{wqYYO|r_*XUbb?K?FQ zk#5qnwA;g$UzW24uZYr(&c_hq(T0J<+pnDA(HAeS{C?fI%p~$e4wFmoJLDiWoyuSs zzJIXSBo=rb2sNV)JulkxDshYq4Lv|3M%Pr$vA`8FIA-eblY(RfkK@9XR5sjtWv{$;+cm+!U^ z)2s=4?|sT42C?tF9BpequH%)~txE&~OV*1+GpzjT_vM>YLMI%n@eaH5-KtE-Qq-Dc z-`Ig-gMi?-5vJ;*AcS?(W^nuxta?*1BN9q*LiBNx3{LX5uxK zdgw<*nbpmcyFba;LO5BsoeW7Ycl?FsNHM|C}WDHwE;$8_hyJPI?sN?2v$KmaU z2=!HD$U1FJ4pqAp%yru?_z5yqoz#$kiuUe8u*1p$>oBP_pS`MO z4+Gs}{%V*H8Cm9bThk~myKz638FwYx?YOzp3>CRI#bH|nbr3b1iF@ZUQZVm@j!-zYa#C5bQ&Q)C~`nfv|V2>`LwD$ z-cuazG=O0kZnue4@oVys4_1Te$TSrLgkWWJYlb}=`LS8jB0v%Y=*%#nGdXeV*qY9c z9%_0y>Cnn=?l`YDa+Yq5!6(o{3TO)che@AH&|@vD{nD1>4P`q2{LMMgrM>KBk*nHz zPgqL34G#jMcg!W-oo>SVBeiQj%|OLWe#&}E5^M-qT)co3>4W)Ko|f_?>5&SoT=Iu? zIGrwvKIRgThAzlK=Yw)WOM)+mRbvQ+p$g$-h)I=Z`oLgjh}xV-e}6xWmz(hb*t48D zXtH4~cB=UB~a zXsor68P((z1(;6QVO&z`Le^iFJd3Hf$wWn_#M(No*p=JvYrlRFcJV~N*>JXf)ko?o zt_erBlZ0nSa`)v#{>Z9b=Jb0kV98us7Ojn|pqw+$rP16`&m*@+sVu2(RrtK*j~(}# z`gI$uAmp{#8&MwcI}*DatYxVa9|rN(X`<3D;yKs6@Ut*~gK81i=0VJ+MPY9ur!ln2 z1WOJhZJd{?x%8t4mU~$!CHx7h6>ef8TsXf<7i-&TETjm>jxlHKX#cRV_x?uQNTK#} zDED;vqXoi0#;a1O#R}P;Bb^Q*Vx6$ph$Yx$nig|hwaY*bNLjNm>XUiS6_mQzg3aP7 zz6sUn-D~?r)bMfn{+mXv3J_s+7_=ZyuWJIjJ*L2h`&nlQyokEf>X|r7 zKb=VJjaw9L&v<>lusBB4My-tq&PfH9HwVSvD@RAvoE^N4`3DroMB*u5Y}UBvrp})z z%MAQw%1wd-tVQoYq$Tt608YTU>1^lTbQK{#1~Fwj4})xejrl58XUJTGpbb&G2k&^iZzJcu^%z)f&1ZS-xSVQ>(N#U)bicFNhOM`_#hHm1UsO5A zKRH<5hO5eon(1Y$l&sD3+=kIb7k{szXvJ>-B22d^rulU`zu;v|nBI&wq>n##*2ZnB zVaqB$S+qyXY7uvXhA!)sWBm}EE=xV%VoJA}M7EWIEANa4pC;3C$zM#cNn7-Qx5{lU zaH^|*6egA}(>eo)EnFGv;_M;jM~}HC{`C=S3itPd2Lp=NcFUj$(r>c?GWqrg9Vh7irS=ejFeHV*UG#dhPp305qtmU&Dz}-s>rf;KkTabZ0ATN zi;wJ@tj^#w$X_=1MFmZ|+^7wcve1c>uG7rY+0TBZJMre$YS|cF7u@!vxoKjsc+Xxw zKjg{`fi7~HBi`-Sjb;x}upxeBtTGuN~XaZ#A)PgyzN>8`;204W7*YvEPykHNCn}LY9as4!VLhCwx7F z){_(AwCyl0K~~nybuA&XMgtb{UE2A+DWyoHme|X@@J3+r< z{G%OE_CSbyEW{^Rl$hAY8&ebyea!f2QI(sp(9$wfmMPhBxT-4&u2#OrC~78Y@YwB+ z^(Pp}7kWU>h`<|&_H3Vz#vSH*y1SqVkjtXfrAjLaOa zIiB$@Ykkgcr;GLvIeJzG;C0b(N>VXH>mP)H3V(fcLhvgCD~&0aL(A{fG%UXVHOyrAwCeU}DjZ4hs2*e2C$dGf`T zBf6y1beq+Y$DkxB!2%L^krY1O?9?-_Qj;suDu9Ts zw~Q(tl+iKDL>wmFSj0)37J66x$Q`fC4Odkk!mIRt*6rx+Z->|i<2vq}hjXM=rb4Gl z+H;$q9ZQLy{n|q!y}|C9{NQ!1q&bC6>1+(JmJ=pUPGzNcyK_U~0(;V+%Qd!6pY^I= zstEMJCJ9}fg1XkUFJPiuRIX^kW-Me&_8q8{RM$}UUFPo z`n!m0^KXR{GvNJmR&7bvb=jaG{Fft$=T86nLEU5)q&Tctf40^dE+zcN&??SE{%Phm z*b46MV8o=Bx%`}U-*zWc1T-YC0F+I>(w@h((o)a%UkPX;4)O^N2Z#za zDi1o2n=vuH+yWO_>n9nUaJA>M`irKH|4}nBV$W%u)=|K5{k5X!BL8e;*akPtUrf{M zd*^ap!2N`69!hbsqM_NZHTD7c?!4yg47rjc6&pji{gkI|t?+ zpIVg)G?)bi5!y9j!%s?ABI9(0#13i`IW1B>_RQvP`aJSvl8Q-=Q>EB~TvwzBIViJ} zd_zD3-EI)0Uyw5r^h};yY|AF_9a1uul5rTf9lm0|O` zEGg9Xic3hK52Ipuy2YasHT@p4$ZzaaI}F;>uK5a&hWnAgrgQx{qC_6)OP?g@kwc1` z_6eGs6Pu@XfJ#;$7K$G>=!%Zu&XdA-BByYpOOa&#T_V{Js?nxs+mJ*zzYtJ2X{aI7K? zcC)r+UoU|45MDo_j23rkJsh#g8aE#<{NrrgGrZ^v1ko*Jp8Sz-<9Q+JU+LgKN`MCw zGS~1u7CNB{4nrpzn)VvcV5N_31mSG%?Cv-{NqT6Z~{Yiwy|*Vkc%v)|W>8&;^P7 z7#aV~nAOz*)~|xRW!T;Gz`mHOg~%%`i^EcBg~psv7KCb;*cl$A)R_ zU}p{X?3m9!5B!Uqe)EOV&Z zt9`gBw&*uoY*ytL-r|kEANn)d9OE@UWoC&VS-RL_4@TgP+JoNX_0@bfv1FRs(S^?t^kleRZwkJfCS)3_8FQu)-IYmyb)EuLvY=&yS_ z+hcXta#c=NC=Fx+2a)aGY4;*u#i%aRU**)7OSF<@czABjnXZ!{sve zmi@7rn`#R*UZdJoTN{zmUA-a0$roo=a|@n%Kwz9GuH;tuNX#L>hjNsGptjVZ?||~4~6EwAcMsUmgIlm`;C1s`}#f=Tca}uQJ~?YYDSTt@0c)eN8bN| z#1uJs+S%jzA6weE;0Fx`I}wpP^8e2^qp2E@y&x&c+ZM$XYi@WjyDB1B~>TJl+(n5tk8q?8m!y$KXx}tOO1O{ z3;wU0|D`=b+@J^H>=gU99>y-8DF|Xno|k zgTx073qJq0n;v#d6?q5P9k47v8IVLmd6#_jO+o)(2KNFN7dI!# zvNQLEHzNas0{4x;pe$f!YLi<1sX&#bVOd(R&X$j+3RMUM}^=Z9Kh{LQ*NjSg-hh_j?<=V}SB|LT6c zC5?40mAQV&sRInvgXRdlEL+16F4PbDBcgoY-hhmFurIoZRid0g^+!PYx#XF!VFOam z)n_R0-!4M`kBc-+gKvMJ{V${G#E2EAD`>~XqGI^pW?4F(oFTkdGnSqz{_p1o$MY$5 zq`~REBA=J(g6<=$5;`xp>aM;MKqiDW*l4M#J-6#*4?QzcTUCsL?%(~})%e+D`_y1$ ztNhlzqpt44*f>=ng^e6OvgT&qnmYf&=U5V}jt@t={Y;1t32|Tqbvcki!s)h8DLvyx z8;X^K6R5oTbvA$fcMCV1=ynuweZ}7y42~z%^y&jEJIBD) z?y#brW4oZ&>UjA_!H?`o*lhK6MM6KQ;q^On7ohpu(9NwYj1&k-1)Yx=F+e+Ct#Q}m z%?WaZ@n(`rg*X`k@$FkW&&u}?o&_0B8(N-YM$1bJgWcVQG!@(92o=aonX7G2Ds2G! zEBRxYq<2G;wl&IvRXcOA`U=xNC8f`z{sv;6h973FXSVw?gLOV1zndoh%K}l}@3kN! z0)>PRP6@Wb>TP?SyeO=@=nm=Zba20G1f|o5dg{VY)6rN?8fC9^ik)Y&!OAc*S-SMS zGEvW`P44Y$cbay+I^HkjoUu|L|N1tV&7d%XCfUB*4D|c8ACcx?4|uOlTRfyv3<7R1 zl_r!Ogw(8HSs%;|Rkm;4Y)8snU7B3FPe{st2xi@~NA7MKeV|PlJVoxy&Xl`v4sXW= zhyF`A9Pu8Qd*8CZ5U?yf8l7^ScZ`|68UC{;oU-D%->rRY>m3>hxVGJc` z8hJ?tqyIOR#fF}m;h&qqah;M95?E-A!k6wpxi({BW7RWXAL?R2tMnJWmI^mcjd&pw zv8R*>q4qGTPj!Yx*{$#XDRTa^IA!$*$3D|;=Vn!Wi>dVvt9vs=D$(iE(_)=P+r-Pr zh{LM1gdSPY!HI_kCKhc>$lB0%V%cZ1LOhv#961#gvAHkG+I_~jFG`1l94GVe`LDn# zeQ-*NrK;;GA5NwX7LN4t=;GTXi1lgrt7f@X6I0kKjwqC--4L3iTR+g; z2Zz?zYS&~IA&%@4mODAzkG8#*>Y-;jl@1y!sx_X?L;9FI$}tVXA3=j$MniLFWWWKl0v znvjw|13z7Z0-pm<%lH-#xq)shTDX9lyPlqC@%H;0CYtr`WuC2hj77B++;ACVW4HaK z(CyT{nSE5Rb0~P;{sD^$^C9H484gUJ6z-ltK7P_wGgagKiC?B_nHB7yLxd|9@Fzz; zXR3bx@8JXh7&Ksqut&(*T0}(9vxc{_NJPBo{eO?j*ErwTLc6|HaIqjPtaUInf~E-< zGC$doIuKa;Rd<&Zar5t@%i?q4vfU)-ON^H*%@hhIw=f6*y+>3aV z_t#Wme(2HP%+3wH)En&CHy?zl^8X#V@^QWUGa2;>&))_PT+AgRitB-$lnegv7yC1V zQGm|=V-$Z7_X`N&e+~c7f1=2JCj5`f|M}_-10a2W#`X6h{m(-d=H$GYy8VRV@A(j= zWAA4XAh*UtBlp-5p~D>qdc(v<3>BDKWMpKq^^6cFqLpI%q|2< z2a%6=LA$?{#LI4sDIn|4kQ~UCRmGX4H(>*Ezs}CiYyA|wN&qOgt?lgWoHj<&pMGxm zU#@PGbR%j~p{Q~$=(>@gg?1d-`{Uz1G&D4De!}(P3Y=Xj7ffU>zdiufVOIi&c-O*M zE>Ot>L2;g@{H#m)$G@|j$}SX%uv{Q?1ClLk#Nj8c@*Wrr>_`PrhsEf@>fBm8$yk_*RL=?dW zYe4DzGQAfx6f>zVcD8#SPmO#QxwUS>5J;gG*>lrgpx$n7D5}3?==KCk)M1@q0#^Ji za2i1G_#f*20_EDn!#G~xw<@*vU;w#oIGNyhyFpjY==C8A-|QA8i@#ZnuvB@1gC9Vs zv2z9IS`g^C%z|iT2Sg%PV8qe^2|2&G(Afy4#-8VS9;Tdt+Ow;l6x^#n2<-s#?rLM;0S}sCddc+h3k_&_V)IU zwr5zK>1Y25{qNuFL+L0;Ox`p7b`_xDQG|M#PE|VsEkBtswAM3IC?(Sax&lrcfIr#= z(qJG`#USR|*s9sa&j)gr#OG!Tpx(bhvvQ|hc@<2Mudna5P*wN|GxJ;M!<0R6mX%hd zxfT5CvNt;oIu2xJ;GB+jiLXE*;%6DH7X%In0hV|HEA6h{s$Soi2o4GYx){jJf6gd; z5I|7d%tMCax5bv@Ww}NjpTH>uOe`#1(#t?!J`cF)7+~$kGhQ>`L=@qRRay2Pp!B%* z-q=_`wi$}~fNH(?`aB6n@jf(glFHdSI0)kuh@s&mdjPhAEJ35mr_=MpbvRfe*GbT6 zI;;ajAVDcN4;VF2Os68>^a2^v7;vdH=vnTUgY#WjAlvMZd*qg2%D{7j)>br&%wBLE zAQTyge^%JBaR1xP6;4Fa#(e$Dhs0dS#W-C_D8K#nX(eUWGnacEthyDJ2@?+8Kw|@B zm@t5Xiwg_r;OGgUs8A`+PPUT-$DAM`@av--Hue^xWyhs#{y)~c1EWX%965VPqOdp*p)Ccmh8(6lNkHHGiLm*q0Xsuch3F! ze1D(&pZh#w#`}G}uGe)vujjRKezt)oMi6U9*|p*3I5bH7E(wB<+|0~#EG!1^A8r9{ zIBOlsc#zx=4DHM?QA69j3!06BRCPkb!^1;EyP!u7rVFTfOkoQZ&6UL15AXA=O0vL} z^^_e5di&qq5Ba5D2;KX9g3;}&WGLwj2Ph`!69S%VoQ`bmT_y`rWxoY^{OqnNI>GGv z(DH)qk3W6%XVznj-s>&w-hrbmfP>~MD7n2(XS;9Tz3Xq^a7V4gaRz$Gx-xXjK|PX8 z&i+JcfIDlX2vu}@Co<>>ci}3b1e%&mw;ufcXL{j}nO>JE2K!FE1xVvUo(Y&e&te!%4qYtWSjW58rcV_C5ACBymQI^JFWHSAN=_&wq(ML5n5iOi-`Zlhi+8;<753D z`#oE+GPY&^!h*&8Nx?l?aZ4t%Nq;-p+dS(N=CZ%JK5-HL#*l$JmCNywB?kYS!!-;l z!T;m*z@FAkK}pHRKfnKn130(wWfT7N+rYSdB!0*ucZ!DYP@$zp>)lT4C zc`Zw<2MULxV&o2lPEAm(J=&xPzhmGZAy!>Kv>n+T*H{Q&-oO2TML|y- znf1H=4-k8Ns!6>{v0z; z3Z#px7W$t;(_(Q!fm&(KwrQ$4!iD#ge{rc=Fo&yX*L9`u-0Tu2^-0bt$iOYef%-|qS7 z>bc{^^3f_X&HX*v`7xwJiy#<=JWuz!S`b&Ab|8q2+Z*#I7&{Ubh%>B{2hkiV4ZA$9 zz!S6NaOs?vZrE06(II^r6sq=I9ZcKs_E*@TzJIOTs?m(A3tvJ!Joct2r-VgEbFgr6 zEiCtAXy!KbXZtT-`p19`PRk83Je47?0+W!a#9SAOxugwCW(E(%$lq%lEo9DfS!x)H zupL|CBeV z?WH}h8R0Y2R^<79cgWW48*lytlnHTKI}eSD+xu|97)%TQO~vS^)c?voe7mI;<$5r) z;JT}iKI9hu$y$7fVqCpf72)GEUrG>bdv%v{{YwzE5*kkliGGsC+Kj!9i0J;he~v~Z zCE>J@S^|BRb;;Gx!!PBTFvdW^x;mSRrP=59&0OGcc;cLTH{yTr7ZvKMK1mJH(vGM= z$+GCYxr$mB07gBibWgoixyQLOQ@YOOQ)jlFI!rrjHst2O7>2?CKtZ*V-ZDe@lk->J z`rbhL9JwaS<-tM)19glU%^W`x4h8^h)^Gf~)8qd(6N{aPvJhSc+7QgJE*InMfZ;7uBYj1$;GW<(>y`mqymAv%cI{0!`XV6chNf zFU7@_1jY))YO)5*0Cjt9RMSeFEBKlTV}`S~r30sK(o;?J)sj>{4~{-!V7-hncm3ye z2FwTSgW5Lh@jEwnJtdh$CTW#^c_i*NNFBGAz7v_5*>{a5(l9OR{uL>84JZG7Q;^Mv zp_)G-2%b7BL*tI@uiWmm@y0I3BwpxO{OsW4gct_*QZ)*6@~5`V6o+x|wJtWAf$ctC z9?y;9QZ zcB}>uZe9d(02qhVgK6wX8bpyuGIKJNwA9PS3%aY;sxBKXvQ}e}XJ-6q$5QtF(x-zH zD&bxpe}+u`2+*C4kbY|v$nJttcDI%fK)^)H$hxA7&x5y0G1ukJRVn#QBu;0 zi5fg}<4&2kHt!+gvKZ=Q60{gl`;53hV8zpTm2YmOf|U1&nzdyu zsk|TF!}yXev%gPnt`b3Ypv#QS-J+_br}y;iGz$B#3My;uqnWt8f1St;>h~d&=Jyd}Z&`l{Z^=COGnb+SA!HM--XrZ&7U1*6wL( zJF{wM^q`qj;$CB~gVM@uhtc7vW&4cswYX6HnS_3W_NlT)Rhf~`xRXXtNTLV( zV|hJT5rgksmKHtTyGd;wj2BFmhI(DBE@Vu#8wF4W_|7&`rKV{YuQE7jx#ZsWk26GS z7f0@uUJ+fws>NIp?4K64D*{(1yS~;jSaGN^73VnTRNCDrC3f@Ht?Sa#O;qz!B{>-y zlPw7;>Doo+8cDa~_${54E#CI$QS&N=Yf=V}^(+iG&7eMF9#BmcjXB5CS>l6jo6|6- z(liBHs3sSv+BT(*_3HPw5uRI(JAfnE!gS1LD)Hm%4?UdJQC~hFllPrGbt)Y_i3+(lO};~z<#zZi%!(4JvCr5rr-M|CM#N!5M=IG8eJBfFFK1($N3>< z2Nai#4TEU9kq)t+N9t;`# zkc-3=8&R1A;1oLx=^3;}# z=PF0imI@PRtLZY*0Q+9Uk*!H$&!u`$QKb%XjsC@`Fx)X)7C+Y7 ziMkYgJ>yvghL#kW=$X4HKbldyI<$~jZ|Q9dWu)a^+n8ss*A2VcNxv6Ht`Va%U`pAw z+qd;go%v8=b1yaz##+QTn4^onSPYS(o+CNxbL#ZzL^C<}j4(~YqUB+s$WUgS3aXk* z4;O+_@k@{mDlc-h$uo7ojUT08m2<+fIhdm+M0O@LO!V;R-U&|roFRv5=j4`K9NsB9 z0CVZ4Ad+<*@Z5T(f#Or%L)1*iKCue?W<}B|f1Ezvb0^hPqC%P0Wc@I9^11gjC zM^`FO^beWVp{soF=bx(BGb`bKy#`{_UI72gKiu04AW_hpMPky&%LhEyj$1mNK-xUI zc;hl+m}=Lr{vYJ!c31qpE*wl^%jVTXgkz^szmunzX_u6mrk4iqlkaMr7BVy<;%=p3NM4qe<&!K8ef>vHAN3a|AW5Kx6l*Lq z_Xq1U@wty1UmGW^^T%vH>lx;Y^lw?8**WcB{LhzSyNpP@;$Z{o941}ieu9K)lC!a4 z7cf^VHbkFZ?1o3#QLkq?dGyr1obBO(jvNf({M`1~{7MUr^k<(jT^gAp!o@Ee#KJ-t z`k!-m$b_wR&gDpTWn3cUOCh=pt(fXEk+eyDcb>S>uyV`d%jyoS;xAwPotz^7K_h-X zo>Mhcq6F+mm>VoazCl;T_lwU z5rMTwbBX3;*QP8&Ar7f8_*C-!wI@<$Z9>v8{~xB06?0RiuTK(O=Mr>UdBW&cM#rdH zO_P#7;nBwPQ|`Wqm+7jGCVjTaXYwpwowh?B;p`CY(6eeuJ7arM>@1Q#%q?LsP3Z&(p0s_2!& zoq>s33G0p>Y|y7!l9nE};F?~v6=r$GwnJb~seSe!s>RT1?mdkeciD2uyLXk&3#NW< zgG?^Q4}6Y^UiCd@mzW+ILK3`3nUc z%z???Qn!$^7GO3PK2!Zhqupxr{-K#t-#WokT1yLSOz2fb*M|$FE5wdg-tec6TIMfA zbC=iLQ@7|WcA&|-|KYbGD3fuOh@F8H-#oapGLeF^%a1j-?dX-iTX;&m6^>x8(W+>D zj?dI-iPdTfQ?9|qsdFCxN;GA++yI4=s+}A?qy1QjDMOoIcMsf>#Gbv!9^_}DT4jWV2L={^aHqpLqf&OQJ@6rL<`$MY<3!Dz0sHifRmi4tA%8*9N;W1!r<)B~Iw-{-*7UDVQ zRNGHWYqF}4XX%P+=vXl2Zg3d{=^RnFY@l)@)=TDPo^nspY2i^RBVHj}8(VG5lC{|{ z&Uy|)3vpk2mIjkzGcQ<@<*Ro{8suxY!rOlw`g{kLi-jxF8J6w^ra07l?Koc0)0=I* zm5c63C}Z{$A-09~_1S2DF0`t4+l-%Zx-z8{<tqJn|~xGe;@ow1+O#DldD7e#F8PZe6krCCcqaeRi| z*D~91Y|2AZ*l&ob68-o-<*)q0Pp+tgNBmv+*bR?3?Al34a@v-X<*4xH{c;Gcu~C61RNr&t2?>a%U6}U#rnhh>ltq zvqD8DyDzzwb>Cn0VfF1HIy#2ySWFaoWMySt3l5)?C{nEsljN+U!=Hg+>YDrfa_^&ezWgK&HXy)S?%MN z38-=rkI$%2l#ju3udgiEBaKp|rHA(UW=7i^Xrd9{g-N~g^jKup9%j307!nlUp#1!Z zFHVO~b=aTyKrm{H0UwG~%x5{G=9N%0ajqv_5^29Xvf(k&(OcgGXy`9)KKf7mp@64` z_C(>4>5C*NE&dCujlE{Hp`3e#m0L`G=Fd$Sx1}0mt=LiC{pQF%*R1xkHcgHprDUbP zMGRrUZ?)K2JwvA+syl_jjieJNhFJv#gEov@lS0vhh!x=$A33hN@O2;3AM}OTh^tME zY3Irsq&-RdKVoT6qgMQiJuRM@)-5TEo;~aNZiwp>4YSs#=2nB(Uc|{DPW^gTl-U?R+%Qf<|e-@j1 z_XENmUqc$nL|&)>`4*Be5=Lx9wpE+@5gp912brRnksq-dnOa<~a}%evf$3Dzo^1C! zFgSOImgTCo1Q5N`Vv;-+Qh!-lGELZLvsu&r5@qE*C&4~hI8?oxx|Wuz@~2pVD)8^I zf`8`!I94cIU41O+JBqdISdbLJ)^gnlwCp(x9nYZ%r8M_2Lvrvlu^IfF%_avwV%v%R zY}E;2b-uYKEig-q9PXq$I82oaXsDdi(XiPT%-<7s-qUiZcxp}=E##ANGlxFRDM4~& zXh(Z{x;7CmwJ4yQ=4?#*#I9Y1*oo~L{J8_3oKkm9<}mJ-vH+s`Q2o*JJltbPMV3|a zLcobF(CP47#f52<4#vGc#Awk(ykKQERgO7jT7G@EwrohLOkPZuMvjp$XTlW}_(%nU z(9glhssZj=ObhJ`ZX4ux(CeA>pTS6;=P~o;JnHh!ih)*s0>F?|)9V`HbB zAWP#gX76n%#ienfjJPP~?4TI$2mPE85fQD$4j~`KEd+}CR7g|nGH>ZuW8M!dM+&tq zH0Jsob&4J>WQVOIAC`CdAM?CVj$s7!A%;0%%c6T+3s*Q-1*ju5l-87iSV)WR$~<|^ z=NxjRJy7t0uu=8WviiRI5=GmU4xG6;wx9uamL!!op?4y+F|W3R>W|eZK_QB&YGLH1 zxu%T_*~N|x#I9pQ}{@0__(S_UB@s#rBS4aPC(omJ8^Y0pk07GO6_@63ZP z40e45_U>pvzzF3uw&T21RTs6leG590lPW8>FSHL&Dcg?uyU}>a8o#M|j?J=`?p(s> z2VwNeeid@4Rc}I$zhP`P6~ypiPhwx5mh7^CkVBc{Y#?f4Ga$IKN1EinZ19-O1O9YW z57+khd29p^#^&FGhbs^~L_su3LGeAJBp)iTAk1-G5-*m@kL3+0x7VW&^zT<@~L ze~qbhk!$kh2vt#0qr_6IzXBG=VWWu)7cc(Wj=5C58DX4cWi2I#813PDC6~itcaJk^ zF2H|$?8))I3kTm_mO09V>)YbU7<;sj<$GWw;#Uq$B4@vKyg0214SMDu;cRS3e=rcD zJy;>-iDNi)h!=tnNpAxqWd`Q z%b7DgtO+*jqz;V*%FY7W#YMQI@f+JA98B#r$@Ieh(STU+ugG(oBo21 zKNafi4#mnNY#2Tm&&NFZOdC_ngKc*Zev4GCm$`A{81Ld`;s7znZHnsHgE_EqYAPJ( zv5P4cFH>wW?6*a&eO}r%@;r%u(wXa&)vr>N2Uop5BFOA)R=Hx;UesTY%hi;LNI!A8M^-u6fM=Q^Q4@zqyWJ^_H8$k2rm5V&YM|DraCBPnPT$uEPUt!GqqUM%#4 z$q^8E8YUz7Sne1{GIdbD&=mMgK7oLlJ44zEWT+haYFMRaJ zSQf@56eYGk9c6HzB05!sZu1+R?u*XXTtp0eJ}Ps|sHv;F zE++@`(kz`lfZbC@E(}U|E~;`&brJkDAl-z|%{|=Db>uAJjG`1EKG_>LZd;7T2BX`u zS0b|`UIFe=@aSh1N$%a5mo}O#v<*z)lzq1yP$oAW<&;HMT8T6|omj^k+fV#-i$VNv zwvVsGxDixQm6d>R(+V@CL-N6wD^S8F980oHuFS=ny1b5V5?0Z6TQFQ-b!Q|831%4+ z!LJkxRWll@(Q^&LsNS-sFA#dEa+R#Kn=3C9W71YML%LM+r_#x+-BdAGG7;hmC_PeB z)qbFWPS?f&vco|5ap9i4+2=RmTrznkEfs1pCM~}&vfO56A6y!LB>H4=f@m$$dt6i~ z*Z-?^Lf6bP>3->G-}^rV4y#*!qUvh&)=(?CTg&RALLGH|EirvG>SB}{v3cfd zVQGSpjwTO_sA$_i3VAIJt*@_-ShfyVu=(;lFHRbj=I9o$5ha43@$tD3nSS3zC*$Lq zPjA*u@krH~Uc#KgE!r~+wZ5FyzoPA|t*!f`7#4e$R)YB%gbliSil^#ZCfwl> z*>PEOcG{$`CC0MCX>SY9pm)#F_~bA)1+T>gw-`RbmX(V8p^6EwkP;>`7Stc2p4dF) z>ak5#9vU69;!pmqO(2$mP&;^kEIBhsfwY)hc;kjQL0s2hoEUB;P*q($xw^~+v_HOu zLy0XR1nPUw*>%@UQCY~y$thE+YBgP^&bRETTVCZ`$wn^8pA{JLq;K>-^<(h!Kv=6%CB=*)C*Wsitn zV&eDL6op;H?Uq~p+-#)@MOtDy{e}T)*D_f>m?HY*b&}&BwAXg#^?wsXVaaAVlRqvB zfuNLz#v{<1#-lDjano6k&(`@%uSb zJeoD$IqRFVMd+dPEv?M#{w$3t6 z1r&rRiO*LyBNUfDZ^fmWSO=I;-<)?%XL0cOC{E%fdfkGs_5vR<+-P3!W}PZDROGU{ zA1hmo@qUSGNwC=g`&K_sc%y*H^pWZl*Lg1#KTS~B*y9vyev?vatCkH^dAI&k*D zjuZjYUgSEJFa@LQvIp|D320 z=`vN?l#Li`ulJ#b(G3HRSIN{uSeVFUm!2nrO`dznz03%drA>WzoSUsXr{^7YuE2KY zwpa2EnJ~XmKw8-jP_K}$(2ZDkGbzWM-P%Q_xYz^1vrx*K1>|CN?@vL@Csvl36*$s^ zhYmG2-+mA^*dRP&{R=5P>i3MV1^y{a#WFlmQvw&lNl^~Lic5qt@b`A{-i+KI|bAdGj zal)A0vN#P%I+it5Eq?IpB$>#v9eS>;NCxe;#HPJ-t6+m#fIe#b;~P{e}2#ZKF?mov7+E?#QHh zswTZ(>{;W}i{2zTKxuEZR@(0?{l>*i$I6JnARg^N2d+Rp|4X0$S&Fbs{ zcVRSa8>c9fAiISBvwwEnsJZ@5mcRgj>v)^xs6z3J7#) zY)z`!^If2baQ4x?O1*+>fX{y~k={s^MJ3dJOO+iAK{T7;oc(wFTM@e~Cf0PZO+JJDUodCIJb;#u=p`opo5{ISGjqQ&ZEGSv;)M$Pj-L z7!slyE4jC{0`@t!Q+ zxbYAT%~F?f^hk&tEc5iB(Ye=JK~uqajDp1WFDFJpF$LXV?ze8$(dfFy=pG9VA~%lo z)WL4IyNBUR=iv4V+YDTf7IO;|uuAVJAAbA1$bP~Zy1mFfFwlMjfBv?IDJ(!PfOknU z%rk*F6QDeQk&x`{?fl z(ycJHA)q4%n$ZkwA4BV{s>N|w{sk=y@{x?^?mT2y;)dop@#QbuN*kc12qr=wG9Bl*>!l?`4EHpV6Dj@H!{Sode=D~!gfbEII^7ko^hnhdqDd{yKd`X`w? z1_Ro4+~nQKpy!DmFo}C?7MdXd-jCuzmg@@{?r!)X)o!GfJ8WTuZbNdnn}!^QTeE=9UWK2d8nRpw_n>*Dn&^(N4Fc#_1Y4wF#$TKckZe=XC|Tdoz>mCRC12j^cU&~= z)hk74=et?XpmY_fFA5vvZ5{X%bZf<`847cVk6U=`HV*xuPf zfny7_k&!PP+;q#<#HP}v-johOxEEjpU?(wbF=|5#Pn9TgEseCGvT0l%KLwaiMzw%_ zcDN&9Q*E9GEFRM-hsrP*pWaR=h3?k6`Y_Bo3=@Isa(g(nQUC3BqpeA>@d?6{a=*xB zga`{yJZzSVK@e9#)u59NsgS4z+j+qV@r1l5FrU9bvBvbTZVp{vpLb-7jxrX#02di{ z5jH?Gqv2UB2n1vgd(1)%*297G54SodU-s1p9Vo_>4H2g#GI?d>su@qQ&YtMnczGLHBN7 zgZ|ic_a?cP8?xQQl+`^EQgSI(z_L(4mvn%E*Qb{%eX%I(~xz zfQ8WmbgA;f&}+_-Uhozgm*08q-&^o%8+mGw(t*=fsAtK)0*M7!td`kHW6Evf_xihhl197A0n2bujb{2`K_Jf7+8GZCj(zl3pYfxPB-uOijchtsn{^xN5zy_~*W_Cb^TnRMI@c;7B z`rE?Le7x(?MW?2jZ1g_*i+7Gcpm^v-)`6<9s;#7oZ-=Etd6jB%fIL|W0N$tYxO^Ou z3O}*>@`Tr`!=*d0J*yRzHx6vsI%u*1QrX%$k4%UBa9Y2;-Qi$Eo^A!P!hkRIszlVv zOPGI%*M8?kv1RVUMj&w5>u+)I%V7A$ zK?N`}dnwXZ?`OHTy+H4O`s;&ClFxSDuN2w40m=X6_4;d z;GpdZaHx>Fv1b1$R(buvmP?i2ADAM5nXH0vmX4q#l(!IUOL&2=hh7a*yBcLYQ<^Us zBL&Xy$qSK+(!H0#ClwIsWYcHH!^1O|Px`21SNpa`_8=<@z2{MAPxIo0^HxYz=cG7s z8*bA^7$XPTA2a0X+$+d-`n1ve8lFXV>4>laR8rUT11;_5fNB^D?}Wyc-0flOQqiks z%vP*8Xi1hT#nt_gF(Mz^&u@X;KPN%ya6Iv~cARONkg)(Mr?mZG!f7gN(?$JCMeg#+ zg5sBUv3E5?4M_QJi&q3IaAyu65}5{%xc!dpiIMQEsJJrsVmn13xp-@pTKrwWm)e{+3tvjE>P&OIb!&@pGz$XXQX( ztB(zX^FmwU-cpjN0jp|~4zC!~Olr|yNp2m%;X+#D*2FlCM3sc7?nuj(cs&-5XmwGh zGlFOMWb$||>`3Fj#hflY4w9WcrH!`~WRffzQx$b58W8XNF#DYCi?WJ+W~uAPgimYx zTtP;LA#a~j4_bdf#4%>g4|q_C7Y>Y?HKSGKg_RT79Gb$NQ-q@&2j?S9%LyxFo-|j zF-@j_sa>BrZKWDgXDMh@LP%bO?VNbczQuI*R(zVBbLi0KCLUv)_x*gpw}`L zmuxVk&ggm}<4aDvc6#z_ZTus2F)gh3n*Zg)%m zmB@M^?n&>I!{=3ow7X3j;{A2&)|G+;tU44*`9|^Z{>qKq6KgIihcG{FW8W7ONX-?rS`e7a-buN3(cm9`tI6wj{WY=Rmxby}>} zHvHO8@OKnyJcYXhLnO{RE0#tS8~P&z^+_)~JJs}T31}CTOj=Xsjhh)BlTSeO5=sg>`zPZy(fbSbH}xBa!87dM+s{tLeFFb!BCp8d5uBWy!m7U0@{u zSrMU{=_+FQrDc6?<}h;p@r=zVLGxx+RS%zOMaiQ^rIpN3O8O=JT$Svek^3O;!UKMI zNvN$_c+{<+62x1Cn-!1_cPe*B+?!8XpK}opZU?Xy@GYFUlEEX$T7el9#nl}A0aeFbT5wk!`;z+5N=`Td4j@_5a78?V?)%&b-C6IvWW zPRDX{atTuf5 zG`41^IwKGGVY&qbu7reZ-*-ZOo|AB56=PRQlP%@%$!OQzYg|dTTRLqVXF@~R&#T*i>2=7yvoDgIp*ldW?R>`f{I@mo*qmQLr|-W>ZxHqLI=TFL({bni z%E@g0S#i1dJcA})+rN3wFWgYy{hwcq6lWI?B+Syyc;A@YEtaDi#L3+Ig^^C~tSc9I zR#3Ih6w-^G3E~0HW)&kJlc;(yWV@X5%hRU_BZ$ymO<{OF|FRE!EsaLD%O+n z?~EhBa*vqpR*K0i!<1d|K4^Y$W;u3MKAZTGaqCT=KOX)!ltj%Te!(3h=AyT~|1Q$~ z~xw$S=;C(bzX>R`<7=%$OTwPE0P%UQi<_&4xNL2@P~UBz=wd0Y%$7QppCSKtd-zomQleO(IaIqpJZNy@#9zJ+NatU`Wl)-T zjJCL$O5TJaB@XTQxas(!CGbpBgxgUuV}+!Gi_$UutBY<)6=eC#9ekyDo43|(xUC~9v4vP@v7Gpy)i zBZ-E}d~m9MM5Vn#=_6{x?E*+KwXXqPPB)TFyw4;7HZx@cyP~88igLR&Ugtwvz=uP| zqD$4?C5O~$l}SUCz}ZwgCN=n*>IPjfZR?JDs9;@{<`AWf{A1>}4z9UiciZ0nQnX;P zeFvSD1NNOE0qviWBcz+wk~GCtR6B8QqPT@JO~^iK;e!-hJ+mHsGKlkRK}q;bw#uvc zin6*Md#s7q1UfwW8+2*^4qdW!_2xuEnC_TU-+aNi^`X~yd+;Bkx<16K1pZAF>V2@! z+E(!|KG`~S*(hh9{BQ1Y># znb47bwYcTp$j<&5%~yC_>p zvpi;PxOx31;%gi}*ao@4<*V6STr4G5m-qr-;O!PE4<*1le?c0XS{F^95Nqo=4>#J0 zf{6>2ixNGq4a~OgJ}vnCLd^cp+!9bV_K!vuAT=!&N~&}g@_vC~@hm*2@@~1VRYdNv zp(#zO^|ex^<8k)}1$ey(iT`Kjy2?GmmZo5JPM=1N&Oagi!_;&a(xZeJtZPuti2b?L=4$AOnjn zEX92XOFfT56UqtZZ*Ys^;q?HkOfr)|Ap(&&wSf2qi~9DXEym}4?h~dfhpRZ+DtzoP zb}KkmF)OFRWYRW8-dgoqu8D#)ld})TGy~i|$Fyt%CHDSwW>s^r)m_EC;tk*sv8#9d6GBR~ zSL#NcSj+m-^w5-?d49e=?zWNL=xvHR^5|D87O9wAkKQDb$Ga?PTodM)=PPi5AB{NW zMO8iETDX8wqS5VA%xIbVqwmZJEej1N@05}nZYR2IR(9>a-%PJ^iZ;@=9K#ttOp0(Y zNhs7@9JV`KK6zRj@A!JrVqz*!lT>Y?J6O-)a7>?2)q_P8(F-)%(r&F*iP^rw^tTux z-tAWa@X^}m2pL9XX|k$DVcnB=1LMiYIu7gSw8bDOSqMiyle;bwE18C%+9Pn>k1FaM zM@lVia*5=}(@3!}vxY65w!d3W_yfMThv+(s;6G{`1cM`;ra1&MG~>o8p%% zPqr!N2@^lCP@8%b6f`Gey#R@xO|{xL2l6>72te(i9pZK~uTqfPp`K{WQ-6riuI0Hx zgl9XqG|GB|Gmbye{9tsA+~O=X2T%>P8;k}xe*15E5&`fXeO8(o6A zQ46J{3Xi^IUHl0dQFtBRK=&}uN^#&5nN*pU{THhZfAU1hp?|RnK>F;Q0wtpG+WBi@ zB)D7ismQJUm5kIsehUP0zYH`^|0+}LNWZSR{}+VQ{{b`jOF93;L;R8>0}}B2IIAD? z>c8e&eo1?7khp)6Q@~*Ul+KdZ|B>Ay$1Lw1$W4xa@xT91A3bmsxyR|^3+s<>VivEE zX~?(^KFH!^?mI{GjRq_a-~De4Ec3b5o^|=&bnab`cJey!JKC9Ui`=hxb@RhgFzqpK z=R>&-^88cyuX5>Ip=kQ@)swCAVL2uaUT2uUg`DoljT!bz|G+2j1lPO$K)`2-GnIz} zzOldMnj0hj|B2Dv4qb$gysjUWI1~84{K#w1+W~(*7*6K5erS5ZYZy>DPz3|Y|hqkI@JzdYST&Hs_!sp@*EBqNt zm5@fvsy}lEqk)Wza)2J=%`5-DSn)v&Edds)MXcgXA-BkAA-Ycu}&_A9zA$NeNeaa}w4 z1Ht+?9sZ+lSzfaWAP~EeYLZ4uLznNmc}5$PxF0gG5trZCTfs;zak^gi`b`o>u`yY; zp&o~sOD8BcH%Ge|SoE$N?X+~hcU9k}_KSCp&n);Iv6*I@o|=aN2CdSBfMYz)GqrW8 zHz~zeE3(Irs`et5hE-LQsg2TcO+Z){4dp*DmqOhT3SBf}z|~I2{`}~c5}$bf{m~cY zU1|mdAs#gdPJia>>*o9kBe@c|lz-u#6T{@A2*VrUuu=+@D_O4x_>OnAD=#6H~%(4zQmQWX1 zYpkNm5uu(y0$8=6@(S0bRqn*$LRBA=PoCaUe+te(*~5vZ$7)3r2(o@f;i8hE$j3tS zqbbs(QJCx@?Iq#-jQ&yK$Og-G&szL5CTQvZ2@v1Jtv=X;-Gk9yOV-p5QUQ0Js1G9>BHjur5k zO|=0f)9R9}BCq;pgBea6w9mAx7h24(8AG{hC7(>0jZR-Dumrbbuk1aAEEo+IhN=X4 zHMM&_!r!j=f4xbTKQpkBl2@;hDWtrKa}MYz6SI7k3|x&P{ghgIbbd6T9l>xh1kbu+ zp2nO#gED%91sy})voo0*Q|@~bMAvExNUBDdr1#uks@!?)MyWvzeuV@)ksIl;Hbgpv zO#)VGDHHf7F5w3d?>d00E8mkldJAEk!%n|GC}i75>^F`NLSL|t(P&7vsV<;S@uhxH zII1k^kqYFLj4R>sY(k`%&4=@`MC>)I({b^k?wEMMH~`9t#yGXPB z;Ta8$5W6LmA&2d-VbsosBzk|$hax_+eaN*J#8n;@c~-5`rpHl{mL|!S0pa0h#~n6J zv8Uk|is=LYoE^J%=i;Deddvx%gFh=v-FWKLw}0UBpK-`xf+*P)4CJUo{j47gd&z)sC>1ty!P3m zdM}EHWt1;EppV=3d96q*;e51#O*zI$Y|muB!yNaDP)wy>3|xHT)%Zg znTs3ibm>3iyu=P9O*iBG7@zOjlQ>qEA?`fZJ@YV{uOzQm>)y)Ri|%t=Ij(?sY0Fm) z#%JIq!jYx(xxC4K+N*w9y0(f!>5Q|9qzWPQEIEu2*2r|jWztf%-uUb-zyfIl(NkPR z2m&W2o;aTO;C<6z?E6$kiC}7Ir=ncw{G6-4s5Hn_-5nFY+r`*t?hQ>{_*iQAXLGjF z-7|NdkEgkP$XchxbLjLg8EI1|0X_|+Shw8r?;db*?enIQKcgLgOLFCz(ATdw$E0Ak1z;x%Zj;zV0;}NIhHs9U=jX!Su=q70kYHxAz&a9Cmvmg#>`eod4QiPNB4f4X(%7wU%2b#_ApF zw=OXNA(cFfx9BD(ht%op2O}K|GQ`<<`_dLn^&rs)8Nq_VvX~J(M*;Pb6<6`8N~+U& zqn-GwH96x{48oqp6UTU)$FX8&>VC0VtD|zrb{*O2zTagl?T zU9tQbD#erdj-Hbj#@acEV~PeLWd`F-6L%QG^XA(TT?N|W;7=XIQ*Bgy{oGb*8Bb91 z0?mEu{Z#zcjk<(?M1n4eM3Zp)dW??g8Ij^9K}giq3(w%q{}zm*go81*RJQzX*u`WW z6a0Dbb~!0gPC!~J^??~T11jauh;%h&fS&TXYgu$c%bub9R?!jR7c8|)nHS*IWzk~?28u>QK5%N@n77`+%PLsxOHUr(Z+O{!)B9qSR$fcT@v{}GF$#i# z(w!;-GDvrhsE9$R#L$RHmvl3N$^b)mgVNp2%s`kJW}f@G zuRhP~d`$vs{1F*);vC%4usM46h33( z2kwh5W$Yvx7TH$64VcCsiyYVe1?#nabN<6qB2w3+;90RSU>zUZDn$7A-`jV|jx-ke z5BG(H44{DVhwNs5*DW8ed;>-NwtRCnub36j<;3g{4}h62x1&<|iLZOY-c2v7B)c^f zUM<}AW&TT}`{V?4%O{k?pnCrI;NhX*&p;tRPrq*FuI=0;hBY!FneyVH%G;+9ooUCx z{H{eI1_BbEV5YBEJsJAMeCqV+n2?6muP`Fx<~tM~@U9OcK-Z$)S?WKx`4yi0Yupm} zmw`huoy4GfyA>vHW`&wY2}~szLkP*MU=EWQ)AQGcKa$fK7cq`&Jsj)*9LTQo7L$=?t*P%8w+~JCsQTwj0)oA~&)!rk36qp|$Ga5AQi1BiU zX1nCd|Aq|6cWNDb8|hZMwTe0?ZpEXG*0#+yVllx19L4J(xnvj}Ej|u0nalbT2?dRuhziyuL#JOLwIF86 zBUCfW;ik28b$rLI`LBMD!h$0>b~i;Ktw%l8@~*d{S90h`9k|&+h;tH!LP$LKSffg? zP#6ccYEF~G8rMdm63cF0H(~iPc>P@~;>8CT5QY9P^Hr*cRwZB-Qnahv3i4fED5DpP zv{TeD_6hpNLNGouXb(yP&r(lW)n#$cUsLSWgp6wLr6k__r4I|J7~+oNN3UaD;T$@aLa=8^QZ!zI^Gc$-*Jct{A7SkaEuMYvNG1YOw7I)<~L_IXB}f zq0Diu&oI9U^pmD7w2R8UzA#iNxR7$ptOf?uVZ>W4I)XZNc{o1@=R$RT<){pcKx&(b z2nVB)2xsbe+EPc~Zzzh%oNKs6G=q+Tb&-0ELXU=((yO6Q7WckSB;q@g@->yX@+-EX zZMn6Zk@bqL=-du3p*^Y2_H%QbWAW87>N=tIL3?Ua$5mQ|YX;=`vM6Bx$=~>!Fa8Ym z_InR;Hye8cHYfW|ri;Mc*%0_@_RJQv$jnq+chkTY?2SL37$hihIXSdXM0p+iIJES3 zMqa}5(8JvuY$nGZIcHI6kG7HDr9zp54Kv~Tk%y);$yK&JJx!f4B4YN`o_?cOii&s1 z8pW{Oubp*@bb{Dh!-kS!zX1gV&7R{<7oJ|$$-1?rJ;qx?=e?kK;Q*Kik$-?IrKs1ci1_> z-`$_gA~j?u2VrzmH4#%+u(S_s1hC(-XpZ#mY zD6(w*<)3pxWkT)zN?yTaE_?7#R0R(WZyjY-(-W8$!W|rnq7R3G*2uWzP=Mu@Ma_pA zYgFCpDTl!|X2ZKSnxqZVE_$ee_-XOuGxM*rNl2}!PcnOW?%TWOBG-e*6pcvG40iZS zBxr{JmKMab3pOJ{4*0+^TT*H4MapeMma9dq&kx;Sg=2|>9t3A=ktqy6!Cd_;ZHx=c zKc;I3rP>6W^vtXcu;rHt&3qInbyQ5U>8i$?q~Cv=Z~Hw>Y{^~E3*IpL2@z{tPtF9c zAeS_og?Ubg47zX7o&%kisswAuAn$hJJM>S0Pl;QPUo!-ykMw1!EL>+r2fp+T(ORg4 z&Pz0o8IzvtGN%kpEx@TY!8ir1p_ocvPf0-BujO8AfAbZ~s@zSE9K}g^b5`YqDk>iZ zfWavyD99|k2>dj7SRIadzgA@%>$WR@F=yZvGkazs`QB?dwiNYPZA=}69reAMNwq~o z)~n)I`9v<16hsV!2=hC4t69^=hGCgcH<{K|T)kz588C%pK2|If4c{~@-99^N%c2%k z-l$0lbnM(qz_G>88w8K%7k!^?V z3fJJ}DMd*6(5<8VWKNI&9&Nk-$l|(edC6>9*zxh(_GEN0r&(v0p~`XxS07AuVX1FGv2DFTBexWWZb)fWv=<+5R>M z-B_3OD^~Bfz4VP`iNAtrehY90{-F^$rw?hWyHDib(cAxhNJDmp>kosaznmBBOWgR# z?}Oy>zfk`E@Biusg8x51&cNWH`U|p}m!|Ir+kqqEd6Zj{9aiCRojyGXa!~}#!g?R* z2HlXB7PaVqnt5V(Y2c*?=HF542LOCO>KPxMbAg?uk$nBZxi1Uv7Jz=ce{s*>osQpS}bnTn8v5rE$l=FHp6MHFB)~6^y zahZS8=IPy8+C(pZe}9mBbDAzD&#Mhl1ENU*(A+>hEn$~IRS+yR?E-2XjwAnun-!j3 z$i`~CmFw);IM8j{LcX_AN35czCPgbhD|xzA*E>!R7%XoFfwcHKB*baBmNDYei^ zSb82nJKmX_j;evm94!LmrIcc|PoFx)rj@7Ia+LReD@c#uW19sLznFLLj&OcK z6!>iEmLN(f?$oba-Ve85l+jyZ;0#%>Z@KAv!Mr=4p98IIqAOp88d!tC z8G0EQXy`N{Nj>W1Jquz=DzUPcstz7H6gLYj(2?1Zh8S8SkRKcQ^o$DRPD5Y6eyeYi zKf$XM;NufXlnvH+bhsniRApe-VK&)0P#y$HJp^&xvUmCG;)43DczJm_ycX_E>egIK zgBv$IUU3B>P%aJ*d0|ss`Aa0GnLY>)CN7c$=1S$mofiX<6J@VXk{E*@+NdjPfkX3w z@5j3$d!PV!o}!0=qf4}jIE+y3gYgT|7rjo3A_Cl-=Miz2@WsmX|DJdzCNi$i&N5Hx285mG9h<0k;lNnMiLR`=- z-L2~heuwm24>oNHbDR`dNCT$_WLHJdmB`)Z2n0u){<2qziHYzfoA{H(+$dISYSoGm z@0t_dO6CHlRyjpm3;0`MB95b{6krpJfWrC8x7U15`!LIx^c3NNYg;)0x3{{yoC^)# zFT^=w_XPaY>Cq3PC*#)xi{B47Bb(6m=E2#|X~2n-;>hiX8wN*ks9pegqLbiCu3anl zq89>Aov_{XEiD5g0S_Ms2g9nID9cGw-{b)^p~R_=@1X%(Q7Lj-0ZQE=`X%@~2}sZi z%X4W-)&k3kX;}lw#lT>mY?6i|Tzd|!yy29spi!8tk!^wivTW~g50?9Y?sZTk1ST$v za$=6ngnFcG?o25y7@rXbl#KjqBo_vA+bt`M;V-dq76+f2fs)mU!1e7$msJu~<={-f z8EuuW>~tdHmp~Ld7g$l?g}(Y%pJib|g0dWNlGWAK;W3t`dQgcA7kfc>u%@i67S&efZ)l*RqJn+2-1?PAB4@yb#fsrn+<^J{*2WmlVo+>(_rEygoVv&> z8ZRC^WyBN*MFL%Ou~vmd{cDKI$hZJpbfDf|pzgM;5kcX{bgG!1s)7O?h@s-aYbCm- z{q%tI-~kPP;{m?~lZv{lHcw{7fk&x`{j`4Qj9oQIT`L3Kk$_+0R7?9rV~GWnxz;=h zWj=lS$|lM$h4j>=!I$NR3q}%Q#na2H!p`xrzmi%sYh(I%0fn?~X%1HIB z`zxafDNkmtPjr`WntDqFZr39|0SdbvfAv=TzT|W;z6OV7ad0{rIBcL=ItSKl1hLJ= z#wJjQ`702~I95qSGCQBh2kz6|dzZI3lXeC4Q_b=#d2QYgL^APHJ}~J%(`zUwF`p0# z^izctZILfymw!0QSLCMf=l6AYY(l-^B<;j@5<3=CAxHM%Yy%~B(;48RV+4a(S3xi_ ziHp`qXEWLH&1JS{1SlZ86!`hWWDk6J92f70?vsZ-dm0!Q=eZ^K{#19c`(DjgQ?eEZ z!Gl@;^k8IU%o5D*z7R6UTQGzLFm^T!;*_^Y{~0o}q32HSuOq=G!^D3aD5S%oujmfA zm|Z>QSSCkCR()t?FVhvc?!xXr%=R*g<9iI2IP|QIr`Nzk>Jm#{x(P47j3hfjk~H_r#*2E`jj}sI?CF7g zC)6#j9UC|sGRCk_# zyBYi4ULE<{6WH&SPrtR_Js_aE{awBW0C?=j8Lw=*d{FWZa1H6Ndu={e^1BRh-%Ex& zcLa@m>bk_P?cX?t<8RL$5Leu|)xVm}@e=dwN3gh&szEKdvMZ_b;H&SK@FdsYUqaIE zk4-C#r=!z()$)QvPQ1n*vp9J1^6gVkVmA)Fm+`OeimX@b+oRl_G6AT~-ySzvw;t-2 zGffOJbU_=ky6BYFyObk_^F0JP0S*_3FWHOx8Uh36j|S#iybw89ZRH=#lbmoqCH#EK zhjd{98@}xCU!N?5b>oPDj=1-S0gx5oW?VDF@ z?(WQ*ju;KcuHZoD+XF1-fFoDwsh`P|+11r95bUE-%2XLwsV_5e-E0HNlVWdkI(u?3 z;M;kTJ+R!cKX4s2j6WRU1KV7Y_hFexjfF~e>c%8nb01>r74eYj_J)-&DFt#&qF-Dw z1^ku+{)XFV^F-!JbU`#>Mvd^Sqju?;!Pf%^+zW+2pQ$P6ZK){|(cwFPuTgcOo{KRe zhRgDBlwM;%rbE77xB2M#-Y;Azop&rZvvY`QstpWdPMeNhpKe$xXD3YYuf2su&51^GS8y3f9wBFknV>oOg@(r6j-sJy`7gL z0|Ejt)p%Lz(U=MR6;TzDbY;Kg$02*O$C#%qa)YMUK5?s2>)g3Os7HvhGSIHgx=VRd zIOtF36a-<4V&(l73^8MXwh_`PXq8f9goC2I-8`>nhp{;6H0t>s`?hAj_!*l}HS?xMfLJnIdQ8u0SYHf#DloeS+R|ndgL-S5Yzbj>CO3>v` zy7ee|%4X{-!O*we-1>tOUcV(faQWIL!VLaAU+~h*>=X8sEKZX!Hv5Aox%zDMoBEp* zofEp3zxIrV#8ZqumsbeK5)dkXCvk{bL|!r^N*e@17FS?dH2G^pGU z%DaDaAjhsRSTJ;TFVacLEB9eo?yA363MYPPzQi=e5Ty|+i5{y!^BUKs-OPu3roEOS zd#IgidkSGrN{OHFsHVydbp#=hiwsJoXtIz@n$xi(Qbj)GsL{$e#Ur9S$QP_bFf+{5 z3FSi$3PUl)1 z-CkSo)%}3g)FftawZ=ADCHpzr_V|y<+R}In<41>8x;pVDT0Ijxc01ZXCwTd?s4NhN z_*#Y-dN?i9kv>6MJ*VxEqFUy1k4hJ}++!Q?XGjZIi%`3rP}$RG-l3MQU*$89wm+F6 z@}Xew=w(Xh86GKx{XBq8S%3a-ju;541>R_Esd8=ZOBWeW>8sMsf!pyJUCV~y?%0Bm zpfEZ8+-eF<$Bs}wtBDBxZtYwi_Q=v+bNfLGhe1E@qFQ#35J3&&2SIR6Tv_;L1u-as zl4HrO`Eg3cFBt=4Rc>l1lE3igu7gpbsZ=#uF3bf*``>pq_>0L;m=98{EsjFkI+4&m7<@Kl|a8IflPWk8r zPDn#P-5)2J<6^ZU;w_TIk!v~oNQU`8AD7T1gJ!0KXSRxo(wwQ&%+zx~R!XPAlof1v z7H!}WslBC1ng-j#oE=>>@6=~J-1E^Q=AEKcOZlO-M=o6tUxmN#caf~JYY977+rvq?`Bq`&Y zwU(DnfiA`lGp>9l<9GpS*o5?0h=s_{`dsDyF1%>!NsL z$2peLDk6VUX^MqlXY!o3WNy%b*FFn9DDGw>Lj-X+g-Yc7;-NLC=`mRz7oKIeok-8s zUGk+D?lsOq&^p=UgiWQ#amcJ&xj6(b%~)9K@#NBPQqmUXU5psASkU>f*3ciA*V%sm zUQgLkZi81W;qxnes{;%=E?u2L_{uzEWrLw(4$Xlj#` z&@0}5H!)yAeh6crAym+E4d95Tgf%L}+1dtOs%TIjF#*rNYPjadmmQqtgf|L5tgmA+ zl7txxMy;C{Xux?DO@&M9HRYbl68lU|?G#TsuW-~n`O9Qv$Cspso<5?)!LOxzF^G53 zw{wdzUlwaE`;_jf7eATw-Yo-$Y{Zov0wDlAnMSu&!pu;Y)rt-w>mu{5$}t`pAL^7u zI%?ve${5?6!)T*zZPZN-#pDAUzU}=|=;$QV9Pp$H{)rWcptD>> z*8O%{OHtFgLG~A>s@5Y>>C(mz1Ww*DS*&MO=fy-M5mw%|dvaKIUQ$Aco?Y>}gh4qD zG^>cJ>nDDmAf0KJ5`?7Kz@Z*|OsZsdsP+Bkw9Icnsfszmf>P2hqwI;gj^)j2Tc!Wy z>OuMi!-$4vz6%(FzSNh`o}8wZDxCO?LSorayg_q39d%E<))4smS#N}wEh}GGy9_v7 z2+>k0_Y5y+49?-5LiKar>Oqb()RNp`)anDNu$T8TL-=y@=bMBpnc*)())4|N5b96j zSmtpBC}*X)7HX|9%dYU4DlT+Ki_oemQFiSuhMapk5ECz9ML$;%rmZ<0r#?#5vP#XB z_4`z+e2%~p6a=2LsUT706}NR;(3mNP6~avWi^^Rt_=8ZDOBt+-z_j zUYf|0TO=dwGgSolHHdjlug?Y_fMa%Ew1xTCTqr*o=o*S8tFE!pS9-U*n8OmF(7ASCOy=A9Gw_Hbt65fMk7WS$>cu_xA}&}_DKuM-8)8Mz7Q!s@^< zhjoHnU$%Ya9J5epd)mmTTfzr6kFh%Lz@|%=*EOEeHK0YcY+F&;>^bTctLwHP0 z6KaW#OCZWRCK=L$?3S4&tG(VA&lvcRSlxtcL?(LtuQe0YgDDf2%;X{CKON1@_pioW zJzKf|9I49)RxwF+fBXzq!K-+D`o}u=IKR;fBjRS^6Op#TWNl>hgz41E#7pe>p-P2- zXP)2l^=YiTynISgR3A8$(OFU!{n1|q{C=!@p=36>JI%tvC=2%U*vJfg1J1 zw6O-nC`g?AkY{7J|6U|I%^TE@z~rx>hRWB2+ltaaKx&@1A+n8@ZaXRlVfo zN{YpigNFqs8gkp8C}?m3H%R{i=m~g@SLsfAa*eje3koD{Nfd_ z;bQA7hx@!b;#B%o8?=YBjFH{Ov~)2ZLBy%g+rq1t9n#yE3~?>A11Zkxt>de_<~yHV zi&G+{;|7>YR(c2{>Wh;IuUa=qg__iPtOlwkpp>6eE|yfPUw@LNqG{{nAh3YT+@r2(ZMl?hUA4U`1!?0P3?~3#^|Qnt znlbXPCIUyK!roLaT2iyiH4!ctMhB@xKq1zj6B>UB8|39?(lMB|$KUW1?FzgR^Jmw< z%Oaz%JBg7VUt#R6VBSOZTK?luD%Gdfkj-5O_p6L_D6OT|;igDIcDPj3H#O|SRE?N9 zLiw0vGI6)y!mP;PNR|twHk>REw+R7@oOu?0aCjE06MPK)GIq!sXLyw7bwV^gT303W zioYZqIb)Ar`oxQjf|2H1p)wSTp*Dq+4H4(Pg9i%Gxj2)t^QKvS*MZQjy*{cTSX4CM z6HnloFimI}w!k^KeV)_Gdz7kp2CSa!0p+i4n`w^h^;#+7@(oM~8q@KR_5BrEufo$Tbg*75jfmg z#wH!T{CjA47At}~;sS-XdzxRf@YGvMoUygSH&=ND}zF# zdfix@CptCtkca=mg>U&XB%(z@;hD&elxj@xYDYds>Am^vSHFc|t+*^y^XLT2J8iFE zVrr26%EzcoS}hx;j=laiY~;npa9FKlk1aach6*dSY&6hyUL9~gh{n$`)x4(O<~f~* zZO8Vm>OK9ZGkH04aXr`ea6B5`y2Ep+8}X{Svx!O_k~M^jezYj9iNK?l3tP;y={%TZ zWcAlrEie98nDiGrjIPXg&?@wWNnvw7`XcWZEIa3bDYVelK41jxN zj(+FmG)F&I8W3{~gPMOnW|D?R@ZMIBVo_pqBL))*JF#%TWmNl@Io9Q4)E9cw80q-3 z=O(jASNpK71^_+6$GI0TDNY&VUrW)!;cFdpTTLd0I5ZRW^_>ds zo8yf!^s}nhGp({Ge%|d{;RL~@kI(`+Lmbv|G-^!qV`_i1qEx!6yr{o^v2blDIE#Bq zN2e+8y-mllLW894Nq^7xm~s4Y86XSgxQEo57uE|GlyjL#Jkkl z3>?@$nEAg1ceWb3P3f|;;tJ@bT*6{LI2xsAGG)-6!mND^w_5q7nRDUTQ%YRuYq>Ee zCGGq=J$x9AvCE`s4OLDiv1Bbg_H*BX1FTAMueDN&rk4ijNSg|bgFARzW0JQpj5tl< zk%N5n`Q3b9QS5c#P%_C>Zkyx2SZE6O6bd~i z@nQbG=Kyq%xSRginHx7^c-3Yv$o;p{8~Us#kS7p#U;b-TcB3GLK5q2Wpfbv%|D~A? zOHOu3tGGOU_UvrszlX^e&{kG>eB<{?B{bs8D7m;K%KkQY{kLEL*2h;k^*0}|k+uHU zal`)VSya92)zbeLW*-0l9i@!x3%E_8$K^MveQ8b|u`r@Y&wRVKsAlZ>xu&tOK z!9*I7iD6Ki!b*QPJ(=G3?HfpDynla=n|tnq>lWtHM`GoaFlz%X8#dBFb%!f#J!F!* z0K0aT3}*Ywn;!^CrKf`+4eWKs;e=9^?W~Fz&z^m6Ikb~0hHpz93W(w-iP&; zxqdxJ$Tm4sKESHz(oIT)lUTW7jrRceeY||c>F6)-hSZqs* z4yrT9ToQ!6!$b-l7GQoLb?w>+z;v!%yVg6*XYuvxSH)0xt28{w*w>w%unc(Y^y$;_ zNI)mCv9M6I7GZVYh0fnFH&3m5I$JNrd6ZT+0D&r^aQ+PlNh(Rs*iYL{Wa5I;^7Q=t z{O1?cw0i_6t6}{*tUJHgs0P#C`}fDQdt8is`D<661O#04V{tX^a5>9$e&6TMu8xyC z@9J-7QQQ$?tKD0)wwbsh^ImfzI(`vBqzWO^e6NE1IWt67vN)gx>&EZ z#R*mp4p26Yd&Mvc_!7YL*nrgn{L3h%(5CjyrMx1hC2rfv&V{j-gg|(avB>OhhlD~e zCd9#tCHKa7*u$Kx51=z1Si-Coiyp0ydePqg_U+pzduT;x%T7w>*4>AXg6-%niE6qg zwdS^sIJhBEQs_~^k5BgG1Dd2tN}yKYiO|$;LPz!#CzIfonYkKQLF9*CmHC)^4fvkOl zj+bXzKFQ}G(bnerh+LeaZBE>WnZeP1z|VElmd(hXa0eDuLN;cb50~@m*2Y&Vj7p56 z1XY$XS8^|Q3;Y6>5FMg#ve=~ZXl?*UZh{dp!_pTYU64N%WTc#UWVvfIYOBQHwcEJg_;FaXPkBz-rsF{iMa{)}o zjnFb!M81LQx)b;v)kQ5Y1e^SCYieqKP#(HFCl1&!*biSqS|jbGt*wnjj@BTEbo||3 zshJHiGA%-ShP(m-xv-r)dU12fmt;)XTi)s>YYJVyShzT78!%&K^b3#wNa znC~8smKO1Mm8G5ju%(#J+lw$4UK~p>4_fNp^(0<}QhLkwt=%Yus%k=W>f)|lD7CvQ zv$}KsDO1A;V}nM`j5F_EiXas8ZOjPOLXYNxW@5HcbL<{`u4shZwQyo(1uHgqc=uq* zF3#Q63C=C^mt@@rg9N+yO*GAlJ}nfCwYwFN7SaZ^<2m5|Xti zJF;ak>wsIcJ`wZg&BdyBbm))}&8X{sC$C@>Z(p0}9~$B_YEFcu*YVPK?!2V{yc&Py zdhOHwC#zvC`^PH``2b#%N^+>L8(MQXJJ$@GDUS?DroW)(Ox7-R09+IJNb8%oZT&g4 z;wIo>0HI|*0G(Px{N#ulf%?cDtYE+AI`-Wxr|(G^=NJFEzmPqAh{hr zUN+h075OWitYfOzR%VM$>G9K#6px*AM&0Wc)@35AI9P!Pc=rcBP0`K8M&AH--;R@n zRRs`S*D{_ldx{iggBz~u4>nfY_Bd11(yoDW!9))Rv2R_?U&3Jqw(jzz&n?TmF90-{ z|9Wkj9uD|6-vG2ANFeXo2g($+1@?0fCf39OwpEL9y(=S>q+OT?``iJ*)p+gnZChWE zg18YToC_FX@h7`eOUFTdAk_3;$6_mk4EObU%I;64+p|pYdatU2y`4YzCuKjZlj7LP z!DFJ?>qh;MbD@W?;TfIvk%oFNo_k?mzi!UA*~U7IE24U5rRcwC~g}Ry~ z?T46`HFJc8-j5}G0|I(+&!|vpEM|AoSJ%W#RdTF?uux%YDO6ML435B@nqTW7AEL(~ z`j4EiF`8WwG&{aLMTyudx^imSQZ{}tfJ;6XR>v2kN7tX=*TgSw_-!(>URn+Y*Iu3t z^wc-Z%*UsTfIc0rjgYhlWmnKS0EnB-cxzpv8h2=!+yJbhA8StP00D|4{6UiE<*yH} z*MiG!TnFt5>K&qrJx*0TEyJIcE-*0-lrx75LlE_6*ML3xx63Jw+cU0JC4yX2>+X+m z$`xo%%>A~sw|(6xqO(%&`}cs21sotrbR)^QGiOGeQskgn1!Y``CoP}8fr0Hvy#$J> z%-D8w@l9D9}R=Bjj=j61fsXH!Z~w9{+!N1YM@trZFCZ2+Df8*PP{~a_t66(Er|2)vQB+^X|L^5qtX;#+?V2YBijUfz%`}t zv>z*KU3YrmCf`w`9d!7)C(f($E5*xRb|+uuK#@?6k8oFx+j;&3F8_dGc?^RX z1+qEO{vwL}#6FTT2)voTzP_=R6og49|4Bp!h_r}0uY#fo^Xb#gaS8^NGp1Kn4=_hc zdd9=0j&A@J2v|n0I|F|Gu7N>9hu0YO3qw#}APGOBmvSt#hN4k^noqtU65yxb>p@ zwY{qIe3+d@!sb$&=>@m$S|}a179rTZQA+5ofj|B5p>9*fZh^t8`Zaq`yC0x>q~Tb+ z&DF5sq1y{;avI*OF&6^Wo;Kw(FLjQPpE9vK)KcMZsi2i|D9EKjF~2MEq2 zzvB>YT1(Cyq;Whz5(A0Xlz@!JXy-;oG(*^CNB;xdi1xlXP4f*F$LBDA&uIU?xNi`) z01~A07>M|s9p01NGqO_#bV-1p5Nujx$T1Ef)WxMJ_tXh~ef|rKkJH6t@*Nh^4iW*D zD7f?Pwf#rSBj9KqN1p-)?)vZ&=ZA)WM&UV>9Ic=Pwu1sa9iHm?E9tA7cQS?;EgpOo zLPr6WmG3{nyWGukHwTemU14UYXT^^mJvv$j(F9BL^oH1ht2-Ds2Pj+yGxYNj-(+I^ z^!z_y%YIZx76(5B>c4xMmX_AvFZ%$Vz=Jd-`wfbZgy(!j`uO$~GP}#l%FU42Cpx!2 zhF_^j`BVeEjb9OI5Om4vJ}y@=;_-}q*-y#J!b1TE|3?TP{J`a%Ck1?ce9}$21mS03 z6}@Yks1OdYmVdxf!M{A+KG^?KddE?W#O3EZcK9x|sd)ie=?|DN5>LO)N1W#Di4Vt7 zHvWIcacr$KiiDpfJ=3o!xt|ptd?493pzZ&MKiIOk;h0Y5ZT|)rUP({?9gq}`mF)K~ z1>~TAbHF=#?vd?}2B!j0%k)L193RAQUep)bD$4%N`v*x{JLTn!5(fo0KK-{1h2E#h z`$^2>SCR`AaImfi<%aveU8Pd}KeH$HeX(oZ`uzpI-O5b!^g^D>>k|~A8(;HS2|Mkt zKxk6OV&en&>n^_Ia$q|9c3=6ochH&kXTb3Wa*}kny@qMz9#ZYOOk7J0=G6=ktx_XfM!W9PRyPnUAmcPCL z8VMe}b>{XG%VaO{WjfMdb^Yyo3-9x}r}w4AO-0LE3DEW+C6;e9p`4@+*hueLsPjSr z)Q3jL;7H0>k#67%f#wohBJRHTsM}BlbQeNOqpLF%S``bQ3YxDr@|kqnK~e$`_htv) zcv7$AHIr1L>%Jo$M=Q2_(+S8o1q$1z@$^W4L7`(BhWGN&dR#|_p@O56AKI409@9IR|?2P^zY_4Q|;*RSK15~6trp=$-NO5VDH9X!s&F$J8v z2Yjm;i~sShf_l;oWKy&X>+9H9J9uK=2X^yXNb;0h*`u9%G-Q0UyIPy4`ds%N-mMkzV(s-WH+X|kBK#P4$n0{<(*uhJRlrW+Ilu1-hKQd6 z5jEGon$CRdG5^p|Q0Sxq^kPqjp%2ZcW5A99nY1LOgl4#&R-1d#PrOE3Q~R1!bdr?c z4Yojfq=!4q1APrm{Gli~bxp^KOz3MEeaOfoDUm_lCIU%9cR{XfGHje)``#sKeg6d- zn4YU%IyXq{5;3udGnpi9z%IK!PY2K^tp<{r>>&`hiwvR%>FSI3S$fkJiR(iMKtDAb zo*Mv$7l;yPhEXfmWg4j{5$0+T3C@3Tos=B z6V%2Z^lUphc3Rsf*c|52j2%l5NcYu7Zh?iU|h4xHg5+sqzJWq@Lc*P(dEq zW)|Ro#Nhl$3VR{^=D-L7by?(KR)@(hI{cGnIB3(9DSs1ljnKfpZs)}|g8>|x@+mt% zN32@);8|F-0KCKM*8k(S9>JTwVdYbuH@BLnq#eV z3vLaMJ0Jd@aCI^KIr@+ z9@W3Q=2Py&OzLa{eK+r2PL3*j8l;0%tk-YmCW)BM8=V<78yFf&I2nftIAEsZCUW!b z-m4%#xqbJM=}ya z+SODEa(4?Sri#{*Icz&_rGIPdD?yv1)cg>O;yGgKrMcTJ(BLSi#JAYM*-@G0o!X7W zgxP(422Cfm3fLwe+nd#U&3rsvPMR>z26Uo`wO?qoCgeZzqsM*E!nh5fSM?RDN?^T0 zR6P$v1UM9RUCn5g2s$1%BN?fB*2%?CO#`P+Z?2 zi{Q@0-vv%>i>9R~ljR%Or;T_w2p+f#T927+LN?>~pg#brnOm?ZGD%cNsoYPpV63eI zDZs#wx~$J&Kh$;BkTW>#JCkr0n`s1nUxl?p3=EjNdonaMRM^%3XP(HxJ#scFlga zoEa#ciP8?h<76{vC@Ovef}4JvIxcN#dJ@<|B4I5)tzE3p?mPF9a_xIhW1Dory)Ba) zXWp0=U*fujyz$ivPKWSz?+ZCK%Z{1z)WT=IoOvt0=Z;pWzml;4lJ(QVO&DaU*;Gm0 zERY$8^9C8d0jMJD2K*I2Wf^w>Lk&`A4eR0nT$SI%N(9v9^CJz+A|hIuIzWxXYh3=` z4`49_Sx8t6Ogix0ObA6q#YT{_efRDiOl9Dl#!M~FAhn4{Q)l|HV+Xi1uOXWt_ZTdJ z4ghV38boO>-O^!;h_l(5tndbuXzfR$&_VG+DJ5YH^2r#&D(U#L>wp{@!vadV67F=~ zPh1S!6tPW#BYIQ^4m5JaM#22%g57lQ*ROXXA8PFKH#QRvc8!d~0!wsxc^P_e0|NtX zHPIcZB>p6PU?tOaICrp(H`L!qnf~pw5Sq}wzFRe6*L8zL!u3uY=3c97;KwA5vjopW zEC4R3`8v1xw@73;mR@(`+ugo>fBT=ED5S(+`qa{uA^!~x#e<%t`j)45ULzUP65~vl z!ZUwghQKfILXVthofp+bu5Av)%KeVlY7Hhf3XH#S0xvGxH7DM^dp9<9DMY|Bag$wf zU>T*v>_7c+?q2qJHKBhgZS0zN+wF30{%*6sJlB3N%H*GgM61j^$Y=V!d}$_+$bU=x z&;pG1PJbR2)ruN{>^-GNEuvGl_L)|N`g1#~(+EubM;H2-ihi{w&v&I3@reSd6_IkG zo=r1nIzA!!I{feEO?Z1<5LT>m^}O|eUj~$sk3vIU69gljyG`KoLgNtj3&iU_noTp1 z4pb2fC@F9$(Oe(jw|c+vHK`u_AU;g^YwecPu`#_T6+nz3!?odl=#4J~Svg70k6kbZ zt|B@hfZuvlG1D8`hNNN#Bqm|l$iP2y&g<_=fU|V5AOj0Zw4iy9D~JRKI|8{gGaPha8z}Kr-YsqvKyZ%N$WBHQzoqcI&7<<5t%cEsun1i7xMqk{ z4dAlCa(#V$fgTPMfZ-r$2NuHjJ%9eZ;>m^4CJo@vvsfkGzdsGBMJr_0x>~e+CTu!I z>yXWK9?p=>pR44q36RR8KXfkX4(KC8-dmb&W3>WYeUhN8l!b)_Np+Ob`TU(vPvQFo z4!Kn|)6H=?wAFeKL0$w7+gQLaUYL(hWx@`I81X%+x>#6zpzArPPoJ`NZtY}w%iAf9ejDWcg^Oh7?TVdD`y&8eB-yb1HiV&+KG0^8+0!}Qr?LmDvzfoE6 zEU@taPs)&ALj<)QuDw*)3Dfz^7HuKe#-OE;v;-w`cb;`ZkPiF_DC;^|XcN|IPy_`? zUqS_Bj{&P76YtP%eu+EtL{k}*gq3b2LFI;qhAmi?2pa(*A;+p99?5N5MTQNhdBzdo z@L-s%k)WK!B;`N6C5k216UN$H#O0gNGd;|vdMk{YSEIowwO@BWErOxO2%3(I9j4H9 zZA;a47u1n_1o?kc&nx+XctTQkH;tL#O)r&)sa)G5GJ#qj`}xK5=QOL7b zI?$((-?lCtFmQ<*J>nRl%m=%lBOjWHgzx-cI+=R(&#edWgpX?oiET4G^CjfuUQrxH zq;i9k!`JqxUQT{*Kc}xn_`X7-#;D}F^*z{}u{r=}2idxZ2X1|3&RTR3@@ADL3JMC3 zZEh8VO+%m0I<^9wbCle({fYT8&0pVSjBh=K? z??X>#vlgq?zKY_}oq@d;V=~t)a#u#J3y!g|C8Q6zvpL>Y3;pBs|FLHTPrgrdEnR<& z%0|lV0sG0>m7(x4cS7k2J>}Yg#c{Xy@=~!dyeqsRzySkIFg%zgLD;?Tsi9{X3?+rO zgTpGQSd&uU(c!709QJ!Ankdvgu;W27+>-lYPHj!7(;>Ff!V2L;ht>HJ=r-hmAUR-A z3=zklz|I?OVzD5upiiF`7AxSM*a@@8$WJ`2yXE5ILUIAhN%1VC+Nt&RgGq%B&rfrSw_YrBlCdl(jH!PCj zMy&B#uE{@5y&njBwDIIxHZYTmZt+^t^K5I!uM3PhxUV@bnSzBaOE+ zYJ^O(io4&W-hYZEX|%H%tP*M=a9cf!7v|+%gsWYT+GJYyRwA#nKC#2^jSfwJv&UzH z$^g(A_WUs8Y0FAXfw7(cSh2CSKdxrNK{+AaNvmA5r^q%2{ljJakwgFETHEy(k_<83 zV&J;eHg;y_7_g^RK0|mSeV3pV1~giYv3FirOEpeUEeiY+X)g?1_bpfE_QBc`|8HwsG z`ei5;z?J6&w?fh$Y+>HChF>`=BNtYFERZ@+B1KP*W4BF!8-)B;N{N|=XTe{?ge30` z>BAvN4H6*8z(1@9OJ5_-F}zGET4iBmyo4&&gIWu@UkfXoB4CmwKY7`e3cUw!XVP6D zz|4FlyaLuRqyT_?HKiY_t9YpH;w?bf9GYbd{vE;A1qVE0FWoc#Hsl(;2Mc@(-@Q9! z=G50!0b-dDq0FsasW>4%Nk~Xcz#t#e8Yw9S>v{YA$wMFs&0|=986B?u_a5~!zi3Vg zX_LW5clO!hV=$^A$ZdyYl=*Q;)53-3w)K!ZHN52muOdx*idI%un(G@}MU9wsd`KgY zJj9#Wt;m-)gK(&nVw?$gf#m~%r5m=E4zvvp1QgNBjKAEm*y` z|41f^L#NP3MZuDY7^S^;wdT|ZJ!Cds@sXTY_yB68Eubn_oeL};N;A6`xT z-ai*x`ekjzpL^CHG=|e{zL)H}+<&fsz<76r^V@yn zD%m~ER>?^FyJ+~YX(RS-S~423qJQf%kR`(Wx!Zv8mr)J;Ip}{kJEeKQcUu*^YKD{w zwSX_E15C<={p;IrQ|O)_8e}*fUsy4fM<(s}#I9O7|Z&CxdDJ6e051i)e!k9NLUv-k+Z6P;q zlgix;qQW8~&NE*>gR~sEC7i<^THXtzi8>fj2nx_@-Q#P0U~X=%$*_LTTVydnePjcS z0L@pZ=@*Vow5E#Fzl0JNS{i%k_+^LI={Tj8dNj2M8SDLEY1jlj-=hChqQFDK?VWv6wDRxV^zVB zB&)u^UTgS?r!mP5(#+-4Wt%qB8hx*f*gx+hsr zv@5YM{54(mjt6|iaVa4^lZa5{d+@l(Xjni+nir5x{oLL+JZ8S{IlVd>z9q-;3d*q1 z3?>rU{%#Wot8-Gjf9xZ(5)K&E1LJ~LpLOW>j9_4Et*x!_r4#HkjiA5dGT^7O z`3muLnCRx`>Mv4bkP3k3qj^t{#J)(c6o1FsV~(XKuGF9!zf6G9z#v!4wo9*|V77wQ z`sSDM0GVv{E-0c3t;dvkFn|wa*T~wjZPO7(n2L~HyL?H};GESDa}s|1*YxyH&h$2- zZgu}6RG0HOQnF`mc*eVzole|8@safQGYpWLyHOnSpx`W+7K0UAGfI9?4spOmf{tHj zrV+Z%w-+{ydAxYBi_X*-0)3tnjP@Z+NWRvEJ}{~Lkyj7YxR>g@W}{Set9Ua{I2w%( z3W}$a`+lmobla%c7GaTEpiCRg$muowvlaOJ98Uj$yS;nV2G( zjo2-+8(>?XOks%Hg`|GBijB~tpYH8}`@dJ4<4|3WpuKPOgk{BN+39H=ht4UqDWSR`! zo=Xl7Cpk)i^Z=;C`e!dK4?2<2m<$P(P}K_Vb%NsF>6D%-0l-FAFuBt zk*es_T%DHlGfeuN6(0@6L)%h})VG4z6gYA{Wx1AoyVXNdg14{=T;iETy>g^}E~It7 zKvtbk*NlsRJT!1f{J490`z7PPpNQE+e5jzY?Gtrv1?LsD)cxhY>gDZ{E7a)>P7Sg0 zAZ3MAG?>5aPln1LWoY*8l4_p@t1&o=Bj-MWv|E}TR6wis(o*1KIUKDa)et#MA)!YV zmDCqX%a~rMZ8>CSc9!mH&Xp};KB3t1hZQ~-WsG^Vv4 zK=aOacF7qZUrT5ELTxmR?I>L+lvPj>{C1i|kS6~30RM1qAYKn^HLkNF*RNh3gf)Hb z+Eel>kZ%eI2mlWR5d$0-i^Il9lx+SvZZzJ)T3XY*!_-&3@m;izWh5Bhb@4o`>mARY z03|3+;UN^?6%_-|7~((PUuSx)01m99-7)M#h)3g~$^~~u%oh^ZuXWcM(r~uHq{T=x z8$YdkBl>Lf)*Za#dACZExI|8^sOhP$!+g1@$aP-o>rl2CHUrlTp_2s7uiHP#)T*H; zxkjqLgryr<`661;jxY!NcsYS|dPrfd%3q!qOO1|>hERlg4(fl??jiQ6ZHjE)M$>Z0 z!fZ>L`)l_{h6cm12X5XxmcV%V-;V=QTIZovmG~#Cq%YK!;2`7aviW%QFN?2Wa^sl| zzkJL_P`mhxILh`7M_$*Hj}Cyee+dywQZxgf;%|zHIWF^pV;-&cCe^T-)-{s;9|ioW zIO^|UccWkLJB5w8DZ<*ahzM(QdKFPq1QD@0 zx&2Sj$|v#^ow47)C3^p@ZF~N>e6Bq2%nY$QSVSl z-_};fJKmzQ9z8qX9gYlIe}vA~^@iWK)tJUj0Mxgk+Wh2~dC$AgdBZ-L8~S)22;J zyYj6I`hCV_Wo2VDaKgF8Qg+MI9gpXW4oLxm-)?0I=n>Nj9B}X;oN;Gl{l>0&@EHgp*B05gyxM{@zXmh}eX zVvP&&)Jn@e46D(4UUn;OUBh$kG#I#fGn9}s?Gg_Vg5%!XO<|`cczCU52cZ}sLq;M1 zAom8kj#F9LtVJU$vga>*rk*=0Lk+P_K!SrzD84baTrBvl;jV6Tspj@hA#t{n8x4@1 z5TWY$+DEo;FI&c^{MD8GhG`(MQ2Q?85{Qj(ZVCYH3XZCu-#?RTX*H>&fGI6$PK32F zPx~}pP_1Z}Y*cdcZ7veVRO($HcmyY%b*wUGYXF$>N(YofwO%%4E?K>2o@uDDhSObW z%RJxSrIx#Fq;992$By__IMb7wT24s!-6lmjtN8_g;4XqVZxWZA@*z9;G-4`c3;GC5 zH8Az8BUQ>4-3~WTg&!uT7rc{?CWPR7nPEkV4FTo@@i{0D*a*|WK~+~(ab4%?cmWJu zw&=6N;O17x;y}g>Wi?VA#o%+%Zd@6h&9hcdG#;?$&U#r{etNsPC&D&7>c-aH1EqoI z8xrE;WaixBg^7zj{8FE|?ayUX_4kV{jNT!MclhgwB zL&w1!Sy~ke0G>{YwfXW0?>Buv zMtV**77?LpBOMrtV4j6yf(?}KhxCIeu&f^s6>_-G#>366yEktp z0!Gfg-I)kQe+t3Lx1=2JK`o>9EAimB!H*1SoZI^K<{Fl_eH?Hi$!MCg$=+dYD=J#` zh)`qkZ$d_Qa>Ez`e`?-t=wx+QQPHM?H9hq~?Im9Y;XN|}U3f7BR;MdZ3A;KN<}te* z6>L>*Wq%t)`!gobsYQHaO2NpfI+|k}pYW9vDpVKmtwsXk<{9!39fwoR~c`yu8 zMVb*hr%#P}1Pv^AQ~qi=g5v%HtOdtQp`dOHl70pEH5KyaTeaQxz?}lH4)-JOjsU8d z9Y_VNj5TbqS}+i{fekws#p9?s{)Au1l?*NoRjJpS^Z}<1;;XmxpO^yU zA2CIW1txABMTp5k=QT(c&!AR>niBE7F9ZJ5PKYA6w1FD8g0psz%p9l<_#!x_Zl0iVJ=~h6n+>WvoAGSnef?O0Auf2d@q z+sUXierHui!tA2yNmf>DM#kb5#PThuMoJp;kzah!HJzLmP~*oTVz;xk6{l?)(*jz~ zv78*ij-;+t;sPpGg*fdi_E1BkkEG!v+Cau5H#X=|e+u#|_EV>Bib&hFLq6Yxb_Ncs z2{hh9^FU-(2p*P@&x3PudS(U+e}Dw+@Qa3DLixCbroYFdzQ4vgbCJ2DAnfCHL%RRt z&>XLNbnhM;lhuaNd`BrEYs?_TM`N;mTwCFq7KFpp;rq z=9m8yLor6%4VKVb-{_E}2{GgwFdJ`=$#)-xL~8`piX@MD>}GrBXk+f9zXQk^J?#cz z#7x<9(F7~)cbOpj6eFC_X=!PJASq}z>WAC0KlrcemQ!V*vp)Ta>4x2p=M(g3Xd?gm zYP*Ra9_60{$;9tq2f^1{hy{VTFL*D5XY1p?GhGMae)X;;VOh5AuzTN>SXX`jynpQN zo?OkhDtAa=(mp2ml?3v18v^WSdTw07JAze~3PU;+hrKoV5i(px9l z``JIctQ|7K1vt8&0d3ymmM^ai4Yl#2iqF?EYew4EcW)KNW=So?*CG&o3A8}}y^s8k zkssM{*d37nGKBGC{|2yA{huER0}UOY&}Kg3 za9_#B=_}A%``@0V7lZ#=??`BiA&oQq^XoBH>zQxhITY+RlECm#g2tB5!!aKo?9+1P{`n(-R;Y! zkF^E9Lr>~s07f$)g+$74R(`*>kw`<2H70ciPrhk9kb=R6I}dMbGW)(fIsaONtJ*sm zx=psza&SQ>b7CVOsmJ-nKVMAG5$-( zlYzf&svHq~Go~K0puo(Kia_=+e1f$82x@jO+!uRE@Gvqi;ib_nR&5?|C%=6e zF66k9)(mNeNPoJYW_}@qwd{#6asCbn&fV&muB1x^^5z)!#EH2bmGnC|+dM^QMIdga zS((c|%gQRF*gjvKEf;f`NC@fhiJTS3DL)u+=c)kf`J;Ox(jL^#&Nono$m+^g6c4;Y zPk#&;Q?j+`klMR9KL(>@q3WdD7IJtwbNnfeO7Vl3{GFuFVz@B@Yh{^=0Pa;OO-;vf zKfcCJ<7X&7CMF54^Y^c=KJgB44eGS+T9}zZVi+4T=wIh3vj%t+*Vc6TaqH?RE4v?+ zxmCNApx^Q-LttgH%8iyE?}BMeRJD?nY;@yMUg(q8r_MGOJjp+*o5dws8rtuUlsTJg z2n1L|Lqp@z4j2(q;IH0PM#@@$2rBwPFJ?p-?50~yo5(U}>-M_ULB%3TQR%OA4=uZ|mToV~?mqa>0Py<;~W7!UK#kRk{9e(R$U>HX6 z!xl`(-wYEY<2+wie+iAQAnfEGenWw<;^N?#!Yb7a`R3a#4`gPxpt|q%os^xa3bLyo zv72e`;HT*IYr8oD_Sy!MeSpQg2rmMJV_Q)}9-a(!OZ1d>OCw=qNAVL^g4$cAFW2;s8oIU5qp}^|C5?53oYCKiZEbwMzz{%nY==x;-r;kC=GJ0 zeKqfgn@)80IUrVB+Zn_WW1`)uDz`XnEB#{8E4_9qhN3mFijVSC^Di&aoIYJ9(236< zb>@@Nx-KrDrNwibbx^0pP7>esy7Gy{jT;x{$J06k8R|MXQI07B*3h22k~N#NDc#02 zIKmw%efh$>_ZT@|#qS5rmmvM^Twjm0m(W-9@h!RO5s{I!yo<>S@q(#$DXAHl&lik= zZ9p0VdsrAhD4UBelwKH`(;GW7mB7B5iE0=P3_Od&d&t{qjeGF58y&y2QX{k)3-x-f z>KwBI{L3NjI^xC5mI!(}pLEZN<^0b&%8%NT59`{8pGFPlwf~pgocUu<1e9P0XDiz?4>e5V zn#hxQh}FSVvf5IJnY}nXaVPuSuq=kA$(ouA^#Rtz%_n2+nQ)h6;)u05Qooua#v78C zn^$gVCC*MzWR6vzw=rh2T{huy&ur}|aF9Mr>FVnPz3M&rxkWD@Qj9}66mH+P)tI`L z3Gv5%qa9b-w*L$VM%t-oM9!e+COx3p$!y6ZjJr<2c?}aiJu@*eg|@Wq=5b5;Rj~K1 zLxej%)?Ir4UUwo#+xz*8#g63=%0E)&M#RMhR!2MAT<6@!a&RMjvRKu^S=dwJzKnqN z&p_Xlg#6RvQQG+|CJliw2r4D%`5jE`>;w1b1W-#cU0n&>mY;lMtE!Gp5g5**>cW#y zq1sJexP|sNFbbIqc@qNz=`v0l_(g4Zx-Qkx4&B@n2$SAHvoLE>(SeaJMx%D6xh5xl zz219$k+BKmQRMPH#dk68#81x+V88N(yGtCX-KOu=xaVg`Ksuz3aYJ9`!9rH%1Fne! zHNA6}ZPwa)GX6y(E%$k@!yIR_X%QS*x}ay96{GN4U(5r?z78kpLyC4Rg|<2(=}UEm z4up`J**)6j`NKKfqXXzkz=;#0C#lBIN zB+QH)pq&xXp2&8Mvc~#iHYrtj}gR0pj}r45az;ipEvx4Hba( zVl}m@vLvxK3%U8xs2bq~PX#$qWICZ!H-gVT#~nFPMH9?{n1!Io(}}$N*uD<^{KDraRU4Tq`1tq^gd2asEyyit%RD5dT3DTU3qIGL$@-~oN;2b(6FuC(C-quG>NXH z=aZS0{h?lPI(FVfB3MZo!g@G>713`&bZ`<01tK)jNE&1l0RpShO{@J$*>g1GdLwhz zBiUW(iwUcfVe)V#v#WJ35WTb#WfvR}prkY-s{@yN@>iI7Y~^qb%`rXKjR%WqxKIy@ zru#U@8eFT9+=A-p(t{IrlegvM`sG(UHSW^$8GQf~uKI$qVe{!3r0{GkS3edYhkDyN zit28P)liIX%ks<2yA_-5dTX;m(Wo|B{ov!+gqj|vweM#3TuJgXlrPggTG|p&UH+S=#BBxJDroFC?Pf9+z@t1ubI^C$DpuK)LK_p-O}O)_mIw?uY(K2L}Rsu z5hQoCLybpn=!lMuWe~a$!fjvf94j*9`Z)~~nTmD9f;Df-Hjin&wJ@%vyf~BKCfqE4 z^mvZpM6+duBd&^quvqO4=V*&>2)dsN0GtZJx+$ebD11i*qF>Ek2ytJBrvF{-h?{zB zA^I(h;h1h~EOk(=ieKaJvpj3!a9MKr*Dl@9!DhBCJQjtkIP~GgW#@E zv3J9`KHUH8OjgyM5do})F>LW&HC8jP@R4W|N-~23CsLA5y`?;u;d~m|%%{Pct~+_k zHAZh42vtqOi2JES^X5sT1-oWK%|<*327L6J!~E4(JC3Gb_H!!L_4@@7QWYj&wU{&a z`Ntb5^P}UJgj1Dsue;@3n&^xubW}1NU33?5QaQ~!b~Yh> z;9z9VcS;2qiOk`|sc!UGDE|FnI4il44AWYf&d!!Ab z{nK#^T~nW;kMNs3;?Lm^QN^R-@?nSD*3L}hT7Vz4Z6^5aBN6=V#$`F{AZ(LcH~cPM@eU9V2%U9WD2Z zv{{T{1J!~x1}|%uiPd|zUYvA;1R~3f^{#adYcb7;^#UOmlBS0bLjg{jcjB%q>)YAo z50|E$mKGc6*NpXPOJmJYuUZ{nh8)A&$4syJoX{WF$Lb=k+9mj|?N_%1CTYWN2fE(s z0G`xdr^;ftYz3^{*c=%~f^a-MWcBkZ+0j{6rLLSf^``NG201!@#e2#z1$A*6uw&g_ zAoS6UJaegT%I`ByH2T;ezaU)_1xYV8XYmNS^?wWycV!oL_3p)s+BjvhNv(xW%{X(N zk}=-s!r1($BoL)N5x)P|sLpQe3ro8WCI5GBR*mWB^ zZJj2k`iZq6wLAM^3IP;-*7*-;R!VW8sAbo*2;|X^eq1Zm(r(_7=D;@5y2PV6htTkCPVAvR;)7;(hojiAMuFN2=L!0Yi2sNN9q2zTBl*gzVW zumUG(SY3FYtj6;Di?7YkI{!KeJz+_|AWT-H`!Bz+Li2I6Gos5t1b|CuU&WZHDdny4 zOZvpAa&NtnRen>Hg3)yM)iw&w_W6VF1{s@+4zeuISCKo&*o~iMF&>qDRA_iKxbXY< zt$q8~nVsi}oTDK;EGrY!2^8)i_T!=oyaJtt%BwA&3t`9 zRxOOsaLK*uzH1(tE=0lEo7)@}>Tc}K$Ozff^iL#mP7Q!wyja?PhWIkzL>z56nVB=uw&H3%X`8qD zYiUNFJi(>iJlRMjxGm??@+Bu;dvWvj?SaFr+>#;0k=ig2{l}nAR0Zh!bBHtt^(^O# z`$X#=lCl1M9&_>*&}H zCAmg^78W7CySjR`93`5vIkUW0oDLxP??Ry_&FTr~#pOG111z)hm5 z57D=VC*Jr{LCNxrP7vo6Rs=%hdg04I)Y-GC*y6@E$2D-63mg*@6tqgMRZtdl)EMng zsW1|2$yR-6S@r211~E(#ZibZ%Q0nXRkFb*M|HClANcX<2Bm9Jf8R%H zb{g9li@!1M8`mv%5&%@SfWE=X{7zrC4khKz(1#y0L0#wVbeL))Hkx;KZh??q6BO%$ z28|o)t~W9FB=YqL1q&P6Zt8Pkg|7#UgsEI(sn@}tz7t)Gj)?;4b3Vc&zD)dP_UC z#TWRn9+HeQrfotR{pqfr87C2N9B#C;A?N1{98eLpuMePJEYA&(`SD1x#_s8=EL)nA zm5=G`vt3rKjSu43qt1@wf7Gr2+3c@&g_PNH-fVl$a&*?P1+>a$P0^BX2&Zg_XAMi6 zP;i1l6XY1R-i=VRvpxBBX&28LQeWvXuo?557+^^Y-``MNf+Wd51%1U22Di!Vj`!KFXmdwj%OPq zCl=lFlYF&KO4e8TtJk~{1)KkbYX1loVPQQ*Nd0m(Y!jj@<>)u+Uxm#NZG z-jsV{2pFtPmDG)r#=Ma;3;C~mY0uU-&`qF7CZD5 znW7hR$Ox%#Qiw&MsCGxzPzVi9FNMw>IvMRQG1NF_y>&;l@7T<=4``3#R7H%nF;lz9 z@A(B}(CruZ<1wenKG4ruUPop;SVPl+03#Lu+oq>Xe9s2lQO+`L)_vsTtHnl+$+fy_T^{Ns$R|X znl{;HsJ)MhmFuX>w|g;bVr`qg{(j1<=iP`mDybLLir$)yiJ6Qpc7A>@%e551tc`9K z>umJeaYRAU#$f1n#|!F??7dZT4K}d>wKLBo5LCSxor8`aLd0igoXkfp9<(G2Jv(fw z-O+03>g3BVC2<|)=k>-8tF?T>H@dGDIy@t#-L4pHDqNe(!ko;uX1bbF;yjf}rq#5v zsd{(|T#kBYPDN{Ktx~d%n*O__!h%gz>>ZN(R+I}UrbV1Rzv@N4)`chbA`q#uIr#E| z0@s%>M{hnbYKmXxq}KD6&EeN>e2-O#S%y6T(O&>fr2+Slyb(bI;1P*^|6;P z>xJ1ToVM;fTE!pFlXZMnt0c!#2p*XRz3Rep@X#SdimiTti@xnlfJEI#(^~bO;+U#c z?b7|m+F9Rb-*|2Id#E*r93xr+mgg!Yq~up}6E!Nhp6sL{y}RX5v#RQ&e&2$p$7iL< zfBEWgv33`tm{906lF-Ujt$U~Ls_DUAr~Su&hKHTdMLIvp5-t*Og{8t5E;#Y`7*Y{i(vehVd)}e>*VCrZ0t3+OB9iT>_LNrDT_zE90Cp zg;hL5gzL@2mEBo-&<)R{ri4Yl^%;t?mUcjauJVDI4CP$^=4Z_+A!XkR{!}Y0O#3;0 zB_a^g14HR$>{4oPFDxmsm>9YMu7I|%lJRMym9|Eoo2D?uAtC4AE1MLbo8H|0=MJBR zp|Ih0<0`Is#`MGsE0cq@5F5?Cy<4=cIDxL}rezVooOtd2tv0&5!%b#0_pbb~o1YQ9 z4>%wBR%53!6kV(EGjzAor-N}WJcyKBJRY3P!URlFUcq^=Q&t3;`bkjhKzd;0_lso5+TiGK ztoQ{M!uU(|hMzofqTXim6g!g$_AaM|L0fzKZ0~(pT|gJvDB-_*{dO!`^j*(QwC=tX zc7QT=Ct32W#QPrD1#cucHUB($GEY$5F*7K;q8y$&MhK%kq}2RTvQNmmKRiN+$1=J0 zb&tXLkqglxA0x$r;3RKKke_hNG;WyI-MZsKO{EM$r!lb`OISf>MVZfjDt(R`#Ylq9 z1dn70+vwFhtBsGh=hg_Yf7_)B(;}qPnISfvicQ9epXo$|p+YNJM;63F2la)~o!18) zHIO~`_}w`I=~@IHGKlkLJBJ)Y*zYPMsc1KX`@C~AA{3yhdf^l4TjAoegYxirY;?2A zt=f^CnMfZWe!a!P<|L$MO+2P-XEaJaRa+}Ty^P}3A-?|H0Ff~(nQKoKGA0{Z?(J*-pmnxboSkbzlHGN%nFArP(r`DWl8m4HO70DDNp$zDd0!RCbMpp5 z5)P*UL~C6Fzy2Y9yYv&Ru5`AE_shEbDz2Ch*W+YaRId~)2XEj0q%B>ZsZ~iCtyp7B{PHLYe)f7<3zleuan&{F+{0Fc#la6>56T^QrGCZ97!Q>D|cAkvk zDA(|3Ic)N!h-g!}#d|{=%w=8pL=tZ^}Auh5|_OpSq-+9s8IK{NlS`Kyp@F+Wzml!j_|U2<>x0{=aiOa$(zGMB(*W_%+bRlN9KytmUp7LgQ^+)dXfx#hEJT#vnV7(Mezq8 zK`6`03DpNsu(Anfm<+Y;r83iL)Dc@4?`M0plBQc7h#wu*<~RAku-k~n-388TDlT1r znS7#lRKA6TZtNKw2rT^P(`P3V$e%^LxTIF7dqr==8t#3{$;f2tygFJ7sHEl4pY!Ss zDX-r)U#7EfNlW!<`x|34;i%E3(C0*J-rIbw;!Z(}D1O`0@yl1&Ij#S3Ou%VKefl&k z=J#9^pC;JYdCrW+M*A7mit;^t2&d7&KyN$uy+@WJJwk*pXv36Er^N`e%;J?54|i%1 z_t9Oyo|PdRn_XT$Yc-PwE4ZP{$gJe`#eR1(ou+Zj{8*K?jEQ!K)%A2etC=s+JJ{pQ z>6i-yw&$=qYL;f&`uoWrw8>!&VPFW9lqd}kZe3R{Qo56cb-#hSef!!>f45z}qW6lS zF*4tnh=*u3{1>jKVx{}--|o8)RwT8`Dx)=2Lx+{kPKCS7I;B^3o4vNzyOV}vxKYyU z1_40QzvN&w+h^wAMhqG?6iXauhwQUlz|Nt(raI5O`JDBEi$!OD`x8XbSDkmF&~zol z)3lGBHGVis{~OwPA}?H%()WKpHR#7N&-nA-^8P!~guMrJ8ROe;d*cU|2Yyu0^XngV zf?&dQxE`QO7NMJ=M_{m8tml^Fc-tBts@Aobyz^f5m(e2xi5@g>QZg^&$$S3XtL_w+ z>Ah^T0IllOrkKL$HirFHQ;sz8XV2;c`W(J~9TntlDw3{eeVEk+O;wxz=`a-S^6i|V zi?d8?mMKg#gm`j^03xdXlr@e=AgZ+>b|J&x3xX*u!J}+x3=?uM&@wvnjQn;+li2 za^&nPM2KdXmMCV)RC(ilq1N4(Uj|s8E2TJo>3?EZA9ZxJuHHBXO{mm{Oep%zunFd@?;)ySP_Sd&KGx|CHcI5LB(Mnb8ik{->$b&M&bYy?YQ5B& z3S@11Lgoy=D|eOKUfZ+_dK2LhwksL!{&jO*aM~_d4mfyu$vD}8-2@aZVFvQ0LgE|q z(=C!TE~}bJ(RqH>ta6or+)tXF!*HcNQ&mq7;g$D2nV|n4AXs3aMhg5<__f?E`= zd&47SgV0Pwe{wn)?5xun3tM zIU?ZDVX3z{xdx#aGtq1_F)pS;Rj@|dr`M%Cre|I?PQoQJM{1LLc8dGZf*q+zl%x_8 zhrwLSY8KE3_xy|xTGl;2k_wlO_~xFb1ai&QP^mdt<1s6ucLZ@6k~27Q8bW7uBer{-x;=pYu|_p=3LbB+#OVUfd+XN|~65Mo|W@=)CV?EqQ$153-hBw4Xdy2Yqg2JIiE6h-wxvHC+Ej_Ye34hbOW_5qRh34lXE3T#RbJb>&Ev<(Zx|cMa9Wn!Ntud zO)n@oupPp&OPVfEm0xJn2+!vUHWuw5Z*QMKK}>jfa{se@nePw<6+2^Wq(^h^ZL~hR zhX^s;=;KG(AP{&ea#|!lr+U?nizU`23hW>|uaDcn_FQeK4KX(q7a#Ox?=&a`?&@e% zL<~I!Ey>DiYhKH!erP7Gd$y%LBlAVEvk9-e_yg2BIS+3Fq#W?}uQONsCx;k52RZCb zU^|0qObk7GPwrGW_l3Mu?3Lp&7P^gRamnY{YjV!xtG50+nHT`S=4bcv4@`u8qS%0D ze>$;kj^dAhX8v{pt^IUeoS)-?_mp~qxV#bU_53@-htUN&`WkcdJID|!wDu)Tza1c; zM1&n|;}Q7dI%J+CW;a5MokXm(4s|cC5K~h)CXE+0Om2-Ue5qH}6n9T6{9m^7`TWrQ z>>NQ55HFpU9-X+`bmq;CgNr8^X*BO6%Tyn7`YR3Ue)M|bmhnaxY0Z`Htl1>1+UqnL zu#Nq<(b|atC*pZi)CK)JB;(xv5++TP%FaWfF`VR$tnb2_ zR^k3;!AS`jDgN{ap{@A2!CH(sifX-7Rv2w&e)sN3+*woFdN$X{b~C~{u~H+t%^wqeswOCTl?kWr0KPXjuv9;+33 zaHT{;w{_pphfpZ9k@%UhJDm%5P;z>?gG||gt}7-Y!l;W@ zq=`X6F|L(Q=EWNWoyLPeZOS4EaL|C+@6v+5jJ>U&hdW)i#{4M8KlK%A*u`vY)H+p1 zftL%a1NOfr~+Bn;r{d0vb&l(u6;`m^!0qHS`Uw8HOwdtV|!$GEZGpZ=w zU-~nUG~VV|VqWoS6ChTK2Wgv{%DSh&)0}I2`fDpHX<9tsTzjsuTG~l-JG>tU?1n%ZQeU6Q&R7^b;pf z9;NwGElOgy?rOi(WS4vL8Pf&rr|E~!Myn)rj>#)$nwK3Emv%3dNm4Dahb0>3pLC@} z(f#>kB1O@d^Q(ov=E&R_gB`KyRW~HK)KqJN=ebwcN>#&&U_{4e!nJa`J59Ud^ejLS zD-*qukzNB!!C!_ec7MF*3Bn|xT);<>hXDyi-}D)jMcIMx zFs#y2Ia^pC!jWaSI9bT0-6-XEkHOzImh+@wySrbeyq>Ot{~oPGoY2m*@N`QrKjdrl zrD>EzbO?=0~j!vrRRQd))SEIB*!Mt;5U$+3r(h^${Or1h&RE&S2r7M1QqjUET|L0c1aoMEjnf$NJIktL61c<(bvu7)> zUMnMaIB7nHLGXuNVja;xn5_<;TiSrAM{d1Xc^KlmKwyc#dgBJZa-PdDp~^o(`EY;V zD;~%cIlA9GGXisx7canEDN`402RPkrtqpohz51(Itn;IWSPj|8@}}$CH6X!4glVju{Ue=F+u-)P0`co{v`zwqNY)Y{CQ3)b`PnhIlCs(>%eki#9$6{6nShDT-uOZ}f2F6_;zdl>G zvm;X9=y#3YJjKel6f=^L?z_xSv?(Nm25HdlF`a7Z6bY*=kIQCKPQ9Uw}5Ww-*j_(vgX6hx0NiQ4@B?vg2fdfMCs6?fVg3@{FW7Lp8?XH`7tJA~P#=F-9~XP~fiq@kU- z&8kJ%2lO@eeD{s-IIaR0-e2^TO}6ARJBi%jKZ;@x^5>BkGS@j%Sv#aOy1qj&al?4P zLaHk6VJV}nN!IRH-VQ!#3!RtwMpXT0tf*i`n1H;5q-&8~)3wmB=hoi=^1%Y=h){o? z7HhCH{xm-(i|gQO0Hz@nd6Ol3U;wtK3TwWw^?blge~iPrXa&_qA}tF6U7-5rGmT{f z^0UYJad9q0<(c5Tp6lX*(A)>esaRCqISh`a758zZDs$&dGI@z`a|va&du2DTa>htc}zC^kk` zd6Lte@nw~ElIJ=#Q6bD<5kD3nlS#Wd>~y-wSj=zh8+?%H2Q!tgmiua)D1eMqjRW{_ z_l+7%x;oDMFq_QCs@x3qQ6?w}fCtGUuo=sJz-IJ?N5nY%2r$Bud#)enzTxNT|1#XS z>hv~o{&!dkAH&_MozD-r_m~RsTB!)24qp8tfP9WE@HVaDC*@bK{4rtQa7Tp8KSV61wk6*EH!0cl8qTo%aa$q=g_)8< ziizD7`)+EC%d|l1s3+|X|LUer2NFJWu>AF_lkk9-fpifS-xJ+?9*p%1l zgD{c&KKGXKAD*bJ;yrWeDh3N$aBT<94QJD#q(px>asDHk!Ap?+TstX-lEDlxcjYcF zvmPbUs1)|>8wvRs+ZB4<)=x2_)Q4b_~Jw$t~kYWC^|fMyQLDH}8^>E8V$K5`hY z*nF?>FmJ`=bzUO~hy_UI&rLM$T*)YCdCmtfZn6I2-T2+KB?tRGt5k=)6iRPMU>6(H z0pi^z3rCJL_OoTqwI`jnG|6g>SXzQB)PkuxEy1GCsx#PENUz`X<@L9Ji{u;goyF6D=0Gi#GQ{^wju6@ z6{u*p7jQ6@lm9RAb}5DBxz7VqiEAnp!;LDGYSiNAn=igwYyCeWqJkJOWk@yiebN=c#Oi<)^=Q#%&)zTSc5t&#x*i%>XCQd}Wri;GBOEY}KG| zqZ%uGnCeyuTVCe-- zqm-1}S0gPDtN~vLnmnwXuM1nv(cqcPt1$p z;7+KQJ+9U`Xyn%b@ zkpO%*h1~=2b(=akuz$mS7lRxru2OKhfIjQ3S$ihW{3v`Iy^{rYe&9w~gIHC}j|1;G zcCZ$UQ4yYRR_A{{0}WqEB-Cl2s1P(iSZK5FjR~SswmAOBo}lE07+v%rILdi>!1eSn*qm~v zwPqNGp~k??tN3Uj%Z58W-)7;T4n3oHP)qm^;5AlX0ft^f(CHkXEZM8mktNG|fu9w= zkc&%J>-yQ4Am(6;H(+}zAb@NrgT*8Y29nO_5wjf==yd2wgQ3GI%F0HV5uT~wNzYuF zOY&l9q^Sab@ECYhXi^^?AK%F3&`t8v9`1wIT+qJ=T&WkpU=FEo@Qp261i#uEXp3r68Yp(2Gs^6XA>b8y%U;4m&=;&PGs zm3{Xqut+CGiFoi!gYkaV6gzSaY#yt$4dORi>y)g>Jo)FH@3r-g9D=TT&`L!oXS5@G z0m1;ZZh|)5-O!&28rF|gfM=dN-3s)g55!z!qCS1X82tb&)=^8)S@l*0DG)(7gV}ye zDtMlOAKJ{*L(I^NunpR5ilYZ%!AS2V8ST}Q6~c(FfW=$x@^Gwo6am)qO>eLZjpt$D zLe)cGBN=`0h8EQC%#oH{I*yy}Fz;eLbqX35+7qvOwi&$q$=dDA)*bs6r#$R*l%E(o zY;Xn2=!io7Xps4Bg0j7#(FInc!Uy^tc%w6+F9fN#dqe~!6;+pMlad&E5G*OBBX58~ zKSbIGZE0h0;n&2rLcWmjX(!@AUHDVXM{x9o2PtW`0au;v+qYv{fP^Bsmw7SVrUaks z(EKr7@bQO^?_gI4@uHvWI&`$ust%0d$^XgBY)YDK>9_{;D|K)nU81?I-R>AhD`X{u zO|_9Bb)p5Iw0I2Wd_qy?#=GL}FjWIM~D za9A0FY^+pnLh78@t<{Dz3aNLH*k;V5x~OB1AD?18b}Y7Z_|2Bbj}@m8$3?h%18vMT z%{9x)Y&sKWK6{s4la%zDxORR$mMZ4Vd@_K#eCu&vkW;3c%AxAxzD;I?<~Kmp}BwFjH#)$oi7Yk&8a z5dv28wDjfc;3P{fG<&mq z-`TQ~O1|k)aTC~$gWoFZz<6xQz1f z@gKhTZv6JMuwa~-5q#l9Ru-0QFy$4=NBr6Kv{&IRTBAAPQe_)7ggEOM5fZw8-w`9(F%YmXSo>p)%YfxJzj7S(2}~cWokj z7pje5on@Z<@om`_Foz;ngDN1iiW z-(`uf!2MM@)w}1{GkE9vkB?qND;1x(>;Kz_y8A_6b`*0xav+%USW`b1TpZDp?{;>7 zDpcOEe0@1pf4O`Q9P$o7^V~XrxgnvNw`bq&%eP7?PT1oE&oq4jq`4_Dz@>jI9lx-J zQWMNKsZYN-_4RW%&fR?%{QjeVQ)z}fzwv}|SmKj~2_^lrKKP!er$ruYL;F2vJioR? zjWIvW+cD{0rw_XxtBSc?1z+m*{prjHLb+crVGf{Z-H!bMUv}x+<8qYrY&m-=V~f~6 zvbV~vD!r6Tq({GF|Nk)eo?%UGUE3&bw}7BvMd>OciUJDKOO%dCCm>z0AT>xQl%Rm9 zR6#&WKtOtx-U5Qsq(cB{3B5!hl!O}Ko8Yc)-OuyA=Q{5>`J)$ES!=F2#~kAxWsciI z)a0qEG+X;e{}XCQ{@j^_uR=%kezf*%7kH^^4^Y#cIB{aP59_wH^9yokK&=fpYKpA} zCQ-W}ZMOmY%j9=e*8RdRZG9%D$$&gQ;yB?f}P^0RpH5-7X9Lbt|2Nc1)D_oWV8_({V zizI3d0(QcD4qr6rMv9085&+2ak^%OO4K?IAK)l0l{D(a53ICo9k~L_e<(5HfZANi; zL6p$?cqnMztPV?#)uqfHZD9fs$286zkjWMS!VUb|SkP*^vN#b9`~+BEUQ$_E8EEAI zdVL-$qSF_D{gF~BL$-3g1y%{Vo14QYK8Jxu(&nQ8Z@GZxxJdCAtcCG-kJWP9F-cQG zYYyOMZ9y#7p6Vt5+DQ!Xk#efvwik_WpQbfH>&{pX9aZT8u3FZLJ-{sHDu|W*xb@|& z*i-|F@n9)HanE82@@B8nl?rQj>1bMSzqwl7*YyPOXzl`1y-C12DzZiBLKcW#dQMeC z`jKV5k?hafk^|T@fu-94&9Tu0z@UHyKma%jH67~Ib)=4}nM1-J;F#)hKV1OH; zoy5m-I0(aPY#djmC88IhqJ@s#5I5_~n*bCvOpn^qK$ny&R|tHv0NDfA3?=A3;&aN- zzC*^`1W?fc`Z*+MrUTaTLEV|=%Rkg{pVvA_hXn`QlN2M6qE6{E0Eh{|FeE^3Y+rzW zdJS^oRwHOcd~a72O@Ql(Apti7Fh0q0@r>^h5;9rVua1YR(44;d7Br&(->s+np|p;kawd}tF#j7`mKUq0%vd^XoE`Gk819+fD z0QO%*>}wEh&0104QnQ-xFI0r?qG#L$X!Z=)?q|Th@BmvD!|C9t{_s#u#UC4XPcFZ~ zo*T)8pvm1%z*<_4z)f)M&j8blVbu!_Wm3Bo-mdMq%eRR)sk9l9bO&j`ad*T;!cl(EVII=;{i*qq02;Ae0r*Kj{1AKt?TIctl@K{{10_>yLme11+!x`dJ5x zuY3Vs->Fs%HcO|>KCKdtCIGMdb5j!v?X$Wm1$f=m3qhmgn5cX}CI~2`;fyC41RcRk zf^G*MKx_cFd?jcp4@k05zz4yf{Je;+ovyImdF^d4I+5(_o04L0g zRW5oNC0E3!ShwN>?GgVIE7W>E| zNB`x!PDm8u8|=v6+|MT*=0~%Mh~YXFFs0kGsXx`RKnE0!+#`=D!kK2lA1W)(%d9O` zfG8BZRwoGB>jTLb2h znzn0}mP`=fssemyh;`84yae=qr(kg&1`6|nN^EAo_Sf{4F4-=bf|xjh;3v$2x9Jsp4g7P&t- z!3O+z@OlHg@lDcVy)T^y;4A9p1e>A=gJ{GSGY`-kZZ5M?Un2!J{NgeuPSkp=# z^x{3^O^4WOKnFs2>qVnm@aR=B={G89nC`UH^rKWLNooktef_c|br^Jh{M{|cM*mDS z#7{^ydII@^FHbc`b^%r-cOd0ly6?jK0KuuvBmi<$)YM3n(mF)$I-rcj^BQVsB+>z% zv{FGtoj-lGTPL9Y&^SB?mP7{#R$w@M(Fo82VoFL=nRNhTdejaeDRy1}kZvLkO3o{HIJ`Y<;EaUOs!0i6p`dv%6F45tbK zBnbz=?gH(Te)kXb(|+cl!7t((J%>rEG#@s%+W||H7oQZCbtzxY1Jj_`T+p8ZqE-N% zVGAv^ANhR_RgnpHpPE$o6w>As@LH(!_V0QONc#sUUsrUEL(u31KU^ra)&Flo)uBC%jcC)R;Jrx z1Q>&Cxa1Vaow23s%W*puRs#Y=TfkCbNCDJUs?)6EoFbRGT{WJT-sv5nA^-$+p@I;3 z2&LIdA509b5Z508INibibc|nD6J<1qq%+=xPkAk)n6agHrhrsD)@@0_A&Tcvt7p8@)azEn>fV+FaQy+UyFe-dAd0;a>awTir^pZ z%sV4Fw)3S^)&O!Q21$s3??G(Z7M68Z>e=r01dF5A1-K0m06>r?wz#r&3vZ#^zz@&_ z0D=Ko>9oU#O|CeAF5!L$dI4Z*2T@0;U`5N;=&7pq=)?0302cxp2@o!v2TLyMT1n&3 z4b|QP^K_lX+kRtKkOemmB&2%@5MKa+=$$LZVt|!^Rq~jdO3jHL9irrQ#Khs_ZWgAP zUj{j*H-I-(Fr`)ESH>$mJgc-s&wcx!a+%)xE9&|lE(SD`Au6v?EbIoK01Fa8ux3ML zL>*HkSXr3MG71V*>65&?Jm4e%$|l%QS$76N@)}?_fwWe)E>O5@yMf6GuhQV(QAQ+S z>QIRl>%)IwkI*08dQu2nPr;HN5VHfhFI}K+0qa?z|El7cP22TQki$Da75o@ax{-PPI$L|R~^+&EwZHiW!)KU?bQWFEy4f3vmz^tA&)=#V?R$B z62$@WwjaMvne~Ul`r8cJZghyPpMA%ca`O@BxBt7({x8-}BC6g)?!SaKpZ-6*GT|6K z12~-HtmUcicX6boneTT@0wR$=3qI{r{Cm*yukoZay?+m??aktiy-+Awu*DKmKKp?G z?iz?~@5XPz=Qm8%z`w41zV{c|-N)~SQ}@36hFi$Sqy8RL{Few*?(6R^Ed~5Q3s=r$ z|HuMUTw(uv)bZyr)DP-^ANrX|XIq~iDxCjEHwA?PKaS!4$#k9WwF9TTr}l&CYuNWKig6?R@2mBsBLAMR-KV40xQX?t)kuh=B`228 zZB1hNK!m|$`1!Jy2^$q}E8EOp7((2x1N$YkTGVPK#ab^&yL0Tn`)Z$yW(k@WKr7u z{ns2Pqwt6n!`7&YO3Qw9T3X)#Xn08G8S^vwE1li3edtSL-IQ(GV8aqH5Z8hS@qkfsiHPddf*7})( z67A{X+5QOC6-u@t>ROceX?rTpe_M*ChZh4PRQ8N;Rvhp1)%xeM1BG-BY+vfG>C7(S?etGfX zKgZr9wm5oM=7#*6n4QqAkyopcU4f|8_=J;`H0Z zx>`!~osDr5MOMlKMI+4toH8=4bpi9gV4AL1LEa_jlwRO>p9o7+5?gw{nP;XkwY92Y z_qxymi4+}rA#69;pO=SbjffU4c8u)H9}-rITG*5-YWOc_Aq7&}gGOs=YFd8DJ$oI? z)>~FlwbGO5o9|k@xzr)2F%whmg^ZUP;=TWTvv?RC<2wKN)PlL+OLGJwHS@~Ss&B>2 zfVCp3V*1>wsDfUxh`4JRPxoCw*1XCnSD`gqdwV>_8;-M{BZQh+ea$oRa(fp`f{;cZkD1HVysAfq6+Ce)&yX6iZHU`11= z&U}-G^5c}Ird6GXU#>bm#8%E1M3k1U=uVA?BKOnUn{pe*=w9K3yt^G4vJs!iO8PKl z;!qfU8HX9#qEmbPexRWZG2gm6=wxJ0)PpIts5#Et(@18&$8s`)qAD4ig_m!qBwx_q&78b_|FdT`sT>Up3!C5+{uNwy z2J(~3KE;rlA}?!YE`)$at-GHaPkkV#sDuBKRC~T>)G|>dEYp&@^fv71zD*FsxFK=x z`y}W0hWg1HKe#P1RBB>k0+2!z5Pr{399>CFwK=fF^q-YW%wi+|8>XdWlHh@_&eeF_ zKcr3ekDSfjOMf@xN9;C2Gh&&Rg24|`d@qyv0x#JAuU_y!&E-6(hERE=3?vf#ZtYS6 zph5OY_mqA6U;R2WA0SKci3I`eP_qT2|EduP{U)`0x4HKPP>>oLMx6Ezm}TrwvloMtXlw zV?B1{<7y;N$t-Via~xio!cIoiNn|PxUwMVg!A^~sxZ$!;ZOvvk^(@2l%Xb;!zus1k z)ghF7s9dz%ske2oqVE#7@`N*u&e~%-)gFv z@8j~5f4gb5*U-DBH`g|sV|Z(keU+%LL|@UzU$Y9KhNDxs3}mRXEsaQn@Vt;|V~Bft z1^$prm($S1A%<~f`#Ibd1Kk06hr;DV)>6J`e!DXJ$8|wY5?koL%Apx_qrut>4s}1! zF=I2YLX2qJb7l2GSF*BF3+5S_=->17f04>117Di`=WlS3kx57>NZ-`_-vT0cDZby` zr5h8s&rtjmT#t|UW8S@peq6e<-7l;d{;u;X4{98oScvjipU})&U3z(WMF)fjc9BuT z3AhA3Z zuN$-9!P++&hqiXu&eZ*QFqJ4Un6bcq;o}!d?8+P+s@f9?xQR+Je1&FKM0_MzR!k8W z(H4i^8|v@i_PEFtlM~2-Ia-%gBLOkDLC4N^dwyF_>#vq)zVjfs zIaIQ5SpTyOq_MGZtC8&MYOUD}3` z{h!!^N_e6L954t7zno5aPhV*l@(o{o7T0CPt;eOMb`}wl;seO8cL%E=zkdC@lstLU z)EIg>nDL(}Yg=2Z)$M-0AePqoq4_2`RwWSYqIG;m4L)RWai(u= z#pmTUfM8WJtelIul;AgrKW{aJBh1cJYTjF}p&o)!G9xOYiR&c09J$tO_3y&*-Iw|6 z?TFp;&3vt2OfTHs|Gk_DyVxGE_4-G3%5x8^9FX2iP5qKcjq_NWW7lbbg;{FKHyd^O&BdfY=n@ zF_@ct3H*;L8BP6Jfu-d*aEM`bC_;CuM-Koxq$tvh*3oowRPK!@({~!=T12Q(>#si< zVQQ-CQ3-J7N&KKDh&xVZ^zWIZn*RoTIAKlYbdzSx$IVde%2)Pk|;#C|ICl61r zhTP$hub?Ur@zwwIh_wki)#l_~uD{RY-mmwZ63;op2{oEfDdqWPsr1Fk79?MrX8FAK_uTW%F2l%PMNnkI zJi#;Ix#?fMX1!k_$C^)Ls>g#Pj(|r1jC16;E%|SOhtNf3+B+|u{}z&$SzxOsEcAp* zv8YSm$oz9WOFV~vaXcIQSIY}KN|L`SUU8X|lQ14!uW}Tm8n`tNynWU9+e_?1JMbCL z0d?2@jDpH4G%n-1WC5~(6=1jW>Fl?!0hgfC|HWV8?{^~1j^v*D=hPgiMmtjQ4ShT*#5OzsBo} zDLu}g9tn^xLoG4f`sH)&si58bV2$Z1VUX#K{MkKa&kY&6v{;*-tX;94D~#A$@MTjt z%FnPQ)%c0$@VOrjL-rg9>&mK4JswLIl;6Ad_et~H{bI3|?NWlQ6rhFr_PKiv-0b4E z%Xt~JPy_9rkpy2{0Yn7!?9MFUVIT|fw;LQp%Bf42g6|{Ol5UN@dT@xEz3P z^Eqw2;8?lLX^zQzpaAk;v81o}-6L-+%J$KGo<9`yW>GBU+-K0$zwr~2ML|;RujyjU zxwTh!y#zt+NVf!NfA4lQ!Kn(^bbUF+C^3fxwuHb z5WmASRuAnz5tgSTaon%5tq7mp;8&KOU?W zpCDp;a&0kD#L-e)e{i&ct!jHC!8Cz^HoW~AI#4>x#IkB5QQMbx$I;B}ak*m_D93T* zVSHDtgJ(-_y{8$u)}&aujKt4kP@-=09c1IaAumM5L%jdF*(qV?LtA(r zJ#SOC1s)9fEP-Zzy1~Yz;HEZehm{{?GLcyb-C^u@&h-{JpJ`%g z#5K(NQoTor1ar!5j>&@}iLM>e$4q$F7R*Yu^e<4!Jp zfexX1Y?22ML0`2l`Jr3@4O8<>rkVfiHXHeu5R6%SrnrP=;1YaN|pxn$*~Q=6kr z#gGl>CsB6_)>x~#WcgXH#2=OcD+sZ_xGgr<3esECRy~`~yLB39A29!+7d>nJ*Uwf} z>{JgLf2?!>Nz2q38NVGhRn_)%XqvWe(G@cc=?tFYWd+)=_~q(S2J>Y@BZ7a_np;ye zhE%$o?7G}dAaLNhcvw}{J4d~bZ?r~jy{R;Ce{#Jz`?LQP3m`^sS;+~n0_$V0fOi$% zHZc_S$f-Ei?Q9d-{wzW3T2T(`%bFTVl#=^NzB;#F_o z4tqJ+Nl{Br_$E{y9?MyqD0W5xFbr!K|M}{-U&I*5mo{Ev2X>PW+Ue z#6Zbf#qzVARRrr8^f0|`f2x|4fZJ04ym+Jkl##P@arii34=^vQaQo2k%G9!NLyIVv zLvz|DQxMUOi$K2|D5}Z_nq$Cv=RtkooFwye-80B6*NOBDZWbY%8-8>$In6s3x!M>L zHrbeLk;x=S5|)BjfaS`@-t0ggwIAG$7h3tkhFJ8Yx))6pHF2O@lG2g;i#isE5IX9q zD_2o?`;ues)*RKnNNDET)Z^pAh(N;QUr|s=c zj#NkZssw4($#AL#VY=?OpPWfgS65#XT>-Ju`JIGyR zwtTD#$reN^Th+T+SLY>z-J4N}{?1F05c3p}gK}?VPpld&YX0(YEAS4|hossA%*X`~ zvm-y%w6tm=+IuS>f8Qka%ukKfXWyEM%U?k<BBZjl4g0P3^Js)>-E zx)jZb=qa+YDD27X3z{i(QU6Y)38eN6>TNAh#9A8x`)c+qbu>#|f3Swf6v;1d)XcMO zA|un{b-CwWm#q#E_}tuuuysUt1}TIXP?!6ioIbb)dELQTeX^?m{kgR~mO1G#pB!-m zQ!nC|>7qIOG~d|w+evagzDs_SO`?m^&5?ur2Aq%#j#|ABy9Z?3YNE%mi-m?XTRVJtp;@G`rlk*E3$M~#M|7a zT8{^6^*01ZmU~A8%PK-d9|!hkWl9gD4_;p-&hR*gq2?5)hs#Ffrgo*M>uT)zQ1hvB ztT@!@J!U-~5ShAd^d;~VbBW?BM(SCy+II|LVz1W@wglOL} zO-2Mm3DL2jxq;$?R^k%B?~i9xKQS%p$o2T%Q{st+9+eYH_=!Q6E^2D(3Fy-Y8=iupf9w^OwR2hIt3*t1fmv7mHfa+~xdx9>j4=P}TC-+S zJEP*m)R`a)IykhAG`0^G*1j#vMb|&Nfm_E-0MPQR=ycnE+`I~Hv{{DBw&47po}$LV zvruwi?#CPWfV5-)7!oAD(qKeNI9G5>({O4C%9FOv7wf93R8_o!-A_S7`QWkto^)#| zxjfj^ZVF&bm-CR{8c2uEySauA4G2j^gDlMM-)zv^F2ik3S8$=#;dX8_3iN~VPF#h@rJq>kyFv}IPGoetqtZ0=nz1Upsd#M@3{k{w?daO=@NQ#)Plt`exTEvu#7KZox%{tHWP5=c^ix*bA!aYJsAt zQ-Wz~x>dPv3Yg<*Af#Z?3-p2aZ&UqeG;$3ht#AkA<{fsK2ETpi0Dz(WCT!nMERd1i z0f%HIzU_g(g8OyV?^IR;?S#~~n}xhEVvznfefgWR|EVw^TaS0Us9%{ENK)m!rWt(x zN3IjwtKA2VEQNv5hrEb?dj1C_6SM-)F@0PUvrr-2dz^|Ds*~mtD!jcW(XW1IOPVRSx>WwC3vj ztj_i+8^`n6+;#RyrlJ~L8ul7l*NKmU1{m4gbe6cgUwHqwqJf`D!X4!r*Kav2bklMh zo)0nmMYGa$ZNYt#n!CK2Yk8`?t6IOK71_EzRnDWRIHa$+mFmIbmOIceSUSRaX61M1 z`ZpPEC;K0#xZiX9=3MWlmchr9{Iu8?r80l|{I=#x8iSE@1ES*alHJ(h$-&$%))5TAm)Sk^BZ;mX4R+ECYv#TTuvrTcDP7jUaqnXNP zc?GE_V8G2>Wt2%*wCELS3NPi;E3z-L2JJ$+wbR&HUGB$`gP8swQ4iZCMXwJYKX9&v z590q{%2NMDJkxjy?uH*8{!_n%hb~Ag-v*N~;*%CJP$X-oX{2M^mEr>>jT z;AyKx{s?(#D9;mq^5!sn4vIKEGK&FAMd;8JF_9Jb9%8H@^bsnCwhArhzP$b?KJKxlb9IDWi@v$QzP7zE46db zOl{rT<$P^I_u?Ww5C6WAZY9SI&OF)rfm2Rc$o}6C1qaRU6Ta|A)N95G{=x8{Yn1Hk z1nS_xSrbs|m&)?HYmGiC5|0HtG9#Bqd<*%y z>AIWW-?Nw^Tlq6w`BN!`JHx)@RxAGEqb}`Xn_5w!ufohP|6Nwvv+(y>{7oG#Ma7=` zY;4=m=t?&;17XNkT4SaBhZPy%U?Eeu={UewgGjop~ z9D)P}2Iu($1M|;F?%kcvdfwebkBy&lLeKud^}9`r|66Ex(@!G&$?aFHzk?XE22g(g zn`$K^TcZ9Wv;hvwO8(&`gQ_=hV&Z}a^3ac7)>|<6(6{r*|1yVvx#%Y^SHmbzUdPL@ zi)|h|-1s3(I(&ZrJ^I7D-f4-*j~!j|kSFi`pY27PMCgAs*Oag`^rxF1mDqSZ0%t^u zhqTtCv4cyH9XmcB$v&frv8b_9cD z)r%gbGs$}Rl6xU#dOj3wm8WmL7CKQACb>v;?}=pmr})!3G9#pRu3}AY16?Sz@Relz zEOu#a4B-x{<)zrJKktajt)Wj*Wk|W&bFuNFgKSPG5g^;`}t4>g{-@&*{Z7GC$ zFtR}Q9b&)bMm2IP-r489Be0UMfuRuU!wc#lY?0kR5LFvO-cOoac;bl z@$Yojf?t`aoz=f|BIhdI#S^!fsMgO?)kgjQ?h)qxU|n}EUcBfGvg>eY(JfwqjyJUf z$XY+`8R&bi-51n~zphMpD4r@bCV8|qP4#432(jVlEgQXn(joG2xV>mgZAHx;KPfZs zSLIm2_XsfIZoGL|Kc?=3-1GsJ*A=<@3Dm5-b?Mi)Kcv-jUDygCk{|576IMs7opWD2 z+wzLPk8}9&TY1B`7hpj+?M?^{;Pon>AELDeQ9oV7oFN|et=1GBTqNt##>k~hmzaeX z(2;yb2f44pFwvlk5Uq&)G&-|ypV6jn-`XO?Wpi$o==gNP7sBLPePArnkfAA6?H;I+ zHqzI(tcXnNk{o+2TQZcK|H3}}=&k+QL3(NRcRo*3-Y>9;lGz^QFfV{VsPm72A_7IN zZ#=486q;ooB!@Q{zF1#VnzDbF@2~%qB7YDHrom5ia%U~GPxy`|P$J;<6-N<1Cyn%Sr#8ZU80mtc*@)H69~#>x0;Z4|Pzvo}TL ztZGN{TT}`Xyg!D`OlzQUefbeM<7fdZC@kWN4qHJHtK!G8cda3<7dmxhFD~IW1w**l z-FQctV-f>J`XT;Hi){tcLkjtZyv%55UuDu~c4T5yEAM0Oy6qHUc|K11fa%*!0mQA~ zj;~Nq8J~kwgtJ#X^2F*!ZJu5phRI(ehbk+ITVJa)nRSt3xK3BY-$KWba#{t>_Byj3 zI(SQjqUg!JCn;y#5nX2St;fXP=+L5PW7FWTGx2JJx1!{PTE-S|8BI~w&1}1rLg}tJ z%W>uK1b;OdL|zw-^EhbW$J<2P60`mi7f@#Iwj790YUQA-iD`G{;sZ_L)xi!xz_JY0HppSU6z|iWAvn#K ze}}LVFvVNWj#L6GqsmYM|LEs&mr=c9NMTv$Y6%$InM9wiD?p0X61y*h(>^2D>IoXB z3U%@)DW({Mycl{7BY7u|LN_}VskemTP0)UuG!|Iu(u2;*jrTwW56bbtJbplUOaRRuAbq=D^WnomT%g`|}DHlzWD$+djMx zFH<$UmejEk*YUiy;QE4;EItcm)RVa`ZPa;r$?o39=9f3sJTY6lPm!hOta^tSpXd}4 z=g{||BiMYl?igsBQRo%yee?ig-G6z8=?i(_f!L?E*Yi5X-q07$L|kWt-AyyX=BclY zC8I)y*hmpo&8k_b^+{Ja6v=+s_gs1TaVW!U)+Kymkl4~Yc&Y7!!qp}4s_tWq6Bhe* zG9NVcIN&`Nz|npZa132?U7ff9rFrP;!mr67;$_d36OdKgYk zno&WhX%|0ip>bZQHZz|j_F`?p>}vCXE;qJ)541O;?-b(3sCg<%tOgtbVoZsXSj#SF zSzwI2ZnpGFZbf3)bH84ZCBNI6@HQQBrQ5MSpd4)>Opg#I8@%x& zpW#XOr`~p)nltP;UiGlLgDo_uuikKcXR7b6rKU_wp)YH! zp}zjC&sL0ZPR0ac?c;mQ5-!2MQ(-@9Mg;#(O^u@$mvq)kq@XIEZdA;MaBlF#IEG4Z zQOm!3NQb4Pj#J%_c#-1)I^?e zTFUcm#8PF*F?*|OdMg`gTGSl*QX_C!aMrm+ zPY}nQ>~sdbF0y%VFh{jf5-{j>rXOXi+#%+$jzCe1bvTe0bGRazq3_V0Q|_=CRavI( zK^nWP$+po1dPJ$rd6s#*EJtwZrTj9Dab-PJ#6-n_x(VCo(BU@v!gQ*|Rl{m^sR`lo z#aJB5G1Z39Gbk-{f~<8aA||=S;DiI_@~K~kD_meh9-BjR15O0Sogw`8Rjd9kz_*}T z2+k|)n0|V0m)OrL>R7?xiy)0%?|xpEomSH8dRo6%h^%6UMVyA%UrOu|g-&Z~VaB*F zS)NOei{IfLYdJyVlY0;)ZKa9vvp4smSRpMV(AfsA?#8=&g+A`URI5RP$y!8Jg|Zca zb>~f%z*LJM%ZJnzqEBM01A3AGP||UJ-Ha7`b%Sf&4v3|3U-UkGR9Rilu|O{)Mv<8f z&QiuIHHwzFKq{8A@Gi&$=qOo-Vs3F=&$z@_cG@;)DB<8S09BGAQk&$V1|0H~n9s)2jX)qn+c*YtO2T;%ygeBMQyCH|EQCAl(!W#*qc9 zjGWb02U5NcijFx3lqa4VGpUKiv8NA6Vo9|ak4>-RDq=1lJdgWS+35wn58v);m7*2T z#w3B7^67TALhTHirkfP}+HKFFt|5XHtb_OZ3rwk2Q0)&a2x$o{mS|T=hsW)DT_5i} zr(y}mt>(UygWUsI8fbgz!>kUa%iGJAR|OJUqZpW5qWCp@b(Jza)l!;wE>rFhjp}zu zQ@zez4j6^R1a4%%J$)yI=$)eG$(;4OYR}&H)rBRk3mE5J$MxfKc z}056)D`{x`2zknob+Q z$3)o+_q9MD%v!EM^XMl^WFCQ^?jHpESB^Qs{uk(%U_*lVNv$9e%J_U%F?Y2r8D{pe zM^s^Z79@{9FJZJA#^LOsl;4t?s?2dU;pwd}Oj10F@l&vK&JP1tc~FJ^*~J*9?qLlT z@toLE^o2l)jXT|I*q!Z!)y}pi*`Znjjkk!ADZ+pAB9xJpr{06LNmW=-@DP57fR3D~)(qRj_$nkr*l{ z+-vE9w9rl4tIn4 zu_T#`AW?kQy(OaXj#Htlnml#Zn_ZGvkh#iXsRAdg4{Ze=xk5Z`F(WqT?5?^f?7VOl zbpRpPDq>Nx>M8oDeFkTsvtaYUiIDbjeoH>&F;Vq2wOaK@brfqjVcM!$zDN@p=MRo( z1G~dqI0b3jNKp~8NGHr~8iAx<#)W6J5V;|4T9MTC8XtTr6y4{x)QEsLp46mtnPf*Cd=w5ytM)O`-|&G}}9Pt?2o#lpKt0*h-zmyVm$| zRN<=q{Gg1{6=xvSvdqQpxBz<6_AiSSX+AG8nRJ$B28K`NFmZIT2fbwQQfRZ59-A}z zUm3F}k4Lq-q#2bkK!9l9NwUi3+&I!rpStvn5YqU{UyL$7bwMSrJ!=_z=t8 z6RsYpQh*cfTGx#qIc&-M=q}LR$sK0KC*d5cD}zp$8}pm?Kq(-(Q0^6jz>vV|0)BRG@I=5pK?;ze;w=)}^6 zry0(LOR_}A3W#;6G7w@^{_#Q^&6oz}U zHt5p8{usmYHunVC3r&%;dTz4q1v%3$s^3Xr?3U;yqHikalFQ!nr6mh z#YZa2Pv;E7>q%9_6Pzy2bs6WBgKd<3(mCg@H%1&C`L(fnIBVJ{GyU93jZx?6)3|r< zy2N*K+MRj2yKaOPMQ>c|C_WjZY>M|E;Gb8{MGkXT*N%$^n4d*kA#|tpK(o0jVix{1 ztLM`smU~>t6y_XSkY?8x?*NTEv66}#qPz|`BPgUh-xsc>br|Q{#B-S59rq>u4b#7Az^KZdloUB@5zHYsp|z{B%;oJbW}^n3H}bfWvJ5>X}2rY9X32Ne|wm*6N>3N7TP zu^@;7s!h|YAT_mtv0`RWfw*iqmGvoZEaKTA9H&N!?#2;z>-CtfGMI>~gRI{1-%v`2@lVNz}WwN&qx8TX8r z63^C!2~W9xJ*Buj_Xevg+dGgN4m{LE*hL)o!$Ib%d9?K9f6x>?i$@c!t-%A38Cn<6$&GL83MP+x>w#<4mBjfCr{XE`Da(TnQGM972 zky3W#N5WPyo0>Z%^_y?y__J>*C^W8Cu6hAiaT|D!n{%+8Vc2za<*9kKpf}ZA=@BYo zik!Mu5mn0Q)XtTJ)&ShxuWZol!^o1{w@{P*%mbIUF00aDZ19e$Gsq~-eXx`amKrr~ zPoknwq6FxJPvk)jSsJg8(!$+cy-Wo7COmy<$zKk+rn~c2S zaQ{O4SjURp7(#YgMFvL&K>Q5)o%jloR@_;f_wmXR6tR;w!U!k6flkaXD`j#gyoXV2 zU#F*4l!Op%_*tlok3;(n*8;wF3<$llOtY7uSL=do_I1lKI~43p(fj0U6;1`=Gn}5~ zKWyQ-bP0+-4^HJrfc`rNxBIs2=ihC(zKewI{@RazfoO#vs(59EwjcP`Mag$R zn9`v!E)aepGoMy1r4aM+tR`jeh7Uj-rX)k-T;G%&fN;{CJSDZy4 z5buRGH&!9rJ$iV5c-rUEsX#3+(#BWVTxU|oseRQ6c*9g5RT$Ki23Rz}sljTVVvg_q z1iBUkZO4F4LsU77DX|;cH_trpcHpp2C#|e{7+Al=Hh`Gb3z2Q^8fC>N%tA!6ymDeM5OFp0AaB#dL z^eCWq6Ni0ya^C4GasS1F9G)vN7Grx@`W{mjZtK1;4bo%1>8qi$ajX$K(QC0DM@*pQ z{$7%=g%4Mw^_EXvUFo~CwD7wWZ!=XjeACBAMAFq<)!51FOjb9C9GrNNdYc1BvBzoo zM^#JUjg_ky_k4(xnAg znd<(yZTp0%m2G=3n}=ToH_)Hj z58i}UAGn^77LB6lCKNRbPY+JcnFO(M~!9UOX|-P$5AG$J(l zB+;rZDczjTst9Xu_?)^^-Q6`4`N=xb@T;x7b=3DkVZMgTUrwL57CW0 zKcIbR&QjANKBQ}S_0;nzrL5M60Ufaqt)`2P5pQ24#6Nzve?+&+CO{;f9vR_Z!+(dg zE1z0s(aSFv|ArsboK)fq@4kZE?EJfMnsqUCLuU@i=3XTv=u(H@_B9N1e(2S4@?`-) z#2YcH7Tby=K(iu0C^Wx?#Ai_`Ixa~;UAHrht30+)Gky7|K(t|H04uTE?@xPkWjaxX zIMcNX;%A%KC0CIJIgV3YaBYKVLxj7J_DT3mm|0h>8lUUR>`Bm<2s%Fyi^xc*LsZ8? zFjL~jU%94HDAJNqI)|;pS_O7iJ;-aj)|xO)4cZ8jQXpG0M7Pd&jkwQua;M6*sp%@Z zK(~tSC#7}~gCHse`iM~1-pbwD*+kSA!mx|+zASNq_^biz@(hFW6*Z2#0Gfl2JA#&9 z`qKM$BLG^C@~M4NG{UzF6GiMc=bSRm#_NU(o+W5-r6qSaX!|zcvurLV2*l%ka@AaT zI@1obd;uOe? zHujz9?>!YL(yO)?dI@@5AhGb_9`22|#PJGTx{(v!!)Ae2Cmn(67!PZ=VzcjLv?Iwf z7o?Xx<>1^^>w8Y+)l~niM)w{?me|K5zsevrN^kMhJdl>SDS6d9o1?~%^2rD)Gv9S) zus>r(?070BUAZz3kH1aMcu+Z|>bLDsSL-d_t*BY-Q+Xg`*MUdhYXm1Qt3XT{M4mHl zjhS(vQGVP}Zyhz}@(j!24lSeNM(3BNTwPywLnwG;4qPydME{5DyZ1>z^IClrl-JfvmQIeox^m8+Y zGCPiQ$8Ld!h_6F9=Qs=A8WhM2JM>yF9TvIYF!LD0hez7sTZH*Is(i7Nm{QYLl1rSh z9kwwp^K-?0XiaxSrmF5mScJ>7RMWRO!H@>M%MqL8H(lTx=F0)4z+3$yZ4-UKOf2cC8Cz>Vs>y?k6zN`sN%#Wt$w6Q;mF)8 z_eT2u^>*AO%p>w{9uF&IySq8S3_CrYy`KUjSN^1V`$yucds7P;ujM^x9p9n z+94iYG)j^6zGV@d#eao6n@NJSl5LRV9~8tY4!;7qFL2alvf1~-k|Q4DzBF#ew~tM) zD*S;trWntkU#6r|1ry^_FS>Il7P2!n+qe9%9wHzhz{gjfXM1@kcYJ<`_4Z)&dUO=L z&AVJ9>k_|3@g@H1jv3O9rKyF0tpGO&~Cg_e~m57GkuPeoJcML1m z(iSUTWW0DGh-Bry7;qeAoOHSNqi@x1CFGZU)1Xp6vo|`Am(B@$R&FRl^hJ6<&oL1y zRMPZRkRtA*pZu4T*PogBiVrYQ$W_6%)jBHBk%Xu%J&{K`Im2oR#htGoczDUjybURw zu?nAUre9SG=1sZvN?J!2t{lvBdK^CbRc4a*kgH4Eq>osCev3|t?L>NCeYDcEw3cn5 zHySTAjPK%OHb2k5J_kuAXpUMGbqb_Rlh%X6KEYWH^S$woS59%enaF-|!*gRee%c-o?lh-Nn;^c-(|!70XPf^aSp+OE`T58#})AmIL0{PvU!fO+=rrSrecjA+^zxu5NtFPZ#oIB`l)nNV}7z)yx zLn+Oy*_8(m$3?Wz`aa7D$y_K@#c(elQj>qnDH!q^)9+NuOIewck|Xfo^}9V8#ppQR z%zI{BEA>A1mIJ5S5Z~3;Z>*2dggw!rYzeBxfoiK(PM*96`g^rtVV%#jO=c(5{ zl(7nR8)jG6q@J(DCr2b77~#bFK2+;W9=IiGm^)4V%24-L(v=EuQgfB;byu=vX|T+g(rug54uz*@JPeWj>a4aPtK&EX^Eq)eb&d! zBD@sXcOoz_kVQ<$xab+;1;R^f>|LN~;R`5#fh&vS6{vXMOrzVGdQ=C{GU ztzU2N&gh-sCsTz0Duihl*1>+>H;+BxA1vBw;Ig&}ID4VD2Ph>~cum+rAKc%@0FR;N zx-#gtaXmC*-;I{cY!5)4;$9ywGtv|O``Fw0LXLN%Tr-Mch|8PQWHPbho31YF7QK)I z#_Z22e!tPU?szP%m8InsZcK%v)%&jXV`L1*9v<-n26y!I>}F>ui;Kt~GQDM4U?})M zYd+xN7Y;mJ&BFfuHz|gqU3ZTzUAq3vJk6| literal 0 HcmV?d00001 diff --git a/spec/diagrams/systemScope/017_EmbedWithOkm.png b/spec/diagrams/systemScope/017_EmbedWithOkm.png new file mode 100644 index 0000000000000000000000000000000000000000..bf3ea241f84492ba3a3c4f9ae00fc4624d42f83b GIT binary patch literal 129135 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 literal 0 HcmV?d00001 From 200d9cdf00553aaf8b24716ea33d7e559160876e Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Thu, 16 Nov 2023 11:16:47 +0100 Subject: [PATCH 31/41] Update releases, uuids, ips, tcps; correct intends --- spec/ApplicationPattern.yaml | 498 +++++++++++++++++------------------ 1 file changed, 249 insertions(+), 249 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 6c73b55a..791bc12a 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -85,12 +85,12 @@ paths: update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: new-application-name: 'NewApplicationName' - new-application-release: '2.0.1' + new-application-release: '2.0.2' new-application-protocol: 'HTTP' new-application-address: ip-address: - ipv-4-address: '1.1.3.8' - new-application-port: 3008 + ipv-4-address: '1.1.3.17' + new-application-port: 3017 responses: '204': description: 'Process of embedding a new release initiated' @@ -122,8 +122,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -141,7 +141,7 @@ paths: # individual callbacks to be added here PromptForBequeathingDataCausesRequestForBroadcastingInfoAboutServerReplacement: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -214,12 +214,12 @@ paths: current-application-name: 'RegistryOffice' current-release-number: '1.0.0' future-application-name: 'RegistryOffice' - future-release-number: '2.0.1' + future-release-number: '2.0.2' future-protocol: 'HTTP' future-address: ip-address: - ipv-4-address: '1.1.3.8' - future-port: 3008 + ipv-4-address: '1.1.3.17' + future-port: 3017 responses: '204': description: 'Will broadcast server replacement' @@ -264,7 +264,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' PromptForBequeathingDataCausesRequestForDeregisteringOfOldRelease: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -339,7 +339,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' PromptingNewReleaseForUpdatingServerCausesRequestForBroadcastingInfoAboutBackwardCompatibleUpdateOfOperation: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: > 'This callback belongs to the sequence of actions that have to be done during the bequeath-your-data-and-die process, despite the forwarding gets neither managed nor directly initiated by the /v1/bequeath-your-data-and-die request. After consuming applications have been redirected to the new release, the new release is triggered (this callback) to request the RegistryOffice for broadcasting information about backward compatible replacements of services.' @@ -384,7 +384,7 @@ paths: from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' example: application-name: 'RegistryOffice' - release-number: '2.0.1' + release-number: '2.0.2' old-operation-name: '/v1/register-application' new-operation-name: '/v2/register-application' responses: @@ -473,19 +473,19 @@ paths: minLength: 3 description: > 'If body provided, name of RegistryOffice application - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' registry-office-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'If body provided, release of RegistryOffice application - find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' registration-operation: type: string minLength: 6 description: > 'If body provided, operation for registering - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' registry-office-protocol: type: string enum: @@ -493,7 +493,7 @@ paths: - 'HTTPS' description: > 'If body provided, protocol for addressing the RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' registry-office-address: type: object minProperties: 1 @@ -510,20 +510,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'If body provided, IPv4 address of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'If body provided, domain name of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' registry-office-port: type: integer minimum: 0 maximum: 65535 description: > 'If body provided, port of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' http-address: type: object minProperties: 1 @@ -569,17 +569,17 @@ paths: update [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' example: registry-office-application: 'RegistryOffice' - registry-office-application-release-number: '2.0.1' + registry-office-application-release-number: '2.0.2' registration-operation: '/v1/register-application' registry-office-protocol: 'HTTP' registry-office-address: ip-address: - ipv-4-address: '1.1.3.8' - registry-office-port: 3008 + ipv-4-address: '1.1.3.17' + registry-office-port: 3017 http-address: ip-address: - ipv-4-address: '1.1.3.9' - http-port: 3009 + ipv-4-address: '1.1.3.18' + http-port: 3018 preceding-application-name: 'TypeApprovalRegister' preceding-release-number: '1.0.0' responses: @@ -613,8 +613,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -629,7 +629,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: PromptForRegisteringCausesRegistrationRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -727,7 +727,7 @@ paths: from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' example: application-name: 'TypeApprovalRegister' - release-number: '2.0.1' + release-number: '2.0.2' preceding-application-name: 'TypeApprovalRegister' preceding-release-number: '1.0.0' embedding-operation: '/v1/embed-yourself' @@ -737,8 +737,8 @@ paths: - protocol: 'HTTP' address: ip-address: - ipv-4-address: '1.1.3.9' - port: 3009 + ipv-4-address: '1.1.3.18' + port: 3018 responses: '204': description: 'Application registered' @@ -814,31 +814,31 @@ paths: type: string description: > 'Name of RegistryOffice application - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' registry-office-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of RegistryOffice application - find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' relay-server-replacement-operation: type: string minLength: 6 description: > 'Operation for requesting for broadcasting a new server address - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' relay-operation-update-operation: type: string minLength: 6 description: > 'Operation for requesting for broadcasting a backward compatible replacement of an operation - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' deregistration-operation: type: string minLength: 6 description: > 'Operation for deregistering from the application layer - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' registry-office-protocol: type: string enum: @@ -846,7 +846,7 @@ paths: - 'HTTPS' description: > 'Protocol for addressing RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' registry-office-address: type: object minProperties: 1 @@ -863,20 +863,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' registry-office-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' old-release-protocol: type: string enum: @@ -917,15 +917,15 @@ paths: update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: registry-office-application: 'RegistryOffice' - registry-office-application-release-number: '2.0.1' + registry-office-application-release-number: '2.0.2' relay-server-replacement-operation: '/v1/relay-server-replacement' relay-operation-update-operation: '/v1/relay-operation-update' deregistration-operation: '/v1/deregister-application' registry-office-protocol: 'HTTP' registry-office-address: ip-address: - ipv-4-address: '1.1.3.8' - registry-office-port: 3008 + ipv-4-address: '1.1.3.17' + registry-office-port: 3017 old-release-protocol: 'HTTP' old-release-address: ip-address: @@ -962,8 +962,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -978,7 +978,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: PromptForEmbeddingCausesRequestForBequeathingData: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-or-1-0-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-or-1-0-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1037,7 +1037,7 @@ paths: from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' example: new-application-name: 'OwnApplicationName' - new-application-release: '2.0.1' + new-application-release: '2.0.2' new-application-protocol: 'HTTP' new-application-address: ip-address: @@ -1119,19 +1119,19 @@ paths: type: string description: > 'Name of application that shall record the service requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' service-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the service requests - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' service-log-operation: type: string minLength: 6 description: > 'Operation for recording the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' service-log-protocol: type: string enum: @@ -1139,7 +1139,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' service-log-address: type: object minProperties: 1 @@ -1156,29 +1156,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' service-log-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: service-log-application: 'ExecutionAndTraceLog' - service-log-application-release-number: '2.0.1' + service-log-application-release-number: '2.0.2' service-log-operation: '/v1/record-service-request' service-log-protocol: 'HTTP' service-log-address: ip-address: - ipv-4-address: '1.1.3.10' - service-log-port: 3010 + ipv-4-address: '1.1.3.19' + service-log-port: 3019 responses: '204': description: 'Information about service requests will be send to the new target' @@ -1210,8 +1210,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1226,7 +1226,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: ServiceRequestCausesLoggingRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1276,13 +1276,13 @@ paths: description: 'Response code sent to [originator] after invoking [operation-name] at [application-name]' timestamp: type: string - description: 'Date and time when [application-name] sent response to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Date and time when [application-name] sent response to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' stringified-body: type: string - description: 'Stringified body of the request addressed from [originator] to [application-name]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Stringified body of the request addressed from [originator] to [application-name]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' stringified-response: type: string - description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' url: type: string description: 'Complete URL that has been addressed by the request; only to be provided, if the client is sending the record to EaTL, because the server could not be reached' @@ -1401,19 +1401,19 @@ paths: type: string description: > 'Name of application that shall record the OaM requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the OaM request - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-log-operation: type: string minLength: 6 description: > 'Operation for recording the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' oam-log-protocol: type: string enum: @@ -1421,7 +1421,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' oam-log-address: type: object minProperties: 1 @@ -1438,29 +1438,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' oam-log-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: oam-log-application: 'OamLog' - oam-log-application-release-number: '2.0.1' + oam-log-application-release-number: '2.0.2' oam-log-operation: '/v1/record-oam-request' oam-log-protocol: 'HTTP' oam-log-address: ip-address: - ipv-4-address: '1.1.3.11' - oam-log-port: 3011 + ipv-4-address: '1.1.3.20' + oam-log-port: 3020 responses: '204': description: 'Information about OaM requests will be send to the new target' @@ -1492,8 +1492,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1508,7 +1508,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: OamRequestCausesLoggingRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1689,8 +1689,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1735,19 +1735,19 @@ paths: type: string description: > 'Name of application that shall approve the OaM requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-approval-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall approve the OaM requests - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-approval-operation: type: string minLength: 6 description: > 'Operation for approving the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' oam-approval-protocol: type: string enum: @@ -1755,7 +1755,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' oam-approval-address: type: object minProperties: 1 @@ -1772,29 +1772,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' oam-approval-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: oam-approval-application: 'AdministratorAdministration' - oam-approval-application-release-number: '2.0.1' + oam-approval-application-release-number: '2.0.2' oam-approval-operation: '/v1/approve-oam-request' oam-approval-protocol: 'HTTP' oam-approval-address: ip-address: - ipv-4-address: '1.1.3.12' - oam-approval-port: 3012 + ipv-4-address: '1.1.3.21' + oam-approval-port: 3021 responses: '204': description: 'Informed about where to inquire for approval of OaM requests' @@ -1826,8 +1826,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1842,7 +1842,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: OamRequestCausesInquiryForAuthentication: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -2054,12 +2054,12 @@ paths: current-application-name: 'RegistryOffice' current-release-number: '1.0.0' future-application-name: 'RegistryOffice' - future-release-number: '2.0.1' + future-release-number: '2.0.2' future-protocol: 'HTTP' future-address: ip-address: - ipv-4-address: '1.1.3.8' - future-port: 3008 + ipv-4-address: '1.1.3.17' + future-port: 3017 responses: '204': description: 'Will update connection information' @@ -2091,8 +2091,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2144,10 +2144,10 @@ paths: items: $ref: '#/components/schemas/logicalTerminationPoint' example: - - uuid: 'ro-2-0-1-op-s-bm-000' + - uuid: 'ro-2-0-2-op-s-bm-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-1-http-s-000'] + server-ltp: ['ro-2-0-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2156,9 +2156,9 @@ paths: operation-name: '/v1/register-yourself' operation-server-interface-configuration: life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' - - uuid: 'ro-2-0-1-http-s-000' + - uuid: 'ro-2-0-2-http-s-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: ['ro-2-0-1-op-s-bm-000'] + client-ltp: ['ro-2-0-2-op-s-bm-000'] server-ltp: [] layer-protocol: - local-id: '0' @@ -2166,7 +2166,7 @@ paths: http-server-interface-1-0:http-server-interface-pac: http-server-interface-capability: application-name: 'RegistryOffice' - release-number: '2.0.1' + release-number: '2.0.2' data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' forwarding-domain: type: array @@ -2175,9 +2175,9 @@ paths: items: $ref: '#/components/schemas/forwardingDomain' example: - - uuid: 'ro-2-0-1-op-fd-000' + - uuid: 'ro-2-0-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-1-op-fc-bm-000' + - uuid: 'ro-2-0-2-op-fc-bm-000' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2186,11 +2186,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-000' + logical-termination-point: 'ro-2-0-2-op-s-bm-000' - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-1-op-s-bm-000' - - uuid: 'ro-2-0-1-op-fc-bm-001' + logical-termination-point: 'ro-2-0-2-op-s-bm-000' + - uuid: 'ro-2-0-2-op-fc-bm-001' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2199,10 +2199,10 @@ paths: fc-port: - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-1-op-s-bm-001' + logical-termination-point: 'ro-2-0-2-op-s-bm-001' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bm-ro-2-0-1-000' + logical-termination-point: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' headers: x-correlator: schema: @@ -2231,8 +2231,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2281,43 +2281,43 @@ paths: type: string description: > 'Name of application that shall document the application layer topology - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' topology-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall document the application layer topology - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-1-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' topology-operation-ltp-update: type: string minLength: 6 description: > 'Operation for updating an LTP - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-ltp-deletion: type: string minLength: 6 description: > 'Operation for deleting an LTP and its dependents like FC port and Link (if applicable) - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-update: type: string minLength: 6 description: > 'Operation for updating a ForwardingConstruct instance - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-port-update: type: string minLength: 6 description: > 'Operation for updating an FC port - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-port-deletion: type: string minLength: 6 description: > 'Operation for deleting an FC port - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-application-protocol: type: string enum: @@ -2325,7 +2325,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addresing the application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' topology-application-address: type: object minProperties: 1 @@ -2342,23 +2342,23 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' topology-application-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: topology-application: 'ApplicationLayerTopology' - topology-application-release-number: '2.0.1' + topology-application-release-number: '2.0.2' topology-operation-ltp-update: '/v1/update-ltp' topology-operation-ltp-deletion: '/v1/delete-ltp-and-dependents' topology-operation-fc-update: '/v1/update-fc' @@ -2367,8 +2367,8 @@ paths: topology-application-protocol: 'HTTP' topology-application-address: ip-address: - ipv-4-address: '1.1.3.13' - topology-application-port: 3013 + ipv-4-address: '1.1.3.22' + topology-application-port: 3022 responses: '200': description: 'Client side for sending information about topology changes has been updated and current data tree has been provided' @@ -2397,10 +2397,10 @@ paths: items: $ref: '#/components/schemas/logicalTerminationPoint' example: - - uuid: 'ro-2-0-1-op-s-bm-000' + - uuid: 'ro-2-0-2-op-s-bm-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-1-http-s-000'] + server-ltp: ['ro-2-0-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2409,9 +2409,9 @@ paths: operation-name: '/v1/register-yourself' operation-server-interface-configuration: life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' - - uuid: 'ro-2-0-1-http-s-000' + - uuid: 'ro-2-0-2-http-s-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: ['ro-2-0-1-op-s-bm-000'] + client-ltp: ['ro-2-0-2-op-s-bm-000'] server-ltp: [] layer-protocol: - local-id: '0' @@ -2419,7 +2419,7 @@ paths: http-server-interface-1-0:http-server-interface-pac: http-server-interface-capability: application-name: 'RegistryOffice' - release-number: '2.0.1' + release-number: '2.0.2' data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' forwarding-domain: type: array @@ -2428,9 +2428,9 @@ paths: items: $ref: '#/components/schemas/forwardingDomain' example: - - uuid: 'ro-2-0-1-op-fd-000' + - uuid: 'ro-2-0-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-1-op-fc-bm-000' + - uuid: 'ro-2-0-2-op-fc-bm-000' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2439,11 +2439,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-000' + logical-termination-point: 'ro-2-0-2-op-s-bm-000' - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-1-op-s-bm-000' - - uuid: 'ro-2-0-1-op-fc-bm-001' + logical-termination-point: 'ro-2-0-2-op-s-bm-000' + - uuid: 'ro-2-0-2-op-fc-bm-001' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2452,10 +2452,10 @@ paths: fc-port: - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-1-op-s-bm-001' + logical-termination-point: 'ro-2-0-2-op-s-bm-001' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bm-ro-2-0-1-000' + logical-termination-point: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' headers: x-correlator: schema: @@ -2484,8 +2484,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2500,7 +2500,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: ServiceRequestCausesLtpUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes the creation or change of an LTP' post: parameters: @@ -2516,10 +2516,10 @@ paths: schema: $ref: '#/components/schemas/logicalTerminationPoint' example: - uuid: 'ro-2-0-1-op-s-bm-002' + uuid: 'ro-2-0-2-op-s-bm-002' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-1-http-s-000'] + server-ltp: ['ro-2-0-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2572,7 +2572,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesLtpDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an LTP being deleted' post: parameters: @@ -2593,7 +2593,7 @@ paths: uuid: type: string example: - uuid: 'ro-2-0-1-op-s-bm-002' + uuid: 'ro-2-0-2-op-s-bm-002' responses: '204': description: 'LTP and its dependents will be deleted' @@ -2638,7 +2638,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes the creation or change of an FC port' post: parameters: @@ -2688,7 +2688,7 @@ paths: logical-termination-point: type: string example: - uuid: 'ro-2-0-1-op-fc-bm-003' + uuid: 'ro-2-0-2-op-fc-bm-003' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2697,10 +2697,10 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-003' + logical-termination-point: 'ro-2-0-2-op-s-bm-003' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bs-ol-2-0-1-000' + logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' responses: '204': description: 'FC will be updated' @@ -2745,7 +2745,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcPortUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an FC port being updated' post: parameters: @@ -2780,11 +2780,11 @@ paths: logical-termination-point: type: string example: - fc-uuid: 'ro-2-0-1-op-fc-bm-003' + fc-uuid: 'ro-2-0-2-op-fc-bm-003' fc-port: local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-003' + logical-termination-point: 'ro-2-0-2-op-s-bm-003' responses: '204': description: 'FC port will be updated' @@ -2829,7 +2829,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcPortDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an FC port being deleted' post: parameters: @@ -2853,7 +2853,7 @@ paths: fc-port-local-id: type: string example: - fc-uuid: 'ro-2-0-1-op-fc-bm-003' + fc-uuid: 'ro-2-0-2-op-fc-bm-003' fc-port-local-id: '202' responses: '204': @@ -2899,7 +2899,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesLtpUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes the creation or change of an LTP' post: parameters: @@ -2915,10 +2915,10 @@ paths: schema: $ref: '#/components/schemas/logicalTerminationPoint' example: - uuid: 'ro-2-0-1-op-s-bm-002' + uuid: 'ro-2-0-2-op-s-bm-002' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-1-http-s-000'] + server-ltp: ['ro-2-0-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2971,7 +2971,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesLtpDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an LTP being deleted' post: parameters: @@ -2992,7 +2992,7 @@ paths: uuid: type: string example: - uuid: 'ro-2-0-1-op-s-bm-002' + uuid: 'ro-2-0-2-op-s-bm-002' responses: '204': description: 'LTP will be deleted' @@ -3037,7 +3037,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes the creation or change of an FC port' post: parameters: @@ -3087,7 +3087,7 @@ paths: logical-termination-point: type: string example: - uuid: 'ro-2-0-1-op-fc-bm-003' + uuid: 'ro-2-0-2-op-fc-bm-003' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -3096,10 +3096,10 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-003' + logical-termination-point: 'ro-2-0-2-op-s-bm-003' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bs-ol-2-0-1-000' + logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' responses: '204': description: 'FC port will be updated' @@ -3144,7 +3144,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcPortUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an FC port being updated' post: parameters: @@ -3183,11 +3183,11 @@ paths: logical-termination-point: type: string example: - fc-uuid: 'ro-2-0-1-op-fc-bm-003' + fc-uuid: 'ro-2-0-2-op-fc-bm-003' fc-port: local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-003' + logical-termination-point: 'ro-2-0-2-op-s-bm-003' responses: '204': description: 'FC port will be updated' @@ -3232,7 +3232,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcPortDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-1-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an FC port being deleted' post: parameters: @@ -3256,7 +3256,7 @@ paths: fc-port-local-id: type: string example: - fc-uuid: 'ro-2-0-1-op-fc-is-000' + fc-uuid: 'ro-2-0-2-op-fc-is-000' fc-port-local-id: '202' responses: '204': @@ -3338,7 +3338,7 @@ paths: 'Future operation key update [/core-model-1-4:control-construct/logical-termination-point={operation-uuid}/layer-protocol=0/operation-*-interface-1-0:operation-*-interface-pac/operation-*-interface-configuration/operation-key]' example: - operation-uuid: 'ro-2-0-1-op-s-is-003' + operation-uuid: 'ro-2-0-2-op-s-is-003' new-operation-key: 'Operation key not yet provided.' responses: '204': @@ -3371,8 +3371,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3436,7 +3436,7 @@ paths: update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' example: application-name: 'RegistryOffice' - release-number: '2.0.1' + release-number: '2.0.2' old-operation-name: '/v1/register-application' new-operation-name: '/v2/register-application' responses: @@ -3470,8 +3470,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3541,8 +3541,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '403': @@ -3644,8 +3644,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3728,8 +3728,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3806,8 +3806,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -3869,8 +3869,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4177,7 +4177,7 @@ paths: string-value: type: string example: - - uuid: 'ro-2-0-1-integer-p-000' + - uuid: 'ro-2-0-2-integer-p-000' profile-name: 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' integer-profile-1-0:integer-profile-pac: integer-profile-capability: @@ -4892,10 +4892,10 @@ paths: remote-port: type: integer example: - - uuid: 'ro-2-0-1-op-c-bm-ro-2-0-1-000' + - uuid: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' client-ltp: [] - server-ltp: ['ro-2-0-1-http-c-ro-2-0-1-000'] + server-ltp: ['ro-2-0-2-http-c-ro-2-0-2-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -4906,17 +4906,17 @@ paths: operation-client-interface-status: operational-state: 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' life-cycle-state: 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' - - uuid: 'ro-2-0-1-http-c-ro-2-0-1-000' + - uuid: 'ro-2-0-2-http-c-ro-2-0-2-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' - client-ltp: ['ro-2-0-1-op-c-bm-ro-2-0-1-000'] - server-ltp: ['ro-2-0-1-tcp-c-ro-2-0-1-000'] + client-ltp: ['ro-2-0-2-op-c-bm-ro-2-0-2-000'] + server-ltp: ['ro-2-0-2-tcp-c-ro-2-0-2-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' http-client-interface-1-0:http-client-interface-pac: http-client-interface-configuration: application-name: 'RegistryOffice' - release-number: '2.0.1' + release-number: '2.0.2' forwarding-domain: type: array minItems: 1 @@ -4972,9 +4972,9 @@ paths: logical-termination-point: type: string example: - - uuid: 'ro-2-0-1-op-fd-000' + - uuid: 'ro-2-0-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-1-op-fc-bm-003' + - uuid: 'ro-2-0-2-op-fc-bm-003' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -4983,11 +4983,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-003' + logical-termination-point: 'ro-2-0-2-op-s-bm-003' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bs-ol-2-0-1-000' - - uuid: 'ro-2-0-1-op-fc-bm-004' + logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' + - uuid: 'ro-2-0-2-op-fc-bm-004' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -4996,10 +4996,10 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-1-op-s-bm-005' + logical-termination-point: 'ro-2-0-2-op-s-bm-005' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-1-op-c-bs-aa-2-0-1-000' + logical-termination-point: 'ro-2-0-2-op-c-bs-aa-2-0-2-000' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -5021,7 +5021,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([a-z]+)-p-([0-9,a-f]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getProfileInstance summary: 'Returns entire instance of Profile' @@ -5291,7 +5291,7 @@ paths: type: string example: core-model-1-4:profile: - uuid: 'ro-2-0-1-action-p-000' + uuid: 'ro-2-0-2-action-p-000' profile-name: 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' action-profile-1-0:action-profile-pac: action-profile-capability: @@ -5327,7 +5327,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getActionProfileOperationName summary: 'Returns the name of the Operation' @@ -5368,7 +5368,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getActionProfileLabel summary: 'Returns the Label of the Action' @@ -5409,7 +5409,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getActionProfileInputValueListt summary: 'Returns the list of input values' @@ -5461,7 +5461,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getActionProfileDisplayInNewBrowserWindow summary: 'Returns whether to be presented in new browser window' @@ -5502,7 +5502,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-1-action-p-000' + example: 'ro-2-0-2-action-p-000' get: operationId: getActionProfileConsequentOperationReference summary: 'Returns the reference on the consequent operation' @@ -5578,7 +5578,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-1-response-p-000' + example: 'ro-2-0-2-response-p-000' get: operationId: getGenericResponseProfileOperationName summary: 'Returns the name of the Operation' @@ -5619,7 +5619,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-1-response-p-000' + example: 'ro-2-0-2-response-p-000' get: operationId: getGenericResponseProfileFieldName summary: 'Returns the name of the Field' @@ -5670,7 +5670,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-1-response-p-000' + example: 'ro-2-0-2-response-p-000' get: operationId: getGenericResponseProfileDescription summary: 'Returns the Description of the Field' @@ -5711,7 +5711,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-1-response-p-000' + example: 'ro-2-0-2-response-p-000' get: operationId: getGenericResponseProfileDatatype summary: 'Returns the Datatype of the Field' @@ -5752,7 +5752,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-1-response-p-000' + example: 'ro-2-0-2-response-p-000' get: operationId: getGenericResponseProfileValue summary: 'Returns the Value of the Field' @@ -5848,7 +5848,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' + example: 'ro-2-0-2-file-p-000' get: operationId: getFileProfileFileIdentifier summary: 'Returns the identifier of the file' @@ -5889,7 +5889,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' + example: 'ro-2-0-2-file-p-000' get: operationId: getFileProfileFileDescription summary: 'Returns the description of the file' @@ -5930,7 +5930,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' + example: 'ro-2-0-2-file-p-000' get: operationId: getFileProfileFileName summary: 'Returns the name of the file' @@ -6006,7 +6006,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-1-file-p-000' + example: 'ro-2-0-2-file-p-000' get: operationId: getFileProfileOperation summary: 'Returns the allowed operation on the file' @@ -6092,7 +6092,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'ro-2-0-2-integer-p-000' get: operationId: getIntegerProfileIntegerName summary: 'Returns the name of the Integer' @@ -6133,7 +6133,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'ro-2-0-2-integer-p-000' get: operationId: getIntegerProfileUnit summary: 'Returns the unit of the Integer' @@ -6174,7 +6174,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'ro-2-0-2-integer-p-000' get: operationId: getIntegerProfileMinimum summary: 'Returns the minimum value of the Integer' @@ -6215,7 +6215,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'ro-2-0-2-integer-p-000' get: operationId: getIntegerProfileMaximum summary: 'Returns the maximum value of the Integer' @@ -6256,7 +6256,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'ro-2-0-2-integer-p-000' get: operationId: getIntegerProfileIntegerValue summary: 'Returns the configured value of the Integer' @@ -6333,7 +6333,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-1-string-p-000' + example: 'ro-2-0-2-string-p-000' get: operationId: getStringProfileStringName summary: 'Returns the name of the String' @@ -6374,7 +6374,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-1-string-p-000' + example: 'ro-2-0-2-string-p-000' get: operationId: getStringProfileEnumeration summary: 'Returns the enumeration values of the String' @@ -6418,7 +6418,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-1-string-p-000' + example: 'ro-2-0-2-string-p-000' get: operationId: getStringProfilePattern summary: 'Returns the pattern of the String' @@ -6459,7 +6459,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-1-string-p-000' + example: 'ro-2-0-2-string-p-000' get: operationId: getStringProfileStringValue summary: 'Returns the configured value of the String' @@ -6553,7 +6553,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-1-op-s-bm-000' + example: 'ro-2-0-2-op-s-bm-000' get: operationId: getOperationServerOperationName summary: 'Returns operation name' @@ -6594,7 +6594,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-1-op-s-bm-000' + example: 'ro-2-0-2-op-s-bm-000' get: operationId: getOperationServerLifeCycleState summary: 'Returns the configured life cycle state of the operation' @@ -6683,7 +6683,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-1-op-s-bm-000' + example: 'ro-2-0-2-op-s-bm-000' get: operationId: getOperationServerOperationKey summary: 'Returns key for connecting' @@ -6760,7 +6760,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerApplicationName summary: 'Returns application name' @@ -6801,7 +6801,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerReleaseNumber summary: 'Returns release number' @@ -6842,7 +6842,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerApplicationPurpose summary: 'Returns application purpose' @@ -6883,7 +6883,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerDataUpdatePeriode summary: 'Returns update period' @@ -6929,7 +6929,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerOwnerName summary: 'Returns owner name' @@ -6970,7 +6970,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerOwnerEmailAddress summary: 'Returns owner email address' @@ -7011,7 +7011,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-1-http-s-000' + example: 'ro-2-0-2-http-s-000' get: operationId: getHttpServerReleaseList summary: 'Returns list of releases' @@ -7074,7 +7074,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-1-tcp-s-000' + example: 'ro-2-0-2-tcp-s-000' get: operationId: getTcpServerDescription summary: 'Returns Description of TcpServer' @@ -7147,7 +7147,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-1-tcp-s-000' + example: 'ro-2-0-2-tcp-s-000' get: operationId: getTcpServerLocalProtocol summary: 'Returns Protocol of TcpServer' @@ -7228,7 +7228,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-1-tcp-s-000' + example: 'ro-2-0-2-tcp-s-000' get: operationId: getTcpServerLocalAddress summary: 'Returns address of the server' @@ -7322,7 +7322,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-1-tcp-s-000' + example: 'ro-2-0-2-tcp-s-000' get: operationId: getTcpServerLocalPort summary: 'Returns TCP port of the server' @@ -7400,7 +7400,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-1-op-c-bm-or-1-0-0-000' + example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationName summary: 'Returns operation name' @@ -7476,7 +7476,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-1-op-c-bm-or-1-0-0-000' + example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationKey summary: 'Returns key used for connecting to server.' @@ -7552,7 +7552,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-1-op-c-bm-or-1-0-0-000' + example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationalState summary: 'Returns operational state of the operation' @@ -7597,7 +7597,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-1-op-c-bm-or-1-0-0-000' + example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientLifeCycleState summary: 'Returns life cycle state of the operation' @@ -7645,7 +7645,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-bs-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-1-op-c-bs-eatl-2-0-1-000' + example: 'ro-2-0-2-op-c-bs-eatl-2-0-2-000' get: operationId: getOperationClientDetailedLoggingIsOn summary: 'Returns detailed logging configuration.' @@ -7721,7 +7721,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-1-es-c-es-1-0-0-000' + example: 'eatl-2-0-2-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientApiKey summary: 'Returns API key' @@ -7795,7 +7795,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-1-es-c-es-1-0-0-000' + example: 'eatl-2-0-2-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientIndexAlias summary: 'Returns index alias' @@ -7869,7 +7869,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-1-es-c-es-1-0-0-000' + example: 'eatl-2-0-2-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientServiceRecordsPolicy summary: 'Returns service records policy' @@ -8555,7 +8555,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-1-es-c-es-1-0-0-000' + example: 'eatl-2-0-2-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientOperationalState summary: 'Returns operational state of the connection towards Elasticsearch' @@ -8600,7 +8600,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-1-es-c-es-1-0-0-000' + example: 'eatl-2-0-2-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientLifeCycleState summary: 'Returns life cycle state of the connection towards Elasticsearch' @@ -8649,7 +8649,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-1-http-c-or-1-0-0-000' + example: 'ro-2-0-2-http-c-or-1-0-0-000' get: operationId: getHttpClientApplicationName summary: 'Returns name of application to be addressed' @@ -8725,7 +8725,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-1-http-c-or-1-0-0-000' + example: 'ro-2-0-2-http-c-or-1-0-0-000' get: operationId: getHttpClientReleaseNumber summary: 'Returns release number of application to be addressed' @@ -8802,7 +8802,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-1-tcp-c-or-1-0-0-000' + example: 'ro-2-0-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemoteProtocol summary: 'Returns protocol for addressing remote side' @@ -8883,7 +8883,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-1-tcp-c-or-1-0-0-000' + example: 'ro-2-0-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemoteAddress summary: 'Returns remote address' @@ -8987,7 +8987,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-1-tcp-c-or-1-0-0-000' + example: 'ro-2-0-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemotePort summary: 'Returns target TCP port at server' From 2c33cd3526a424527f68a2aaaba36792936a7c3e Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Wed, 29 Nov 2023 17:50:26 +0100 Subject: [PATCH 32/41] Adapt to updated AA --- spec/ApplicationPattern+config.json | 158 +++++++++---- spec/ApplicationPattern+forwardings.yaml | 24 +- spec/ApplicationPattern+services.yaml | 12 +- spec/ApplicationPattern.yaml | 282 +++++++++++++++++++++-- 4 files changed, 400 insertions(+), 76 deletions(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index c6e4a5b9..7c63cdaf 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -350,7 +350,7 @@ "operation-name": "/v1/inquire-oam-request-approvals" }, "operation-server-interface-configuration": { - "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL", + "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED", "operation-key": "Operation key not yet provided." } } @@ -477,6 +477,30 @@ } ] }, + { + "uuid": "xx-1-0-0-op-s-bm-012", + "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", + "client-ltp": [ + ], + "server-ltp": [ + "xx-1-0-0-http-s-000" + ], + "layer-protocol": [ + { + "local-id": "0", + "layer-protocol-name": "operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER", + "operation-server-interface-1-0:operation-server-interface-pac": { + "operation-server-interface-capability": { + "operation-name": "/v1/inquire-basic-auth-approvals" + }, + "operation-server-interface-configuration": { + "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL", + "operation-key": "Operation key not yet provided." + } + } + } + ] + }, { "uuid": "xx-1-0-0-op-s-im-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", @@ -660,6 +684,7 @@ "xx-1-0-0-op-s-bm-009", "xx-1-0-0-op-s-bm-010", "xx-1-0-0-op-s-bm-011", + "xx-1-0-0-op-s-bm-012", "xx-1-0-0-op-s-im-000", "xx-1-0-0-op-s-bs-000", "xx-1-0-0-op-s-bs-001", @@ -713,7 +738,7 @@ "description": "Without TLS layer", "local-protocol": "tcp-server-interface-1-0:PROTOCOL_TYPE_HTTP", "local-address": { - "ipv-4-address": " >>> ownIpAddress and Port (below) <<< " + "ipv-4-address": "127.0.0.1" }, "local-port": 3008 } @@ -1035,7 +1060,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "RegistryOffice", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1058,10 +1083,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.8" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3008 + "remote-port": 3024 } } } @@ -1082,7 +1107,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "TypeApprovalRegister", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1105,10 +1130,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.9" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3009 + "remote-port": 3025 } } } @@ -1156,7 +1181,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "ExecutionAndTraceLog", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1179,10 +1204,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.10" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3010 + "remote-port": 3026 } } } @@ -1229,7 +1254,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "OamLog", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1252,22 +1277,22 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.11" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3011 + "remote-port": 3027 } } } ] }, { - "uuid": "xx-1-0-0-op-c-bs-aa-2-0-1-000", + "uuid": "xx-1-0-0-op-c-bs-aa-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-aa-2-0-1-000" + "xx-1-0-0-http-c-aa-2-1-0-000" ], "layer-protocol": [ { @@ -1287,13 +1312,13 @@ ] }, { - "uuid": "xx-1-0-0-http-c-aa-2-0-1-000", + "uuid": "xx-1-0-0-http-c-aa-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-op-c-bs-aa-2-0-1-000" + "xx-1-0-0-op-c-bs-aa-2-1-0-000" ], "server-ltp": [ - "xx-1-0-0-tcp-c-aa-2-0-1-000" + "xx-1-0-0-tcp-c-aa-2-1-0-000" ], "layer-protocol": [ { @@ -1301,18 +1326,18 @@ "layer-protocol-name": "http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER", "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { - "application-name": "AdministratorAdministration", - "release-number": "2.0.1" + "application-name": "AccessAdministration", + "release-number": "2.1.0" } } } ] }, { - "uuid": "xx-1-0-0-tcp-c-aa-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-aa-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-aa-2-0-1-000" + "xx-1-0-0-http-c-aa-2-1-0-000" ], "server-ltp": [ ], @@ -1325,10 +1350,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.12" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3012 + "remote-port": 3028 } } } @@ -1505,7 +1530,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "ApplicationLayerTopology", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1528,10 +1553,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.13" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3013 + "remote-port": 3029 } } } @@ -1552,7 +1577,7 @@ "http-client-interface-1-0:http-client-interface-pac": { "http-client-interface-configuration": { "application-name": "OperationKeyManagement", - "release-number": "2.0.1" + "release-number": "2.1.0" } } } @@ -1575,10 +1600,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.14" + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 3014 + "remote-port": 3030 } } } @@ -1693,62 +1718,67 @@ "logical-termination-point": "xx-1-0-0-op-s-bm-005" }, { - "local-id": "106", + "local-id": "107", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-007" }, { - "local-id": "107", + "local-id": "108", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-008" }, { - "local-id": "108", + "local-id": "109", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-009" }, { - "local-id": "109", + "local-id": "110", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-010" }, { - "local-id": "110", + "local-id": "111", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-011" }, { - "local-id": "111", + "local-id": "112", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", + "logical-termination-point": "xx-1-0-0-op-s-bm-012" + }, + { + "local-id": "130", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-im-000" }, { - "local-id": "112", + "local-id": "150", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-000" }, { - "local-id": "113", + "local-id": "151", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-001" }, { - "local-id": "114", + "local-id": "152", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-002" }, { - "local-id": "115", + "local-id": "153", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-003" }, { - "local-id": "116", + "local-id": "154", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-004" }, { - "local-id": "117", + "local-id": "155", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bs-005" }, @@ -1805,7 +1835,32 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bs-aa-2-0-1-000" + "logical-termination-point": "xx-1-0-0-op-c-bs-aa-2-1-0-000" + } + ] + }, + { + "uuid": "xx-1-0-0-op-fc-bm-005", + "name": [ + { + "value-name": "ForwardingKind", + "value": "core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET" + }, + { + "value-name": "ForwardingName", + "value": "BasicAuthRequestCausesInquiryForAuthentication" + } + ], + "fc-port": [ + { + "local-id": "000", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT", + "logical-termination-point": "xx-1-0-0-op-s-bm-012" + }, + { + "local-id": "200", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", + "logical-termination-point": "xx-1-0-0-op-c-bs-aa-2-1-0-000" } ] }, @@ -1938,27 +1993,32 @@ "logical-termination-point": "xx-1-0-0-op-s-bm-003" }, { - "local-id": "104", + "local-id": "105", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-005" }, { - "local-id": "105", + "local-id": "107", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-007" }, { - "local-id": "106", + "local-id": "109", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-009" }, { - "local-id": "108", + "local-id": "111", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-bm-011" }, { - "local-id": "109", + "local-id": "112", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", + "logical-termination-point": "xx-1-0-0-op-s-bm-012" + }, + { + "local-id": "130", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", "logical-termination-point": "xx-1-0-0-op-s-im-000" }, diff --git a/spec/ApplicationPattern+forwardings.yaml b/spec/ApplicationPattern+forwardings.yaml index f1f23c3c..44d3c41d 100644 --- a/spec/ApplicationPattern+forwardings.yaml +++ b/spec/ApplicationPattern+forwardings.yaml @@ -69,6 +69,8 @@ forwardings: uuid: xx-1-0-0-op-s-bm-010 - server-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 + - server-name: /v1/inquire-basic-auth-approvals + uuid: aa-2-0-1-op-s-bm-012 - server-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 - server-name: /v1/start-application-in-generic-representation @@ -120,7 +122,25 @@ forwardings: initiating-requests: consequent-requests: - client-name: AdministratorAdministration://v1/approve-oam-request - uuid: xx-1-0-0-op-c-bs-aa-2-0-1-000 + uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 + + - forwarding-name: BasicAuthRequestCausesInquiryForAuthentication + uuid: aa-2-0-1-op-fc-bm-005 + forwarding-type: InvariantProcessSnippet + management-requests: + operation-client-update: + - server-name: /v1/inquire-basic-auth-approvals + uuid: aa-2-0-1-op-s-bm-012 + fc-port-update: + - server-name: /v1/inquire-basic-auth-approvals + uuid: aa-2-0-1-op-s-bm-012 + fc-port-deletion: + operation-client-deletion: + initiating-requests: + # [all oam requests] + consequent-requests: + - client-name: AdministratorAdministration://v1/approve-oam-request + uuid: aa-2-0-1-op-c-bs-aa-2-0-1-000 ## TODO: Potentially add Forwardings for configuring INDIVIDUAL subscriptions on NewRelease @@ -216,6 +236,8 @@ forwardings: uuid: xx-1-0-0-op-s-bm-009 - server-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 + - server-name: /v1/inquire-basic-auth-approvals + uuid: aa-2-0-1-op-s-bm-012 - server-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 ## TODO: All INDIVIDUAL service requests, which are updating an LTP, to be complemented diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index ea326ced..38553959 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -26,6 +26,8 @@ servers: uuid: xx-1-0-0-op-s-bm-010 - operation-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 + - operation-name: /v1/inquire-basic-auth-approvals + uuid: aa-2-0-1-op-s-bm-012 individual: - operation-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 @@ -198,19 +200,19 @@ clients: ## TODO: Add Clients specific to this application - http-client: - application-name: AdministratorAdministration - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-aa-2-0-1-000 + application-name: AcccessAdministration + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-aa-2-1-0-000 tcp-client: remote-protocol: http ip-address: 1.1.3.12 tcp-port: 3012 - uuid: xx-1-0-0-tcp-c-aa-2-0-1-000 + uuid: xx-1-0-0-tcp-c-aa-2-1-0-000 operation-clients: own-oam: basic: - operation-name: /v1/approve-oam-request - uuid: xx-1-0-0-op-c-bs-aa-2-0-1-000 + uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 individual: service: basic: diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 791bc12a..8e151311 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -724,7 +724,7 @@ paths: type: integer description: > 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' example: application-name: 'TypeApprovalRegister' release-number: '2.0.2' @@ -1034,7 +1034,7 @@ paths: type: integer description: > 'Own TCP port - from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' example: new-application-name: 'OwnApplicationName' new-application-release: '2.0.2' @@ -1074,7 +1074,7 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service' + 'Life cycle state of the consumed service' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1735,19 +1735,19 @@ paths: type: string description: > 'Name of application that shall approve the OaM requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-approval-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall approve the OaM requests - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-approval-operation: type: string minLength: 6 description: > 'Operation for approving the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' oam-approval-protocol: type: string enum: @@ -1755,7 +1755,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' oam-approval-address: type: object minProperties: 1 @@ -1772,29 +1772,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' oam-approval-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - oam-approval-application: 'AdministratorAdministration' - oam-approval-application-release-number: '2.0.2' - oam-approval-operation: '/v1/approve-oam-request' + oam-approval-application: 'AccessAdministration' + oam-approval-application-release-number: '2.0.1' + oam-approval-operation: '/v1/approve-basic-auth-request' oam-approval-protocol: 'HTTP' oam-approval-address: ip-address: - ipv-4-address: '1.1.3.21' - oam-approval-port: 3021 + ipv-4-address: '1.1.3.12' + oam-approval-port: 3012 responses: '204': description: 'Informed about where to inquire for approval of OaM requests' @@ -1842,7 +1842,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: OamRequestCausesInquiryForAuthentication: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1865,12 +1865,12 @@ paths: application-name: type: string description: > - 'Own application name for the AdministratorAdministration to check, whether this application is part of the SDN at all + 'Own application name for the AccessAdministration to check, whether this application is part of the SDN at all from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > - 'Own application release number for the AdministratorAdministration to check, whether this application is part of the SDN at all + 'Own application release number for the AccessAdministration to check, whether this application is part of the SDN at all from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' Authorization: type: string @@ -1878,7 +1878,7 @@ paths: 'Authorization code of the administrator addressing the OaM request to this application from [parameters::Authorization]' method: type: string - description: 'Method applied in the OaM request, which is to be recorded' + description: 'Method applied in the OaM request, which is to be approved' example: application-name: 'OwnApplicationName' release-number: '1.0.0' @@ -3484,6 +3484,246 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' default: $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inquire-basic-auth-approvals: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: inquireBasicAuthRequestApprovals + summary: 'Receives information about where to ask for approval of BasicAuth requests' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - operation-name + - protocol + - address + - port + properties: + application-name: + type: string + description: > + 'Name of the application that approves the BasicAuth requests + find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + operation-name: + type: string + minLength: 6 + description: > + 'Operation for approving the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + application-name: 'AccessAdministration' + release-number: '2.1.0' + operation-name: '/v1/approve-basic-auth-request' + protocol: 'HTTP' + address: + ip-address: + ipv-4-address: '127.0.0.1' + port: 3028 + responses: + '204': + description: 'Informed about where to inquire for approval of BasicAuth requests' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + BasicAuthRequestCausesInquiryForAuthentication: + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + Authorization: + type: string + description: > + 'Authorization code + from {$request.parameters#Authorization} of the BasicAuth request that initiates the inquiry for approval' + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own application release number + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + operation-name: + type: string + description: > + 'Path (could be service, could be OaM path) that has been addressed by the BasicAuth request + in path parameter values to be replaced by original parameter names in curly brackets + filters to be removed + from {$request.path} of the BasicAuth request that initiates the inquiry for approval' + method: + type: string + description: > + 'Method applied in the BasicAuth request + from {$request.method} of the BasicAuth request that initiates the inquiry for approval' + responses: + '200': + description: 'Response on inquiry for approval of a BasicAuth request provided' + content: + application/json: + schema: + type: object + properties: + basic-auth-request-is-approved: + type: boolean + description: 'If true, BasicAuth request can be executed' + reason-of-objection: + type: string + description: > + 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent + else BasicAuth request to be aborted and 403 to be sent' + example: + basic-auth-request-is-approved: false + reason-of-objection: 'AUTHORIZATION_CODE_UNKNOWN' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' /v1/start-application-in-generic-representation: parameters: @@ -4992,14 +5232,14 @@ paths: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' - value-name: 'ForwardingName' - value: 'OamRequestCausesInquiryForAuthentication' + value: 'BasicAuthRequestCausesInquiryForAuthentication' fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' logical-termination-point: 'ro-2-0-2-op-s-bm-005' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bs-aa-2-0-2-000' + logical-termination-point: 'ro-2-0-2-op-c-bs-aa-2-1-0-000' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': From 50312e22f37ad852ff56d1fb7ebb71263adc8e26 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Thu, 30 Nov 2023 19:06:22 +0100 Subject: [PATCH 33/41] Add /v1/dispose-remainders-of-deregistered-applica Fixes #686 --- spec/ApplicationPattern+config.json | 31 ++- spec/ApplicationPattern+forwardings.yaml | 16 +- spec/ApplicationPattern+services.yaml | 6 +- spec/ApplicationPattern.yaml | 227 +++++++++++++++++- .../diagrams/bm013_DisposeRemainders.plantuml | 44 ++++ .../systemScope/001_Registering.plantuml | 2 +- .../systemScope/old_EmbedNewApp.plantuml | 2 +- .../old_Improved_EmbedNewApp.plantuml | 2 +- 8 files changed, 308 insertions(+), 22 deletions(-) create mode 100644 spec/diagrams/bm013_DisposeRemainders.plantuml diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 7c63cdaf..41a452e6 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -501,6 +501,30 @@ } ] }, + { + "uuid": "xx-1-0-0-op-s-bm-013", + "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", + "client-ltp": [ + ], + "server-ltp": [ + "xx-1-0-0-http-s-000" + ], + "layer-protocol": [ + { + "local-id": "0", + "layer-protocol-name": "operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER", + "operation-server-interface-1-0:operation-server-interface-pac": { + "operation-server-interface-capability": { + "operation-name": "/v1/dispose-remainders-of-deregistered-application" + }, + "operation-server-interface-configuration": { + "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL", + "operation-key": "Operation key not yet provided." + } + } + } + ] + }, { "uuid": "xx-1-0-0-op-s-im-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", @@ -955,7 +979,7 @@ "layer-protocol-name": "operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER", "operation-client-interface-1-0:operation-client-interface-pac": { "operation-client-interface-configuration": { - "operation-name": "/v1/register-application", + "operation-name": "/v2/register-application", "operation-key": "n.a." }, "operation-client-interface-status": { @@ -2047,6 +2071,11 @@ "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT", "logical-termination-point": "xx-1-0-0-op-s-bm-009" }, + { + "local-id": "100", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_INPUT", + "logical-termination-point": "xx-1-0-0-op-s-bm-013" + }, { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", diff --git a/spec/ApplicationPattern+forwardings.yaml b/spec/ApplicationPattern+forwardings.yaml index 44d3c41d..39c042f6 100644 --- a/spec/ApplicationPattern+forwardings.yaml +++ b/spec/ApplicationPattern+forwardings.yaml @@ -16,7 +16,7 @@ forwardings: - server-name: /v1/register-yourself uuid: xx-1-0-0-op-s-bm-000 consequent-requests: - - client-name: RegistryOffice://v1/register-application + - client-name: RegistryOffice://v2/register-application uuid: xx-1-0-0-op-c-bm-ro-2-0-1-000 - forwarding-name: PromptForEmbeddingCausesRequestForBequeathingData @@ -70,7 +70,7 @@ forwardings: - server-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 - server-name: /v1/inquire-basic-auth-approvals - uuid: aa-2-0-1-op-s-bm-012 + uuid: xx-1-0-0-op-s-bm-012 - server-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 - server-name: /v1/start-application-in-generic-representation @@ -125,22 +125,22 @@ forwardings: uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 - forwarding-name: BasicAuthRequestCausesInquiryForAuthentication - uuid: aa-2-0-1-op-fc-bm-005 + uuid: xx-1-0-0-op-fc-bm-005 forwarding-type: InvariantProcessSnippet management-requests: operation-client-update: - server-name: /v1/inquire-basic-auth-approvals - uuid: aa-2-0-1-op-s-bm-012 + uuid: xx-1-0-0-op-s-bm-012 fc-port-update: - server-name: /v1/inquire-basic-auth-approvals - uuid: aa-2-0-1-op-s-bm-012 + uuid: xx-1-0-0-op-s-bm-012 fc-port-deletion: operation-client-deletion: initiating-requests: # [all oam requests] consequent-requests: - client-name: AdministratorAdministration://v1/approve-oam-request - uuid: aa-2-0-1-op-c-bs-aa-2-0-1-000 + uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 ## TODO: Potentially add Forwardings for configuring INDIVIDUAL subscriptions on NewRelease @@ -237,7 +237,7 @@ forwardings: - server-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 - server-name: /v1/inquire-basic-auth-approvals - uuid: aa-2-0-1-op-s-bm-012 + uuid: xx-1-0-0-op-s-bm-012 - server-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 ## TODO: All INDIVIDUAL service requests, which are updating an LTP, to be complemented @@ -258,6 +258,8 @@ forwardings: fc-port-deletion: operation-client-deletion: initiating-requests: + - server-name: /v1/dispose-remainders-of-deregistered-application + uuid: xx-1-0-0-op-s-bm-013 ## TODO: All INDIVIDUAL service requests, which are deleting an LTP, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/delete-ltp-and-dependents diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index 38553959..de20eb32 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -27,7 +27,9 @@ servers: - operation-name: /v1/update-operation-client uuid: xx-1-0-0-op-s-bm-011 - operation-name: /v1/inquire-basic-auth-approvals - uuid: aa-2-0-1-op-s-bm-012 + uuid: xx-1-0-0-op-s-bm-012 + - operation-name: /v1/dispose-remainders-of-deregistered-application + uuid: xx-1-0-0-op-s-bm-013 individual: - operation-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 @@ -123,7 +125,7 @@ clients: operation-clients: own-oam: basic: - - operation-name: /v1/register-application + - operation-name: /v2/register-application uuid: xx-1-0-0-op-c-bm-ro-2-0-1-000 - operation-name: /v1/relay-server-replacement uuid: xx-1-0-0-op-c-bm-ro-2-0-1-001 diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 8e151311..84043aa9 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -570,7 +570,7 @@ paths: example: registry-office-application: 'RegistryOffice' registry-office-application-release-number: '2.0.2' - registration-operation: '/v1/register-application' + registration-operation: '/v2/register-application' registry-office-protocol: 'HTTP' registry-office-address: ip-address: @@ -629,7 +629,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: PromptForRegisteringCausesRegistrationRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -690,8 +690,6 @@ paths: from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' tcp-server-list: type: array - minItems: 1 - maxItems: 1 items: type: object required: @@ -724,10 +722,10 @@ paths: type: integer description: > 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' example: application-name: 'TypeApprovalRegister' - release-number: '2.0.2' + release-number: '2.0.1' preceding-application-name: 'TypeApprovalRegister' preceding-release-number: '1.0.0' embedding-operation: '/v1/embed-yourself' @@ -737,8 +735,141 @@ paths: - protocol: 'HTTP' address: ip-address: - ipv-4-address: '1.1.3.18' - port: 3018 + ipv-4-address: '1.1.3.9' + port: 3009 + - protocol: 'HTTPS' + address: + ip-address: + ipv-4-address: '1.2.3.9' + port: 3209 + responses: + '204': + description: 'Application registered' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + PromptForRegisteringCausesRegistrationRequest2: + url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + preceding-application-name: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + preceding-release-number: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + embedding-operation: + type: string + description: > + 'Name of service for initiating embedding process + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + dispose-remainders-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + client-update-operation: + type: string + description: > + 'Name of service for broadcasting server changes + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + operation-client-update-operation: + type: string + description: > + 'Name of service for broadcasting replacements of operations by backward compatible substitutes + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + tcp-server: + type: object + properties: + protocol: + type: string + description: > + 'Own protocol (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + description: > + 'Own IPv4 address (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + domain-name: + type: string + description: > + 'Own domain name (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + port: + type: integer + description: > + 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' responses: '204': description: 'Application registered' @@ -3724,6 +3855,84 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' default: $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/dispose-remainders-of-deregistered-application: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: disposeRemaindersOfDeregisteredApplication + summary: 'Removes application from configuration and application data' + tags: + - IndividualServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + description: 'Name of application that shall be removed from configuration and application data' + release-number: + type: string + description: 'Release of application that shall be removed from configuration and application data' + example: + application-name: 'BadApplication' + release-number: '1.0.0' + responses: + '204': + description: 'Application removed from configuration and application data' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + find in [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' /v1/start-application-in-generic-representation: parameters: @@ -5141,7 +5350,7 @@ paths: layer-protocol-name: 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' operation-client-interface-1-0:operation-client-interface-pac: operation-client-interface-configuration: - operation-name: '/v1/register-application' + operation-name: '/v2/register-application' operation-key: 'Operation key not yet provided.' operation-client-interface-status: operational-state: 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' diff --git a/spec/diagrams/bm013_DisposeRemainders.plantuml b/spec/diagrams/bm013_DisposeRemainders.plantuml new file mode 100644 index 00000000..3e10b9af --- /dev/null +++ b/spec/diagrams/bm013_DisposeRemainders.plantuml @@ -0,0 +1,44 @@ +@startuml bm013_DisposeRemainders +skinparam responseMessageBelowArrow true + +title + No Callback +end title + +participant "OR://v1/bequeath-your-data-and-die" as OldRelease +participant "RO://v1/deregister-application" as RO +participant "All://v1/dispose-remainders-of-deregistered-application" as disposeRemainders +participant "ALT://v1/delete-ltp-and-dependents" as AltDeleteLtp + +OldRelease -> RO : {applicationName, releaseNumber} + +RO -> disposeRemainders : {applicationName, releaseNumber} +activate disposeRemainders +disposeRemainders --> RO : 204 + +note over disposeRemainders +The HttpClient identified by applicationName and releaseNumber +and its serving TcpClients and its client OperationClients +shall be deleted from all internal configuration and application data + +This results in implicitly applying the existing forwarding +ServiceRequestCausesLtpDeletionRequest +end note +disposeRemainders -> AltDeleteLtp + +deactivate disposeRemainders + + +skinparam NoteBackgroundColor white +note over RO +Remark: +The following Forwardings become obsolete +at RO and potentially other TAC applications, too +end note +skinparam NoteBackgroundColor default +participant "TAC://v1/disregard-application" as TacDisregardApp +RO -> AltDeleteLtp +RO -> TacDisregardApp + + +@enduml \ No newline at end of file diff --git a/spec/diagrams/systemScope/001_Registering.plantuml b/spec/diagrams/systemScope/001_Registering.plantuml index 256b67d7..3426856e 100644 --- a/spec/diagrams/systemScope/001_Registering.plantuml +++ b/spec/diagrams/systemScope/001_Registering.plantuml @@ -8,7 +8,7 @@ end title participant "Admin" as Admin participant "NewApp://v1/register-yourself" as NewAppRegYs -participant "RO://v1/register-application" as RoRegiA +participant "RO://v2/register-application" as RoRegiA participant "TAR://v1/regard-application" as TarRegaA participant "RO://v1/regard-updated-approval-status" as RoRegaUa diff --git a/spec/diagrams/systemScope/old_EmbedNewApp.plantuml b/spec/diagrams/systemScope/old_EmbedNewApp.plantuml index d485d310..256e0b3a 100644 --- a/spec/diagrams/systemScope/old_EmbedNewApp.plantuml +++ b/spec/diagrams/systemScope/old_EmbedNewApp.plantuml @@ -8,7 +8,7 @@ end title participant "Admin" as Admin participant "NewApp://v1/register-yourself" as NewAppRegYs -participant "RO://v1/register-application" as RoRegiA +participant "RO://v2/register-application" as RoRegiA participant "TAR://v1/regard-application" as TarRegaA participant "RO://v1/regard-updated-approval-status" as RoRegaUa participant "NewApp://v1/embed-yourself" as NewAppEmbYs diff --git a/spec/diagrams/systemScope/old_Improved_EmbedNewApp.plantuml b/spec/diagrams/systemScope/old_Improved_EmbedNewApp.plantuml index 32436243..6ef8df4d 100644 --- a/spec/diagrams/systemScope/old_Improved_EmbedNewApp.plantuml +++ b/spec/diagrams/systemScope/old_Improved_EmbedNewApp.plantuml @@ -8,7 +8,7 @@ end title participant "Admin" as Admin participant "NewApp://v1/register-yourself" as NewAppRegYs -participant "RO://v1/register-application" as RoRegiA +participant "RO://v2/register-application" as RoRegiA participant "TAR://v1/regard-application" as TarRegaA participant "RO://v1/regard-updated-approval-status" as RoRegaUa participant "NewApp://v1/embed-yourself" as NewAppEmbYs From 14e81557276a32a58c550287e31acb4a413aef7b Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sat, 2 Dec 2023 12:59:52 +0100 Subject: [PATCH 34/41] Replace OamRequestCausesInquiryForAuthentication --- spec/ApplicationPattern+config.json | 25 --------- spec/ApplicationPattern+forwardings.yaml | 21 ++------ spec/ApplicationPattern.yaml | 64 +++++++++++------------- 3 files changed, 32 insertions(+), 78 deletions(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 41a452e6..9aa6e179 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -1838,31 +1838,6 @@ } ] }, - { - "uuid": "xx-1-0-0-op-fc-bm-004", - "name": [ - { - "value-name": "ForwardingKind", - "value": "core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET" - }, - { - "value-name": "ForwardingName", - "value": "OamRequestCausesInquiryForAuthentication" - } - ], - "fc-port": [ - { - "local-id": "000", - "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT", - "logical-termination-point": "xx-1-0-0-op-s-bm-005" - }, - { - "local-id": "200", - "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bs-aa-2-1-0-000" - } - ] - }, { "uuid": "xx-1-0-0-op-fc-bm-005", "name": [ diff --git a/spec/ApplicationPattern+forwardings.yaml b/spec/ApplicationPattern+forwardings.yaml index 39c042f6..6205c59d 100644 --- a/spec/ApplicationPattern+forwardings.yaml +++ b/spec/ApplicationPattern+forwardings.yaml @@ -107,23 +107,6 @@ forwardings: - client-name: OamLog://v1/record-oam-request uuid: xx-1-0-0-op-c-bs-ol-2-0-1-000 - - forwarding-name: OamRequestCausesInquiryForAuthentication - uuid: xx-1-0-0-op-fc-bm-004 - forwarding-type: InvariantProcessSnippet - management-requests: - operation-client-update: - - server-name: /v1/inquire-oam-request-approvals - uuid: xx-1-0-0-op-s-bm-005 - fc-port-update: - - server-name: /v1/inquire-oam-request-approvals - uuid: xx-1-0-0-op-s-bm-005 - fc-port-deletion: - operation-client-deletion: - initiating-requests: - consequent-requests: - - client-name: AdministratorAdministration://v1/approve-oam-request - uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 - - forwarding-name: BasicAuthRequestCausesInquiryForAuthentication uuid: xx-1-0-0-op-fc-bm-005 forwarding-type: InvariantProcessSnippet @@ -131,9 +114,13 @@ forwardings: operation-client-update: - server-name: /v1/inquire-basic-auth-approvals uuid: xx-1-0-0-op-s-bm-012 + - server-name: /v1/inquire-oam-request-approvals + uuid: xx-1-0-0-op-s-bm-005 fc-port-update: - server-name: /v1/inquire-basic-auth-approvals uuid: xx-1-0-0-op-s-bm-012 + - server-name: /v1/inquire-oam-request-approvals + uuid: xx-1-0-0-op-s-bm-005 fc-port-deletion: operation-client-deletion: initiating-requests: diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 2db50674..1cb71a9d 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -1835,6 +1835,10 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' /v1/inquire-oam-request-approvals: + description: > + 'DEPRECATED + Service shall be deleted with AP v3.0.0 + Starting from AP v2.1.0, /v1/inquire-basic-auth-approvals shall be applied as a backward compatible update' parameters: - $ref: '#/components/parameters/user' - $ref: '#/components/parameters/originator' @@ -1972,7 +1976,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: - OamRequestCausesInquiryForAuthentication: + BasicAuthRequestCausesInquiryForAuthentication: url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: @@ -1987,65 +1991,53 @@ paths: application/json: schema: type: object - required: - - application-name - - release-number - - Authorization - - method properties: + Authorization: + type: string + description: > + 'Authorization code + from {$request.parameters#Authorization} of the BasicAuth request that initiates the inquiry for approval' application-name: type: string description: > - 'Own application name for the AccessAdministration to check, whether this application is part of the SDN at all + 'Own application name from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > - 'Own application release number for the AccessAdministration to check, whether this application is part of the SDN at all + 'Own application release number from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' - Authorization: + operation-name: type: string description: > - 'Authorization code of the administrator addressing the OaM request to this application from [parameters::Authorization]' + 'Path (could be service, could be OaM path) that has been addressed by the BasicAuth request + in path parameter values to be replaced by original parameter names in curly brackets + filters to be removed + from {$request.path} of the BasicAuth request that initiates the inquiry for approval' method: type: string - description: 'Method applied in the OaM request, which is to be approved' - example: - application-name: 'OwnApplicationName' - release-number: '1.0.0' - Authorization: 'Basic PEJhc2ljIEF1dGggVXNlcm5hbWU+OjxCYHduEdBBdXRoIFBhc3N3b3JkPg==' - method: 'PUT' + description: > + 'Method applied in the BasicAuth request + from {$request.method} of the BasicAuth request that initiates the inquiry for approval' responses: '200': - description: 'Response on inquiry for approval of an OaM request provided' + description: 'Response on inquiry for approval of a BasicAuth request provided' content: application/json: schema: type: object - required: - - oam-request-is-approved properties: - oam-request-is-approved: + basic-auth-request-is-approved: type: boolean + description: 'If true, BasicAuth request can be executed' reason-of-objection: type: string - enum: - - 'APPLICATION_NAME_UNKNOWN' - - 'RELEASE_NUMBER_UNKNOWN' - - 'AUTHORIZATION_CODE_UNKNOWN' - - 'METHOD_NOT_ALLOWED' - - 'UNKNOWN' description: > - 'This attribute to be represented, if response::oam-request-is-approved==false. - Reasons to be checked and indicated according to the sequence defined in the enumeration.' - examples: - True: - value: - oam-request-is-approved: true - False: - value: - oam-request-is-approved: false - reason-of-objection: 'AUTHORIZATION_CODE_UNKNOWN' + 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent + else BasicAuth request to be aborted and 403 to be sent' + example: + basic-auth-request-is-approved: false + reason-of-objection: 'AUTHORIZATION_CODE_UNKNOWN' headers: x-correlator: schema: From 3c0cfc7c3b880b926cb3c80e63e2805e07715501 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Mon, 4 Dec 2023 19:25:45 +0100 Subject: [PATCH 35/41] Add /v1/inform-about-preceding-release --- spec/ApplicationPattern+config.json | 26 ++++++++ spec/ApplicationPattern+services.yaml | 2 + spec/ApplicationPattern.yaml | 89 ++++++++++++++++++++++++++- 3 files changed, 116 insertions(+), 1 deletion(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 9aa6e179..44780522 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -525,6 +525,30 @@ } ] }, + { + "uuid": "xx-1-0-0-op-s-bm-014", + "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", + "client-ltp": [ + ], + "server-ltp": [ + "xx-1-0-0-http-s-000" + ], + "layer-protocol": [ + { + "local-id": "0", + "layer-protocol-name": "operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER", + "operation-server-interface-1-0:operation-server-interface-pac": { + "operation-server-interface-capability": { + "operation-name": "/v1/inform-about-preceding-release" + }, + "operation-server-interface-configuration": { + "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL", + "operation-key": "Operation key not yet provided." + } + } + } + ] + }, { "uuid": "xx-1-0-0-op-s-im-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", @@ -709,6 +733,8 @@ "xx-1-0-0-op-s-bm-010", "xx-1-0-0-op-s-bm-011", "xx-1-0-0-op-s-bm-012", + "xx-1-0-0-op-s-bm-013", + "xx-1-0-0-op-s-bm-014", "xx-1-0-0-op-s-im-000", "xx-1-0-0-op-s-bs-000", "xx-1-0-0-op-s-bs-001", diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index de20eb32..94d69794 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -30,6 +30,8 @@ servers: uuid: xx-1-0-0-op-s-bm-012 - operation-name: /v1/dispose-remainders-of-deregistered-application uuid: xx-1-0-0-op-s-bm-013 + - operation-name: /v1/inform-about-preceding-release + uuid: xx-1-0-0-op-s-bm-014 individual: - operation-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 1cb71a9d..c93228d6 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -3858,7 +3858,7 @@ paths: operationId: disposeRemaindersOfDeregisteredApplication summary: 'Removes application from configuration and application data' tags: - - IndividualServices + - BasicServices security: - apiKeyAuth: [] requestBody: @@ -3925,6 +3925,93 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' default: $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-preceding-release: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutPrecedingRelease + summary: 'Provides name and number of the preceding release' + tags: + - BasicServices + security: + - apiKeyAuth: [] + responses: + '200': + description: 'Name and number of the preceding release provided' + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - data-transfer-operations-list + properties: + application-name: + type: string + description: > + 'ApplicationName of the OldRelease + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'ReleaseNumber of the OldRelease + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + data-transfer-operations-list: + type: array + items: + type: string + description: > + 'List of operations required for transferring data from the oldRelease to the newRelease + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-im-nr-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + example: + application-name: 'RegistryOffice' + release-number: '1.0.0' + data-transfer-operations-list: + - '/v1/inquire-application-type-approvals' + - '/v1/notify-approvals' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' /v1/start-application-in-generic-representation: parameters: From 3287d6d00e6915457fe979b8f4296f4ccef37db9 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Wed, 6 Dec 2023 20:40:35 +0100 Subject: [PATCH 36/41] Support regard-application process of RO --- spec/ApplicationPattern+config.json | 25 ++++ spec/ApplicationPattern+services.yaml | 2 + spec/ApplicationPattern.yaml | 171 ++++++++++++++++++++++++-- 3 files changed, 189 insertions(+), 9 deletions(-) diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 44780522..5dd2be1b 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -549,6 +549,30 @@ } ] }, + { + "uuid": "xx-1-0-0-op-s-bm-015", + "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", + "client-ltp": [ + ], + "server-ltp": [ + "xx-1-0-0-http-s-000" + ], + "layer-protocol": [ + { + "local-id": "0", + "layer-protocol-name": "operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER", + "operation-server-interface-1-0:operation-server-interface-pac": { + "operation-server-interface-capability": { + "operation-name": "/v1/update-client-of-subsequent-release" + }, + "operation-server-interface-configuration": { + "life-cycle-state": "operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL", + "operation-key": "Operation key not yet provided." + } + } + } + ] + }, { "uuid": "xx-1-0-0-op-s-im-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SOURCE", @@ -735,6 +759,7 @@ "xx-1-0-0-op-s-bm-012", "xx-1-0-0-op-s-bm-013", "xx-1-0-0-op-s-bm-014", + "xx-1-0-0-op-s-bm-015", "xx-1-0-0-op-s-im-000", "xx-1-0-0-op-s-bs-000", "xx-1-0-0-op-s-bs-001", diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index 94d69794..aa28a409 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -32,6 +32,8 @@ servers: uuid: xx-1-0-0-op-s-bm-013 - operation-name: /v1/inform-about-preceding-release uuid: xx-1-0-0-op-s-bm-014 + - operation-name: /v1/update-client-of-subsequent-release + uuid: xx-1-0-0-op-s-bm-015 individual: - operation-name: /v1/bequeath-your-data-and-die uuid: xx-1-0-0-op-s-im-000 diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index c93228d6..f3662a2d 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -630,6 +630,10 @@ paths: callbacks: PromptForRegisteringCausesRegistrationRequest: url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: > + 'DEPRECATED + Callback shall be deleted with RO v3.0.0 + Starting from RO v2.1.0, PromptForRegisteringCausesRegistrationRequest shall be executed first and PromptForRegisteringCausesRegistrationRequest2 second. Sequence shall be kept regardless of the respective HTTP response codes.' post: parameters: - $ref: '#/components/parameters/user' @@ -826,11 +830,6 @@ paths: description: > 'Name of service for initiating embedding process from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' - dispose-remainders-operation: - type: string - description: > - 'Name of service for broadcasting de-registrations of applications - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' client-update-operation: type: string description: > @@ -841,6 +840,21 @@ paths: description: > 'Name of service for broadcasting replacements of operations by backward compatible substitutes from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + dispose-remainders-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + preceding-release-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + subsequent-release-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' tcp-server: type: object properties: @@ -3949,7 +3963,6 @@ paths: required: - application-name - release-number - - data-transfer-operations-list properties: application-name: type: string @@ -3961,6 +3974,147 @@ paths: description: > 'ReleaseNumber of the OldRelease from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + example: + application-name: 'ApplicationNameOfTheOldRelease' + release-number: '1.0.0' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/update-client-of-subsequent-release: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: UpdateClientOfSubsequentRelease + summary: 'Configures Http and TcpClient of the NewRelease' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - protocol + - address + - port + properties: + application-name: + type: string + description: > + 'Name of the application that is target of the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of the application that is target of the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + future-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + application-name: 'ApplicationNameOfNewRelease' + release-number: '17.1.2' + protocol: 'HTTP' + address: + ip-address: + ipv-4-address: '1.1.3.0' + port: 3000 + responses: + '200': + description: 'Operations required for transferring data provided' + content: + application/json: + schema: + type: object + required: + - bequeath-your-data-and-die-operation + - data-transfer-operations-list + properties: + bequeath-your-data-and-die-operation: + type: string + description: > + 'Operation for starting the handover process on the already existing application + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' data-transfer-operations-list: type: array items: @@ -3969,8 +4123,7 @@ paths: 'List of operations required for transferring data from the oldRelease to the newRelease from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-im-nr-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' example: - application-name: 'RegistryOffice' - release-number: '1.0.0' + bequeath-your-data-and-die-operation: '/v1/bequeath-your-data-and-die' data-transfer-operations-list: - '/v1/inquire-application-type-approvals' - '/v1/notify-approvals' @@ -4003,7 +4156,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': From 3ef98d401ab7dca7bfe407801ffbbc630d461170 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 8 Dec 2023 14:35:40 +0100 Subject: [PATCH 37/41] Add x-gui path --- spec/ApplicationPattern.yaml | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index f3662a2d..b17fb34f 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -3,9 +3,36 @@ info: title: ApplicationName version: 1.0.0 +x-gui-paths: +######################################################################################################################## +# Representation Layer +######################################################################################################################## + /docs: + get: + operationId: docs + summary: 'Represents Swagger API description page' + tags: + - RepresentationServices + responses: + '200': + description: 'Swagger API description page represented' + # Not explixitly described + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + paths: ######################################################################################################################## -# Service Layer - Individual Part - Following paths can be taken as a base for individualization +# Service Layer - Individual Part ######################################################################################################################## /v1/bequeath-your-data-and-die: parameters: @@ -432,7 +459,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' ######################################################################################################################## -# Service Layer - Basic Part - Following paths must be copied into every application +# Service Layer - Basic Part ######################################################################################################################## /v1/register-yourself: parameters: @@ -4562,7 +4589,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' ######################################################################################################################## -# OAM Layer - Individual Part - Following paths must be individualized, if additional Profiles have been defined +# OAM Layer - Individual Part ######################################################################################################################## /core-model-1-4:control-construct: get: @@ -5731,6 +5758,7 @@ paths: - uuid - profile-name - action-profile-1-0:action-profile-pac + additionalProperties: false properties: uuid: type: string @@ -6003,7 +6031,7 @@ paths: $ref: '#/components/responses/responseForErroredOamRequests' ######################################################################################################################## -# OAM Layer - Basic Part - Following paths must be copied, if respective class is applied in the application +# OAM Layer - Basic Part ######################################################################################################################## /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-capability/operation-name: parameters: From e366eb3c448b11685c66f9ba011d8140b9e7e2e2 Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Fri, 8 Dec 2023 16:03:34 +0100 Subject: [PATCH 38/41] Correct linting --- spec/ApplicationPattern.yaml | 2 +- spec/diagrams/bm013_DisposeRemainders.plantuml | 2 +- .../systemScope/001_Registering.plantuml | 2 +- .../systemScope/011_EmbedWithAlt.plantuml | 10 +++++----- .../systemScope/013_EmbedWithEatl.plantuml | 8 ++++---- .../systemScope/017_EmbedWithOkm.plantuml | 18 +++++++++--------- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index b17fb34f..938823c9 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -566,7 +566,7 @@ paths: type: string pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > - 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) + 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string diff --git a/spec/diagrams/bm013_DisposeRemainders.plantuml b/spec/diagrams/bm013_DisposeRemainders.plantuml index 3e10b9af..c1591d7f 100644 --- a/spec/diagrams/bm013_DisposeRemainders.plantuml +++ b/spec/diagrams/bm013_DisposeRemainders.plantuml @@ -32,7 +32,7 @@ deactivate disposeRemainders skinparam NoteBackgroundColor white note over RO Remark: -The following Forwardings become obsolete +The following Forwardings become obsolete at RO and potentially other TAC applications, too end note skinparam NoteBackgroundColor default diff --git a/spec/diagrams/systemScope/001_Registering.plantuml b/spec/diagrams/systemScope/001_Registering.plantuml index 3426856e..9b4da09b 100644 --- a/spec/diagrams/systemScope/001_Registering.plantuml +++ b/spec/diagrams/systemScope/001_Registering.plantuml @@ -33,7 +33,7 @@ Either manual or stored type approval of new application end note note left TarRegaA #LightBlue -Issue #tar294 for improving +Issue #tar294 for improving documenting approvals is pending end note TarRegaA -> RoRegaUa : (known ApiKey) diff --git a/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml b/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml index 43a81104..3681c7e2 100644 --- a/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml +++ b/spec/diagrams/systemScope/011_EmbedWithAlt.plantuml @@ -28,14 +28,14 @@ RoRegaUa -> AltRegaA : (known ApiKey) activate AltRegaA note over NewAppRtci #LightCoral - Default ApiKeys have to be assured in both + Default ApiKeys have to be assured in both OperationClient and OperationServer end note AltRegaA -> NewAppRtci : (default ApiKey) activate NewAppRtci note right NewAppRtci #LightBlue - NewApplication needs to internally update + NewApplication needs to internally update clients for ALT and its services before (!) sending the response, otherwise ALT content is wrong as ALT://v1/update-ltp will fail @@ -56,7 +56,7 @@ RoRegaUa -> AltRegaA : (known ApiKey) end note note over AltRegaA - Add + Add - ALT to Link of NewApplication://v1/redirect-topology-change-information - NewApplication to Link of ALT://v1/update-ltp - NewApplication to Link of ALT://v1/delete-ltp-and-dependents @@ -74,7 +74,7 @@ RoRegaUa -> AltRegaA : (known ApiKey) note left AltAoctL #LightBlue Addressing OKM://v2/regard-updated-link requires issue #alt485 to be implemented - end note + end note AltAoctL -> OkmReguL : (known ApiKey) deactivate AltAoctL @@ -85,7 +85,7 @@ RoRegaUa -> AltRegaA : (known ApiKey) end note OkmReguL ->x NewAppUok : (default ApiKey, NewApplication address) note over NewAppUok #White - OKM cannot yet overwrite Default ApiKeys as + OKM cannot yet overwrite Default ApiKeys as it didn't receive OKM://v1/regard-application, but Links are in ALT and ApiKeys would match in case key management would be activated diff --git a/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml b/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml index 32cc045f..acb9edc7 100644 --- a/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml +++ b/spec/diagrams/systemScope/013_EmbedWithEatl.plantuml @@ -25,7 +25,7 @@ RoRegaUa -> EatlRegaA : (known ApiKey) activate EatlRegaA note over EatlRegaA - Add + Add - EaTL to Link of NewApplication://v1/redirect-service-request-information - NewApplication to Link of EaTL://v1/record-service-request (ALT must hold ControlConstruct of NewApplication) @@ -51,7 +51,7 @@ RoRegaUa -> EatlRegaA : (known ApiKey) end note OkmReguL ->x NewAppUok : (default ApiKey, NewApplication address) note over NewAppUok #White - OKM cannot yet overwrite Default ApiKeys as + OKM cannot yet overwrite Default ApiKeys as it didn't receive OKM://v1/regard-application, but Links are in ALT and ApiKeys would match in case key management would be activated @@ -64,13 +64,13 @@ RoRegaUa -> EatlRegaA : (known ApiKey) end note note over NewAppRsri #LightCoral For smooth embedding with the first attempt - Default ApiKeys need to be in both + Default ApiKeys need to be in both OperationClient and OperationServer If not given, re-starting the Embedding process after a complete run might help. end note EatlRegaA -> NewAppRsri : (default ApiKey) - + activate NewAppRsri note over NewAppRsri #White All notifications fail as ApiKeys diff --git a/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml b/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml index 42e82bcc..4b802b44 100644 --- a/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml +++ b/spec/diagrams/systemScope/017_EmbedWithOkm.plantuml @@ -44,11 +44,11 @@ note over OkmRegaA note left AltAoctL #LightBlue Addressing OKM://v2/regard-updated-link requires issue #alt485 to be implemented - end note + end note AltAoctL -> OkmReguL : (known ApiKey) note over AltAoctL #White - Starting from now on, - OKM would attempt to update the ApiKey at + Starting from now on, + OKM would attempt to update the ApiKey at Client and Server of /v1/update-operation-key during its cyclic operation end note @@ -60,7 +60,7 @@ note over OkmRegaA requires issue #okm295 to be implemented end note note over NewAppUok #LightCoral - Default ApiKeys have to be assured in both + Default ApiKeys have to be assured in both OperationClient and OperationServer end note OkmReguL -> NewAppUok : (default ApiKey) @@ -76,16 +76,16 @@ note over OkmRegaA did not replace the Default ApiKey at the NewApp://v1/update-operation-key Server before it got Linked with the Client in OKM. - + Even after that, it is important that the - Server gets its new ApiKey first and the + Server gets its new ApiKey first and the Client right after. end note note over OkmRegaA #White Now, OKM starts its cyclic - operation and overwrites - default ApiKeys at all - OperationServers of + operation and overwrites + default ApiKeys at all + OperationServers of NewApplication end note OkmRegaA -> AltLiu : (known ApiKey) From 7e54e77634fccd4a2367970d1cb72fa5a0089dad Mon Sep 17 00:00:00 2001 From: openBackhaul Date: Sun, 10 Dec 2023 12:17:02 +0100 Subject: [PATCH 39/41] Update to AP v2.1.0 --- spec/ApplicationPattern+config.json | 172 +- spec/ApplicationPattern+forwardings.yaml | 35 +- spec/ApplicationPattern+profileInstances.yaml | 56 +- spec/ApplicationPattern+services.yaml | 158 +- spec/ApplicationPattern.yaml | 905 +- spec/Reference OAS.yaml | 10120 ++++++++++++++++ spec/diagrams/bm013_DisposeRemainders.png | Bin 0 -> 42527 bytes spec/diagrams/systemScope/001_Registering.png | Bin 37475 -> 37885 bytes spec/diagrams/systemScope/010_Embedding.png | Bin 54291 -> 54286 bytes .../diagrams/systemScope/011_EmbedWithAlt.png | Bin 177032 -> 177034 bytes .../systemScope/013_EmbedWithEatl.png | Bin 115548 -> 115539 bytes .../diagrams/systemScope/017_EmbedWithOkm.png | Bin 129135 -> 129114 bytes spec/diagrams/systemScope/EmbedNewApp.png | Bin 0 -> 169925 bytes .../systemScope/Improved_EmbedNewApp.png | Bin 0 -> 200515 bytes 14 files changed, 10682 insertions(+), 764 deletions(-) create mode 100644 spec/Reference OAS.yaml create mode 100644 spec/diagrams/bm013_DisposeRemainders.png create mode 100644 spec/diagrams/systemScope/EmbedNewApp.png create mode 100644 spec/diagrams/systemScope/Improved_EmbedNewApp.png diff --git a/spec/ApplicationPattern+config.json b/spec/ApplicationPattern+config.json index 5dd2be1b..4a8f2d63 100644 --- a/spec/ApplicationPattern+config.json +++ b/spec/ApplicationPattern+config.json @@ -5,7 +5,8 @@ "application": { "serverUrl": "https://125bf8ff-8193-4784-802a-b33bc1ec7879.mock.pstmn.io", "userName": " *** your name *** ", - "authorizationCode": " *** your key *** ", + "authorizationCode": " *** your code *** ", + "operationKey": " *** your key *** ", "core-model-1-4:control-construct": { "uuid": "xx-1-0-0", "profile-collection": { @@ -815,7 +816,7 @@ "local-address": { "ipv-4-address": "127.0.0.1" }, - "local-port": 3008 + "local-port": 3001 } } } @@ -887,7 +888,7 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": "1.1.3.15" + "ipv-4-address": "127.0.0.1" } }, "remote-port": 3015 @@ -960,10 +961,10 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": " >>> IpAddress and Port (below) of the existing release <<< " + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 1000 + "remote-port": 3001 } } } @@ -1007,22 +1008,22 @@ "remote-protocol": "tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP", "remote-address": { "ip-address": { - "ipv-4-address": " >>> IpAddress and Port (below) of the new release <<< " + "ipv-4-address": "127.0.0.1" } }, - "remote-port": 7000 + "remote-port": 3001 } } } ] }, { - "uuid": "xx-1-0-0-op-c-bm-ro-2-0-1-000", + "uuid": "xx-1-0-0-op-c-bm-ro-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-ro-2-0-1-000" + "xx-1-0-0-http-c-ro-2-1-0-000" ], "layer-protocol": [ { @@ -1042,12 +1043,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-ro-2-0-1-001", + "uuid": "xx-1-0-0-op-c-bm-ro-2-1-0-001", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-ro-2-0-1-000" + "xx-1-0-0-http-c-ro-2-1-0-000" ], "layer-protocol": [ { @@ -1067,12 +1068,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-ro-2-0-1-002", + "uuid": "xx-1-0-0-op-c-bm-ro-2-1-0-002", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-ro-2-0-1-000" + "xx-1-0-0-http-c-ro-2-1-0-000" ], "layer-protocol": [ { @@ -1092,12 +1093,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-ro-2-0-1-003", + "uuid": "xx-1-0-0-op-c-bm-ro-2-1-0-003", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-ro-2-0-1-000" + "xx-1-0-0-http-c-ro-2-1-0-000" ], "layer-protocol": [ { @@ -1117,16 +1118,16 @@ ] }, { - "uuid": "xx-1-0-0-http-c-ro-2-0-1-000", + "uuid": "xx-1-0-0-http-c-ro-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-op-c-bm-ro-2-0-1-000", - "xx-1-0-0-op-c-bm-ro-2-0-1-001", - "xx-1-0-0-op-c-bm-ro-2-0-1-002", - "xx-1-0-0-op-c-bm-ro-2-0-1-003" + "xx-1-0-0-op-c-bm-ro-2-1-0-000", + "xx-1-0-0-op-c-bm-ro-2-1-0-001", + "xx-1-0-0-op-c-bm-ro-2-1-0-002", + "xx-1-0-0-op-c-bm-ro-2-1-0-003" ], "server-ltp": [ - "xx-1-0-0-tcp-c-ro-2-0-1-000" + "xx-1-0-0-tcp-c-ro-2-1-0-000" ], "layer-protocol": [ { @@ -1142,10 +1143,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-ro-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-ro-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-ro-2-0-1-000" + "xx-1-0-0-http-c-ro-2-1-0-000" ], "server-ltp": [ ], @@ -1168,12 +1169,12 @@ ] }, { - "uuid": "xx-1-0-0-http-c-tar-2-0-1-000", + "uuid": "xx-1-0-0-http-c-tar-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-tcp-c-tar-2-0-1-000" + "xx-1-0-0-tcp-c-tar-2-1-0-000" ], "layer-protocol": [ { @@ -1189,10 +1190,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-tar-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-tar-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-tar-2-0-1-000" + "xx-1-0-0-http-c-tar-2-1-0-000" ], "server-ltp": [ ], @@ -1215,12 +1216,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bs-eatl-2-0-1-000", + "uuid": "xx-1-0-0-op-c-bs-eatl-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-eatl-2-0-1-000" + "xx-1-0-0-http-c-eatl-2-1-0-000" ], "layer-protocol": [ { @@ -1241,13 +1242,13 @@ ] }, { - "uuid": "xx-1-0-0-http-c-eatl-2-0-1-000", + "uuid": "xx-1-0-0-http-c-eatl-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-op-c-bs-eatl-2-0-1-000" + "xx-1-0-0-op-c-bs-eatl-2-1-0-000" ], "server-ltp": [ - "xx-1-0-0-tcp-c-eatl-2-0-1-000" + "xx-1-0-0-tcp-c-eatl-2-1-0-000" ], "layer-protocol": [ { @@ -1263,10 +1264,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-eatl-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-eatl-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-eatl-2-0-1-000" + "xx-1-0-0-http-c-eatl-2-1-0-000" ], "server-ltp": [ ], @@ -1289,12 +1290,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bs-ol-2-0-1-000", + "uuid": "xx-1-0-0-op-c-bs-ol-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-ol-2-0-1-000" + "xx-1-0-0-http-c-ol-2-1-0-000" ], "layer-protocol": [ { @@ -1314,13 +1315,13 @@ ] }, { - "uuid": "xx-1-0-0-http-c-ol-2-0-1-000", + "uuid": "xx-1-0-0-http-c-ol-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-op-c-bs-ol-2-0-1-000" + "xx-1-0-0-op-c-bs-ol-2-1-0-000" ], "server-ltp": [ - "xx-1-0-0-tcp-c-ol-2-0-1-000" + "xx-1-0-0-tcp-c-ol-2-1-0-000" ], "layer-protocol": [ { @@ -1336,10 +1337,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-ol-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-ol-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-ol-2-0-1-000" + "xx-1-0-0-http-c-ol-2-1-0-000" ], "server-ltp": [ ], @@ -1435,12 +1436,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-000", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1460,12 +1461,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-001", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-001", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1485,12 +1486,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-002", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-002", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1510,12 +1511,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-003", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-003", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1535,12 +1536,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-004", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-004", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1560,12 +1561,12 @@ ] }, { - "uuid": "xx-1-0-0-op-c-bm-alt-2-0-1-005", + "uuid": "xx-1-0-0-op-c-bm-alt-2-1-0-005", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1585,18 +1586,18 @@ ] }, { - "uuid": "xx-1-0-0-http-c-alt-2-0-1-000", + "uuid": "xx-1-0-0-http-c-alt-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-op-c-bm-alt-2-0-1-000", - "xx-1-0-0-op-c-bm-alt-2-0-1-001", - "xx-1-0-0-op-c-bm-alt-2-0-1-002", - "xx-1-0-0-op-c-bm-alt-2-0-1-003", - "xx-1-0-0-op-c-bm-alt-2-0-1-004", - "xx-1-0-0-op-c-bm-alt-2-0-1-005" + "xx-1-0-0-op-c-bm-alt-2-1-0-000", + "xx-1-0-0-op-c-bm-alt-2-1-0-001", + "xx-1-0-0-op-c-bm-alt-2-1-0-002", + "xx-1-0-0-op-c-bm-alt-2-1-0-003", + "xx-1-0-0-op-c-bm-alt-2-1-0-004", + "xx-1-0-0-op-c-bm-alt-2-1-0-005" ], "server-ltp": [ - "xx-1-0-0-tcp-c-alt-2-0-1-000" + "xx-1-0-0-tcp-c-alt-2-1-0-000" ], "layer-protocol": [ { @@ -1612,10 +1613,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-alt-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-alt-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-alt-2-0-1-000" + "xx-1-0-0-http-c-alt-2-1-0-000" ], "server-ltp": [ ], @@ -1638,12 +1639,12 @@ ] }, { - "uuid": "xx-1-0-0-http-c-okm-2-0-1-000", + "uuid": "xx-1-0-0-http-c-okm-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ ], "server-ltp": [ - "xx-1-0-0-tcp-c-okm-2-0-1-000" + "xx-1-0-0-tcp-c-okm-2-1-0-000" ], "layer-protocol": [ { @@ -1659,10 +1660,10 @@ ] }, { - "uuid": "xx-1-0-0-tcp-c-okm-2-0-1-000", + "uuid": "xx-1-0-0-tcp-c-okm-2-1-0-000", "ltp-direction": "core-model-1-4:TERMINATION_DIRECTION_SINK", "client-ltp": [ - "xx-1-0-0-http-c-okm-2-0-1-000" + "xx-1-0-0-http-c-okm-2-1-0-000" ], "server-ltp": [ ], @@ -1715,7 +1716,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-0-1-000" + "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-1-0-000" } ] }, @@ -1860,7 +1861,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bs-eatl-2-0-1-000" + "logical-termination-point": "xx-1-0-0-op-c-bs-eatl-2-1-0-000" } ] }, @@ -1885,7 +1886,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bs-ol-2-0-1-000" + "logical-termination-point": "xx-1-0-0-op-c-bs-ol-2-1-0-000" } ] }, @@ -1907,6 +1908,11 @@ "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT", "logical-termination-point": "xx-1-0-0-op-s-bm-012" }, + { + "local-id": "001", + "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT", + "logical-termination-point": "xx-1-0-0-op-s-bm-005" + }, { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", @@ -1940,7 +1946,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-0-1-001" + "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-1-0-001" } ] }, @@ -1970,7 +1976,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-0-1-002" + "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-1-0-002" } ] }, @@ -2000,7 +2006,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-0-1-003" + "logical-termination-point": "xx-1-0-0-op-c-bm-ro-2-1-0-003" } ] }, @@ -2075,7 +2081,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-001" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-001" } ] }, @@ -2105,7 +2111,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-002" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-002" } ] }, @@ -2130,7 +2136,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-003" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-003" } ] }, @@ -2155,7 +2161,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-004" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-004" } ] }, @@ -2185,7 +2191,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-005" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-005" } ] }, @@ -2210,7 +2216,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-001" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-001" } ] }, @@ -2235,7 +2241,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-002" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-002" } ] }, @@ -2260,7 +2266,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-003" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-003" } ] }, @@ -2285,7 +2291,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-004" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-004" } ] }, @@ -2310,7 +2316,7 @@ { "local-id": "200", "port-direction": "core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT", - "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-0-1-005" + "logical-termination-point": "xx-1-0-0-op-c-bm-alt-2-1-0-005" } ] } diff --git a/spec/ApplicationPattern+forwardings.yaml b/spec/ApplicationPattern+forwardings.yaml index 6205c59d..a20f8f2c 100644 --- a/spec/ApplicationPattern+forwardings.yaml +++ b/spec/ApplicationPattern+forwardings.yaml @@ -17,7 +17,7 @@ forwardings: uuid: xx-1-0-0-op-s-bm-000 consequent-requests: - client-name: RegistryOffice://v2/register-application - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-000 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-000 - forwarding-name: PromptForEmbeddingCausesRequestForBequeathingData uuid: xx-1-0-0-op-fc-bm-001 @@ -88,7 +88,7 @@ forwardings: ## TODO: All service requests to be complemented consequent-requests: - client-name: ExecutionAndTraceLog://v1/record-service-request - uuid: xx-1-0-0-op-c-bs-eatl-2-0-1-000 + uuid: xx-1-0-0-op-c-bs-eatl-2-1-0-000 - forwarding-name: OamRequestCausesLoggingRequest uuid: xx-1-0-0-op-fc-bm-003 @@ -103,9 +103,10 @@ forwardings: fc-port-deletion: operation-client-deletion: initiating-requests: + # [all oam requests] consequent-requests: - client-name: OamLog://v1/record-oam-request - uuid: xx-1-0-0-op-c-bs-ol-2-0-1-000 + uuid: xx-1-0-0-op-c-bs-ol-2-1-0-000 - forwarding-name: BasicAuthRequestCausesInquiryForAuthentication uuid: xx-1-0-0-op-fc-bm-005 @@ -126,7 +127,7 @@ forwardings: initiating-requests: # [all oam requests] consequent-requests: - - client-name: AdministratorAdministration://v1/approve-oam-request + - client-name: AccessAdministration://v1/approve-basic-auth-request uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 ## TODO: Potentially add Forwardings for configuring INDIVIDUAL subscriptions on NewRelease @@ -154,7 +155,7 @@ forwardings: uuid: xx-1-0-0-op-s-im-000 consequent-requests: - client-name: RegistryOffice://v1/relay-server-replacement - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-001 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-001 - forwarding-name: PromptForBequeathingDataCausesRequestForDeregisteringOfOldRelease uuid: xx-1-0-0-op-fc-bm-106 @@ -173,7 +174,7 @@ forwardings: uuid: xx-1-0-0-op-s-im-000 consequent-requests: - client-name: RegistryOffice://v1/deregister-application - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-002 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-002 - forwarding-name: PromptingNewReleaseForUpdatingServerCausesRequestForBroadcastingInfoAboutBackwardCompatibleUpdateOfOperation uuid: xx-1-0-0-op-fc-bm-107 @@ -192,7 +193,7 @@ forwardings: uuid: xx-1-0-0-op-s-bm-007 consequent-requests: - client-name: RegistryOffice://v1/relay-operation-update - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-003 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-003 - forwarding-name: ServiceRequestCausesLtpUpdateRequest uuid: xx-1-0-0-op-fc-bm-006 @@ -230,7 +231,7 @@ forwardings: ## TODO: All INDIVIDUAL service requests, which are updating an LTP, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/update-ltp - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-001 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-001 - forwarding-name: ServiceRequestCausesLtpDeletionRequest uuid: xx-1-0-0-op-fc-bm-007 @@ -250,7 +251,7 @@ forwardings: ## TODO: All INDIVIDUAL service requests, which are deleting an LTP, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/delete-ltp-and-dependents - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-002 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-002 - forwarding-name: ServiceRequestCausesFcUpdateRequest uuid: xx-1-0-0-op-fc-bm-008 @@ -268,7 +269,7 @@ forwardings: ## TODO: All INDIVIDUAL service requests, which are updating an FC, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/update-fc - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-003 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-003 - forwarding-name: ServiceRequestCausesFcPortUpdateRequest uuid: xx-1-0-0-op-fc-bm-009 @@ -286,7 +287,7 @@ forwardings: ## TODO: All INDIVIDUAL service requests, which are updating an FC-Port, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/update-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-004 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-004 - forwarding-name: ServiceRequestCausesFcPortDeletionRequest uuid: xx-1-0-0-op-fc-bm-010 @@ -306,7 +307,7 @@ forwardings: ## TODO: All INDIVIDUAL service requests, which are deleting an FC-Port, to be complemented consequent-requests: - client-name: ApplicationLayerTopology://v1/delete-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-005 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-005 - forwarding-name: OamRequestCausesLtpUpdateRequest uuid: xx-1-0-0-op-fc-bm-011 @@ -323,7 +324,7 @@ forwardings: initiating-requests: consequent-requests: - client-name: ApplicationLayerTopology://v1/update-ltp - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-001 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-001 - forwarding-name: OamRequestCausesLtpDeletionRequest uuid: xx-1-0-0-op-fc-bm-012 @@ -340,7 +341,7 @@ forwardings: initiating-requests: consequent-requests: - client-name: ApplicationLayerTopology://v1/delete-ltp-and-dependents - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-002 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-002 - forwarding-name: OamRequestCausesFcUpdateRequest uuid: xx-1-0-0-op-fc-bm-013 @@ -357,7 +358,7 @@ forwardings: initiating-requests: consequent-requests: - client-name: ApplicationLayerTopology://v1/update-fc - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-003 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-003 - forwarding-name: OamRequestCausesFcPortUpdateRequest uuid: xx-1-0-0-op-fc-bm-014 @@ -374,7 +375,7 @@ forwardings: initiating-requests: consequent-requests: - client-name: ApplicationLayerTopology://v1/update-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-004 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-004 - forwarding-name: OamRequestCausesFcPortDeletionRequest uuid: xx-1-0-0-op-fc-bm-015 @@ -391,6 +392,6 @@ forwardings: initiating-requests: consequent-requests: - client-name: ApplicationLayerTopology://v1/delete-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-005 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-005 ## TODO: Potential INDIVIDUAL Forwardings to be added diff --git a/spec/ApplicationPattern+profileInstances.yaml b/spec/ApplicationPattern+profileInstances.yaml index 81ab256d..bdb1d94d 100644 --- a/spec/ApplicationPattern+profileInstances.yaml +++ b/spec/ApplicationPattern+profileInstances.yaml @@ -1,34 +1,34 @@ profile-instances: - profile-name: 'ActionProfile' - uuid: '*-action-p-000' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-action-p-000' capability: operation-name: '/v1/start-application-in-generic-representation' label: 'Inform about Application' display-in-new-browser-window: false configuration: - consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' - profile-name: 'ActionProfile' - uuid: '*-action-p-001' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-action-p-001' capability: operation-name: '/v1/inform-about-application-in-generic-representation' label: 'Release History' display-in-new-browser-window: false configuration: - consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' - profile-name: 'ActionProfile' - uuid: '*-action-p-002' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-action-p-002' capability: operation-name: '/v1/inform-about-application-in-generic-representation' label: 'API Documentation' display-in-new-browser-window: true configuration: - consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' - profile-name: 'ActionProfile' - uuid: '*-action-p-???' ## TODO: Replace "*" by ApplicationID and ReleaseNumber and ??? by SequenceNumber + uuid: 'xx-1-0-0-action-p-???' and ??? by SequenceNumber capability: operation-name: ## TODO: Add generic representation operation that shall result in a new button and potentially new input fields label: ## TODO: Add label of the new button @@ -44,87 +44,87 @@ profile-instances: - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-000' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-000' capability: operation-name: '/v1/start-application-in-generic-representation' static-field-name: 'applicationName' description: 'Own application name' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-001' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-001' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'applicationName' description: 'Name of this application' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-002' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-002' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'releaseNumber' description: 'Number of this release' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-003' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-003' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'applicationPurpose' description: 'Purpose of this application' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-004' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-004' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'dataUpdatePeriod' description: 'Period of updating the data inside this application' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-005' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-005' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'ownerName' description: 'Name of the ApplicationOwner' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-006' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-006' capability: operation-name: '/v1/inform-about-application-in-generic-representation' static-field-name: 'ownerEmailAddress' description: 'Email address of the ApplicationOwner' datatype: 'string' configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-007' ## TODO: Replace "*" by ApplicationID and ReleaseNumber + uuid: 'xx-1-0-0-response-p-007' capability: operation-name: '/v1/inform-about-release-history-in-generic-representation' - field-name-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=0/release-number' + field-name-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=0/release-number' description: 'Represents the first entry in the list of releases' datatype: string configuration: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=0/changes' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=0/changes' - profile-name: 'GenericResponseProfile' - uuid: '*-response-p-???' ## TODO: Replace "*" by ApplicationID and ReleaseNumber and ??? by SequenceNumber + uuid: 'xx-1-0-0-response-p-???' and ??? by SequenceNumber capability: operation-name: ## TODO: Add generic representation operation that shall provide this response static-field-name: ## TODO: Add the concrete name of the field as it shall be respresented in the GUI EXOR a reference from which the name of the field shall be taken. ... @@ -139,7 +139,7 @@ profile-instances: - profile-name: 'FileProfile' - uuid: '*-file-p-???' ## TODO: Replace "*" by ApplicationID and ReleaseNumber and ??? by SequenceNumber + uuid: 'xx-1-0-0-file-p-???' and ??? by SequenceNumber capability: file-identifier: ## TODO: Add invariant identifier of the referenced file file-description: ## TODO: Add a description of the content of the referenced file @@ -151,7 +151,7 @@ profile-instances: - profile-name: 'IntegerProfile' - uuid: '*-integer-p-???' ## TODO: Replace "*" by ApplicationID and ReleaseNumber and ??? by SequenceNumber + uuid: 'xx-1-0-0-integer-p-???' and ??? by SequenceNumber capability: integer-name: ## TODO: Add name of the Integer attribute purpose: ## TODO: Potentially add description of the Integer attribute @@ -165,7 +165,7 @@ profile-instances: - profile-name: 'StringProfile' - uuid: '*-string-p-???' ## TODO: Replace "*" by ApplicationID and ReleaseNumber and ??? by SequenceNumber + uuid: 'xx-1-0-0-string-p-???' and ??? by SequenceNumber capability: string-name: ## TODO: Add name of the String attribute enumeration: ## TODO: Potentially add a set of allowed values in cornered brackets diff --git a/spec/ApplicationPattern+services.yaml b/spec/ApplicationPattern+services.yaml index aa28a409..ab511d61 100644 --- a/spec/ApplicationPattern+services.yaml +++ b/spec/ApplicationPattern+services.yaml @@ -1,5 +1,4 @@ servers: -## TODO: Search and replace all "xx" in the uuid by the official abbreviation of the ApplicationName operation-servers: own-oam: @@ -52,16 +51,15 @@ servers: - operation-name: /docs uuid: xx-1-0-0-op-s-bs-005 individual: - ## TODO: Add Services specific to this application http-server: - own-application-name: ## TODO: Add OwnApplicationName - own-release-number: ## TODO: Add OwnReleaseNumber (e.g. 1.0.0) + own-application-name: + own-release-number: uuid: xx-1-0-0-http-s-000 tcp-server: - description: Without TLS layer local-protocol: http - own-ip-address: ## TODO: Add OwnIpAddress - own-tcp-port: ## TODO: Add OwnTcpPort + own-ip-address: 127.0.0.1 + own-tcp-port: uuid: xx-1-0-0-tcp-s-000 @@ -73,21 +71,21 @@ clients: uuid: xx-1-0-0-http-c-es-1-0-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.15 + ip-address: 127.0.0.1 tcp-port: 3015 uuid: xx-1-0-0-tcp-c-es-1-0-0-000 elasticsearch-client: uuid: xx-1-0-0-es-c-es-1-0-0-000 - index-alias: ## TODO: Add IndexAlias + index-alias: - http-client: application-name: OldRelease - release-number: ## TODO: Add Number of Release to be substituted (e.g. 1.0.0) + release-number: uuid: xx-1-0-0-http-c-or-1-0-0-000 tcp-client: remote-protocol: http - ip-address: ## TODO: Add IpAddress of Release to be substituted - tcp-port: ## TODO: Add TcpPort of Release to be substituted + ip-address: 127.0.0.1 + tcp-port: uuid: xx-1-0-0-tcp-c-or-1-0-0-000 operation-clients: own-oam: @@ -101,196 +99,162 @@ clients: - http-client: application-name: NewRelease - release-number: ## TODO: Add Number of substituting Release (e.g. 1.0.1) + release-number: uuid: xx-1-0-0-http-c-nr-1-0-0-000 tcp-client: remote-protocol: http - ip-address: ## TODO: Add IpAddress of substituting Release - tcp-port: ## TODO: Add TcpPort of substituting Release + ip-address: 127.0.0.1 + tcp-port: uuid: xx-1-0-0-tcp-c-nr-1-0-0-000 operation-clients: own-oam: basic: individual: - ## TODO: Add Services required for handing-over configuration or data during update service: basic: individual: - http-client: application-name: RegistryOffice - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-ro-2-0-1-000 + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-ro-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.8 - tcp-port: 3008 - uuid: xx-1-0-0-tcp-c-ro-2-0-1-000 + ip-address: 127.0.0.1 + tcp-port: 3024 + uuid: xx-1-0-0-tcp-c-ro-2-1-0-000 operation-clients: own-oam: basic: - operation-name: /v2/register-application - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-000 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-000 - operation-name: /v1/relay-server-replacement - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-001 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-001 - operation-name: /v1/deregister-application - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-002 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-002 - operation-name: /v1/relay-operation-update - uuid: xx-1-0-0-op-c-bm-ro-2-0-1-003 + uuid: xx-1-0-0-op-c-bm-ro-2-1-0-003 individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications individual: - ## TODO: Add Clients specific to this application - http-client: application-name: TypeApprovalRegister - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-tar-2-0-1-000 + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-tar-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.9 - tcp-port: 3009 - uuid: xx-1-0-0-tcp-c-tar-2-0-1-000 + ip-address: 127.0.0.1 + tcp-port: 3025 + uuid: xx-1-0-0-tcp-c-tar-2-1-0-000 operation-clients: own-oam: basic: individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications individual: - ## TODO: Add Clients specific to this application - http-client: application-name: ExecutionAndTraceLog - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-eatl-2-0-1-000 + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-eatl-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.10 - tcp-port: 3010 - uuid: xx-1-0-0-tcp-c-eatl-2-0-1-000 + ip-address: 127.0.0.1 + tcp-port: 3026 + uuid: xx-1-0-0-tcp-c-eatl-2-1-0-000 operation-clients: own-oam: basic: - - operation-name: /v1/record-service-request - uuid: xx-1-0-0-op-c-bs-eatl-2-0-1-000 individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications + - operation-name: /v1/record-service-request + uuid: xx-1-0-0-op-c-bs-eatl-2-1-0-000 individual: - ## TODO: Add Clients specific to this application - http-client: application-name: OamLog - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-ol-2-0-1-000 + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-ol-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.11 - tcp-port: 3011 - uuid: xx-1-0-0-tcp-c-ol-2-0-1-000 + ip-address: 127.0.0.1 + tcp-port: 3027 + uuid: xx-1-0-0-tcp-c-ol-2-1-0-000 operation-clients: own-oam: basic: - - operation-name: /v1/record-oam-request - uuid: xx-1-0-0-op-c-bs-ol-2-0-1-000 individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications + - operation-name: /v1/record-oam-request + uuid: xx-1-0-0-op-c-bs-ol-2-1-0-000 individual: - ## TODO: Add Clients specific to this application - http-client: - application-name: AcccessAdministration + application-name: AccessAdministration release-number: 2.1.0 uuid: xx-1-0-0-http-c-aa-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.12 - tcp-port: 3012 + ip-address: 127.0.0.1 + tcp-port: 3028 uuid: xx-1-0-0-tcp-c-aa-2-1-0-000 operation-clients: own-oam: basic: - - operation-name: /v1/approve-oam-request - uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications + - operation-name: /v1/approve-basic-auth-request + uuid: xx-1-0-0-op-c-bs-aa-2-1-0-000 individual: - ## TODO: Add Clients specific to this application - http-client: application-name: ApplicationLayerTopology - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-alt-2-0-1-000 + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-alt-2-1-0-000 tcp-client: remote-protocol: http - ip-address: 1.1.3.13 - tcp-port: 3013 - uuid: xx-1-0-0-tcp-c-alt-2-0-1-000 + ip-address: 127.0.0.1 + tcp-port: 3029 + uuid: xx-1-0-0-tcp-c-alt-2-1-0-000 operation-clients: own-oam: basic: - operation-name: /v1/update-all-ltps-and-fcs - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-000 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-000 - operation-name: /v1/update-ltp - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-001 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-001 - operation-name: /v1/delete-ltp-and-dependents - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-002 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-002 - operation-name: /v1/update-fc - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-003 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-003 - operation-name: /v1/update-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-004 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-004 - operation-name: /v1/delete-fc-port - uuid: xx-1-0-0-op-c-bm-alt-2-0-1-005 + uuid: xx-1-0-0-op-c-bm-alt-2-1-0-005 individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications individual: - ## TODO: Add Clients specific to this application - http-client: application-name: OperationKeyManagement - release-number: 2.0.1 - uuid: xx-1-0-0-http-c-okm-2-0-1-000 - tcp-client: - remote-protocol: http - ip-address: 1.1.3.14 - tcp-port: 3014 - uuid: xx-1-0-0-tcp-c-okm-2-0-1-000 - operation-clients: - own-oam: - basic: - individual: - service: - basic: - ## TODO: Add Clients specific to this application, but addressing all other applications - individual: - ## TODO: Add Clients specific to this application - - - http-client: - application-name: ## TODO: Add Name of application to be addressed - release-number: ## TODO: Add Release number of application to be addressed - uuid: ## TODO: Add UUID of the HttpClient + release-number: 2.1.0 + uuid: xx-1-0-0-http-c-okm-2-1-0-000 tcp-client: remote-protocol: http - ip-address: ## TODO: Add IP address of application to be addressed - tcp-port: ## TODO: Add TCP port of application to be addressed - uuid: ## TODO: Add UUID of the TcpClient + ip-address: 127.0.0.1 + tcp-port: 3030 + uuid: xx-1-0-0-tcp-c-okm-2-1-0-000 operation-clients: own-oam: basic: individual: service: basic: - ## TODO: Add Clients specific to this application, but addressing all other applications individual: - ## TODO: Add Clients specific to this application diff --git a/spec/ApplicationPattern.yaml b/spec/ApplicationPattern.yaml index 938823c9..57334f6c 100644 --- a/spec/ApplicationPattern.yaml +++ b/spec/ApplicationPattern.yaml @@ -65,13 +65,13 @@ paths: type: string description: > 'Name of application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' new-application-release: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' new-application-protocol: type: string enum: @@ -79,7 +79,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' new-application-address: type: object minProperties: 1 @@ -96,28 +96,28 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' new-application-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall be target of the handover process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: new-application-name: 'NewApplicationName' - new-application-release: '2.0.2' + new-application-release: '32.6.3' new-application-protocol: 'HTTP' new-application-address: ip-address: - ipv-4-address: '1.1.3.17' - new-application-port: 3017 + ipv-4-address: '1.1.3.1' + new-application-port: 3001 responses: '204': description: 'Process of embedding a new release initiated' @@ -150,7 +150,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -168,7 +168,7 @@ paths: # individual callbacks to be added here PromptForBequeathingDataCausesRequestForBroadcastingInfoAboutServerReplacement: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -195,27 +195,27 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' current-release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' future-application-name: type: string description: > 'Future name of the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' future-release-number: type: string description: > 'Future release number of the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' future-protocol: type: string description: > 'Protocol to be used in future for addressing the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' future-address: type: object properties: @@ -226,27 +226,17 @@ paths: type: string description: > 'Future IPv4 address of the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string description: > 'Future domain name of the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' future-port: type: integer description: > 'Future port of the application that has updated connection data - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' - example: - current-application-name: 'RegistryOffice' - current-release-number: '1.0.0' - future-application-name: 'RegistryOffice' - future-release-number: '2.0.2' - future-protocol: 'HTTP' - future-address: - ip-address: - ipv-4-address: '1.1.3.17' - future-port: 3017 + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' responses: '204': description: 'Will broadcast server replacement' @@ -291,7 +281,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' PromptForBequeathingDataCausesRequestForDeregisteringOfOldRelease: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -313,15 +303,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' - example: - application-name: 'BadApplication' - release-number: '1.0.0' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' responses: '204': description: 'Application deregistered' @@ -366,7 +353,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' PromptingNewReleaseForUpdatingServerCausesRequestForBroadcastingInfoAboutBackwardCompatibleUpdateOfOperation: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: > 'This callback belongs to the sequence of actions that have to be done during the bequeath-your-data-and-die process, despite the forwarding gets neither managed nor directly initiated by the /v1/bequeath-your-data-and-die request. After consuming applications have been redirected to the new release, the new release is triggered (this callback) to request the RegistryOffice for broadcasting information about backward compatible replacements of services.' @@ -393,27 +380,22 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' old-operation-name: type: string description: > 'Name of the deprecated operation - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' new-operation-name: type: string description: > 'Name of the replacing operation - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' - example: - application-name: 'RegistryOffice' - release-number: '2.0.2' - old-operation-name: '/v1/register-application' - new-operation-name: '/v2/register-application' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' responses: '204': description: 'Will broadcast operation update' @@ -500,19 +482,19 @@ paths: minLength: 3 description: > 'If body provided, name of RegistryOffice application - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' registry-office-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'If body provided, release of RegistryOffice application - find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' registration-operation: type: string minLength: 6 description: > 'If body provided, operation for registering - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' registry-office-protocol: type: string enum: @@ -520,7 +502,7 @@ paths: - 'HTTPS' description: > 'If body provided, protocol for addressing the RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' registry-office-address: type: object minProperties: 1 @@ -537,20 +519,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'If body provided, IPv4 address of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'If body provided, domain name of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' registry-office-port: type: integer minimum: 0 maximum: 65535 description: > 'If body provided, port of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' http-address: type: object minProperties: 1 @@ -567,20 +549,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'If provided, own domain name, which has to be documented (but not be directly used for formulating the callback) - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' http-port: type: integer minimum: 0 maximum: 65535 description: > 'If provided, own TCP port, which has to be documented (but not be directly used for formulating the callback) - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' preceding-application-name: type: string minLength: 3 @@ -595,20 +577,20 @@ paths: 'If application-name in *-http-c-or-* different from OldRelease, the new application will address /v1/bequeath-your-data-and-die at the preceding release after receiving /v1/embed-yourself update [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' example: - registry-office-application: 'RegistryOffice' - registry-office-application-release-number: '2.0.2' + registry-office-application: 'ApplicationForRegistering' + registry-office-application-release-number: '43.3.4' registration-operation: '/v2/register-application' registry-office-protocol: 'HTTP' registry-office-address: ip-address: - ipv-4-address: '1.1.3.17' - registry-office-port: 3017 + ipv-4-address: '1.1.3.1' + registry-office-port: 3001 http-address: ip-address: - ipv-4-address: '1.1.3.18' - http-port: 3018 - preceding-application-name: 'TypeApprovalRegister' - preceding-release-number: '1.0.0' + ipv-4-address: '1.1.3.1' + http-port: 3001 + preceding-application-name: 'OldApplicationName' + preceding-release-number: '54.3.3' responses: '204': description: 'Will register at the RegistryOffice' @@ -641,7 +623,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -656,7 +638,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: PromptForRegisteringCausesRegistrationRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-1-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-1-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: > 'DEPRECATED Callback shall be deleted with RO v3.0.0 @@ -686,12 +668,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' preceding-application-name: type: string description: > @@ -708,17 +690,17 @@ paths: type: string description: > 'Name of service for initiating embedding process - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' client-update-operation: type: string description: > 'Name of service for broadcasting server changes - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' operation-client-update-operation: type: string description: > 'Name of service for broadcasting replacements of operations by backward compatible substitutes - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' tcp-server-list: type: array items: @@ -732,7 +714,7 @@ paths: type: string description: > 'Own protocol (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' address: type: object properties: @@ -743,36 +725,17 @@ paths: type: string description: > 'Own IPv4 address (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string description: > 'Own domain name (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' port: type: integer description: > 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' - example: - application-name: 'TypeApprovalRegister' - release-number: '2.0.1' - preceding-application-name: 'TypeApprovalRegister' - preceding-release-number: '1.0.0' - embedding-operation: '/v1/embed-yourself' - client-update-operation: '/v1/update-client' - operation-client-update-operation: '/v1/update-operation-client' - tcp-server-list: - - protocol: 'HTTP' - address: - ip-address: - ipv-4-address: '1.1.3.9' - port: 3009 - - protocol: 'HTTPS' - address: - ip-address: - ipv-4-address: '1.2.3.9' - port: 3209 + from[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' responses: '204': description: 'Application registered' @@ -815,7 +778,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' PromptForRegisteringCausesRegistrationRequest2: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -834,12 +797,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' preceding-application-name: type: string description: > @@ -856,32 +819,32 @@ paths: type: string description: > 'Name of service for initiating embedding process - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' client-update-operation: type: string description: > 'Name of service for broadcasting server changes - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' operation-client-update-operation: type: string description: > 'Name of service for broadcasting replacements of operations by backward compatible substitutes - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' dispose-remainders-operation: type: string description: > 'Name of service for broadcasting de-registrations of applications - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' preceding-release-operation: type: string description: > 'Name of service for broadcasting de-registrations of applications - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' subsequent-release-operation: type: string description: > 'Name of service for broadcasting de-registrations of applications - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' tcp-server: type: object properties: @@ -889,7 +852,7 @@ paths: type: string description: > 'Own protocol (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' address: type: object properties: @@ -900,17 +863,17 @@ paths: type: string description: > 'Own IPv4 address (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string description: > 'Own domain name (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' port: type: integer description: > 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' responses: '204': description: 'Application registered' @@ -986,31 +949,31 @@ paths: type: string description: > 'Name of RegistryOffice application - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' registry-office-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of RegistryOffice application - find or update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ro-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' relay-server-replacement-operation: type: string minLength: 6 description: > 'Operation for requesting for broadcasting a new server address - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' relay-operation-update-operation: type: string minLength: 6 description: > 'Operation for requesting for broadcasting a backward compatible replacement of an operation - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' deregistration-operation: type: string minLength: 6 description: > 'Operation for deregistering from the application layer - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-ro-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-ro-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' registry-office-protocol: type: string enum: @@ -1018,7 +981,7 @@ paths: - 'HTTPS' description: > 'Protocol for addressing RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' registry-office-address: type: object minProperties: 1 @@ -1035,20 +998,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' registry-office-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of RegistryOffice application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' old-release-protocol: type: string enum: @@ -1056,7 +1019,7 @@ paths: - 'HTTPS' description: > 'Protocol for addressing the currently running old release of the same application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' old-release-address: type: object minProperties: 1 @@ -1073,31 +1036,31 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of currently running old release of the same application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of currently running old release of the same application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' old-release-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of currently running old release of the same application - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - registry-office-application: 'RegistryOffice' - registry-office-application-release-number: '2.0.2' + registry-office-application: 'RegistrationApplication' + registry-office-application-release-number: '43.2.5' relay-server-replacement-operation: '/v1/relay-server-replacement' relay-operation-update-operation: '/v1/relay-operation-update' deregistration-operation: '/v1/deregister-application' registry-office-protocol: 'HTTP' registry-office-address: ip-address: - ipv-4-address: '1.1.3.17' - registry-office-port: 3017 + ipv-4-address: '1.1.3.1' + registry-office-port: 3001 old-release-protocol: 'HTTP' old-release-address: ip-address: @@ -1135,7 +1098,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1150,7 +1113,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: PromptForEmbeddingCausesRequestForBequeathingData: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ro-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-or-1-0-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-or-1-0-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1175,17 +1138,17 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' new-application-release: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' new-application-protocol: type: string description: > 'Protocol expected by this application - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' new-application-address: type: object properties: @@ -1196,25 +1159,17 @@ paths: type: string description: > 'Own IPv4 address - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' domain-name: type: string description: > 'Own domain-name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' new-application-port: type: integer description: > 'Own TCP port - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' - example: - new-application-name: 'OwnApplicationName' - new-application-release: '2.0.2' - new-application-protocol: 'HTTP' - new-application-address: - ip-address: - ipv-4-address: '1.1.4.1' - new-application-port: 4001 + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' responses: '204': description: 'Process of embedding a new release initiated' @@ -1291,19 +1246,19 @@ paths: type: string description: > 'Name of application that shall record the service requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-eatl-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' service-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the service requests - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-eatl-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-eatl-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' service-log-operation: type: string minLength: 6 description: > 'Operation for recording the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' service-log-protocol: type: string enum: @@ -1311,7 +1266,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' service-log-address: type: object minProperties: 1 @@ -1328,29 +1283,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' service-log-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall record the service requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - service-log-application: 'ExecutionAndTraceLog' - service-log-application-release-number: '2.0.2' + service-log-application: 'LoggingApplication' + service-log-application-release-number: '34.2.6' service-log-operation: '/v1/record-service-request' service-log-protocol: 'HTTP' service-log-address: ip-address: - ipv-4-address: '1.1.3.19' - service-log-port: 3019 + ipv-4-address: '1.1.3.1' + service-log-port: 3001 responses: '204': description: 'Information about service requests will be send to the new target' @@ -1383,7 +1338,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1398,7 +1353,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: ServiceRequestCausesLoggingRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-eatl-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1436,68 +1391,31 @@ paths: description: 'ApplicationName on the client side; as defined in all service headers [originator]' application-name: type: string - description: '[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + description: '[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string - description: '[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + description: '[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' operation-name: type: string - description: '[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + description: '[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' response-code: type: integer description: 'Response code sent to [originator] after invoking [operation-name] at [application-name]' timestamp: type: string - description: 'Date and time when [application-name] sent response to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Date and time when [application-name] sent response to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' stringified-body: type: string - description: 'Stringified body of the request addressed from [originator] to [application-name]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Stringified body of the request addressed from [originator] to [application-name]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' stringified-response: type: string - description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-eatl-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' url: type: string description: 'Complete URL that has been addressed by the request; only to be provided, if the client is sending the record to EaTL, because the server could not be reached' exec-time: type: integer description: 'Total elapsed time for the execution of the request; value identical with responseHeaders.exec-time; only to be provided, if the server is sending the record to EaTL after processing the request' - examples: - ProvidedByServer: - value: - x-correlator: '550e8400-e29b-11d4-a716-446655440000' - trace-indicator: '1.1' - user: 'UserName' - originator: 'RegistryOffice' - application-name: 'NewApplicationName' - release-number: '1.0.1' - operation-name: '/v1/embed-yourself' - response-code: 204 - exec-time: 1100 - ProvidedByDetailedServer: - value: - x-correlator: '550e8400-e29b-11d4-a716-446655440123' - trace-indicator: '1' - user: 'UserName' - originator: 'Subscriber' - application-name: 'ServingApplication' - release-number: '1.0.0' - operation-name: '/v1/end-subscription' - response-code: 204 - timestamp: '2010-11-20T14:00:00+01:02' - stringified-body: '{"subscriber-application":"Subscriber","subscriber-release-number":"1.2.1","subscription":"/v1/send-notifications"}' - stringified-response: '' - exec-time: 1100 - ProvidedByClient: - value: - x-correlator: '883e8400-e29b-11d4-a716-446655440333' - trace-indicator: '1.1' - user: 'UserName' - originator: 'RegistryOffice' - application-name: 'OfflineApplicationName' - release-number: '1.0.0' - operation-name: '/v1/embed-yourself' - response-code: 500 - url: 'http://1.1.4.1:4001/v1/embed-yourself' responses: '204': description: 'Request recorded' @@ -1573,19 +1491,19 @@ paths: type: string description: > 'Name of application that shall record the OaM requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ol-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-log-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall record the OaM request - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-ol-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-ol-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-log-operation: type: string minLength: 6 description: > 'Operation for recording the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-ol-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' oam-log-protocol: type: string enum: @@ -1593,7 +1511,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' oam-log-address: type: object minProperties: 1 @@ -1610,29 +1528,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' oam-log-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall record the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - oam-log-application: 'OamLog' - oam-log-application-release-number: '2.0.2' + oam-log-application: 'LoggingApplication' + oam-log-application-release-number: '54.3.2' oam-log-operation: '/v1/record-oam-request' oam-log-protocol: 'HTTP' oam-log-address: ip-address: - ipv-4-address: '1.1.3.20' - oam-log-port: 3020 + ipv-4-address: '1.1.3.1' + oam-log-port: 3001 responses: '204': description: 'Information about OaM requests will be send to the new target' @@ -1665,7 +1583,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1680,7 +1598,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: OamRequestCausesLoggingRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-ol-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-ol-2-0-2-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-ol-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -1708,12 +1626,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' method: type: string description: 'Method applied in the OaM request, which is to be recorded' @@ -1732,15 +1650,6 @@ paths: timestamp: type: string description: 'Date and time when the response to the OaM request, which is to be recorded, has been sent' - example: - application-name: 'OwnApplicationName' - release-number: '1.0.0' - method: 'PUT' - resource: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port' - stringified-body: '{"tcp-server-interface-1-0:local-port":"1000"}' - response-code: 204 - user-name: 'Max Mustermann' - timestamp: '2010-11-20T14:00:00+01:02' responses: '204': description: 'OaM request recorded' @@ -1813,22 +1722,22 @@ paths: type: string description: > 'Name of application that no longer wants to receive notifications - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' subscriber-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that no longer wants to receive notifications - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' subscription: type: string minLength: 6 description: > 'Name of operation that had been addressed for starting getting notifications - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' example: subscriber-application: 'AlreadySubscribingApplication' - subscriber-release-number: '1.0.0' + subscriber-release-number: '38.4.3' subscription: '/v1/subscription-to-be-stopped' responses: '204': @@ -1862,7 +1771,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -1911,19 +1820,19 @@ paths: type: string description: > 'Name of application that shall approve the OaM requests - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' oam-approval-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall approve the OaM requests - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' oam-approval-operation: type: string minLength: 6 description: > 'Operation for approving the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' oam-approval-protocol: type: string enum: @@ -1931,7 +1840,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' oam-approval-address: type: object minProperties: 1 @@ -1948,29 +1857,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' oam-approval-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall approve the OaM requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - oam-approval-application: 'AccessAdministration' - oam-approval-application-release-number: '2.0.1' + oam-approval-application: 'AccessApprover' + oam-approval-application-release-number: '34.3.3' oam-approval-operation: '/v1/approve-basic-auth-request' oam-approval-protocol: 'HTTP' oam-approval-address: ip-address: - ipv-4-address: '1.1.3.12' - oam-approval-port: 3012 + ipv-4-address: '1.1.3.1' + oam-approval-port: 3001 responses: '204': description: 'Informed about where to inquire for approval of OaM requests' @@ -2003,7 +1912,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2018,7 +1927,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: BasicAuthRequestCausesInquiryForAuthentication: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -2042,12 +1951,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own application release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' operation-name: type: string description: > @@ -2076,9 +1985,6 @@ paths: description: > 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent else BasicAuth request to be aborted and 403 to be sent' - example: - basic-auth-request-is-approved: false - reason-of-objection: 'AUTHORIZATION_CODE_UNKNOWN' headers: x-correlator: schema: @@ -2158,24 +2064,24 @@ paths: type: string description: > 'Current name of the application that has updated connection data - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' current-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Current release number of the application that has updated connection data - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' future-application-name: type: string description: > 'Future name of the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' future-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Future release number of the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' future-protocol: type: string enum: @@ -2183,7 +2089,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used in future for addressing the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' future-address: type: object minProperties: 1 @@ -2200,30 +2106,30 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'Future IPv4 address of the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Future domain name of the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' future-port: type: integer minimum: 0 maximum: 65535 description: > 'Future port of the application that has updated connection data - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - current-application-name: 'RegistryOffice' - current-release-number: '1.0.0' - future-application-name: 'RegistryOffice' - future-release-number: '2.0.2' + current-application-name: 'CurrentApplicationName' + current-release-number: '43.5.5' + future-application-name: 'FutureApplicationName' + future-release-number: '43.5.6' future-protocol: 'HTTP' future-address: ip-address: - ipv-4-address: '1.1.3.17' - future-port: 3017 + ipv-4-address: '1.1.3.1' + future-port: 3001 responses: '204': description: 'Will update connection information' @@ -2256,7 +2162,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2308,10 +2214,10 @@ paths: items: $ref: '#/components/schemas/logicalTerminationPoint' example: - - uuid: 'ro-2-0-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-s-bm-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-2-http-s-000'] + server-ltp: ['xy-15-3-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2320,17 +2226,17 @@ paths: operation-name: '/v1/register-yourself' operation-server-interface-configuration: life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' - - uuid: 'ro-2-0-2-http-s-000' + - uuid: 'xy-15-3-2-http-s-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: ['ro-2-0-2-op-s-bm-000'] + client-ltp: ['xy-15-3-2-op-s-bm-000'] server-ltp: [] layer-protocol: - local-id: '0' layer-protocol-name: 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' http-server-interface-1-0:http-server-interface-pac: http-server-interface-capability: - application-name: 'RegistryOffice' - release-number: '2.0.2' + application-name: 'ApplicationName' + release-number: '45.2.7' data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' forwarding-domain: type: array @@ -2339,9 +2245,9 @@ paths: items: $ref: '#/components/schemas/forwardingDomain' example: - - uuid: 'ro-2-0-2-op-fd-000' + - uuid: 'xy-15-3-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-2-op-fc-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-000' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2350,11 +2256,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-000' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-2-op-s-bm-000' - - uuid: 'ro-2-0-2-op-fc-bm-001' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-001' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2363,10 +2269,10 @@ paths: fc-port: - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-2-op-s-bm-001' + logical-termination-point: 'xy-15-3-2-op-s-bm-001' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' + logical-termination-point: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' headers: x-correlator: schema: @@ -2396,7 +2302,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2445,43 +2351,43 @@ paths: type: string description: > 'Name of application that shall document the application layer topology - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-alt-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' topology-application-release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of application that shall document the application layer topology - find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-alt-2-0-2-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-alt-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' topology-operation-ltp-update: type: string minLength: 6 description: > 'Operation for updating an LTP - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-ltp-deletion: type: string minLength: 6 description: > 'Operation for deleting an LTP and its dependents like FC port and Link (if applicable) - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-update: type: string minLength: 6 description: > 'Operation for updating a ForwardingConstruct instance - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-port-update: type: string minLength: 6 description: > 'Operation for updating an FC port - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-operation-fc-port-deletion: type: string minLength: 6 description: > 'Operation for deleting an FC port - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' topology-application-protocol: type: string enum: @@ -2489,7 +2395,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addresing the application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' topology-application-address: type: object minProperties: 1 @@ -2506,23 +2412,23 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' topology-application-port: type: integer minimum: 0 maximum: 65535 description: > 'Port of application that shall document the application layer topology - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - topology-application: 'ApplicationLayerTopology' - topology-application-release-number: '2.0.2' + topology-application: 'InventoryApplication' + topology-application-release-number: '54.1.3' topology-operation-ltp-update: '/v1/update-ltp' topology-operation-ltp-deletion: '/v1/delete-ltp-and-dependents' topology-operation-fc-update: '/v1/update-fc' @@ -2531,8 +2437,8 @@ paths: topology-application-protocol: 'HTTP' topology-application-address: ip-address: - ipv-4-address: '1.1.3.22' - topology-application-port: 3022 + ipv-4-address: '1.1.3.1' + topology-application-port: 3001 responses: '200': description: 'Client side for sending information about topology changes has been updated and current data tree has been provided' @@ -2561,10 +2467,10 @@ paths: items: $ref: '#/components/schemas/logicalTerminationPoint' example: - - uuid: 'ro-2-0-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-s-bm-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' client-ltp: [] - server-ltp: ['ro-2-0-2-http-s-000'] + server-ltp: ['xy-15-3-2-http-s-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -2573,17 +2479,17 @@ paths: operation-name: '/v1/register-yourself' operation-server-interface-configuration: life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' - - uuid: 'ro-2-0-2-http-s-000' + - uuid: 'xy-15-3-2-http-s-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: ['ro-2-0-2-op-s-bm-000'] + client-ltp: ['xy-15-3-2-op-s-bm-000'] server-ltp: [] layer-protocol: - local-id: '0' layer-protocol-name: 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' http-server-interface-1-0:http-server-interface-pac: http-server-interface-capability: - application-name: 'RegistryOffice' - release-number: '2.0.2' + application-name: 'ApplicationName' + release-number: '32.2.3' data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' forwarding-domain: type: array @@ -2592,9 +2498,9 @@ paths: items: $ref: '#/components/schemas/forwardingDomain' example: - - uuid: 'ro-2-0-2-op-fd-000' + - uuid: 'xy-15-3-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-2-op-fc-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-000' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2603,11 +2509,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-000' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-2-op-s-bm-000' - - uuid: 'ro-2-0-2-op-fc-bm-001' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-001' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -2616,10 +2522,10 @@ paths: fc-port: - local-id: '100' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' - logical-termination-point: 'ro-2-0-2-op-s-bm-001' + logical-termination-point: 'xy-15-3-2-op-s-bm-001' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' + logical-termination-point: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' headers: x-correlator: schema: @@ -2649,7 +2555,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -2664,7 +2570,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: ServiceRequestCausesLtpUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes the creation or change of an LTP' post: parameters: @@ -2679,19 +2585,6 @@ paths: application/json: schema: $ref: '#/components/schemas/logicalTerminationPoint' - example: - uuid: 'ro-2-0-2-op-s-bm-002' - ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: [] - server-ltp: ['ro-2-0-2-http-s-000'] - layer-protocol: - - local-id: '0' - layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' - operation-server-interface-1-0:operation-server-interface-pac: - operation-server-interface-capability: - operation-name: '/v1/redirect-service-request-information' - operation-server-interface-configuration: - life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' responses: '204': description: 'LTP will be updated' @@ -2736,7 +2629,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesLtpDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an LTP being deleted' post: parameters: @@ -2756,8 +2649,6 @@ paths: properties: uuid: type: string - example: - uuid: 'ro-2-0-2-op-s-bm-002' responses: '204': description: 'LTP and its dependents will be deleted' @@ -2802,7 +2693,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes the creation or change of an FC port' post: parameters: @@ -2851,20 +2742,6 @@ paths: type: string logical-termination-point: type: string - example: - uuid: 'ro-2-0-2-op-fc-bm-003' - name: - - value-name: 'ForwardingKind' - value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' - - value-name: 'ForwardingName' - value: 'OamRequestCausesLoggingRequest' - fc-port: - - local-id: '000' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-003' - - local-id: '200' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' responses: '204': description: 'FC will be updated' @@ -2909,7 +2786,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcPortUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an FC port being updated' post: parameters: @@ -2943,12 +2820,6 @@ paths: type: string logical-termination-point: type: string - example: - fc-uuid: 'ro-2-0-2-op-fc-bm-003' - fc-port: - local-id: '000' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-003' responses: '204': description: 'FC port will be updated' @@ -2993,7 +2864,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' ServiceRequestCausesFcPortDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever a service request causes an FC port being deleted' post: parameters: @@ -3016,9 +2887,6 @@ paths: type: string fc-port-local-id: type: string - example: - fc-uuid: 'ro-2-0-2-op-fc-bm-003' - fc-port-local-id: '202' responses: '204': description: 'FC port will be deleted' @@ -3063,7 +2931,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesLtpUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes the creation or change of an LTP' post: parameters: @@ -3078,19 +2946,6 @@ paths: application/json: schema: $ref: '#/components/schemas/logicalTerminationPoint' - example: - uuid: 'ro-2-0-2-op-s-bm-002' - ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' - client-ltp: [] - server-ltp: ['ro-2-0-2-http-s-000'] - layer-protocol: - - local-id: '0' - layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' - operation-server-interface-1-0:operation-server-interface-pac: - operation-server-interface-capability: - operation-name: '/v1/redirect-service-request-information' - operation-server-interface-configuration: - life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' responses: '204': description: 'LTP will be updated' @@ -3135,7 +2990,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesLtpDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an LTP being deleted' post: parameters: @@ -3155,8 +3010,6 @@ paths: properties: uuid: type: string - example: - uuid: 'ro-2-0-2-op-s-bm-002' responses: '204': description: 'LTP will be deleted' @@ -3201,7 +3054,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes the creation or change of an FC port' post: parameters: @@ -3250,20 +3103,6 @@ paths: type: string logical-termination-point: type: string - example: - uuid: 'ro-2-0-2-op-fc-bm-003' - name: - - value-name: 'ForwardingKind' - value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' - - value-name: 'ForwardingName' - value: 'OamRequestCausesLoggingRequest' - fc-port: - - local-id: '000' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-003' - - local-id: '200' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' responses: '204': description: 'FC port will be updated' @@ -3308,7 +3147,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcPortUpdateRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an FC port being updated' post: parameters: @@ -3346,12 +3185,6 @@ paths: - 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' logical-termination-point: type: string - example: - fc-uuid: 'ro-2-0-2-op-fc-bm-003' - fc-port: - local-id: '000' - port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-003' responses: '204': description: 'FC port will be updated' @@ -3396,7 +3229,7 @@ paths: default: $ref: '#/components/responses/responseForErroredServiceRequests' OamRequestCausesFcPortDeletionRequest: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-alt-2-0-2-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bm-alt-2-0-2-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] description: 'To be activated whenever an OaM request causes an FC port being deleted' post: parameters: @@ -3419,9 +3252,6 @@ paths: type: string fc-port-local-id: type: string - example: - fc-uuid: 'ro-2-0-2-op-fc-is-000' - fc-port-local-id: '202' responses: '204': description: 'FC port will be deleted' @@ -3502,7 +3332,7 @@ paths: 'Future operation key update [/core-model-1-4:control-construct/logical-termination-point={operation-uuid}/layer-protocol=0/operation-*-interface-1-0:operation-*-interface-pac/operation-*-interface-configuration/operation-key]' example: - operation-uuid: 'ro-2-0-2-op-s-is-003' + operation-uuid: 'xy-15-3-2-op-s-is-003' new-operation-key: 'Operation key not yet provided.' responses: '204': @@ -3536,7 +3366,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3579,28 +3409,28 @@ paths: type: string description: > 'Name of the application that has an updated operation - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release number of the application that has an updated operation - find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' old-operation-name: type: string minLength: 6 description: > 'Name of the deprecated operation - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' new-operation-name: type: string minLength: 6 description: > 'Name of the replacing operation - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' example: - application-name: 'RegistryOffice' - release-number: '2.0.2' + application-name: 'ApplicationName' + release-number: '75.4.3' old-operation-name: '/v1/register-application' new-operation-name: '/v2/register-application' responses: @@ -3635,7 +3465,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3680,19 +3510,19 @@ paths: type: string description: > 'Name of the application that approves the BasicAuth requests - find [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + find [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of the application that approves the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' operation-name: type: string minLength: 6 description: > 'Operation for approving the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' protocol: type: string enum: @@ -3700,7 +3530,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used for addressing the application that approves the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' address: type: object minProperties: 1 @@ -3717,29 +3547,29 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address of the application that approves the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name of the application that approves the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' port: type: integer minimum: 0 maximum: 65535 description: > 'Port of the application that approves the BasicAuth requests - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: - application-name: 'AccessAdministration' - release-number: '2.1.0' + application-name: 'AccessApplication' + release-number: '43.2.4' operation-name: '/v1/approve-basic-auth-request' protocol: 'HTTP' address: ip-address: - ipv-4-address: '127.0.0.1' - port: 3028 + ipv-4-address: '1.1.3.1' + port: 3001 responses: '204': description: 'Informed about where to inquire for approval of BasicAuth requests' @@ -3772,7 +3602,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + find in [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3787,7 +3617,7 @@ paths: $ref: '#/components/responses/responseForErroredServiceRequests' callbacks: BasicAuthRequestCausesInquiryForAuthentication: - url: #[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + url: #[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] post: parameters: - $ref: '#/components/parameters/user' @@ -3811,12 +3641,12 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own application release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' operation-name: type: string description: > @@ -3845,9 +3675,6 @@ paths: description: > 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent else BasicAuth request to be aborted and 403 to be sent' - example: - basic-auth-request-is-approved: false - reason-of-objection: 'AUTHORIZATION_CODE_UNKNOWN' headers: x-correlator: schema: @@ -3920,7 +3747,7 @@ paths: description: 'Release of application that shall be removed from configuration and application data' example: application-name: 'BadApplication' - release-number: '1.0.0' + release-number: '45.4.3' responses: '204': description: 'Application removed from configuration and application data' @@ -3952,8 +3779,8 @@ paths: - 'NOT_YET_DEFINED' example: 'EXPERIMENTAL' description: > - 'Life cycle state of the consumed service - find in [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + 'Life cycle state of the consumed service + find in [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '401': @@ -3995,15 +3822,15 @@ paths: type: string description: > 'ApplicationName of the OldRelease - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'ReleaseNumber of the OldRelease - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' example: application-name: 'ApplicationNameOfTheOldRelease' - release-number: '1.0.0' + release-number: '45.4.7' headers: x-correlator: schema: @@ -4033,7 +3860,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4073,13 +3900,13 @@ paths: type: string description: > 'Name of the application that is target of the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' description: > 'Release of the application that is target of the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' protocol: type: string enum: @@ -4087,7 +3914,7 @@ paths: - 'HTTPS' description: > 'Protocol to be used during the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' address: type: object minProperties: 1 @@ -4104,20 +3931,20 @@ paths: pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' description: > 'IPv4 address to be used during the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' domain-name: type: string pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' description: > 'Domain name to be used during the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' future-port: type: integer minimum: 0 maximum: 65535 description: > 'Port to be used during the bequeath-your-data-and-die process - update [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + update [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' example: application-name: 'ApplicationNameOfNewRelease' release-number: '17.1.2' @@ -4141,14 +3968,14 @@ paths: type: string description: > 'Operation for starting the handover process on the already existing application - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' data-transfer-operations-list: type: array items: type: string description: > 'List of operations required for transferring data from the oldRelease to the newRelease - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-c-im-nr-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-c-im-nr-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' example: bequeath-your-data-and-die-operation: '/v1/bequeath-your-data-and-die' data-transfer-operations-list: @@ -4183,7 +4010,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4250,7 +4077,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '403': @@ -4292,17 +4119,17 @@ paths: type: string description: > 'Own application name - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' release-number: type: string description: > 'Own release number - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' application-purpose: type: string description: > 'Own application purpose - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose]' data-update-period: type: string enum: @@ -4310,16 +4137,16 @@ paths: - '1h-period' - '24h-period' - 'manual' - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period]' owner-name: type: string - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name]' owner-email-address: type: string - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address]' example: application-name: 'OwnApplicationName' - release-number: '1.0.0' + release-number: '34.3.6' application-purpose: 'Brief description of the purpose of the application.' data-update-period: 'real-time' owner-name: 'Thorsten Heinze' @@ -4353,7 +4180,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4387,7 +4214,7 @@ paths: value: 'OwnApplicationName' datatype: 'string' - field-name: 'releaseNumber' - value: '1.0.0' + value: '43.3.5' datatype: 'string' - field-name: 'applicationPurpose' value: 'Brief description of the purpose of the application.' @@ -4437,7 +4264,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4475,15 +4302,15 @@ paths: properties: release-number: type: string - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-number]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-number]' release-date: type: string - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-date]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-date]' changes: type: string - description: 'from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/changes]' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/changes]' example: - - release-number: '1.0.0' + - release-number: '34.5.6' release-date: '20.11.2010' changes: 'Initial version.' headers: @@ -4515,7 +4342,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4545,7 +4372,7 @@ paths: $ref: '#/components/schemas/genericRepresentation' example: response-value-list: - - field-name: '1.0.0' + - field-name: '43.6.4' value: '20.11.2010 - Initial version.' datatype: 'string' consequent-action-list: @@ -4578,7 +4405,7 @@ paths: example: 'EXPERIMENTAL' description: > 'Life cycle state of the consumed service - from [/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + from [/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' '400': $ref: '#/components/responses/responseForErroredServiceRequests' '404': @@ -4620,7 +4447,7 @@ paths: uuid: type: string pattern: '^([a-z]{2,6})-([0-9]+)-([0-9]+)-([0-9]+)$' - example: 'ro-1-0-0' + example: 'xy-15-3-2' profile-collection: type: object required: @@ -4887,7 +4714,7 @@ paths: string-value: type: string example: - - uuid: 'ro-2-0-2-integer-p-000' + - uuid: 'xy-15-3-2-integer-p-000' profile-name: 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' integer-profile-1-0:integer-profile-pac: integer-profile-capability: @@ -5603,10 +5430,10 @@ paths: remote-port: type: integer example: - - uuid: 'ro-2-0-2-op-c-bm-ro-2-0-2-000' + - uuid: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' client-ltp: [] - server-ltp: ['ro-2-0-2-http-c-ro-2-0-2-000'] + server-ltp: ['xy-15-3-2-http-c-yz-34-4-4-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' @@ -5617,17 +5444,17 @@ paths: operation-client-interface-status: operational-state: 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' life-cycle-state: 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' - - uuid: 'ro-2-0-2-http-c-ro-2-0-2-000' + - uuid: 'xy-15-3-2-http-c-yz-34-4-4-000' ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' - client-ltp: ['ro-2-0-2-op-c-bm-ro-2-0-2-000'] - server-ltp: ['ro-2-0-2-tcp-c-ro-2-0-2-000'] + client-ltp: ['xy-15-3-2-op-c-bm-yz-34-4-4-000'] + server-ltp: ['xy-15-3-2-tcp-c-yz-34-4-4-000'] layer-protocol: - local-id: '0' layer-protocol-name: 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' http-client-interface-1-0:http-client-interface-pac: http-client-interface-configuration: - application-name: 'RegistryOffice' - release-number: '2.0.2' + application-name: 'ApplicationName' + release-number: '15.3.2' forwarding-domain: type: array minItems: 1 @@ -5683,9 +5510,9 @@ paths: logical-termination-point: type: string example: - - uuid: 'ro-2-0-2-op-fd-000' + - uuid: 'xy-15-3-2-op-fd-000' forwarding-construct: - - uuid: 'ro-2-0-2-op-fc-bm-003' + - uuid: 'xy-15-3-2-op-fc-bm-003' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -5694,11 +5521,11 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-003' + logical-termination-point: 'xy-15-3-2-op-s-bm-003' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bs-ol-2-0-2-000' - - uuid: 'ro-2-0-2-op-fc-bm-004' + logical-termination-point: 'xy-15-3-2-op-c-bs-yz-34-3-3-000' + - uuid: 'xy-15-3-2-op-fc-bm-004' name: - value-name: 'ForwardingKind' value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' @@ -5707,10 +5534,10 @@ paths: fc-port: - local-id: '000' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' - logical-termination-point: 'ro-2-0-2-op-s-bm-005' + logical-termination-point: 'xy-15-3-2-op-s-bm-005' - local-id: '200' port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' - logical-termination-point: 'ro-2-0-2-op-c-bs-aa-2-1-0-000' + logical-termination-point: 'xy-15-3-2-op-c-bs-yz-34-3-3-000' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -5732,7 +5559,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([a-z]+)-p-([0-9,a-f]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getProfileInstance summary: 'Returns entire instance of Profile' @@ -6005,7 +5832,7 @@ paths: type: string example: core-model-1-4:profile: - uuid: 'ro-2-0-2-action-p-000' + uuid: 'xy-15-3-2-action-p-000' profile-name: 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' action-profile-1-0:action-profile-pac: action-profile-capability: @@ -6016,7 +5843,7 @@ paths: unit: 'Unit at input field' display-in-new-browser-window: false action-profile-configuration: - consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -6041,7 +5868,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getActionProfileOperationName summary: 'Returns the name of the Operation' @@ -6082,7 +5909,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getActionProfileLabel summary: 'Returns the Label of the Action' @@ -6123,7 +5950,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getActionProfileInputValueListt summary: 'Returns the list of input values' @@ -6175,7 +6002,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getActionProfileDisplayInNewBrowserWindow summary: 'Returns whether to be presented in new browser window' @@ -6216,7 +6043,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' - example: 'ro-2-0-2-action-p-000' + example: 'xy-15-3-2-action-p-000' get: operationId: getActionProfileConsequentOperationReference summary: 'Returns the reference on the consequent operation' @@ -6236,7 +6063,7 @@ paths: properties: action-profile-1-0:consequent-operation-reference: type: string - example: '/core-model-1-4:control-construct/logical-termination-point=ro-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + example: '/core-model-1-4:control-construct/logical-termination-point=xy-15-3-2-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -6267,7 +6094,7 @@ paths: properties: action-profile-1-0:consequent-operation-reference: type: string - example: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + example: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' responses: '204': description: 'Reference on the consequent operation configured' @@ -6292,7 +6119,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-2-response-p-000' + example: 'xy-15-3-2-response-p-000' get: operationId: getGenericResponseProfileOperationName summary: 'Returns the name of the Operation' @@ -6333,7 +6160,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-2-response-p-000' + example: 'xy-15-3-2-response-p-000' get: operationId: getGenericResponseProfileFieldName summary: 'Returns the name of the Field' @@ -6384,7 +6211,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-2-response-p-000' + example: 'xy-15-3-2-response-p-000' get: operationId: getGenericResponseProfileDescription summary: 'Returns the Description of the Field' @@ -6425,7 +6252,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-2-response-p-000' + example: 'xy-15-3-2-response-p-000' get: operationId: getGenericResponseProfileDatatype summary: 'Returns the Datatype of the Field' @@ -6466,7 +6293,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' - example: 'ro-2-0-2-response-p-000' + example: 'xy-15-3-2-response-p-000' get: operationId: getGenericResponseProfileValue summary: 'Returns the Value of the Field' @@ -6496,7 +6323,7 @@ paths: type: string example: response-profile-1-0:value: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -6537,7 +6364,7 @@ paths: type: string example: response-profile-1-0:value: - value-reference: '/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + value-reference: '/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' responses: '204': description: 'Request path configured' @@ -6562,7 +6389,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-2-file-p-000' + example: 'xy-15-3-2-file-p-000' get: operationId: getFileProfileFileIdentifier summary: 'Returns the identifier of the file' @@ -6603,7 +6430,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-2-file-p-000' + example: 'xy-15-3-2-file-p-000' get: operationId: getFileProfileFileDescription summary: 'Returns the description of the file' @@ -6644,7 +6471,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-2-file-p-000' + example: 'xy-15-3-2-file-p-000' get: operationId: getFileProfileFileName summary: 'Returns the name of the file' @@ -6720,7 +6547,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' - example: 'ro-2-0-2-file-p-000' + example: 'xy-15-3-2-file-p-000' get: operationId: getFileProfileOperation summary: 'Returns the allowed operation on the file' @@ -6806,7 +6633,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-2-integer-p-000' + example: 'xy-15-3-2-integer-p-000' get: operationId: getIntegerProfileIntegerName summary: 'Returns the name of the Integer' @@ -6847,7 +6674,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-1-integer-p-000' + example: 'yz-34-4-4-integer-p-000' get: operationId: getIntegerProfilePurpose summary: 'Returns the purpose of the Integer' @@ -6888,7 +6715,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-2-integer-p-000' + example: 'xy-15-3-2-integer-p-000' get: operationId: getIntegerProfileUnit summary: 'Returns the unit of the Integer' @@ -6929,7 +6756,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-2-integer-p-000' + example: 'xy-15-3-2-integer-p-000' get: operationId: getIntegerProfileMinimum summary: 'Returns the minimum value of the Integer' @@ -6970,7 +6797,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-2-integer-p-000' + example: 'xy-15-3-2-integer-p-000' get: operationId: getIntegerProfileMaximum summary: 'Returns the maximum value of the Integer' @@ -7011,7 +6838,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' - example: 'ro-2-0-2-integer-p-000' + example: 'xy-15-3-2-integer-p-000' get: operationId: getIntegerProfileIntegerValue summary: 'Returns the configured value of the Integer' @@ -7088,7 +6915,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-2-string-p-000' + example: 'xy-15-3-2-string-p-000' get: operationId: getStringProfileStringName summary: 'Returns the name of the String' @@ -7129,7 +6956,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-2-string-p-000' + example: 'xy-15-3-2-string-p-000' get: operationId: getStringProfileEnumeration summary: 'Returns the enumeration values of the String' @@ -7173,7 +7000,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-2-string-p-000' + example: 'xy-15-3-2-string-p-000' get: operationId: getStringProfilePattern summary: 'Returns the pattern of the String' @@ -7214,7 +7041,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' - example: 'ro-2-0-2-string-p-000' + example: 'xy-15-3-2-string-p-000' get: operationId: getStringProfileStringValue summary: 'Returns the configured value of the String' @@ -7308,7 +7135,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-2-op-s-bm-000' + example: 'xy-15-3-2-op-s-bm-000' get: operationId: getOperationServerOperationName summary: 'Returns operation name' @@ -7349,7 +7176,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-2-op-s-bm-000' + example: 'xy-15-3-2-op-s-bm-000' get: operationId: getOperationServerLifeCycleState summary: 'Returns the configured life cycle state of the operation' @@ -7438,7 +7265,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' - example: 'ro-2-0-2-op-s-bm-000' + example: 'xy-15-3-2-op-s-bm-000' get: operationId: getOperationServerOperationKey summary: 'Returns key for connecting' @@ -7515,7 +7342,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerApplicationName summary: 'Returns application name' @@ -7556,7 +7383,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerReleaseNumber summary: 'Returns release number' @@ -7576,7 +7403,7 @@ paths: properties: http-server-interface-1-0:release-number: type: string - example: '1.0.0' + example: '34.5.2' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -7597,7 +7424,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerApplicationPurpose summary: 'Returns application purpose' @@ -7638,7 +7465,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerDataUpdatePeriode summary: 'Returns update period' @@ -7684,7 +7511,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerOwnerName summary: 'Returns owner name' @@ -7725,7 +7552,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerOwnerEmailAddress summary: 'Returns owner email address' @@ -7766,7 +7593,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' - example: 'ro-2-0-2-http-s-000' + example: 'xy-15-3-2-http-s-000' get: operationId: getHttpServerReleaseList summary: 'Returns list of releases' @@ -7805,7 +7632,7 @@ paths: type: string example: - local-id: 0 - release-number: '1.0.0' + release-number: '23.2.2' release-date: '20.11.2010' changes: 'Initial version.' '400': @@ -7829,7 +7656,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-2-tcp-s-000' + example: 'xy-15-3-2-tcp-s-000' get: operationId: getTcpServerDescription summary: 'Returns Description of TcpServer' @@ -7902,7 +7729,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-2-tcp-s-000' + example: 'xy-15-3-2-tcp-s-000' get: operationId: getTcpServerLocalProtocol summary: 'Returns Protocol of TcpServer' @@ -7983,7 +7810,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-2-tcp-s-000' + example: 'xy-15-3-2-tcp-s-000' get: operationId: getTcpServerLocalAddress summary: 'Returns address of the server' @@ -8077,7 +7904,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' - example: 'ro-2-0-2-tcp-s-000' + example: 'xy-15-3-2-tcp-s-000' get: operationId: getTcpServerLocalPort summary: 'Returns TCP port of the server' @@ -8155,7 +7982,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationName summary: 'Returns operation name' @@ -8231,7 +8058,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationKey summary: 'Returns key used for connecting to server.' @@ -8307,7 +8134,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientOperationalState summary: 'Returns operational state of the operation' @@ -8352,7 +8179,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-2-op-c-bm-or-1-0-0-000' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' get: operationId: getOperationClientLifeCycleState summary: 'Returns life cycle state of the operation' @@ -8400,7 +8227,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-bs-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'ro-2-0-2-op-c-bs-eatl-2-0-2-000' + example: 'xy-15-3-2-op-c-bs-yz-34-4-3-000' get: operationId: getOperationClientDetailedLoggingIsOn summary: 'Returns detailed logging configuration.' @@ -8476,7 +8303,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-2-es-c-es-1-0-0-000' + example: 'yz-34-3-3-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientApiKey summary: 'Returns API key' @@ -8550,7 +8377,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-2-es-c-es-1-0-0-000' + example: 'yz-34-3-3-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientIndexAlias summary: 'Returns index alias' @@ -8624,7 +8451,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-2-es-c-es-1-0-0-000' + example: 'yz-34-3-3-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientServiceRecordsPolicy summary: 'Returns service records policy' @@ -9310,7 +9137,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-2-es-c-es-1-0-0-000' + example: 'yz-34-3-3-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientOperationalState summary: 'Returns operational state of the connection towards Elasticsearch' @@ -9355,7 +9182,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' - example: 'eatl-2-0-2-es-c-es-1-0-0-000' + example: 'yz-34-3-3-es-c-es-1-0-0-000' get: operationId: getElasticsearchClientLifeCycleState summary: 'Returns life cycle state of the connection towards Elasticsearch' @@ -9404,7 +9231,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-2-http-c-or-1-0-0-000' + example: 'xy-15-3-2-http-c-or-1-0-0-000' get: operationId: getHttpClientApplicationName summary: 'Returns name of application to be addressed' @@ -9480,7 +9307,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-2-http-c-or-1-0-0-000' + example: 'xy-15-3-2-http-c-or-1-0-0-000' get: operationId: getHttpClientReleaseNumber summary: 'Returns release number of application to be addressed' @@ -9500,7 +9327,7 @@ paths: properties: http-client-interface-1-0:release-number: type: string - example: '1.0.0' + example: '34.2.3' '400': $ref: '#/components/responses/responseForErroredOamRequests' '401': @@ -9532,7 +9359,7 @@ paths: http-client-interface-1-0:release-number: type: string pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' - example: '1.0.0' + example: '34.3.2' responses: '204': description: 'Release number configured' @@ -9557,7 +9384,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-2-tcp-c-or-1-0-0-000' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemoteProtocol summary: 'Returns protocol for addressing remote side' @@ -9638,7 +9465,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-2-tcp-c-or-1-0-0-000' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemoteAddress summary: 'Returns remote address' @@ -9742,7 +9569,7 @@ paths: schema: type: string pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' - example: 'ro-2-0-2-tcp-c-or-1-0-0-000' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' get: operationId: getTcpClientRemotePort summary: 'Returns target TCP port at server' @@ -9920,17 +9747,17 @@ components: type: string description: > 'Field name - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/field-name]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/field-name]' value: type: string description: > 'Field value - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-configuration/value]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-configuration/value]' datatype: type: string description: > 'Field datatype - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/datatype]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/datatype]' consequent-action-list: type: array items: @@ -9944,20 +9771,20 @@ components: type: string description: > 'Label that shall be presented on the button - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/label]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/label]' request: type: string description: > 'Request that shall be called, when button gets pressed from - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol}] + [{/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol}] :// - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address} + [{/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address} or - {/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name}] + {/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name}] : - [{/core-model-1-4:control-construct/logical-termination-point=*-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port}] - [{/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-configuration/consequent-operation-reference}]' + [{/core-model-1-4:control-construct/logical-termination-point=xx-1-0-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port}] + [{/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-configuration/consequent-operation-reference}]' input-value-list: type: array items: @@ -9969,17 +9796,17 @@ components: type: string description: > 'Name of an input value required for executing the Request - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/name]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/name]' unit: type: string description: > 'Unit of an input value required for executing the Request - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/unit]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/unit]' display-in-new-browser-window: type: boolean description: > 'True in case Request shall be represented in a new browser window - from [/core-model-1-4:control-construct/profile-collection/profile=*-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/display-in-new-browser-window]' + from [/core-model-1-4:control-construct/profile-collection/profile=xx-1-0-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/display-in-new-browser-window]' logicalTerminationPoint: type: object required: diff --git a/spec/Reference OAS.yaml b/spec/Reference OAS.yaml new file mode 100644 index 00000000..7d88e2c5 --- /dev/null +++ b/spec/Reference OAS.yaml @@ -0,0 +1,10120 @@ +openapi: 3.0.0 +info: + title: ApplicationName + version: 2.1.0 + +x-gui-paths: +######################################################################################################################## +# Representation Layer +######################################################################################################################## + /docs: + get: + operationId: docs + summary: 'Represents Swagger API description page' + tags: + - RepresentationServices + responses: + '200': + description: 'Swagger API description page represented' + # Not explixitly described + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + +paths: +######################################################################################################################## +# Service Layer - Individual Part +######################################################################################################################## + /v1/bequeath-your-data-and-die: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: bequeathYourDataAndDie + summary: 'Initiates process of embedding a new release' + tags: + - IndividualServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - new-application-name + - new-application-release + - new-application-protocol + - new-application-address + - new-application-port + properties: + new-application-name: + type: string + description: > + 'Name of application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + new-application-release: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + new-application-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + new-application-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + new-application-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of application that shall be target of the handover process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + new-application-name: 'NewApplicationName' + new-application-release: '32.6.3' + new-application-protocol: 'HTTP' + new-application-address: + ip-address: + ipv-4-address: '1.1.3.1' + new-application-port: 3001 + responses: + '204': + description: 'Process of embedding a new release initiated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + + # individual callbacks to be added here + + PromptForBequeathingDataCausesRequestForBroadcastingInfoAboutServerReplacement: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - current-application-name + - current-release-number + - future-application-name + - future-release-number + - future-protocol + - future-address + - future-port + properties: + current-application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + current-release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + future-application-name: + type: string + description: > + 'Future name of the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + future-release-number: + type: string + description: > + 'Future release number of the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + future-protocol: + type: string + description: > + 'Protocol to be used in future for addressing the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + future-address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + description: > + 'Future IPv4 address of the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + description: > + 'Future domain name of the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + future-port: + type: integer + description: > + 'Future port of the application that has updated connection data + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + responses: + '204': + description: 'Will broadcast server replacement' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + PromptForBequeathingDataCausesRequestForDeregisteringOfOldRelease: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + responses: + '204': + description: 'Application deregistered' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + PromptingNewReleaseForUpdatingServerCausesRequestForBroadcastingInfoAboutBackwardCompatibleUpdateOfOperation: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: > + 'This callback belongs to the sequence of actions that have to be done during the bequeath-your-data-and-die process, despite the forwarding gets neither managed nor directly initiated by the /v1/bequeath-your-data-and-die request. + After consuming applications have been redirected to the new release, the new release is triggered (this callback) to request the RegistryOffice for broadcasting information about backward compatible replacements of services.' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - old-operation-name + - new-operation-name + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + old-operation-name: + type: string + description: > + 'Name of the deprecated operation + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + new-operation-name: + type: string + description: > + 'Name of the replacing operation + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + responses: + '204': + description: 'Will broadcast operation update' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + +######################################################################################################################## +# Service Layer - Basic Part +######################################################################################################################## + /v1/register-yourself: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: registerYourself + summary: 'Initiates registering at the currently active RegistryOffice' + description: 'Shall also automatically execute without receiving any request every time the application starts' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - description: 'use existing configuration' + type: object + maxProperties: 0 + - description: 'update configuration' + type: object + required: + - registry-office-application + - registry-office-application-release-number + - registration-operation + - registry-office-protocol + - registry-office-address + - registry-office-port + properties: + registry-office-application: + type: string + minLength: 3 + description: > + 'If body provided, name of RegistryOffice application + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + registry-office-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'If body provided, release of RegistryOffice application + find or update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + registration-operation: + type: string + minLength: 6 + description: > + 'If body provided, operation for registering + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + registry-office-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'If body provided, protocol for addressing the RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + registry-office-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'If body provided, IPv4 address of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'If body provided, domain name of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + registry-office-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'If body provided, port of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + http-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'If provided, own IPv4 address, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'If provided, own domain name, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + http-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'If provided, own TCP port, which has to be documented (but not be directly used for formulating the callback) + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + preceding-application-name: + type: string + minLength: 3 + description: > + 'If provided, the new application will address /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + (/v1/bequeath-your-data-and-die will not be sent, if application-name in *-http-c-or-* == OldRelease) + update [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + preceding-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'If application-name in *-http-c-or-* different from OldRelease, the new application will address /v1/bequeath-your-data-and-die at the preceding release after receiving /v1/embed-yourself + update [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + example: + registry-office-application: 'ApplicationForRegistering' + registry-office-application-release-number: '43.3.4' + registration-operation: '/v2/register-application' + registry-office-protocol: 'HTTP' + registry-office-address: + ip-address: + ipv-4-address: '1.1.3.1' + registry-office-port: 3001 + http-address: + ip-address: + ipv-4-address: '1.1.3.1' + http-port: 3001 + preceding-application-name: 'OldApplicationName' + preceding-release-number: '54.3.3' + responses: + '204': + description: 'Will register at the RegistryOffice' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + PromptForRegisteringCausesRegistrationRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: > + 'DEPRECATED + Callback shall be deleted with RO v3.0.0 + Starting from RO v2.1.0, PromptForRegisteringCausesRegistrationRequest shall be executed first and PromptForRegisteringCausesRegistrationRequest2 second. Sequence shall be kept regardless of the respective HTTP response codes.' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - embedding-operation + - client-update-operation + - operation-client-update-operation + - tcp-server-list + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + preceding-application-name: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + preceding-release-number: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + embedding-operation: + type: string + description: > + 'Name of service for initiating embedding process + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + client-update-operation: + type: string + description: > + 'Name of service for broadcasting server changes + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + operation-client-update-operation: + type: string + description: > + 'Name of service for broadcasting replacements of operations by backward compatible substitutes + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + tcp-server-list: + type: array + items: + type: object + required: + - protocol + - address + - port + properties: + protocol: + type: string + description: > + 'Own protocol (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + description: > + 'Own IPv4 address (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + domain-name: + type: string + description: > + 'Own domain name (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + port: + type: integer + description: > + 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + responses: + '204': + description: 'Application registered' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + PromptForRegisteringCausesRegistrationRequest2: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://{[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]}:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + preceding-application-name: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + preceding-release-number: + type: string + description: > + 'To be providede if application-name in *-http-c-or-* different from OldRelease + for preparing RO for the new application addressing /v1/bequeath-your-data-and-die at the preceding application after receiving /v1/embed-yourself + from [/core-model-1-4:control-construct/logical-termination-point=*-http-c-or-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + embedding-operation: + type: string + description: > + 'Name of service for initiating embedding process + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + client-update-operation: + type: string + description: > + 'Name of service for broadcasting server changes + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + operation-client-update-operation: + type: string + description: > + 'Name of service for broadcasting replacements of operations by backward compatible substitutes + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + dispose-remainders-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + preceding-release-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + subsequent-release-operation: + type: string + description: > + 'Name of service for broadcasting de-registrations of applications + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + tcp-server: + type: object + properties: + protocol: + type: string + description: > + 'Own protocol (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + description: > + 'Own IPv4 address (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + domain-name: + type: string + description: > + 'Own domain name (shall be taken (if available) from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + port: + type: integer + description: > + 'Own TCP port (shall be taken from the stored data, but not from the initiating request body, because attribute is not mandatory in the request body definition) + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + responses: + '204': + description: 'Application registered' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/embed-yourself: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: embedYourself + summary: 'Embed yourself into the MBH SDN application layer' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - registry-office-application + - registry-office-application-release-number + - relay-server-replacement-operation + - relay-operation-update-operation + - deregistration-operation + - registry-office-protocol + - registry-office-address + - registry-office-port + properties: + registry-office-application: + type: string + description: > + 'Name of RegistryOffice application + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + registry-office-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of RegistryOffice application + find or update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ro-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + relay-server-replacement-operation: + type: string + minLength: 6 + description: > + 'Operation for requesting for broadcasting a new server address + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + relay-operation-update-operation: + type: string + minLength: 6 + description: > + 'Operation for requesting for broadcasting a backward compatible replacement of an operation + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + deregistration-operation: + type: string + minLength: 6 + description: > + 'Operation for deregistering from the application layer + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-ro-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + registry-office-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol for addressing RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + registry-office-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + registry-office-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of RegistryOffice application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + old-release-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol for addressing the currently running old release of the same application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + old-release-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of currently running old release of the same application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of currently running old release of the same application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + old-release-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of currently running old release of the same application + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + registry-office-application: 'RegistrationApplication' + registry-office-application-release-number: '43.2.5' + relay-server-replacement-operation: '/v1/relay-server-replacement' + relay-operation-update-operation: '/v1/relay-operation-update' + deregistration-operation: '/v1/deregister-application' + registry-office-protocol: 'HTTP' + registry-office-address: + ip-address: + ipv-4-address: '1.1.3.1' + registry-office-port: 3001 + old-release-protocol: 'HTTP' + old-release-address: + ip-address: + ipv-4-address: '1.1.3.1' + old-release-port: 3001 + responses: + '204': + description: 'Will embed into the MBH SDN application layer' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + PromptForEmbeddingCausesRequestForBequeathingData: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ro-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-or-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-or-1-0-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - new-application-name + - new-application-release + - new-application-protocol + - new-application-address + - new-application-port + properties: + new-application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + new-application-release: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + new-application-protocol: + type: string + description: > + 'Protocol expected by this application + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol]' + new-application-address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + description: > + 'Own IPv4 address + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address]' + domain-name: + type: string + description: > + 'Own domain-name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name]' + new-application-port: + type: integer + description: > + 'Own TCP port + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port]' + responses: + '204': + description: 'Process of embedding a new release initiated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/redirect-service-request-information: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: redirectServiceRequestInformation + summary: 'Offers configuring the client side for sending service request information' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - service-log-application + - service-log-application-release-number + - service-log-operation + - service-log-protocol + - service-log-address + - service-log-port + properties: + service-log-application: + type: string + description: > + 'Name of application that shall record the service requests + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-eatl-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + service-log-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that shall record the service requests + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-eatl-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + service-log-operation: + type: string + minLength: 6 + description: > + 'Operation for recording the service requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + service-log-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that shall record the service requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + service-log-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of application that shall record the service requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of application that shall record the service requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + service-log-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of application that shall record the service requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + service-log-application: 'LoggingApplication' + service-log-application-release-number: '34.2.6' + service-log-operation: '/v1/record-service-request' + service-log-protocol: 'HTTP' + service-log-address: + ip-address: + ipv-4-address: '1.1.3.1' + service-log-port: 3001 + responses: + '204': + description: 'Information about service requests will be send to the new target' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + ServiceRequestCausesLoggingRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-eatl-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - x-correlator + - trace-indicator + - user + - originator + - application-name + - release-number + - operation-name + - response-code + properties: + x-correlator: + type: string + description: 'UUID for the service execution flow that allows to correlate requests and responses; as defined in all service headers [x-correlator]' + trace-indicator: + type: string + description: 'From [parameters/trace-indicator]; Empty string sent by external applications to be replaced by 1' + user: + type: string + description: 'User identifier from the system starting the service call; as defined in all service headers [user]' + originator: + type: string + description: 'ApplicationName on the client side; as defined in all service headers [originator]' + application-name: + type: string + description: '[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: '[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + operation-name: + type: string + description: '[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + response-code: + type: integer + description: 'Response code sent to [originator] after invoking [operation-name] at [application-name]' + timestamp: + type: string + description: 'Date and time when [application-name] sent response to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + stringified-body: + type: string + description: 'Stringified body of the request addressed from [originator] to [application-name]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + stringified-response: + type: string + description: 'Stringified response sent from [application-name] to [originator]; only to be provided, if [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-eatl-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on] == true' + url: + type: string + description: 'Complete URL that has been addressed by the request; only to be provided, if the client is sending the record to EaTL, because the server could not be reached' + exec-time: + type: integer + description: 'Total elapsed time for the execution of the request; value identical with responseHeaders.exec-time; only to be provided, if the server is sending the record to EaTL after processing the request' + responses: + '204': + description: 'Request recorded' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/redirect-oam-request-information: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: redirectOamRequestInformation + summary: 'Offers configuring the client side for sending OaM request information' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - oam-log-application + - oam-log-application-release-number + - oam-log-operation + - oam-log-protocol + - oam-log-address + - oam-log-port + properties: + oam-log-application: + type: string + description: > + 'Name of application that shall record the OaM requests + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ol-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + oam-log-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that shall record the OaM request + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-ol-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + oam-log-operation: + type: string + minLength: 6 + description: > + 'Operation for recording the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-ol-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + oam-log-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that shall record the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + oam-log-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of application that shall record the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of application that shall record the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + oam-log-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of application that shall record the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + oam-log-application: 'LoggingApplication' + oam-log-application-release-number: '54.3.2' + oam-log-operation: '/v1/record-oam-request' + oam-log-protocol: 'HTTP' + oam-log-address: + ip-address: + ipv-4-address: '1.1.3.1' + oam-log-port: 3001 + responses: + '204': + description: 'Information about OaM requests will be send to the new target' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + OamRequestCausesLoggingRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-ol-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-ol-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - method + - resource + - stringified-body + - response-code + - user-name + - timestamp + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + method: + type: string + description: 'Method applied in the OaM request, which is to be recorded' + resource: + type: string + description: 'Resource addressed by the OaM request, which is to be recorded' + stringified-body: + type: string + description: 'Stringified body of the OaM request, which is to be recorded' + response-code: + type: integer + description: 'Response code answered to the OaM request, which is to be recorded' + user-name: + type: string + description: 'user header of the OaM request, which is to be recorded' + timestamp: + type: string + description: 'Date and time when the response to the OaM request, which is to be recorded, has been sent' + responses: + '204': + description: 'OaM request recorded' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/end-subscription: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: endSubscription + summary: 'Stops sending notifications of a specific subscription' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - subscriber-application + - subscriber-release-number + - subscription + properties: + subscriber-application: + type: string + description: > + 'Name of application that no longer wants to receive notifications + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + subscriber-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that no longer wants to receive notifications + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + subscription: + type: string + minLength: 6 + description: > + 'Name of operation that had been addressed for starting getting notifications + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-*/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + example: + subscriber-application: 'AlreadySubscribingApplication' + subscriber-release-number: '38.4.3' + subscription: '/v1/subscription-to-be-stopped' + responses: + '204': + description: 'Stopped sending notifications of a specific subscription' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inquire-oam-request-approvals: + description: > + 'DEPRECATED + Service shall be deleted with AP v3.0.0 + Starting from AP v2.1.0, /v1/inquire-basic-auth-approvals shall be applied as a backward compatible update' + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: inquireOamRequestApprovals + summary: 'Receives information about where to ask for approval of OaM requests' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - oam-approval-application + - oam-approval-application-release-number + - oam-approval-operation + - oam-approval-protocol + - oam-approval-address + - oam-approval-port + properties: + oam-approval-application: + type: string + description: > + 'Name of application that shall approve the OaM requests + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + oam-approval-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that shall approve the OaM requests + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + oam-approval-operation: + type: string + minLength: 6 + description: > + 'Operation for approving the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + oam-approval-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that shall approve the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + oam-approval-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of application that shall approve the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of application that shall approve the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + oam-approval-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of application that shall approve the OaM requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + oam-approval-application: 'AccessApprover' + oam-approval-application-release-number: '34.3.3' + oam-approval-operation: '/v1/approve-basic-auth-request' + oam-approval-protocol: 'HTTP' + oam-approval-address: + ip-address: + ipv-4-address: '1.1.3.1' + oam-approval-port: 3001 + responses: + '204': + description: 'Informed about where to inquire for approval of OaM requests' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + BasicAuthRequestCausesInquiryForAuthentication: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + Authorization: + type: string + description: > + 'Authorization code + from {$request.parameters#Authorization} of the BasicAuth request that initiates the inquiry for approval' + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own application release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + operation-name: + type: string + description: > + 'Path (could be service, could be OaM path) that has been addressed by the BasicAuth request + in path parameter values to be replaced by original parameter names in curly brackets + filters to be removed + from {$request.path} of the BasicAuth request that initiates the inquiry for approval' + method: + type: string + description: > + 'Method applied in the BasicAuth request + from {$request.method} of the BasicAuth request that initiates the inquiry for approval' + responses: + '200': + description: 'Response on inquiry for approval of a BasicAuth request provided' + content: + application/json: + schema: + type: object + properties: + basic-auth-request-is-approved: + type: boolean + description: 'If true, BasicAuth request can be executed' + reason-of-objection: + type: string + description: > + 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent + else BasicAuth request to be aborted and 403 to be sent' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/update-client: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: updateClient + summary: 'Allows updating connection data of a serving application' + description: > + 'Initiates update of release number and TCP/IP address at existing HttpClients and TcpClients, but not at OldRelease or NewRelease. + If combination of {future-application-name, future-release-number} is different from combination {current-application-name, current-release-number} + and if HttpClient with combination of {future-application-name, future-release-number} already exists, + HttpClient with combination {current-application-name, current-release-number} shall not be updated, + but OperationClients shall be transferred to the HttpClient with combination of {future-application-name, future-release-number}.' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - current-application-name + - current-release-number + - future-application-name + - future-release-number + - future-protocol + - future-address + - future-port + properties: + current-application-name: + type: string + description: > + 'Current name of the application that has updated connection data + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + current-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Current release number of the application that has updated connection data + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + future-application-name: + type: string + description: > + 'Future name of the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + future-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Future release number of the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + future-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used in future for addressing the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + future-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'Future IPv4 address of the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Future domain name of the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + future-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Future port of the application that has updated connection data + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-*/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + current-application-name: 'CurrentApplicationName' + current-release-number: '43.5.5' + future-application-name: 'FutureApplicationName' + future-release-number: '43.5.6' + future-protocol: 'HTTP' + future-address: + ip-address: + ipv-4-address: '1.1.3.1' + future-port: 3001 + responses: + '204': + description: 'Will update connection information' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-007/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/list-ltps-and-fcs: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: listLtpsAndFcs + summary: 'Allows retrieving all interface and internal connection data' + tags: + - BasicServices + security: + - apiKeyAuth: [] + responses: + '200': + description: 'All interface and internal connection data provided' + content: + application/json: + schema: + type: object + required: + - core-model-1-4:control-construct + properties: + core-model-1-4:control-construct: + type: object + required: + - uuid + - logical-termination-point + - forwarding-domain + properties: + uuid: + type: string + logical-termination-point: + type: array + uniqueItems: true + items: + $ref: '#/components/schemas/logicalTerminationPoint' + example: + - uuid: 'xy-15-3-2-op-s-bm-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' + client-ltp: [] + server-ltp: ['xy-15-3-2-http-s-000'] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + operation-server-interface-1-0:operation-server-interface-pac: + operation-server-interface-capability: + operation-name: '/v1/register-yourself' + operation-server-interface-configuration: + life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - uuid: 'xy-15-3-2-http-s-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' + client-ltp: ['xy-15-3-2-op-s-bm-000'] + server-ltp: [] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + http-server-interface-1-0:http-server-interface-pac: + http-server-interface-capability: + application-name: 'ApplicationName' + release-number: '45.2.7' + data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' + forwarding-domain: + type: array + minItems: 1 + maxItems: 1 + items: + $ref: '#/components/schemas/forwardingDomain' + example: + - uuid: 'xy-15-3-2-op-fd-000' + forwarding-construct: + - uuid: 'xy-15-3-2-op-fc-bm-000' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'PromptForRegisteringCausesRegistrationRequest' + fc-port: + - local-id: '000' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - local-id: '100' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-001' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'PromptForEmbeddingCausesRequestForBequeathingData' + fc-port: + - local-id: '100' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + logical-termination-point: 'xy-15-3-2-op-s-bm-001' + - local-id: '200' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-008/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/redirect-topology-change-information: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: redirectTopologyChangeInformation + summary: 'Offers configuring client side for sending information about topology changes and provides current data tree' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - topology-application + - topology-application-release-number + - topology-operation-ltp-update + - topology-operation-ltp-deletion + - topology-operation-fc-update + - topology-operation-fc-port-update + - topology-operation-fc-port-deletion + - topology-application-protocol + - topology-application-address + - topology-application-port + properties: + topology-application: + type: string + description: > + 'Name of application that shall document the application layer topology + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-alt-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + topology-application-release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of application that shall document the application layer topology + find or update, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-alt-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + topology-operation-ltp-update: + type: string + minLength: 6 + description: > + 'Operation for updating an LTP + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + topology-operation-ltp-deletion: + type: string + minLength: 6 + description: > + 'Operation for deleting an LTP and its dependents like FC port and Link (if applicable) + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + topology-operation-fc-update: + type: string + minLength: 6 + description: > + 'Operation for updating a ForwardingConstruct instance + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + topology-operation-fc-port-update: + type: string + minLength: 6 + description: > + 'Operation for updating an FC port + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + topology-operation-fc-port-deletion: + type: string + minLength: 6 + description: > + 'Operation for deleting an FC port + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + topology-application-protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addresing the application that shall document the application layer topology + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + topology-application-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of application that shall document the application layer topology + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of application that shall document the application layer topology + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + topology-application-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of application that shall document the application layer topology + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + topology-application: 'InventoryApplication' + topology-application-release-number: '54.1.3' + topology-operation-ltp-update: '/v1/update-ltp' + topology-operation-ltp-deletion: '/v1/delete-ltp-and-dependents' + topology-operation-fc-update: '/v1/update-fc' + topology-operation-fc-port-update: '/v1/update-fc-port' + topology-operation-fc-port-deletion: '/v1/delete-fc-port' + topology-application-protocol: 'HTTP' + topology-application-address: + ip-address: + ipv-4-address: '1.1.3.1' + topology-application-port: 3001 + responses: + '200': + description: 'Client side for sending information about topology changes has been updated and current data tree has been provided' + content: + application/json: + schema: + type: object + required: + - core-model-1-4:control-construct + properties: + core-model-1-4:control-construct: + type: object + description: > + 'Entire internal datatree + from [/core-model-1-4:control-construct]' + required: + - uuid + - logical-termination-point + - forwarding-domain + properties: + uuid: + type: string + logical-termination-point: + type: array + uniqueItems: true + items: + $ref: '#/components/schemas/logicalTerminationPoint' + example: + - uuid: 'xy-15-3-2-op-s-bm-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' + client-ltp: [] + server-ltp: ['xy-15-3-2-http-s-000'] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + operation-server-interface-1-0:operation-server-interface-pac: + operation-server-interface-capability: + operation-name: '/v1/register-yourself' + operation-server-interface-configuration: + life-cycle-state: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - uuid: 'xy-15-3-2-http-s-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' + client-ltp: ['xy-15-3-2-op-s-bm-000'] + server-ltp: [] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + http-server-interface-1-0:http-server-interface-pac: + http-server-interface-capability: + application-name: 'ApplicationName' + release-number: '32.2.3' + data-update-period: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' + forwarding-domain: + type: array + minItems: 1 + maxItems: 1 + items: + $ref: '#/components/schemas/forwardingDomain' + example: + - uuid: 'xy-15-3-2-op-fd-000' + forwarding-construct: + - uuid: 'xy-15-3-2-op-fc-bm-000' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'PromptForRegisteringCausesRegistrationRequest' + fc-port: + - local-id: '000' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - local-id: '100' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + logical-termination-point: 'xy-15-3-2-op-s-bm-000' + - uuid: 'xy-15-3-2-op-fc-bm-001' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'PromptForEmbeddingCausesRequestForBequeathingData' + fc-port: + - local-id: '100' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + logical-termination-point: 'xy-15-3-2-op-s-bm-001' + - local-id: '200' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-009/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + ServiceRequestCausesLtpUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever a service request causes the creation or change of an LTP' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/logicalTerminationPoint' + responses: + '204': + description: 'LTP will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + ServiceRequestCausesLtpDeletionRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever a service request causes an LTP being deleted' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - uuid + properties: + uuid: + type: string + responses: + '204': + description: 'LTP and its dependents will be deleted' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + ServiceRequestCausesFcUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever a service request causes the creation or change of an FC port' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - uuid + - name + - fc-port + properties: + uuid: + type: string + name: + type: array + items: + type: object + required: + - value-name + - value + properties: + value-name: + type: string + value: + type: string + fc-port: + type: array + items: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + logical-termination-point: + type: string + responses: + '204': + description: 'FC will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + ServiceRequestCausesFcPortUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever a service request causes an FC port being updated' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - fc-uuid + - fc-port + properties: + fc-uuid: + type: string + fc-port: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + logical-termination-point: + type: string + responses: + '204': + description: 'FC port will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + ServiceRequestCausesFcPortDeletionRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever a service request causes an FC port being deleted' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - fc-uuid + - fc-port-local-id + properties: + fc-uuid: + type: string + fc-port-local-id: + type: string + responses: + '204': + description: 'FC port will be deleted' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + OamRequestCausesLtpUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-001/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever an OaM request causes the creation or change of an LTP' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/logicalTerminationPoint' + responses: + '204': + description: 'LTP will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + OamRequestCausesLtpDeletionRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-002/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever an OaM request causes an LTP being deleted' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - uuid + properties: + uuid: + type: string + responses: + '204': + description: 'LTP will be deleted' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + OamRequestCausesFcUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-003/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever an OaM request causes the creation or change of an FC port' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - uuid + - name + - fc-port + properties: + uuid: + type: string + name: + type: array + items: + type: object + required: + - value-name + - value + properties: + value-name: + type: string + value: + type: string + fc-port: + type: array + items: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + logical-termination-point: + type: string + responses: + '204': + description: 'FC port will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + OamRequestCausesFcPortUpdateRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-004/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever an OaM request causes an FC port being updated' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - fc-uuid + - fc-port + properties: + fc-uuid: + type: string + fc-port: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + enum: + - 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + - 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + - 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: + type: string + responses: + '204': + description: 'FC port will be updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + OamRequestCausesFcPortDeletionRequest: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-alt-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bm-alt-2-1-0-005/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + description: 'To be activated whenever an OaM request causes an FC port being deleted' + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - fc-uuid + - fc-port-local-id + properties: + fc-uuid: + type: string + fc-port-local-id: + type: string + responses: + '204': + description: 'FC port will be deleted' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/update-operation-key: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: updateOperationKey + summary: 'Allows updating operation key at a server or client' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-uuid + - new-operation-key + properties: + operation-uuid: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-([sc])-([bi][ms])((-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})){0,1})-([0-9]{3})$' + description: > + 'UUID of LTP that is target of the updating of the operation key + find [/core-model-1-4:control-construct/logical-termination-point=uuid]' + new-operation-key: + type: string + minLength: 5 + description: > + 'Future operation key + update [/core-model-1-4:control-construct/logical-termination-point={operation-uuid}/layer-protocol=0/operation-*-interface-1-0:operation-*-interface-pac/operation-*-interface-configuration/operation-key]' + example: + operation-uuid: 'xy-15-3-2-op-s-is-003' + new-operation-key: 'Operation key not yet provided.' + responses: + '204': + description: 'Operation key has been updated' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-010/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/update-operation-client: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: updateOperationClient + summary: 'Allows updating operation clients to redirect to backward compatible services' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - old-operation-name + - new-operation-name + properties: + application-name: + type: string + description: > + 'Name of the application that has an updated operation + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release number of the application that has an updated operation + find, but not at OldRelease or NewRelease, [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-*/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + old-operation-name: + type: string + minLength: 6 + description: > + 'Name of the deprecated operation + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + new-operation-name: + type: string + minLength: 6 + description: > + 'Name of the replacing operation + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + example: + application-name: 'ApplicationName' + release-number: '75.4.3' + old-operation-name: '/v1/register-application' + new-operation-name: '/v2/register-application' + responses: + '204': + description: 'Operation clients will be updated, if existing' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-011/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inquire-basic-auth-approvals: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: inquireBasicAuthRequestApprovals + summary: 'Receives information about where to ask for approval of BasicAuth requests' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - operation-name + - protocol + - address + - port + properties: + application-name: + type: string + description: > + 'Name of the application that approves the BasicAuth requests + find [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-aa-2-1-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + operation-name: + type: string + minLength: 6 + description: > + 'Operation for approving the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used for addressing the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port of the application that approves the BasicAuth requests + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + application-name: 'AccessApplication' + release-number: '43.2.4' + operation-name: '/v1/approve-basic-auth-request' + protocol: 'HTTP' + address: + ip-address: + ipv-4-address: '1.1.3.1' + port: 3001 + responses: + '204': + description: 'Informed about where to inquire for approval of BasicAuth requests' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + find in [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-005/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + callbacks: + BasicAuthRequestCausesInquiryForAuthentication: + url: #[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]://[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address or /core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]:[/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-aa-2-1-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port][/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-bs-aa-2-1-0-000/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name] + post: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + Authorization: + type: string + description: > + 'Authorization code + from {$request.parameters#Authorization} of the BasicAuth request that initiates the inquiry for approval' + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own application release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + operation-name: + type: string + description: > + 'Path (could be service, could be OaM path) that has been addressed by the BasicAuth request + in path parameter values to be replaced by original parameter names in curly brackets + filters to be removed + from {$request.path} of the BasicAuth request that initiates the inquiry for approval' + method: + type: string + description: > + 'Method applied in the BasicAuth request + from {$request.method} of the BasicAuth request that initiates the inquiry for approval' + responses: + '200': + description: 'Response on inquiry for approval of a BasicAuth request provided' + content: + application/json: + schema: + type: object + properties: + basic-auth-request-is-approved: + type: boolean + description: 'If true, BasicAuth request can be executed' + reason-of-objection: + type: string + description: > + 'if AUTHORIZATION_CODE_UNKNOWN BasicAuth request to be aborted and 401 to be sent + else BasicAuth request to be aborted and 403 to be sent' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: 'Life cycle state of the consumed service' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/dispose-remainders-of-deregistered-application: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: disposeRemaindersOfDeregisteredApplication + summary: 'Removes application from configuration and application data' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + description: 'Name of application that shall be removed from configuration and application data' + release-number: + type: string + description: 'Release of application that shall be removed from configuration and application data' + example: + application-name: 'BadApplication' + release-number: '45.4.3' + responses: + '204': + description: 'Application removed from configuration and application data' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + find in [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-013/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '401': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-preceding-release: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutPrecedingRelease + summary: 'Provides name and number of the preceding release' + tags: + - BasicServices + security: + - apiKeyAuth: [] + responses: + '200': + description: 'Name and number of the preceding release provided' + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + description: > + 'ApplicationName of the OldRelease + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'ReleaseNumber of the OldRelease + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-or-1-0-0-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + example: + application-name: 'ApplicationNameOfTheOldRelease' + release-number: '45.4.7' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-014/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/update-client-of-subsequent-release: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: UpdateClientOfSubsequentRelease + summary: 'Configures Http and TcpClient of the NewRelease' + tags: + - BasicServices + security: + - apiKeyAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - protocol + - address + - port + properties: + application-name: + type: string + description: > + 'Name of the application that is target of the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + description: > + 'Release of the application that is target of the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-c-nr-1-0-0-000/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number]' + protocol: + type: string + enum: + - 'HTTP' + - 'HTTPS' + description: > + 'Protocol to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol]' + address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + description: > + 'IPv4 address to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/ip-address/ipv-4-address]' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + description: > + 'Domain name to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address/domain-name]' + future-port: + type: integer + minimum: 0 + maximum: 65535 + description: > + 'Port to be used during the bequeath-your-data-and-die process + update [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-c-nr-1-0-0-000/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port]' + example: + application-name: 'ApplicationNameOfNewRelease' + release-number: '17.1.2' + protocol: 'HTTP' + address: + ip-address: + ipv-4-address: '1.1.3.0' + port: 3000 + responses: + '200': + description: 'Operations required for transferring data provided' + content: + application/json: + schema: + type: object + required: + - bequeath-your-data-and-die-operation + - data-transfer-operations-list + properties: + bequeath-your-data-and-die-operation: + type: string + description: > + 'Operation for starting the handover process on the already existing application + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-im-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name]' + data-transfer-operations-list: + type: array + items: + type: string + description: > + 'List of operations required for transferring data from the oldRelease to the newRelease + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-c-im-nr-*/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name]' + example: + bequeath-your-data-and-die-operation: '/v1/bequeath-your-data-and-die' + data-transfer-operations-list: + - '/v1/inquire-application-type-approvals' + - '/v1/notify-approvals' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bm-015/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + + /v1/start-application-in-generic-representation: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: startApplicationInGenericRepresentation + summary: 'Starts application in generic representation' + tags: + - BasicServices + responses: + '200': + description: 'Start mask provided' + content: + application/json: + schema: + $ref: '#/components/schemas/genericRepresentation' + example: + response-value-list: + - field-name: 'applicationName' + value: 'OwnApplicationName' + datatype: 'string' + consequent-action-list: + - label: 'Inform about Application' + request: 'https://1.1.4.1:4001/v1/inform-about-application-in-generic-representation' + display-in-new-browser-window: false + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-000/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '403': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-application: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutApplication + summary: 'Returns administrative information' + tags: + - BasicServices + responses: + '200': + description: 'Administrative information provided' + content: + application/json: + schema: + type: object + required: + - application-name + - release-number + - application-purpose + - data-update-period + - owner-name + - owner-email-address + properties: + application-name: + type: string + description: > + 'Own application name + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name]' + release-number: + type: string + description: > + 'Own release number + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number]' + application-purpose: + type: string + description: > + 'Own application purpose + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose]' + data-update-period: + type: string + enum: + - 'real-time' + - '1h-period' + - '24h-period' + - 'manual' + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period]' + owner-name: + type: string + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name]' + owner-email-address: + type: string + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address]' + example: + application-name: 'OwnApplicationName' + release-number: '34.3.6' + application-purpose: 'Brief description of the purpose of the application.' + data-update-period: 'real-time' + owner-name: 'Thorsten Heinze' + owner-email-address: 'Thorsten.Heinze@telefonica.com' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-001/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-application-in-generic-representation: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutApplicationInGenericRepresentation + summary: 'Returns administrative information for generic representation' + tags: + - BasicServices + responses: + '200': + description: 'Administrative information provided' + content: + application/json: + schema: + $ref: '#/components/schemas/genericRepresentation' + example: + response-value-list: + - field-name: 'applicationName' + value: 'OwnApplicationName' + datatype: 'string' + - field-name: 'releaseNumber' + value: '43.3.5' + datatype: 'string' + - field-name: 'applicationPurpose' + value: 'Brief description of the purpose of the application.' + datatype: 'string' + - field-name: 'dataUpdatePeriod' + value: 'real-time' + datatype: 'string' + - field-name: 'ownerName' + value: 'Thorsten Heinze' + datatype: 'string' + - field-name: 'ownerEmailAddress' + value: 'Thorsten.Heinze@telefonica.com' + datatype: 'string' + consequent-action-list: + - label: 'Release History' + request: 'https://1.1.4.1:4001/v1/inform-about-release-history-in-generic-representation' + display-in-new-browser-window: false + - label: 'API Documentation' + request: 'https://1.1.4.1:4001/docs' + display-in-new-browser-window: true + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-release-history: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutReleaseHistory + summary: 'Returns release history' + tags: + - BasicServices + responses: + '200': + description: 'Release history provided' + content: + application/json: + schema: + type: array + uniqueItems: true + items: + type: object + required: + - release-number + - release-date + - changes + properties: + release-number: + type: string + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-number]' + release-date: + type: string + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/release-date]' + changes: + type: string + description: 'from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list=*/changes]' + example: + - release-number: '34.5.6' + release-date: '20.11.2010' + changes: 'Initial version.' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-003/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + /v1/inform-about-release-history-in-generic-representation: + parameters: + - $ref: '#/components/parameters/user' + - $ref: '#/components/parameters/originator' + - $ref: '#/components/parameters/x-correlator' + - $ref: '#/components/parameters/trace-indicator' + - $ref: '#/components/parameters/customer-journey' + post: + operationId: informAboutReleaseHistoryInGenericRepresentation + summary: 'Returns release history for generic representation' + tags: + - BasicServices + responses: + '200': + description: 'Release history provided' + content: + application/json: + schema: + $ref: '#/components/schemas/genericRepresentation' + example: + response-value-list: + - field-name: '43.6.4' + value: '20.11.2010 - Initial version.' + datatype: 'string' + consequent-action-list: + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + life-cycle-state: + schema: + type: string + enum: + - 'EXPERIMENTAL' + - 'OPERATIONAL' + - 'DEPRECATED' + - 'OBSOLETE' + - 'UNKNOWN' + - 'NOT_YET_DEFINED' + example: 'EXPERIMENTAL' + description: > + 'Life cycle state of the consumed service + from [/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-004/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state]' + '400': + $ref: '#/components/responses/responseForErroredServiceRequests' + '404': + $ref: '#/components/responses/responseForErroredServiceRequests' + '500': + $ref: '#/components/responses/responseForErroredServiceRequests' + default: + $ref: '#/components/responses/responseForErroredServiceRequests' + +######################################################################################################################## +# OAM Layer - Individual Part +######################################################################################################################## + /core-model-1-4:control-construct: + get: + operationId: getControlConstruct + summary: 'Returns entire data tree' + tags: + - Core + security: + - basicAuth: [] + responses: + '200': + description: 'ControlConstruct provided' + content: + application/json: + schema: + type: object + required: + - core-model-1-4:control-construct + properties: + core-model-1-4:control-construct: + type: object + required: + - uuid + - profile-collection + - logical-termination-point + - forwarding-domain + properties: + uuid: + type: string + pattern: '^([a-z]{2,6})-([0-9]+)-([0-9]+)-([0-9]+)$' + example: 'xy-15-3-2' + profile-collection: + type: object + required: + - profile + properties: + profile: + type: array + uniqueItems: true + items: + oneOf: + - description: 'action profile' + type: object + required: + - uuid + - profile-name + # Bug in the postman mock server + # original code is: + # - action-profile-1-0:action-profile-pac + # workaround code is: + # - empty line - + additionalProperties: false + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + action-profile-1-0:action-profile-pac: + type: object + required: + - action-profile-capability + - action-profile-configuration + properties: + action-profile-capability: + type: object + required: + - operation-name + - label + - display-in-new-browser-window + properties: + operation-name: + type: string + label: + type: string + input-value-list: + type: array + items: + type: object + required: + - field-name + properties: + field-name: + type: string + unit: + type: string + display-in-new-browser-window: + type: boolean + action-profile-configuration: + type: object + required: + - consequent-operation-reference + properties: + consequent-operation-reference: + type: string + - description: 'generic response profile' + type: object + required: + - uuid + - profile-name + - response-profile-1-0:response-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + response-profile-1-0:response-profile-pac: + type: object + required: + - response-profile-capability + - response-profile-configuration + properties: + response-profile-capability: + type: object + required: + - operation-name + - field-name + - datatype + properties: + operation-name: + type: string + field-name: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-field-name: + type: string + field-name-reference: + type: string + description: + type: string + datatype: + type: string + response-profile-configuration: + type: object + required: + - value + properties: + value: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-value: + type: string + value-reference: + type: string + - description: 'file profile' + type: object + required: + - uuid + - profile-name + - file-profile-1-0:file-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + file-profile-1-0:file-profile-pac: + type: object + required: + - file-profile-capability + - file-profile-configuration + properties: + file-profile-capability: + type: object + required: + - file-identifier + - file-description + properties: + file-identifier: + type: string + file-description: + type: string + file-profile-configuration: + type: object + required: + - file-name + properties: + file-name: + type: string + operation: + type: string + enum: + - 'file-profile-1-0:OPERATION_TYPE_READ_ONLY' + - 'file-profile-1-0:OPERATION_TYPE_READ_WRITE' + - 'file-profile-1-0:OPERATION_TYPE_OFF' + - 'file-profile-1-0:OPERATION_TYPE_NOT_YET_DEFINED' + - description: 'integer profile' + type: object + required: + - uuid + - profile-name + - integer-profile-1-0:integer-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + integer-profile-1-0:integer-profile-pac: + type: object + required: + - integer-profile-capability + - integer-profile-configuration + properties: + integer-profile-capability: + type: object + required: + - integer-name + properties: + integer-name: + type: string + purpose: + type: string + unit: + type: string + minimum: + type: integer + maximum: + type: integer + integer-profile-configuration: + type: object + required: + - integer-value + properties: + integer-value: + type: integer + - description: 'string profile' + type: object + required: + - uuid + - profile-name + - string-profile-1-0:string-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + string-profile-1-0:string-profile-pac: + type: object + required: + - string-profile-capability + - string-profile-configuration + properties: + string-profile-capability: + type: object + required: + - string-name + properties: + string-name: + type: string + enumeration: + type: array + items: + type: string + pattern: + type: string + string-profile-configuration: + type: object + required: + - string-value + properties: + string-value: + type: string + example: + - uuid: 'xy-15-3-2-integer-p-000' + profile-name: 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + integer-profile-1-0:integer-profile-pac: + integer-profile-capability: + integer-name: 'maximumNumberOfEntries' + purpose: 'Limiting the number of entries for controlling the storage consumption and access response time' + unit: 'records' + minimum: 0 + maximum: 1000000 + integer-profile-configuration: + integer-value: 1000000 + logical-termination-point: + type: array + uniqueItems: true + items: + type: object + required: + - uuid + - ltp-direction + - client-ltp + - server-ltp + - layer-protocol + properties: + uuid: + type: string + ltp-direction: + type: string + enum: + - 'core-model-1-4:TERMINATION_DIRECTION_BIDIRECTIONAL' + - 'core-model-1-4:TERMINATION_DIRECTION_SINK' + - 'core-model-1-4:TERMINATION_DIRECTION_SOURCE' + - 'core-model-1-4:TERMINATION_DIRECTION_UNDEFINED_OR_UNKNOWN' + client-ltp: + type: array + uniqueItems: true + items: + type: string + server-ltp: + type: array + uniqueItems: true + items: + type: string + layer-protocol: + type: array + minItems: 1 + maxItems: 1 + items: + oneOf: + - description: 'operation server' + type: object + required: + - local-id + - layer-protocol-name + - operation-server-interface-1-0:operation-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + operation-server-interface-1-0:operation-server-interface-pac: + type: object + required: + - operation-server-interface-capability + - operation-server-interface-configuration + properties: + operation-server-interface-capability: + type: object + required: + - operation-name + properties: + operation-name: + type: string + operation-server-interface-configuration: + type: object + required: + - life-cycle-state + - operation-key + properties: + life-cycle-state: + type: string + enum: + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + operation-key: + type: string + - description: 'http server' + type: object + required: + - local-id + - layer-protocol-name + - http-server-interface-1-0:http-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + http-server-interface-1-0:http-server-interface-pac: + type: object + required: + - http-server-interface-capability + properties: + http-server-interface-capability: + type: object + required: + - application-name + - release-number + - application-purpose + - data-update-period + - owner-name + - owner-email-address + - release-list + properties: + application-name: + type: string + release-number: + type: string + application-purpose: + type: string + data-update-period: + type: string + enum: + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_1H_PERIOD' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_24H_PERIOD' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_MANUAL' + owner-name: + type: string + owner-email-address: + type: string + release-list: + type: array + uniqueItems: true + items: + type: object + required: + - local-id + - release-number + - release-date + - changes + properties: + local-id: + type: string + release-number: + type: string + release-date: + type: string + changes: + type: string + - description: 'tcp server' + type: object + required: + - local-id + - layer-protocol-name + - tcp-server-interface-1-0:tcp-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + tcp-server-interface-1-0:tcp-server-interface-pac: + type: object + required: + - tcp-server-interface-configuration + properties: + tcp-server-interface-configuration: + type: object + required: + - description + - local-protocol + - local-address + - local-port + properties: + description: + type: string + local-protocol: + type: string + local-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + domain-name: + type: string + local-port: + type: integer + - description: 'operation client' + type: object + required: + - local-id + - layer-protocol-name + - operation-client-interface-1-0:operation-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + operation-client-interface-1-0:operation-client-interface-pac: + type: object + required: + - operation-client-interface-configuration + - operation-client-interface-status + properties: + operation-client-interface-configuration: + type: object + required: + - operation-name + - operation-key + properties: + operation-name: + type: string + operation-key: + type: string + detailed-logging-is-on: + type: boolean + operation-client-interface-status: + type: object + required: + - operational-state + - life-cycle-state + properties: + operational-state: + type: string + enum: + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_AVAILABLE' + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_UNAVAILABLE' + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + life-cycle-state: + type: string + enum: + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + - description: 'elasticsearch client' + type: object + required: + - local-id + - layer-protocol-name + - elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac: + type: object + required: + - elasticsearch-client-interface-configuration + - elasticsearch-client-interface-status + properties: + elasticsearch-client-interface-configuration: + type: object + required: + - auth + - index-alias + properties: + auth: + type: object + minProperties: 1 + additionalProperties: false + properties: + api-key: + type: string + description: 'base64EncodedKey' + index-alias: + type: string + service-records-policy: + type: object + required: + - service-records-policy-name + - phases + properties: + service-records-policy-name: + type: string + description: + type: string + project: + type: object + properties: + name: + type: string + department: + type: string + phases: + type: object + properties: + hot: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + readonly: + type: object + rollover: + type: object + minProperties: 1 + additionalProperties: false + properties: + max-age: + type: string + max-docs: + type: integer + max-size: + type: string + max-primary-shard-size: + type: string + max-primary-shard-docs: + type: integer + min-age: + type: string + min-docs: + type: integer + min-size: + type: string + min-primary-shard-size: + type: string + min-primary-shard-docs: + type: integer + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + warm: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + cold: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + unfollow: + type: object + frozen: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + unfollow: + type: object + delete: + type: object + properties: + min-age: + type: string + actions: + type: object + required: + - delete + properties: + delete: + type: object + properties: + delete-searchable-snapshot: + type: boolean + wait-for-snapshot: + type: object + required: + - policy + properties: + policy: + type: string + elasticsearch-client-interface-status: + type: object + required: + - operational-state + - life-cycle-state + properties: + operational-state: + type: string + enum: + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_AVAILABLE' + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_UNAVAILABLE' + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + life-cycle-state: + type: string + enum: + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + - description: 'http client' + type: object + required: + - local-id + - layer-protocol-name + - http-client-interface-1-0:http-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + http-client-interface-1-0:http-client-interface-pac: + type: object + required: + - http-client-interface-configuration + properties: + http-client-interface-configuration: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + release-number: + type: string + - description: 'tcp client' + type: object + required: + - local-id + - layer-protocol-name + - tcp-client-interface-1-0:tcp-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + enum: + - 'operation-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'http-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-server-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + - 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + - 'elasticsearch-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_ELASTICSEARCH_LAYER' + - 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + - 'tcp-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_TCP_LAYER' + tcp-client-interface-1-0:tcp-client-interface-pac: + type: object + required: + - tcp-client-interface-configuration + properties: + tcp-client-interface-configuration: + type: object + required: + - remote-protocol + - remote-address + - remote-port + properties: + remote-protocol: + type: string + remote-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + domain-name: + type: string + remote-port: + type: integer + example: + - uuid: 'xy-15-3-2-op-c-bm-yz-34-4-4-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' + client-ltp: [] + server-ltp: ['xy-15-3-2-http-c-yz-34-4-4-000'] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'operation-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_OPERATION_LAYER' + operation-client-interface-1-0:operation-client-interface-pac: + operation-client-interface-configuration: + operation-name: '/v2/register-application' + operation-key: 'Operation key not yet provided.' + operation-client-interface-status: + operational-state: 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + life-cycle-state: 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + - uuid: 'xy-15-3-2-http-c-yz-34-4-4-000' + ltp-direction: 'core-model-1-4:TERMINATION_DIRECTION_SINK' + client-ltp: ['xy-15-3-2-op-c-bm-yz-34-4-4-000'] + server-ltp: ['xy-15-3-2-tcp-c-yz-34-4-4-000'] + layer-protocol: + - local-id: '0' + layer-protocol-name: 'http-client-interface-1-0:LAYER_PROTOCOL_NAME_TYPE_HTTP_LAYER' + http-client-interface-1-0:http-client-interface-pac: + http-client-interface-configuration: + application-name: 'ApplicationName' + release-number: '15.3.2' + forwarding-domain: + type: array + minItems: 1 + maxItems: 1 + items: + type: object + required: + - uuid + - forwarding-construct + properties: + uuid: + type: string + forwarding-construct: + type: array + items: + type: object + required: + - uuid + - name + - fc-port + properties: + uuid: + type: string + name: + type: array + items: + type: object + required: + - value-name + - value + properties: + value-name: + type: string + value: + type: string + fc-port: + type: array + items: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + enum: + - 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + - 'core-model-1-4:PORT_DIRECTION_TYPE_INPUT' + - 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: + type: string + example: + - uuid: 'xy-15-3-2-op-fd-000' + forwarding-construct: + - uuid: 'xy-15-3-2-op-fc-bm-003' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'OamRequestCausesLoggingRequest' + fc-port: + - local-id: '000' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + logical-termination-point: 'xy-15-3-2-op-s-bm-003' + - local-id: '200' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: 'xy-15-3-2-op-c-bs-yz-34-3-3-000' + - uuid: 'xy-15-3-2-op-fc-bm-004' + name: + - value-name: 'ForwardingKind' + value: 'core-model-1-4:FORWARDING_KIND_TYPE_INVARIANT_PROCESS_SNIPPET' + - value-name: 'ForwardingName' + value: 'BasicAuthRequestCausesInquiryForAuthentication' + fc-port: + - local-id: '000' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_MANAGEMENT' + logical-termination-point: 'xy-15-3-2-op-s-bm-005' + - local-id: '200' + port-direction: 'core-model-1-4:PORT_DIRECTION_TYPE_OUTPUT' + logical-termination-point: 'xy-15-3-2-op-c-bs-yz-34-3-3-000' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/profile-collection/profile={uuid}: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([a-z]+)-p-([0-9,a-f]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getProfileInstance + summary: 'Returns entire instance of Profile' + tags: + - Core + security: + - basicAuth: [] + responses: + '200': + description: 'Instance of Profile provided' + content: + application/json: + schema: + type: object + required: + - core-model-1-4:profile + properties: + core-model-1-4:profile: + oneOf: + - description: 'action profile' + type: object + required: + - uuid + - profile-name + - action-profile-1-0:action-profile-pac + additionalProperties: false + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + action-profile-1-0:action-profile-pac: + type: object + required: + - action-profile-capability + - action-profile-configuration + properties: + action-profile-capability: + type: object + required: + - operation-name + - label + - display-in-new-browser-window + properties: + operation-name: + type: string + label: + type: string + input-value-list: + type: array + items: + type: object + required: + - field-name + properties: + field-name: + type: string + unit: + type: string + display-in-new-browser-window: + type: boolean + action-profile-configuration: + type: object + required: + - consequent-operation-reference + properties: + consequent-operation-reference: + type: string + - description: 'generic response profile' + type: object + required: + - uuid + - profile-name + - response-profile-1-0:response-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + response-profile-1-0:response-profile-pac: + type: object + required: + - response-profile-capability + - response-profile-configuration + properties: + response-profile-capability: + type: object + required: + - operation-name + - field-name + - datatype + properties: + operation-name: + type: string + field-name: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-field-name: + type: string + field-name-reference: + type: string + description: + type: string + datatype: + type: string + response-profile-configuration: + type: object + required: + - value + properties: + value: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-value: + type: string + value-reference: + type: string + - description: 'file profile' + type: object + required: + - uuid + - profile-name + - file-profile-1-0:file-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + file-profile-1-0:file-profile-pac: + type: object + required: + - file-profile-capability + - file-profile-configuration + properties: + file-profile-capability: + type: object + required: + - file-identifier + - file-description + properties: + file-identifier: + type: string + file-description: + type: string + file-profile-configuration: + type: object + required: + - file-name + properties: + file-name: + type: string + operation: + type: string + enum: + - 'file-profile-1-0:OPERATION_TYPE_READ_ONLY' + - 'file-profile-1-0:OPERATION_TYPE_READ_WRITE' + - 'file-profile-1-0:OPERATION_TYPE_OFF' + - 'file-profile-1-0:OPERATION_TYPE_NOT_YET_DEFINED' + - description: 'integer profile' + type: object + required: + - uuid + - profile-name + - integer-profile-1-0:integer-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + integer-profile-1-0:integer-profile-pac: + type: object + required: + - integer-profile-capability + - integer-profile-configuration + properties: + integer-profile-capability: + type: object + required: + - integer-name + properties: + integer-name: + type: string + purpose: + type: string + unit: + type: string + minimum: + type: integer + maximum: + type: integer + integer-profile-configuration: + type: object + required: + - integer-value + properties: + integer-value: + type: integer + - description: 'string profile' + type: object + required: + - uuid + - profile-name + - string-profile-1-0:string-profile-pac + properties: + uuid: + type: string + profile-name: + type: string + enum: + - 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + - 'response-profile-1-0:PROFILE_NAME_TYPE_GENERIC_RESPONSE_PROFILE' + - 'file-profile-1-0:PROFILE_NAME_TYPE_FILE_PROFILE' + - 'integer-profile-1-0:PROFILE_NAME_TYPE_INTEGER_PROFILE' + - 'string-profile-1-0:PROFILE_NAME_TYPE_STRING_PROFILE' + string-profile-1-0:string-profile-pac: + type: object + required: + - string-profile-capability + - string-profile-configuration + properties: + string-profile-capability: + type: object + required: + - string-name + properties: + string-name: + type: string + enumeration: + type: array + items: + type: string + pattern: + type: string + string-profile-configuration: + type: object + required: + - string-value + properties: + string-value: + type: string + example: + core-model-1-4:profile: + uuid: 'xy-15-3-2-action-p-000' + profile-name: 'action-profile-1-0:PROFILE_NAME_TYPE_ACTION_PROFILE' + action-profile-1-0:action-profile-pac: + action-profile-capability: + operation-name: '/v1/start-application-in-generic-representation' + label: 'Inform about Application' + input-value-list: + - field-name: 'Label of input field' + unit: 'Unit at input field' + display-in-new-browser-window: false + action-profile-configuration: + consequent-operation-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + +######################################################################################################################## +# OAM Layer - Basic Part +######################################################################################################################## + /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-capability/operation-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getActionProfileOperationName + summary: 'Returns the name of the Operation' + tags: + - ActionProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Operation name provided' + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:operation-name + properties: + action-profile-1-0:operation-name: + type: string + example: '/v1/start-application-in-generic-representation' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-capability/label: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getActionProfileLabel + summary: 'Returns the Label of the Action' + tags: + - ActionProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Label provided' + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:label + properties: + action-profile-1-0:label: + type: string + example: 'Inform about Application' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getActionProfileInputValueListt + summary: 'Returns the list of input values' + tags: + - ActionProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Input values provided' + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:input-value-list + properties: + action-profile-1-0:input-value-list: + type: array + uniqueItems: true + items: + type: object + required: + - field-name + properties: + field-name: + type: string + example: 'Label of input field' + unit: + type: string + example: 'Unit at input field' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-capability/display-in-new-browser-window: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getActionProfileDisplayInNewBrowserWindow + summary: 'Returns whether to be presented in new browser window' + tags: + - ActionProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Whether to be presented in new browser window provided' + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:display-in-new-browser-window + properties: + action-profile-1-0:display-in-new-browser-window: + type: boolean + example: false + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/action-profile-1-0:action-profile-pac/action-profile-configuration/consequent-operation-reference: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-action-p-([0-9]{3})$' + example: 'xy-15-3-2-action-p-000' + get: + operationId: getActionProfileConsequentOperationReference + summary: 'Returns the reference on the consequent operation' + tags: + - ActionProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Reference on the consequent operation provided' + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:consequent-operation-reference + properties: + action-profile-1-0:consequent-operation-reference: + type: string + example: '/core-model-1-4:control-construct/logical-termination-point=xy-15-3-2-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putActionProfileConsequentOperationReference + summary: 'Configures the reference on the consequent operation' + tags: + - ActionProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - action-profile-1-0:consequent-operation-reference + properties: + action-profile-1-0:consequent-operation-reference: + type: string + example: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-op-s-bs-002/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name' + responses: + '204': + description: 'Reference on the consequent operation configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/profile-collection/profile={uuid}/response-profile-1-0:response-profile-pac/response-profile-capability/operation-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' + example: 'xy-15-3-2-response-p-000' + get: + operationId: getGenericResponseProfileOperationName + summary: 'Returns the name of the Operation' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Operation name provided' + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:operation-name + properties: + response-profile-1-0:operation-name: + type: string + example: '/v1/start-application-in-generic-representation' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/response-profile-1-0:response-profile-pac/response-profile-capability/field-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' + example: 'xy-15-3-2-response-p-000' + get: + operationId: getGenericResponseProfileFieldName + summary: 'Returns the name of the Field' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Field name provided' + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:field-name + properties: + response-profile-1-0:field-name: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-field-name: + type: string + field-name-reference: + type: string + example: + response-profile-1-0:field-name: + static-field-name: 'applicationName' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/response-profile-1-0:response-profile-pac/response-profile-capability/description: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' + example: 'xy-15-3-2-response-p-000' + get: + operationId: getGenericResponseProfileDescription + summary: 'Returns the Description of the Field' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Description of the field provided' + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:description + properties: + response-profile-1-0:description: + type: string + example: 'Name of this application' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/response-profile-1-0:response-profile-pac/response-profile-capability/datatype: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' + example: 'xy-15-3-2-response-p-000' + get: + operationId: getGenericResponseProfileDatatype + summary: 'Returns the Datatype of the Field' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Datatype of the field provided' + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:datatype + properties: + response-profile-1-0:datatype: + type: string + example: 'string' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/response-profile-1-0:response-profile-pac/response-profile-configuration/value: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-response-p-([0-9]{3})$' + example: 'xy-15-3-2-response-p-000' + get: + operationId: getGenericResponseProfileValue + summary: 'Returns the Value of the Field' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Value of the field provided' + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:value + properties: + response-profile-1-0:value: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-value: + type: string + value-reference: + type: string + example: + response-profile-1-0:value: + value-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putGenericResponseProfileValue + summary: 'Configures the Value of the Field' + tags: + - GenericResponseProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - response-profile-1-0:value + properties: + response-profile-1-0:value: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + static-value: + type: string + value-reference: + type: string + example: + response-profile-1-0:value: + value-reference: '/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-http-s-000/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name' + responses: + '204': + description: 'Request path configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-capability/file-identifier: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' + example: 'xy-15-3-2-file-p-000' + get: + operationId: getFileProfileFileIdentifier + summary: 'Returns the identifier of the file' + tags: + - FileProfile + security: + - basicAuth: [] + responses: + '200': + description: 'File identifier provided' + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:file-identifier + properties: + file-profile-1-0:file-identifier: + type: string + example: 'applicationData' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-capability/file-description: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' + example: 'xy-15-3-2-file-p-000' + get: + operationId: getFileProfileFileDescription + summary: 'Returns the description of the file' + tags: + - FileProfile + security: + - basicAuth: [] + responses: + '200': + description: 'File description provided' + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:file-description + properties: + file-profile-1-0:file-description: + type: string + example: 'Holds administrator-names, user-names, authorization codes and allowed-methods.' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/file-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' + example: 'xy-15-3-2-file-p-000' + get: + operationId: getFileProfileFileName + summary: 'Returns the name of the file' + tags: + - FileProfile + security: + - basicAuth: [] + responses: + '200': + description: 'File name provided' + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:file-name + properties: + file-profile-1-0:file-name: + type: string + example: 'application-data.json' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putFileProfileFileName + summary: 'Configures name of the file' + tags: + - FileProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:file-name + properties: + file-profile-1-0:file-name: + type: string + pattern: '^([A-Za-z0-9-_,\s]{3,})\.([A-Za-z]{3})$' + example: 'application-data.json' + responses: + '204': + description: 'File name configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/file-profile-1-0:file-profile-pac/file-profile-configuration/operation: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-file-p-([0-9]{3})$' + example: 'xy-15-3-2-file-p-000' + get: + operationId: getFileProfileOperation + summary: 'Returns the allowed operation on the file' + tags: + - FileProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Operation provided' + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:operation + properties: + file-profile-1-0:operation: + type: string + enum: + - 'file-profile-1-0:OPERATION_TYPE_READ_ONLY' + - 'file-profile-1-0:OPERATION_TYPE_READ_WRITE' + - 'file-profile-1-0:OPERATION_TYPE_OFF' + - 'file-profile-1-0:OPERATION_TYPE_NOT_YET_DEFINED' + example: 'file-profile-1-0:OPERATION_TYPE_READ_ONLY' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putFileProfileOperation + summary: 'Configures the allowed operation on the file' + tags: + - FileProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - file-profile-1-0:operation + properties: + file-profile-1-0:operation: + type: string + enum: + - 'file-profile-1-0:OPERATION_TYPE_READ_ONLY' + - 'file-profile-1-0:OPERATION_TYPE_READ_WRITE' + - 'file-profile-1-0:OPERATION_TYPE_OFF' + - 'file-profile-1-0:OPERATION_TYPE_NOT_YET_DEFINED' + example: 'file-profile-1-0:OPERATION_TYPE_READ_WRITE' + responses: + '204': + description: 'Operation configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-capability/integer-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'xy-15-3-2-integer-p-000' + get: + operationId: getIntegerProfileIntegerName + summary: 'Returns the name of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Integer name provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:integer-name + properties: + integer-profile-1-0:integer-name: + type: string + example: 'maximumNumberOfEntries' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-capability/purpose: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'yz-34-4-4-integer-p-000' + get: + operationId: getIntegerProfilePurpose + summary: 'Returns the purpose of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Integer purpose provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:purpose + properties: + integer-profile-1-0:purpose: + type: string + example: 'Limiting the number of entries for controlling the storage consumption and access response time' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-capability/unit: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'xy-15-3-2-integer-p-000' + get: + operationId: getIntegerProfileUnit + summary: 'Returns the unit of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Integer unit provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:unit + properties: + integer-profile-1-0:unit: + type: string + example: 'records' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-capability/minimum: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'xy-15-3-2-integer-p-000' + get: + operationId: getIntegerProfileMinimum + summary: 'Returns the minimum value of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Minimum value provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:minimum + properties: + integer-profile-1-0:minimum: + type: integer + example: 0 + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-capability/maximum: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'xy-15-3-2-integer-p-000' + get: + operationId: getIntegerProfileMaximum + summary: 'Returns the maximum value of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Maximum value provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:maximum + properties: + integer-profile-1-0:maximum: + type: integer + example: 1000000 + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/integer-profile-1-0:integer-profile-pac/integer-profile-configuration/integer-value: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-integer-p-([0-9]{3})$' + example: 'xy-15-3-2-integer-p-000' + get: + operationId: getIntegerProfileIntegerValue + summary: 'Returns the configured value of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Integer value provided' + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:integer-value + properties: + integer-profile-1-0:integer-value: + type: integer + example: 1000000 + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putIntegerProfileIntegerValue + summary: 'Configures value of the Integer' + tags: + - IntegerProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - integer-profile-1-0:integer-value + properties: + integer-profile-1-0:integer-value: + type: integer + description: 'Value must be between /integer-profile-capability/minimum and /integer-profile-capability/maximum to be accepted, if those attributes are available in the Capability section' + example: 1000000 + responses: + '204': + description: 'Integer value configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/profile-collection/profile={uuid}/string-profile-1-0:string-profile-pac/string-profile-capability/string-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' + example: 'xy-15-3-2-string-p-000' + get: + operationId: getStringProfileStringName + summary: 'Returns the name of the String' + tags: + - StringProfile + security: + - basicAuth: [] + responses: + '200': + description: 'String name provided' + content: + application/json: + schema: + type: object + required: + - string-profile-1-0:string-name + properties: + string-profile-1-0:string-name: + type: string + example: 'operationMode' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/string-profile-1-0:string-profile-pac/string-profile-capability/enumeration: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' + example: 'xy-15-3-2-string-p-000' + get: + operationId: getStringProfileEnumeration + summary: 'Returns the enumeration values of the String' + tags: + - StringProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Enumeration values provided' + content: + application/json: + schema: + type: object + required: + - string-profile-1-0:enumeration + properties: + string-profile-1-0:enumeration: + type: array + items: + type: string + description: 'Enumeration values of the string' + example: ['string-profile-1-0:STRING_VALUE_TYPE_REACTIVE', 'string-profile-1-0:STRING_VALUE_TYPE_PROTECTION', 'string-profile-1-0:STRING_VALUE_TYPE_OFF'] + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/string-profile-1-0:string-profile-pac/string-profile-capability/pattern: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' + example: 'xy-15-3-2-string-p-000' + get: + operationId: getStringProfilePattern + summary: 'Returns the pattern of the String' + tags: + - StringProfile + security: + - basicAuth: [] + responses: + '200': + description: 'Pattern provided' + content: + application/json: + schema: + type: object + required: + - string-profile-1-0:pattern + properties: + string-profile-1-0:pattern: + type: string + example: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/profile-collection/profile={uuid}/string-profile-1-0:string-profile-pac/string-profile-configuration/string-value: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-string-p-([0-9]{3})$' + example: 'xy-15-3-2-string-p-000' + get: + operationId: getStringProfileStringValue + summary: 'Returns the configured value of the String' + tags: + - StringProfile + security: + - basicAuth: [] + responses: + '200': + description: 'String value provided' + content: + application/json: + schema: + type: object + required: + - string-profile-1-0:string-value + properties: + string-profile-1-0:string-value: + type: string + example: 'string-profile-1-0:STRING_VALUE_TYPE_OFF' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putStringProfileStringValue + summary: 'Configures value of the String' + tags: + - StringProfile + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - string-profile-1-0:string-value + properties: + string-profile-1-0:string-value: + type: string + description: 'Value must be one of the options defined in /string-profile-capability/enumeration to be accepted, if such enumeration is available in the Capability section' + example: 'string-profile-1-0:STRING_VALUE_TYPE_OFF' + responses: + '204': + description: 'String configured' + headers: + x-correlator: + schema: + type: string + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + backend-time: + schema: + type: integer + example: 850 + description: 'Value written by the service provider, reporting the elapsed time for data retrieval from the backend (service invocation, database access…). Expressed in milliseconds' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-capability/operation-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' + example: 'xy-15-3-2-op-s-bm-000' + get: + operationId: getOperationServerOperationName + summary: 'Returns operation name' + tags: + - OperationServer + security: + - basicAuth: [] + responses: + '200': + description: 'Operation name provided' + content: + application/json: + schema: + type: object + required: + - operation-server-interface-1-0:operation-name + properties: + operation-server-interface-1-0:operation-name: + type: string + example: '/v1/register-yourself' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/life-cycle-state: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' + example: 'xy-15-3-2-op-s-bm-000' + get: + operationId: getOperationServerLifeCycleState + summary: 'Returns the configured life cycle state of the operation' + tags: + - OperationServer + security: + - basicAuth: [] + responses: + '200': + description: 'Life cycle state provided' + content: + application/json: + schema: + type: object + required: + - operation-server-interface-1-0:life-cycle-state + properties: + operation-server-interface-1-0:life-cycle-state: + type: string + enum: + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + example: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putOperationServerLifeCycleState + summary: 'Configures life cycle state' + tags: + - OperationServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-server-interface-1-0:life-cycle-state + properties: + operation-server-interface-1-0:life-cycle-state: + type: string + enum: + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + example: 'operation-server-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + responses: + '204': + description: 'Life cycle state configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-server-interface-1-0:operation-server-interface-pac/operation-server-interface-configuration/operation-key: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-s-([bi][ms])-([0-9]{3})$' + example: 'xy-15-3-2-op-s-bm-000' + get: + operationId: getOperationServerOperationKey + summary: 'Returns key for connecting' + tags: + - OperationServer + security: + - basicAuth: [] + responses: + '200': + description: 'Operation key provided' + content: + application/json: + schema: + type: object + required: + - operation-server-interface-1-0:operation-key + properties: + operation-server-interface-1-0:operation-key: + type: string + example: 'Operation key not yet provided.' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putOperationServerOperationKey + summary: 'Changes key for connecting' + tags: + - OperationServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-server-interface-1-0:operation-key + properties: + operation-server-interface-1-0:operation-key: + type: string + minLength: 5 + example: 'Operation key not yet provided.' + responses: + '204': + description: 'Operation key changed' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerApplicationName + summary: 'Returns application name' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Application name provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:application-name + properties: + http-server-interface-1-0:application-name: + type: string + example: 'ApplicationName' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-number: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerReleaseNumber + summary: 'Returns release number' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Release number provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:release-number + properties: + http-server-interface-1-0:release-number: + type: string + example: '34.5.2' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/application-purpose: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerApplicationPurpose + summary: 'Returns application purpose' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Application purpose provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:application-purpose + properties: + http-server-interface-1-0:application-purpose: + type: string + example: 'Brief description of the purpose of the application.' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/data-update-period: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerDataUpdatePeriode + summary: 'Returns update period' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Update period provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:data-update-period + properties: + http-server-interface-1-0:data-update-period: + type: string + enum: + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_1H_PERIOD' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_24H_PERIOD' + - 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_MANUAL' + example: 'http-server-interface-1-0:DATA_UPDATE_PERIOD_TYPE_REAL_TIME' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerOwnerName + summary: 'Returns owner name' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Owner name provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:owner-name + properties: + http-server-interface-1-0:owner-name: + type: string + example: 'Thorsten Heinze' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/owner-email-address: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerOwnerEmailAddress + summary: 'Returns owner email address' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Email address of owner provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:owner-email-address + properties: + http-server-interface-1-0:owner-email-address: + type: string + example: 'Thorsten.Heinze@telefonica.com' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-server-interface-1-0:http-server-interface-pac/http-server-interface-capability/release-list: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-s-000' + example: 'xy-15-3-2-http-s-000' + get: + operationId: getHttpServerReleaseList + summary: 'Returns list of releases' + tags: + - HttpServer + security: + - basicAuth: [] + responses: + '200': + description: 'List of releases provided' + content: + application/json: + schema: + type: object + required: + - http-server-interface-1-0:release-list + properties: + http-server-interface-1-0:release-list: + type: array + uniqueItems: true + items: + type: object + required: + - local-id + - release-number + - release-date + - changes + properties: + local-id: + type: string + release-number: + type: string + release-date: + type: string + changes: + type: string + example: + - local-id: 0 + release-number: '23.2.2' + release-date: '20.11.2010' + changes: 'Initial version.' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/description: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' + example: 'xy-15-3-2-tcp-s-000' + get: + operationId: getTcpServerDescription + summary: 'Returns Description of TcpServer' + tags: + - TcpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Description provided' + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:description + properties: + tcp-server-interface-1-0:description: + type: string + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpServerDescription + summary: 'Documents Description of TcpServer' + tags: + - TcpServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:description + properties: + tcp-server-interface-1-0:description: + type: string + responses: + '204': + description: 'Description documented' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' + example: 'xy-15-3-2-tcp-s-000' + get: + operationId: getTcpServerLocalProtocol + summary: 'Returns Protocol of TcpServer' + tags: + - TcpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Local protocol provided' + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-protocol + properties: + tcp-server-interface-1-0:local-protocol: + type: string + enum: + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_HTTP' + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_HTTPS' + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpServerLocalProtocol + summary: 'Documents Protocol of TcpServer' + tags: + - TcpServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-protocol + properties: + tcp-server-interface-1-0:local-protocol: + type: string + enum: + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_HTTP' + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_HTTPS' + - 'tcp-server-interface-1-0:PROTOCOL_TYPE_NOT_YET_DEFINED' + responses: + '204': + description: 'Local protocol documented' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' + example: 'xy-15-3-2-tcp-s-000' + get: + operationId: getTcpServerLocalAddress + summary: 'Returns address of the server' + tags: + - TcpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Local address provided' + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-address + properties: + tcp-server-interface-1-0:local-address: + type: object + properties: + ipv-4-address: + type: string + domain-name: + type: string + example: + tcp-server-interface-1-0:local-address: + ipv-4-address: '1.1.4.1' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpServerLocalAddress + summary: 'Documents address of the server' + tags: + - TcpServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-address + properties: + tcp-server-interface-1-0:local-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + example: + tcp-server-interface-1-0:local-address: + ipv-4-address: '1.1.4.1' + responses: + '204': + description: 'Local IPv4 address documented' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-s-000$' + example: 'xy-15-3-2-tcp-s-000' + get: + operationId: getTcpServerLocalPort + summary: 'Returns TCP port of the server' + tags: + - TcpServer + security: + - basicAuth: [] + responses: + '200': + description: 'Local port provided' + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-port + properties: + tcp-server-interface-1-0:local-port: + type: integer + example: 1000 + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpServerLocalPort + summary: 'Documents TCP port of the server' + tags: + - TcpServer + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-server-interface-1-0:local-port + properties: + tcp-server-interface-1-0:local-port: + type: integer + minimum: 0 + maximum: 65535 + example: 1000 + responses: + '204': + description: 'Local port documented' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' + get: + operationId: getOperationClientOperationName + summary: 'Returns operation name' + tags: + - OperationClient + security: + - basicAuth: [] + responses: + '200': + description: 'Operation name provided' + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:operation-name + properties: + operation-client-interface-1-0:operation-name: + type: string + example: '/v1/bequeath-your-data-and-die' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putOperationClientOperationName + summary: 'Configures operation name' + tags: + - OperationClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:operation-name + properties: + operation-client-interface-1-0:operation-name: + type: string + minLength: 6 + example: '/v1/bequeath-your-data-and-die' + responses: + '204': + description: 'Operation name configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/operation-key: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' + get: + operationId: getOperationClientOperationKey + summary: 'Returns key used for connecting to server.' + tags: + - OperationClient + security: + - basicAuth: [] + responses: + '200': + description: 'Operation key provided' + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:operation-key + properties: + operation-client-interface-1-0:operation-key: + type: string + example: 'Operation key not yet provided.' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putOperationClientOperationKey + summary: 'Configures key used for connecting to server.' + tags: + - OperationClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:operation-key + properties: + operation-client-interface-1-0:operation-key: + type: string + minLength: 5 + example: 'Operation key not yet provided.' + responses: + '204': + description: 'Operation key configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-status/operational-state: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' + get: + operationId: getOperationClientOperationalState + summary: 'Returns operational state of the operation' + tags: + - OperationClient + security: + - basicAuth: [] + responses: + '200': + description: 'Operational state provided' + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:operational-state + properties: + operation-client-interface-1-0:operational-state: + type: string + enum: + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_AVAILABLE' + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_UNAVAILABLE' + - 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + example: 'operation-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-status/life-cycle-state: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-([bi][ms])-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'xy-15-3-2-op-c-bm-or-1-0-0-000' + get: + operationId: getOperationClientLifeCycleState + summary: 'Returns life cycle state of the operation' + tags: + - OperationClient + security: + - basicAuth: [] + responses: + '200': + description: 'Life cycle state provided' + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:life-cycle-state + properties: + operation-client-interface-1-0:life-cycle-state: + type: string + enum: + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + example: 'operation-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/operation-client-interface-1-0:operation-client-interface-pac/operation-client-interface-configuration/detailed-logging-is-on: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-op-c-bs-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'xy-15-3-2-op-c-bs-yz-34-4-3-000' + get: + operationId: getOperationClientDetailedLoggingIsOn + summary: 'Returns detailed logging configuration.' + tags: + - OperationClient + security: + - basicAuth: [] + responses: + '200': + description: 'Detailed logging configuration provided' + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:detailed-logging-is-on + properties: + operation-client-interface-1-0:detailed-logging-is-on: + type: boolean + example: false + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putOperationClientDetailedLoggingIsOn + summary: 'Configures detailed logging on/off.' + tags: + - OperationClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - operation-client-interface-1-0:detailed-logging-is-on + properties: + operation-client-interface-1-0:detailed-logging-is-on: + type: boolean + example: false + responses: + '204': + description: 'Operation key configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac/elasticsearch-client-interface-configuration/auth/api-key: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'yz-34-3-3-es-c-es-1-0-0-000' + get: + operationId: getElasticsearchClientApiKey + summary: 'Returns API key' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + responses: + '200': + description: 'API key provided' + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:api-key + properties: + elasticsearch-client-interface-1-0:api-key: + type: string + example: 'YWRtaW46MTIzNDU2' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putElasticsearchClientApiKey + summary: 'Configures API key' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:api-key + properties: + elasticsearch-client-interface-1-0:api-key: + type: string + responses: + '204': + description: 'API key configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac/elasticsearch-client-interface-configuration/index-alias: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'yz-34-3-3-es-c-es-1-0-0-000' + get: + operationId: getElasticsearchClientIndexAlias + summary: 'Returns index alias' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + responses: + '200': + description: 'Index alias provided' + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:index-alias + properties: + elasticsearch-client-interface-1-0:index-alias: + type: string + example: 'eatl_service_records' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putElasticsearchClientIndexAlias + summary: 'Configures index alias' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:index-alias + properties: + elasticsearch-client-interface-1-0:index-alias: + type: string + responses: + '204': + description: 'Index alias configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac/elasticsearch-client-interface-configuration/service-records-policy: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'yz-34-3-3-es-c-es-1-0-0-000' + get: + operationId: getElasticsearchClientServiceRecordsPolicy + summary: 'Returns service records policy' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + responses: + '200': + description: 'Service records policy provided' + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:service-records-policy + properties: + elasticsearch-client-interface-1-0:service-records-policy: + type: object + required: + - service-records-policy-name + - phases + properties: + service-records-policy-name: + type: string + description: + type: string + project: + type: object + properties: + name: + type: string + department: + type: string + phases: + type: object + properties: + hot: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + readonly: + type: object + rollover: + type: object + minProperties: 1 + additionalProperties: false + properties: + max-age: + type: string + max-docs: + type: integer + max-size: + type: string + max-primary-shard-size: + type: string + max-primary-shard-docs: + type: integer + min-age: + type: string + min-docs: + type: integer + min-size: + type: string + min-primary-shard-size: + type: string + min-primary-shard-docs: + type: integer + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + warm: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + cold: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + unfollow: + type: object + frozen: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + unfollow: + type: object + delete: + type: object + properties: + min-age: + type: string + actions: + type: object + required: + - delete + properties: + delete: + type: object + properties: + delete-searchable-snapshot: + type: boolean + wait-for-snapshot: + type: object + required: + - policy + properties: + policy: + type: string + example: + elasticsearch-client-interface-1-0:service-records-policy: + service-records-policy-name: 'eatl_service_records_policy' + phases: + hot: + min-age: '30s' + actions: + rollover: + max-age: '5d' + delete: + min-age: '5d' + actions: + delete: + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putElasticsearchClientServiceRecordsPolicy + summary: 'Configures service records policy' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:service-records-policy + properties: + elasticsearch-client-interface-1-0:service-records-policy: + type: object + required: + - service-records-policy-name + - phases + properties: + service-records-policy-name: + type: string + description: + type: string + project: + type: object + properties: + name: + type: string + department: + type: string + phases: + type: object + properties: + hot: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + readonly: + type: object + rollover: + type: object + minProperties: 1 + additionalProperties: false + properties: + max-age: + type: string + max-docs: + type: integer + max-size: + type: string + max-primary-shard-size: + type: string + max-primary-shard-docs: + type: integer + min-age: + type: string + min-docs: + type: integer + min-size: + type: string + min-primary-shard-size: + type: string + min-primary-shard-docs: + type: integer + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + warm: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + forcemerge: + type: object + required: + - max-num-segments + properties: + max-num-segments: + type: integer + index-codec: + type: string + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + shrink: + type: object + properties: + number-of-shards: + type: integer + max-primary-shard-size: + type: string + unfollow: + type: object + cold: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + allocate: + type: object + minProperties: 1 + additionalProperties: false + properties: + number-of-replicas: + type: integer + total-shards-per-node: + type: integer + include: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + exclude: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + require: + type: object + properties: + box-type: + type: string + enum: + - 'hot' + - 'warm' + - 'cold' + - 'frozen' + - 'delete' + storage: + type: string + enum: + - 'high' + migrate: + type: object + properties: + enabled: + type: boolean + readonly: + type: object + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + set-priority: + type: object + required: + - priority + properties: + priority: + type: integer + unfollow: + type: object + frozen: + type: object + properties: + min-age: + type: string + actions: + type: object + properties: + searchable-snapshot: + type: object + required: + - snapshot-repository + properties: + snapshot-repository: + type: string + force-merge-index: + type: boolean + unfollow: + type: object + delete: + type: object + properties: + min-age: + type: string + actions: + type: object + required: + - delete + properties: + delete: + type: object + properties: + delete-searchable-snapshot: + type: boolean + wait-for-snapshot: + type: object + required: + - policy + properties: + policy: + type: string + example: + elasticsearch-client-interface-1-0:service-records-policy: + service-records-policy-name: 'eatl_service_records_policy' + phases: + hot: + min-age: '30s' + actions: + rollover: + max-age: '5d' + delete: + min-age: '5d' + actions: + delete: + delete-searchable-snapshot: true + responses: + '204': + description: 'Service records policy configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac/elasticsearch-client-interface-status/operational-state: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'yz-34-3-3-es-c-es-1-0-0-000' + get: + operationId: getElasticsearchClientOperationalState + summary: 'Returns operational state of the connection towards Elasticsearch' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + responses: + '200': + description: 'Operational state provided' + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:operational-state + properties: + elasticsearch-client-interface-1-0:operational-state: + type: string + enum: + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_AVAILABLE' + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_UNAVAILABLE' + - 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + example: 'elasticsearch-client-interface-1-0:OPERATIONAL_STATE_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac/elasticsearch-client-interface-status/life-cycle-state: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-es-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{3})$' + example: 'yz-34-3-3-es-c-es-1-0-0-000' + get: + operationId: getElasticsearchClientLifeCycleState + summary: 'Returns life cycle state of the connection towards Elasticsearch' + tags: + - ElasticsearchClient + security: + - basicAuth: [] + responses: + '200': + description: 'Life cycle state provided' + content: + application/json: + schema: + type: object + required: + - elasticsearch-client-interface-1-0:life-cycle-state + properties: + elasticsearch-client-interface-1-0:life-cycle-state: + type: string + enum: + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_EXPERIMENTAL' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OPERATIONAL' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_DEPRECATED' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_OBSOLETE' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_UNKNOWN' + - 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + example: 'elasticsearch-client-interface-1-0:LIFE_CYCLE_STATE_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' + example: 'xy-15-3-2-http-c-or-1-0-0-000' + get: + operationId: getHttpClientApplicationName + summary: 'Returns name of application to be addressed' + tags: + - HttpClient + security: + - basicAuth: [] + responses: + '200': + description: 'Addressed application provided' + content: + application/json: + schema: + type: object + required: + - http-client-interface-1-0:application-name + properties: + http-client-interface-1-0:application-name: + type: string + example: 'OldRelease' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putHttpClientApplicationName + summary: 'Configures name of application to be addressed' + tags: + - HttpClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - http-client-interface-1-0:application-name + properties: + http-client-interface-1-0:application-name: + type: string + pattern: '^([A-Z][a-z0-9]+){2,}$' + example: 'NewApplication' + responses: + '204': + description: 'Name of addressed application configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/release-number: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-http-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' + example: 'xy-15-3-2-http-c-or-1-0-0-000' + get: + operationId: getHttpClientReleaseNumber + summary: 'Returns release number of application to be addressed' + tags: + - HttpClient + security: + - basicAuth: [] + responses: + '200': + description: 'Release number provided' + content: + application/json: + schema: + type: object + required: + - http-client-interface-1-0:release-number + properties: + http-client-interface-1-0:release-number: + type: string + example: '34.2.3' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putHttpClientReleaseNumber + summary: 'Configures release number of application to be addressed' + tags: + - HttpClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - http-client-interface-1-0:release-number + properties: + http-client-interface-1-0:release-number: + type: string + pattern: '^([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{1,2})$' + example: '34.3.2' + responses: + '204': + description: 'Release number configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-protocol: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' + get: + operationId: getTcpClientRemoteProtocol + summary: 'Returns protocol for addressing remote side' + tags: + - TcpClient + security: + - basicAuth: [] + responses: + '200': + description: 'Protocol for addressing remote side provided' + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-protocol + properties: + tcp-client-interface-1-0:remote-protocol: + type: string + enum: + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP' + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_HTTPS' + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_NOT_YET_DEFINED' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpClientRemoteProtocol + summary: 'Configures protocol for addressing remote side' + tags: + - TcpClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-protocol + properties: + tcp-client-interface-1-0:remote-protocol: + type: string + enum: + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_HTTP' + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_HTTPS' + - 'tcp-client-interface-1-0:PROTOCOL_TYPE_NOT_YET_DEFINED' + responses: + '204': + description: 'Protocol for addressing remote side configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-address: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' + get: + operationId: getTcpClientRemoteAddress + summary: 'Returns remote address' + tags: + - TcpClient + security: + - basicAuth: [] + responses: + '200': + description: 'Remote address provided' + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-address + properties: + tcp-client-interface-1-0:remote-address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + domain-name: + type: string + example: + tcp-client-interface-1-0:remote-address: + ip-address: + ipv-4-address: '1.1.4.1' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpClientRemoteAddress + summary: 'Configures remote address' + tags: + - TcpClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-address + properties: + tcp-client-interface-1-0:remote-address: + type: object + minProperties: 1 + maxProperties: 1 + additionalProperties: false + properties: + ip-address: + type: object + minProperties: 1 + additionalProperties: false + properties: + ipv-4-address: + type: string + pattern: '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$' + domain-name: + type: string + pattern: '^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$' + example: + tcp-client-interface-1-0:remote-address: + ip-address: + ipv-4-address: '1.1.4.1' + responses: + '204': + description: 'Remote IPv4 address configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + /core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/tcp-client-interface-1-0:tcp-client-interface-pac/tcp-client-interface-configuration/remote-port: + parameters: + - in: path + name: uuid + required: true + schema: + type: string + pattern: '^([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-tcp-c-([a-z]{2,6})-([0-9]{1,2})-([0-9]{1,2})-([0-9]{1,2})-000$' + example: 'xy-15-3-2-tcp-c-or-1-0-0-000' + get: + operationId: getTcpClientRemotePort + summary: 'Returns target TCP port at server' + tags: + - TcpClient + security: + - basicAuth: [] + responses: + '200': + description: 'Remote port provided' + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-port + properties: + tcp-client-interface-1-0:remote-port: + type: integer + example: 1000 + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + put: + operationId: putTcpClientRemotePort + summary: 'Configures target TCP port at server' + tags: + - TcpClient + security: + - basicAuth: [] + requestBody: + required: true + content: + application/json: + schema: + type: object + required: + - tcp-client-interface-1-0:remote-port + properties: + tcp-client-interface-1-0:remote-port: + type: integer + minimum: 0 + maximum: 65535 + example: 1000 + responses: + '204': + description: 'Remote port configured' + '400': + $ref: '#/components/responses/responseForErroredOamRequests' + '401': + $ref: '#/components/responses/responseForErroredOamRequests' + '403': + $ref: '#/components/responses/responseForErroredOamRequests' + '404': + $ref: '#/components/responses/responseForErroredOamRequests' + '500': + $ref: '#/components/responses/responseForErroredOamRequests' + default: + $ref: '#/components/responses/responseForErroredOamRequests' + +######################################################################################################################## +# Common Components +######################################################################################################################## +components: + parameters: + user: + name: user + in: header + required: true + schema: + type: string + example: 'User Name' + description: 'User identifier from the system starting the service call' + originator: + name: originator + in: header + required: true + schema: + type: string + minLength: 3 + example: 'Resolver' + description: > + 'Identification for the system consuming the API, as defined in + [/core-model-1-4:control-construct/logical-termination-point={uuid}/layer-protocol=0/http-client-interface-1-0:http-client-interface-pac/http-client-interface-configuration/application-name]' + x-correlator: + name: x-correlator + in: header + required: true + schema: + type: string + pattern: '^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$' + description: 'Empty string accepted from external applications.' + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses' + trace-indicator: + name: trace-indicator + in: header + required: true + schema: + type: string + pattern: '^([0-9]+)(\.([0-9]+))*$' + description: 'Empty string accepted from external applications.' + example: '1.3.1' + description: 'Sequence of request numbers along the flow' + customer-journey: + name: customer-journey + in: header + required: true + schema: + type: string + example: 'Unknown value' + description: 'Holds information supporting customer’s journey to which the execution applies' + responses: + responseForErroredServiceRequests: + description: 'Response in case of errored service requests' + content: + application/json: + schema: + $ref: '#/components/schemas/errorDescription' + headers: + x-correlator: + schema: + type: string + pattern: '^[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}$' + example: '550e8400-e29b-11d4-a716-446655440000' + description: 'UUID for the service execution flow that allows to correlate requests and responses. Its value must be identical at the response compared with its corresponding request' + exec-time: + schema: + type: integer + example: 1100 + description: 'Value written by the service provider, reporting the total elapsed time for the execution, including all the additional processing needed to retrieve the data from the backend service. Expressed in milliseconds' + responseForErroredOamRequests: + description: 'Response in case of errored OaM requests' + content: + application/json: + schema: + $ref: '#/components/schemas/errorDescription' + schemas: + errorDescription: + type: object + required: + - code + - message + properties: + code: + type: integer + format: int32 + message: + type: string + genericRepresentation: + type: object + required: + - response-value-list + - consequent-action-list + properties: + response-value-list: + type: array + items: + type: object + required: + - field-name + - value + - datatype + properties: + field-name: + type: string + description: > + 'Field name + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/field-name]' + value: + type: string + description: > + 'Field value + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-configuration/value]' + datatype: + type: string + description: > + 'Field datatype + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-response-p-*/response-profile-1-0:response-profile-pac/response-profile-capability/datatype]' + consequent-action-list: + type: array + items: + type: object + required: + - label + - request + - display-in-new-browser-window + properties: + label: + type: string + description: > + 'Label that shall be presented on the button + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/label]' + request: + type: string + description: > + 'Request that shall be called, when button gets pressed + from + [{/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-protocol}] + :// + [{/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/ipv-4-address} + or + {/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-address/domain-name}] + : + [{/core-model-1-4:control-construct/logical-termination-point=ro-2-1-0-tcp-s-000/layer-protocol=0/tcp-server-interface-1-0:tcp-server-interface-pac/tcp-server-interface-configuration/local-port}] + [{/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-configuration/consequent-operation-reference}]' + input-value-list: + type: array + items: + type: object + required: + - field-name + properties: + field-name: + type: string + description: > + 'Name of an input value required for executing the Request + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/name]' + unit: + type: string + description: > + 'Unit of an input value required for executing the Request + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/input-value-list=*/unit]' + display-in-new-browser-window: + type: boolean + description: > + 'True in case Request shall be represented in a new browser window + from [/core-model-1-4:control-construct/profile-collection/profile=ro-2-1-0-action-p-*/action-profile-1-0:action-profile-pac/action-profile-capability/display-in-new-browser-window]' + logicalTerminationPoint: + type: object + required: + - uuid + - ltp-direction + - client-ltp + - server-ltp + - layer-protocol + properties: + uuid: + type: string + ltp-direction: + type: string + client-ltp: + type: array + uniqueItems: true + items: + type: string + server-ltp: + type: array + uniqueItems: true + items: + type: string + layer-protocol: + type: array + minItems: 1 + maxItems: 1 + items: + oneOf: + - description: 'operation server' + type: object + required: + - local-id + - layer-protocol-name + - operation-server-interface-1-0:operation-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + operation-server-interface-1-0:operation-server-interface-pac: + type: object + required: + - operation-server-interface-capability + - operation-server-interface-configuration + properties: + operation-server-interface-capability: + type: object + required: + - operation-name + properties: + operation-name: + type: string + operation-server-interface-configuration: + type: object + required: + - life-cycle-state + properties: + life-cycle-state: + type: string + - description: 'http server' + type: object + required: + - local-id + - layer-protocol-name + - http-server-interface-1-0:http-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + http-server-interface-1-0:http-server-interface-pac: + type: object + required: + - http-server-interface-capability + properties: + http-server-interface-capability: + type: object + required: + - application-name + - release-number + - data-update-period + properties: + application-name: + type: string + release-number: + type: string + data-update-period: + type: string + - description: 'tcp server' + type: object + required: + - local-id + - layer-protocol-name + - tcp-server-interface-1-0:tcp-server-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + tcp-server-interface-1-0:tcp-server-interface-pac: + type: object + required: + - tcp-server-interface-configuration + properties: + tcp-server-interface-configuration: + type: object + required: + - description + - local-protocol + - local-address + - local-port + properties: + description: + type: string + local-protocol: + type: string + local-address: + type: object + properties: + ipv-4-address: + type: string + domain-name: + type: string + local-port: + type: integer + - description: 'operation client' + type: object + required: + - local-id + - layer-protocol-name + - operation-client-interface-1-0:operation-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + operation-client-interface-1-0:operation-client-interface-pac: + type: object + required: + - operation-client-interface-configuration + - operation-client-interface-status + properties: + operation-client-interface-configuration: + type: object + required: + - operation-name + properties: + operation-name: + type: string + operation-client-interface-status: + type: object + required: + - operational-state + - life-cycle-state + properties: + operational-state: + type: string + life-cycle-state: + type: string + - description: 'elasticsearch client' + type: object + required: + - local-id + - layer-protocol-name + - elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + elasticsearch-client-interface-1-0:elasticsearch-client-interface-pac: + type: object + required: + - elasticsearch-client-interface-configuration + - elasticsearch-client-interface-status + properties: + elasticsearch-client-interface-configuration: + type: object + required: + - index-alias + properties: + index-alias: + type: string + elasticsearch-client-interface-status: + type: object + required: + - operational-state + - life-cycle-state + properties: + operational-state: + type: string + life-cycle-state: + type: string + - description: 'http client' + type: object + required: + - local-id + - layer-protocol-name + - http-client-interface-1-0:http-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + http-client-interface-1-0:http-client-interface-pac: + type: object + required: + - http-client-interface-configuration + properties: + http-client-interface-configuration: + type: object + required: + - application-name + - release-number + properties: + application-name: + type: string + release-number: + type: string + - description: 'tcp client' + type: object + required: + - local-id + - layer-protocol-name + - tcp-client-interface-1-0:tcp-client-interface-pac + properties: + local-id: + type: string + layer-protocol-name: + type: string + tcp-client-interface-1-0:tcp-client-interface-pac: + type: object + required: + - tcp-client-interface-configuration + properties: + tcp-client-interface-configuration: + type: object + required: + - remote-protocol + - remote-address + - remote-port + properties: + remote-protocol: + type: string + remote-address: + type: object + properties: + ip-address: + type: object + properties: + ipv-4-address: + type: string + domain-name: + type: string + remote-port: + type: integer + forwardingDomain: + type: object + required: + - uuid + - forwarding-construct + properties: + uuid: + type: string + forwarding-construct: + type: array + items: + type: object + required: + - uuid + - name + - fc-port + properties: + uuid: + type: string + name: + type: array + items: + type: object + required: + - value-name + - value + properties: + value-name: + type: string + value: + type: string + fc-port: + type: array + items: + type: object + required: + - local-id + - port-direction + - logical-termination-point + properties: + local-id: + type: string + port-direction: + type: string + logical-termination-point: + type: string + securitySchemes: + apiKeyAuth: + type: apiKey + in: header + name: operation-key + basicAuth: + type: http + scheme: basic diff --git a/spec/diagrams/bm013_DisposeRemainders.png b/spec/diagrams/bm013_DisposeRemainders.png new file mode 100644 index 0000000000000000000000000000000000000000..e9adec37d17db7ff443dd36388cacd8b492837de GIT binary patch literal 42527 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 C_Dcf* literal 37475 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 YEM<10&YG0BAOdj`qS7J-La)63A2zALJOBUy diff --git a/spec/diagrams/systemScope/010_Embedding.png b/spec/diagrams/systemScope/010_Embedding.png index c65c0a37dd6098daa14b5c874638173384522925..c92af62e6ca5448485b8529366e6e4aa2b94b6c6 100644 GIT binary patch delta 606 zcmV-k0-^nrr~{6u1CUw)V3AuPe-aGo$8hMxY3WA-CBsKLIb{}mLp9ivMv`Ip_gw|B z%>+nKws-fvx6(fEjq_-Ik!Qj!r7~zS2TRUqBt^Xbt=*Op2b1(3ngn=q1a5R9*vye{w@M+kh>U z3V2d0X|>8pc|j_Lt*qc4y-cJ*<>6u)k9${FtLVzo0&Uu=5nlj0n4%qXCO$-sM+cx? zR{_jtz^ui0;tTgmFxCM-!$X32Fg+_9Xa0z6AE$$}us-_i2yS#9H9Cfg#m2E!sNIg9`As@c zHdrgnK9q@l1+>1DbAcW-mP)S`#75rJrYTZ-t5OM<^Asfmv+d{gmJOilu$(GDJBqgE z|0Dfhj&rDN^MJV=>3QmE@`1Zsafif7^3nfLk7~r%74hga?amzUe_RGuv>$4Bfv3CO z+2@^h_a+O(pKARs^OMXqj|K9SUa-jgQTn{lsYhTKw_4bt^qg$cCdn4#l_KP4rcw s!%ptOZ2GR delta 611 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 z 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