diff --git a/capif/generate.sh b/capif/generate.sh
deleted file mode 100755
index fd5e741..0000000
--- a/capif/generate.sh
+++ /dev/null
@@ -1,149 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-cwd=$(pwd)
-
-mkdir internal/readonly/api
-
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/29222-h40.zip -o internal/readonly/api/apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-h50.zip -o internal/readonly/api/common29122apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/29508-h60.zip -o internal/readonly/api/common29508apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/29510-h50.zip -o internal/readonly/api/common29510apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.512/29512-h60.zip -o internal/readonly/api/common29512apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.514/29514-h40.zip -o internal/readonly/api/common29514apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.517/29517-h50.zip -o internal/readonly/api/common29517apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/29518-h50.zip -o internal/readonly/api/common29518apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/29522-h50.zip -o internal/readonly/api/common29522apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.523/29523-h60.zip -o internal/readonly/api/common29523apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.554/29554-h30.zip -o internal/readonly/api/common29554apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/29571-h50.zip -o internal/readonly/api/common29571apidef.zip
-curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/29572-h40.zip -o internal/readonly/api/common29572apidef.zip
-
-cd internal/readonly/api/
-
-jar xvf apidef.zip
-jar xvf common29122apidef.zip
-jar xvf common29508apidef.zip
-jar xvf common29510apidef.zip
-jar xvf common29512apidef.zip
-jar xvf common29514apidef.zip
-jar xvf common29517apidef.zip
-jar xvf common29518apidef.zip
-jar xvf common29522apidef.zip
-jar xvf common29523apidef.zip
-jar xvf common29554apidef.zip
-jar xvf common29571apidef.zip
-jar xvf common29572apidef.zip
-
-sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\CivicAddress/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
-mv temp.yaml TS29571_CommonData.yaml
-sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeographicArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
-mv temp.yaml TS29571_CommonData.yaml
-sed '/accessTokenError.*/,+3d' TS29571_CommonData.yaml >temp.yaml
-mv temp.yaml TS29571_CommonData.yaml
-sed '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml >temp.yaml
-mv temp.yaml TS29571_CommonData.yaml
-
-sed '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml >temp.yaml
-mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
-
-sed '64,68d' TS29222_CAPIF_Discover_Service_API.yaml >temp.yaml # Remove parameter preferred-aef-loc since it doesn't follow the OpenApi specification, "The behavior for nested objects and arrays is undefined."
-mv temp.yaml TS29222_CAPIF_Discover_Service_API.yaml
-
-cat TS29222_CAPIF_Security_API.yaml | sed -E 's/(    AccessTokenReq*)\:/\1:|      type: object/' | tr '|' '\n' > temp.yaml
-mv temp.yaml TS29222_CAPIF_Security_API.yaml
-
-sed -i 's/TS29572_Nlmf_Location/CommonData/g' TS29122_CommonData.yaml
-sed -i 's/TS29554_Npcf_BDTPolicyControl/CommonData/g' TS29122_CommonData.yaml
-sed -i 's/TS29571_CommonData.yaml//g' TS29571_CommonData.yaml
-sed -i 's/TS29572_Nlmf_Location/CommonData/g' TS29222_CAPIF_Publish_Service_API.yaml
-sed -i 's/TS29520_Nnwdaf_EventsSubscription/CommonData/g' TS29222_CAPIF_Routing_Info_API.yaml
-sed -i 's/TS29510_Nnrf_NFManagement/CommonData/g' TS29222_CAPIF_Routing_Info_API.yaml
-sed -i 's/TS29523_Npcf_EventExposure/CommonData/g' TS29222_CAPIF_Events_API.yaml
-
-cd $cwd
-
-cd internal/enumfixer
-go build .
-./enumfixer -apidir=../readonly/api
-
-cd $cwd
-
-cd internal/commoncollector
-go build .
-./commoncollector -apidir=../readonly/api
-
-cd $cwd
-
-cd internal/specificationfixer
-go build .
-./specificationfixer -apidir=../readonly/api
-
-cd $cwd
-
-go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen
-PATH=$PATH:~/go/bin
-
-echo "Generating TS29122_CommonData"
-oapi-codegen --config internal/readonly/common29122/generator_settings.yaml internal/readonly/api/TS29122_CommonData.yaml
-echo "Generating aggregated CommonData"
-oapi-codegen --config internal/readonly/aggregatecommon/generator_settings.yaml internal/readonly/api/CommonData.yaml
-echo "Generating TS29571_CommonData"
-oapi-codegen --config internal/readonly/common29571/generator_settings.yaml internal/readonly/api/TS29571_CommonData.yaml
-echo "Generating TS29222_CAPIF_Publish_Service_API"
-oapi-codegen --config internal/readonly/publishserviceapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Publish_Service_API.yaml
-oapi-codegen --config internal/readonly/publishserviceapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Publish_Service_API.yaml
-echo "Generating TS29222_CAPIF_API_Invoker_Management_API"
-oapi-codegen --config internal/readonly/invokermanagementapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_API_Invoker_Management_API.yaml
-oapi-codegen --config internal/readonly/invokermanagementapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_API_Invoker_Management_API.yaml
-echo "Generating TS29222_CAPIF_API_Provider_Management_API"
-oapi-codegen --config internal/readonly/providermanagementapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_API_Provider_Management_API.yaml
-oapi-codegen --config internal/readonly/providermanagementapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_API_Provider_Management_API.yaml
-echo "Generating TS29222_CAPIF_Discover_Service_API"
-oapi-codegen --config internal/readonly/discoverserviceapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Discover_Service_API.yaml
-oapi-codegen --config internal/readonly/discoverserviceapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Discover_Service_API.yaml
-echo "Generating TS29222_CAPIF_Security_API"
-oapi-codegen --config internal/readonly/securityapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Security_API.yaml
-oapi-codegen --config internal/readonly/securityapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Security_API.yaml
-echo "Generating TS29222_CAPIF_Logging_API_Invocation_API"
-oapi-codegen --config internal/readonly/loggingapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Logging_API_Invocation_API.yaml
-oapi-codegen --config internal/readonly/loggingapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Logging_API_Invocation_API.yaml
-echo "Generating TS29222_CAPIF_Routing_Info_API"
-oapi-codegen --config internal/readonly/routinginfoapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Routing_Info_API.yaml
-oapi-codegen --config internal/readonly/routinginfoapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Routing_Info_API.yaml
-echo "Generating TS29222_CAPIF_Access_Control_Policy_API"
-oapi-codegen --config internal/readonly/accesscontrolpolicyapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Access_Control_Policy_API.yaml
-oapi-codegen --config internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Access_Control_Policy_API.yaml
-echo "Generating TS29222_CAPIF_Events_API"
-oapi-codegen --config internal/readonly/eventsapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Events_API.yaml
-oapi-codegen --config internal/readonly/eventsapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Events_API.yaml
-echo "Generating TS29222_CAPIF_Auditing_API"
-oapi-codegen --config internal/readonly/auditingapi/generator_settings_types.yaml internal/readonly/api/TS29222_CAPIF_Auditing_API.yaml
-oapi-codegen --config internal/readonly/auditingapi/generator_settings_server.yaml internal/readonly/api/TS29222_CAPIF_Auditing_API.yaml
-echo "Generating TS29222_AEF_Security_API"
-oapi-codegen --config internal/readonly/aefsecurityapi/generator_settings_types.yaml internal/readonly/api/TS29222_AEF_Security_API.yaml
-oapi-codegen --config internal/readonly/aefsecurityapi/generator_settings_server.yaml internal/readonly/api/TS29222_AEF_Security_API.yaml
-
-echo "Generating Go mocks"
-go generate ./...
-echo "Testing Go application"
-go test ./...
-echo "Install Java version of CAPIF"
-mvn install -f java/capifapi/pom.xml
diff --git a/capif/internal/commoncollector/definitions.txt b/capif/internal/commoncollector/definitions.txt
deleted file mode 100644
index a2f3f25..0000000
--- a/capif/internal/commoncollector/definitions.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod
-TS29510_Nnrf_NFManagement.yaml#/components/schemas/Ipv4AddressRange
-TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowDirection
-TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ContentVersion
-TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription
-TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription
-TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer
-TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn
-TS29518_Namf_EventExposure.yaml#/components/schemas/CommunicationFailure
-TS29522_TrafficInfluence.yaml#/components/schemas/AfResultInfo
-TS29522_TrafficInfluence.yaml#/components/schemas/AfResultStatus
-TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation
-TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo
-TS29572_Nlmf_Location.yaml#/components/schemas/Altitude
-TS29572_Nlmf_Location.yaml#/components/schemas/Angle
-TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress
-TS29572_Nlmf_Location.yaml#/components/schemas/Confidence
-TS29572_Nlmf_Location.yaml#/components/schemas/EllipsoidArc
-TS29572_Nlmf_Location.yaml#/components/schemas/GADShape
-TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea
-TS29572_Nlmf_Location.yaml#/components/schemas/GeographicalCoordinates
-TS29572_Nlmf_Location.yaml#/components/schemas/InnerRadius
-TS29572_Nlmf_Location.yaml#/components/schemas/Local2dPointUncertaintyEllipse
-TS29572_Nlmf_Location.yaml#/components/schemas/Local3dPointUncertaintyEllipsoid
-TS29572_Nlmf_Location.yaml#/components/schemas/LocalOrigin
-TS29572_Nlmf_Location.yaml#/components/schemas/Orientation
-TS29572_Nlmf_Location.yaml#/components/schemas/Point
-TS29572_Nlmf_Location.yaml#/components/schemas/PointAltitude
-TS29572_Nlmf_Location.yaml#/components/schemas/PointAltitudeUncertainty
-TS29572_Nlmf_Location.yaml#/components/schemas/PointList
-TS29572_Nlmf_Location.yaml#/components/schemas/PointUncertaintyCircle
-TS29572_Nlmf_Location.yaml#/components/schemas/PointUncertaintyEllipse
-TS29572_Nlmf_Location.yaml#/components/schemas/Polygon
-TS29572_Nlmf_Location.yaml#/components/schemas/RelativeCartesianLocation
-TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty
-TS29572_Nlmf_Location.yaml#/components/schemas/UncertaintyEllipsoid
-TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes
-TS29572_Nlmf_Location.yaml#/components/schemas/UncertaintyEllipse
\ No newline at end of file
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go b/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
deleted file mode 100644
index 57d2b81..0000000
--- a/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
+++ /dev/null
@@ -1,207 +0,0 @@
-// Package accesscontrolpolicyapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package accesscontrolpolicyapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /accessControlPolicyList/{serviceApiId})
-	GetAccessControlPolicyListServiceApiId(ctx echo.Context, serviceApiId string, params GetAccessControlPolicyListServiceApiIdParams) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetAccessControlPolicyListServiceApiId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetAccessControlPolicyListServiceApiId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params GetAccessControlPolicyListServiceApiIdParams
-	// ------------- Required query parameter "aef-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "aef-id", ctx.QueryParams(), &params.AefId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aef-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-invoker-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-invoker-id", ctx.QueryParams(), &params.ApiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-invoker-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "supported-features" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "supported-features", ctx.QueryParams(), &params.SupportedFeatures)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter supported-features: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetAccessControlPolicyListServiceApiId(ctx, serviceApiId, params)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/accessControlPolicyList/:serviceApiId", wrapper.GetAccessControlPolicyListServiceApiId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"H4sIAAAAAAAC/6xX23LbNhD9lR20D+0MTYp0FMd6U+U4o2mn0ViaviQZDUQuRSQkgACgFNWjD+pv9Ms6",
-	"C9K6RHTSWH4xbXL37MHi4Cx8z1JVaSVROssG98ymBVbc/zpMU7R2pKQzqpyoUqSbP4R19ClDmxqhnVCS",
-	"DdgdaoOWEMAVCNznQdokgvaZUArrIFcGOOh6UQpbYAYWzUqkCMPJOGQB00ZpNE6gr8+1GMuV+oTGF2/f",
-	"HpduaIHKAXlaEA6IJofwhMPKJ/1sMGcD9lO0X2zUrjQaHpfZsG3A3EYjGzBuDN+w7f6FWnzE1FHESdb3",
-	"uqJ3TLn0PMd7nl+tuyzVGjP6nnICm4kK77hcYnf7ZwWCExWCoRgLWW2EXMK6EGnhS4sdkgVuENoCoKT/",
-	"fLAJsNj4V0/p4zHLkyYGp+uyEzRTTJXMThd1EAUaDVgf9+PUWxJCOlyiOaAxU46XB1U6+koRIOtqgYb2",
-	"7aiNz8Bjp6Bxx/oP0mF8A9xasZSYPaCPhpPxLaTKIOS1TH3Sroh1JACvW4Ofa2EwY4N3xwU/dGj6Ozr7",
-	"StB7yX1LcV7wR/0R++51t+r4NFjHjSNmB/qbTZPrOEnmI1VVSt5wx8MNr8pOWd5whz59GzDrlH4WqFNH",
-	"oFf4xaGRvLxRaYecLt9MJjCbQnIdJkkCf8VXYRz2oCnse3BreIVrZT55n/TxfyrjioWqZUYRlgWsNiUb",
-	"sMI5PYii9XodXi61DpVZRrnT0VRjaiNu0kKsMEqu5xaNQBs1RSNqgpC56tabd+cu8w7fy3//gaSXxEFD",
-	"661Zcin+9jvMS5hw4yQaC78M78a/BTCcjacBjEbTYQCvZ9NxALPpjX/MhvRj9Gv4Xg7LEoxYFs4Cycqs",
-	"MAvfexULV1JrvcbnzRSat2No3rjtfDgZs4Ct0NiGfhwmYe+Cl7rgYUyrVBol14L6HvbCHsmKu8JvS8S7",
-	"B1t038qUvD3bUugSO8+BMwJX+L1pR1omJfsu0Rlnb9A9MlSnB5U9V5KCQ2PZ4N2JNWYonchF40qPjFNy",
-	"bQqmVbOASV55Zzgus3cHZ2oM2uFPKz5xkm+T8Kf49e1D0c81ms2+Ksf8Qjx/vb1rPFZXi4s2oqn/A/Vm",
-	"CnJROjQgjMESV1w60qlW0iIptuQOM3AKamlrrZWhP3PkrjZoHyG0C7w4CNyTOrCk/lX8vyxp+oB4+wC4",
-	"3X6gRrdECTbp9ehBCkXpmpuVLkXjz9FHS+u9P6XRfVl65E7o/e+4g29/D+kgXvauftBud+QjyvUQr86A",
-	"eEUQL5oePAmCcj1EfAZE3EBcngFx2UC8OAPiRQPx8gyIlx4iPoNF3LBIrp8OkVwTRP+MTe03m9o/Y0f6",
-	"zY5kmPO6dE+Gecjfbv0h8pOw9f1m1t9zLe6Uctt2cF20s+aimTXRKqZRyI3gi3L3nxMlNKOrZeevDHYQ",
-	"RfiFV7rEMFUV+/rMtonALWSYC7pwCgm2XqQlry3CVdgn+z2+yhDzD9v/AgAA//++CFh4SQ4AAA==",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-types.gen.go b/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-types.gen.go
deleted file mode 100644
index d74fdf7..0000000
--- a/capif/internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-types.gen.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Package accesscontrolpolicyapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package accesscontrolpolicyapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Represents the access control policy list for a published service API.
-type AccessControlPolicyList struct {
-	// Policy of each API invoker.
-	ApiInvokerPolicies *[]ApiInvokerPolicy `json:"apiInvokerPolicies,omitempty"`
-}
-
-// Represents the policy of an API Invoker.
-type ApiInvokerPolicy struct {
-	// The time ranges during which the invocations are allowed on the service API by the API invoker.
-	AllowedInvocationTimeRangeList *[]TimeRangeList `json:"allowedInvocationTimeRangeList,omitempty"`
-
-	// Invocations per second allowed on the service API by the API invoker.
-	AllowedInvocationsPerSecond *int `json:"allowedInvocationsPerSecond,omitempty"`
-
-	// Total number of invocations allowed on the service API by the API invoker.
-	AllowedTotalInvocations *int `json:"allowedTotalInvocations,omitempty"`
-
-	// API invoker ID assigned by the CAPIF core function
-	ApiInvokerId string `json:"apiInvokerId"`
-}
-
-// Represents the time range during which the invocation of a service API is allowed by the API invoker.
-type TimeRangeList struct {
-	// string with format "date-time" as defined in OpenAPI.
-	StartTime *externalRef0.DateTime `json:"startTime,omitempty"`
-
-	// string with format "date-time" as defined in OpenAPI.
-	StopTime *externalRef0.DateTime `json:"stopTime,omitempty"`
-}
-
-// GetAccessControlPolicyListServiceApiIdParams defines parameters for GetAccessControlPolicyListServiceApiId.
-type GetAccessControlPolicyListServiceApiIdParams struct {
-	// Identifier of the AEF
-	AefId string `json:"aef-id"`
-
-	// Identifier of the API invoker
-	ApiInvokerId *string `json:"api-invoker-id,omitempty"`
-
-	// To filter irrelevant responses related to unsupported features
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supported-features,omitempty"`
-}
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_types.yaml b/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_types.yaml
deleted file mode 100644
index 6b12b09..0000000
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,28 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-types.gen.go
-package: accesscontrolpolicyapi
-generate:
-  - types
-import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
\ No newline at end of file
diff --git a/capif/internal/readonly/aefsecurityapi/aefsecurity-server.gen.go b/capif/internal/readonly/aefsecurityapi/aefsecurity-server.gen.go
deleted file mode 100644
index 8294515..0000000
--- a/capif/internal/readonly/aefsecurityapi/aefsecurity-server.gen.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// Package aefsecurityapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package aefsecurityapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-	// Check authentication.
-	// (POST /check-authentication)
-	PostCheckAuthentication(ctx echo.Context) error
-	// Revoke authorization.
-	// (POST /revoke-authorization)
-	PostRevokeAuthorization(ctx echo.Context) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostCheckAuthentication converts echo context to params.
-func (w *ServerInterfaceWrapper) PostCheckAuthentication(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostCheckAuthentication(ctx)
-	return err
-}
-
-// PostRevokeAuthorization converts echo context to params.
-func (w *ServerInterfaceWrapper) PostRevokeAuthorization(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostRevokeAuthorization(ctx)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/check-authentication", wrapper.PostCheckAuthentication)
-	router.POST(baseURL+"/revoke-authorization", wrapper.PostRevokeAuthorization)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"H4sIAAAAAAAC/+xY3W7iOBR+Fcu7F7tSSEgo6pC7DG1XuZlFgPZmOkImOSGeJrbHdmDYigfa19gnW9lO",
-	"2UKhqhpNpZF6U6L4nM/n5/Pnk97jjNeCM2Ba4fgeq6yEmtjHcQnZXdLoEpimGdGUsyl8Mys5qExSYd7g",
-	"GE9BSFAGAJEDa5QZBCThWwNKo5xo4mMPC8kFSE3B7kIETdma34FM86fYySRF1C2j9AoRpeiKQY6WW6RL",
-	"QONkkt6gjEtARcMyu6nmdumx56akFSDOektOZE7Z6tjChKW3AnCMlZaUrfDOw6oRgksN+Q0Q3UgX7q8S",
-	"Chzj+SwaDS/DxZjXNWdXJrMtqatfgv+rGbSlDGZPcHY7D5uqUAk5jj8f1uDUxl/24fHlV8i0Ce9Ue5R4",
-	"TXuU4EzBmf68XRVelvYUTKFM3lzSv1/Myr0xkrDm2cPjc8yUdqeUFfwo5SiKFpZ5ixlkjaR6u0gm6TOp",
-	"t1afuKZFW/y3JdijVLwOdX4Bvc7U+SeimPGB7xokI9UVz9TTlAd/TCZoPkPRyI+iCP0VXvqh30cuRCsr",
-	"N5LUsOHyDhVcImv/iUtdLnnDcmOhsIcbWeEYl1qLOAg2m40/WAnhc7kKCi2CmYBMBURmJV1DEI0WCiQF",
-	"FbhNA9Mi2lLzqWSaXZPrG6Ra5qGaMLKCGpj2b9m//6CoH4WeC+xPuSKsbRqp0IRIzUAq9FsyTT96KJmn",
-	"Mw+Nx7PEQ9fzWeqh+ezK/swT82f8u3/LkqpCkq5KrUyvQa4h92+ZEVWqK1Pc5PrwsGAPr0EqF3HoR36/",
-	"RypREj80iXEBjAhqSu33/b4hDNGl7URgRat3qGRmQXClza8hln1prhM84UqfEErsaAFKf+T51rhlnGlg",
-	"2t1Iomrtgq/KoTuKPeLlSQKeuTF3hzTUsgH7wh0Km1bU7//QKJRwURxSZV7CXgM3RCHVZBkoVTSVb9ow",
-	"6F8encTQKN8zJ3GfU2B8LcSHDhAfDMSFK82rIIyvhQg7QIQOYtABYuAgLjpAXFiIsEMioUsk7JBI6BIJ",
-	"hx0ghhYiGr0eIhoZiGEHXgwdL4Ydmjp0Tc2hIE2lXw3z4L+z80BdE7nFsZvtjsY139oE7irvHdy1z+vf",
-	"iZv8B+nfmdnsjfXvzOTyrn/v+veufz+H/rkjfPhB4bsTbKdLqXD8+b6doO+JoFPO9S4gUPQeRt5gHZoh",
-	"k0hKltX+Xw3Gzo3Mbdh2/lZxEMB3UosK/IzX+FgnWkdEFMqhoAxyRBlSzTKrSKMAXfpDxAt0+F1g4/2y",
-	"+y8AAP//CPXtp2ERAAA=",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/aefsecurityapi/aefsecurity-types.gen.go b/capif/internal/readonly/aefsecurityapi/aefsecurity-types.gen.go
deleted file mode 100644
index 1d5daf3..0000000
--- a/capif/internal/readonly/aefsecurityapi/aefsecurity-types.gen.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Package aefsecurityapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package aefsecurityapi
-
-import (
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/securityapi"
-)
-
-// Represents authentication check request data.
-type CheckAuthenticationReq struct {
-	// API invoker ID assigned by the CAPIF core function to the API invoker while on-boarding the API invoker.
-	ApiInvokerId string `json:"apiInvokerId"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures externalRef1.SupportedFeatures `json:"supportedFeatures"`
-}
-
-// Represents authentication check response data.
-type CheckAuthenticationRsp struct {
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures externalRef1.SupportedFeatures `json:"supportedFeatures"`
-}
-
-// Represents authorization revocation request data.
-type RevokeAuthorizationReq struct {
-	// Represents revoked authorization notification details.
-	RevokeInfo externalRef2.SecurityNotification `json:"revokeInfo"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures externalRef1.SupportedFeatures `json:"supportedFeatures"`
-}
-
-// Represents authorization revocation response data.
-type RevokeAuthorizationRsp struct {
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures externalRef1.SupportedFeatures `json:"supportedFeatures"`
-}
-
-// PostCheckAuthenticationJSONBody defines parameters for PostCheckAuthentication.
-type PostCheckAuthenticationJSONBody CheckAuthenticationReq
-
-// PostRevokeAuthorizationJSONBody defines parameters for PostRevokeAuthorization.
-type PostRevokeAuthorizationJSONBody RevokeAuthorizationReq
-
-// PostCheckAuthenticationJSONRequestBody defines body for PostCheckAuthentication for application/json ContentType.
-type PostCheckAuthenticationJSONRequestBody PostCheckAuthenticationJSONBody
-
-// PostRevokeAuthorizationJSONRequestBody defines body for PostRevokeAuthorization for application/json ContentType.
-type PostRevokeAuthorizationJSONRequestBody PostRevokeAuthorizationJSONBody
diff --git a/capif/internal/readonly/aggregatecommon/common.gen.go b/capif/internal/readonly/aggregatecommon/common.gen.go
deleted file mode 100644
index 2cabea4..0000000
--- a/capif/internal/readonly/aggregatecommon/common.gen.go
+++ /dev/null
@@ -1,619 +0,0 @@
-// Package common provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package common
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/getkin/kin-openapi/openapi3"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Defines values for AfResultStatus.
-const (
-	AfResultStatusOTHER AfResultStatus = "OTHER"
-
-	AfResultStatusRELOCNOALLOWED AfResultStatus = "RELOC_NO_ALLOWED"
-
-	AfResultStatusSUCCESS AfResultStatus = "SUCCESS"
-
-	AfResultStatusTEMPORARYCONGESTION AfResultStatus = "TEMPORARY_CONGESTION"
-)
-
-// Defines values for FlowDirection.
-const (
-	FlowDirectionBIDIRECTIONAL FlowDirection = "BIDIRECTIONAL"
-
-	FlowDirectionDOWNLINK FlowDirection = "DOWNLINK"
-
-	FlowDirectionUNSPECIFIED FlowDirection = "UNSPECIFIED"
-
-	FlowDirectionUPLINK FlowDirection = "UPLINK"
-)
-
-// Defines values for NotificationMethod.
-const (
-	NotificationMethodONETIME NotificationMethod = "ONE_TIME"
-
-	NotificationMethodONEVENTDETECTION NotificationMethod = "ON_EVENT_DETECTION"
-
-	NotificationMethodPERIODIC NotificationMethod = "PERIODIC"
-)
-
-// Defines values for SupportedGADShapes.
-const (
-	SupportedGADShapesELLIPSOIDARC SupportedGADShapes = "ELLIPSOID_ARC"
-
-	SupportedGADShapesLOCAL2DPOINTUNCERTAINTYELLIPSE SupportedGADShapes = "LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE"
-
-	SupportedGADShapesLOCAL3DPOINTUNCERTAINTYELLIPSOID SupportedGADShapes = "LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID"
-
-	SupportedGADShapesPOINT SupportedGADShapes = "POINT"
-
-	SupportedGADShapesPOINTALTITUDE SupportedGADShapes = "POINT_ALTITUDE"
-
-	SupportedGADShapesPOINTALTITUDEUNCERTAINTY SupportedGADShapes = "POINT_ALTITUDE_UNCERTAINTY"
-
-	SupportedGADShapesPOINTUNCERTAINTYCIRCLE SupportedGADShapes = "POINT_UNCERTAINTY_CIRCLE"
-
-	SupportedGADShapesPOINTUNCERTAINTYELLIPSE SupportedGADShapes = "POINT_UNCERTAINTY_ELLIPSE"
-
-	SupportedGADShapesPOLYGON SupportedGADShapes = "POLYGON"
-)
-
-// IP address and/or FQDN.
-type AddrFqdn struct {
-	// Indicates an FQDN.
-	Fqdn *string `json:"fqdn,omitempty"`
-
-	// Contains an IP adresse.
-	IpAddr *externalRef0.IpAddr `json:"ipAddr,omitempty"`
-}
-
-// Identifies the result of application layer handling.
-type AfResultInfo struct {
-	// Possible values are:
-	// - SUCCESS: The application layer is ready or the relocation is completed.
-	// - TEMPORARY_CONGESTION: The application relocation fails due to temporary congestion.
-	// - RELOC_NO_ALLOWED: The application relocation fails because application relocation is not allowed.
-	// - OTHER: The application relocation fails due to other reason.
-	AfStatus AfResultStatus `json:"afStatus"`
-
-	// Contains EAS IP replacement information.
-	EasIpReplaceInfos *[]externalRef0.EasIpReplacementInfo `json:"easIpReplaceInfos,omitempty"`
-
-	// Either the "routeInfo" attribute or the "routeProfId" attribute shall be included in the "RouteToLocation" data type.
-	TrafficRoute *externalRef0.RouteToLocation `json:"trafficRoute"`
-
-	// If present and set to "true" it indicates that buffering of uplink traffic to the target DNAI is needed.
-	UpBuffInd *bool `json:"upBuffInd,omitempty"`
-}
-
-// Possible values are:
-// - SUCCESS: The application layer is ready or the relocation is completed.
-// - TEMPORARY_CONGESTION: The application relocation fails due to temporary congestion.
-// - RELOC_NO_ALLOWED: The application relocation fails because application relocation is not allowed.
-// - OTHER: The application relocation fails due to other reason.
-type AfResultStatus string
-
-// Indicates value of altitude.
-type Altitude float64
-
-// Indicates value of angle.
-type Angle int
-
-// Indicates a Civic address.
-type CivicAddress struct {
-	A1         *string `json:"A1,omitempty"`
-	A2         *string `json:"A2,omitempty"`
-	A3         *string `json:"A3,omitempty"`
-	A4         *string `json:"A4,omitempty"`
-	A5         *string `json:"A5,omitempty"`
-	A6         *string `json:"A6,omitempty"`
-	ADDCODE    *string `json:"ADDCODE,omitempty"`
-	BLD        *string `json:"BLD,omitempty"`
-	FLR        *string `json:"FLR,omitempty"`
-	HNO        *string `json:"HNO,omitempty"`
-	HNS        *string `json:"HNS,omitempty"`
-	LMK        *string `json:"LMK,omitempty"`
-	LOC        *string `json:"LOC,omitempty"`
-	NAM        *string `json:"NAM,omitempty"`
-	PC         *string `json:"PC,omitempty"`
-	PCN        *string `json:"PCN,omitempty"`
-	PLC        *string `json:"PLC,omitempty"`
-	POBOX      *string `json:"POBOX,omitempty"`
-	POD        *string `json:"POD,omitempty"`
-	POM        *string `json:"POM,omitempty"`
-	PRD        *string `json:"PRD,omitempty"`
-	PRM        *string `json:"PRM,omitempty"`
-	RD         *string `json:"RD,omitempty"`
-	RDBR       *string `json:"RDBR,omitempty"`
-	RDSEC      *string `json:"RDSEC,omitempty"`
-	RDSUBBR    *string `json:"RDSUBBR,omitempty"`
-	ROOM       *string `json:"ROOM,omitempty"`
-	SEAT       *string `json:"SEAT,omitempty"`
-	STS        *string `json:"STS,omitempty"`
-	UNIT       *string `json:"UNIT,omitempty"`
-	Country    *string `json:"country,omitempty"`
-	Method     *string `json:"method,omitempty"`
-	ProvidedBy *string `json:"providedBy,omitempty"`
-	UsageRules *string `json:"usageRules,omitempty"`
-}
-
-// Describes a communication failure detected by AMF
-type CommunicationFailure struct {
-	NasReleaseCode *string `json:"nasReleaseCode,omitempty"`
-
-	// Represents the NGAP cause.
-	RanReleaseCode *externalRef0.NgApCause `json:"ranReleaseCode,omitempty"`
-}
-
-// Indicates value of confidence.
-type Confidence int
-
-// Represents the content version of some content.
-type ContentVersion int
-
-// EllipsoidArc defines model for EllipsoidArc.
-type EllipsoidArc struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of confidence.
-	Confidence Confidence `json:"confidence"`
-
-	// Indicates value of angle.
-	IncludedAngle Angle `json:"includedAngle"`
-
-	// Indicates value of the inner radius.
-	InnerRadius InnerRadius `json:"innerRadius"`
-
-	// Indicates value of angle.
-	OffsetAngle Angle `json:"offsetAngle"`
-
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-
-	// Indicates value of uncertainty.
-	UncertaintyRadius Uncertainty `json:"uncertaintyRadius"`
-}
-
-// Identifies an Ethernet flow.
-type EthFlowDescription struct {
-	// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-	DestMacAddr *externalRef0.MacAddr48 `json:"destMacAddr,omitempty"`
-
-	// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-	DestMacAddrEnd *externalRef0.MacAddr48 `json:"destMacAddrEnd,omitempty"`
-	EthType        string                  `json:"ethType"`
-
-	// Defines a packet filter of an IP flow.
-	FDesc *FlowDescription `json:"fDesc,omitempty"`
-
-	// Possible values are
-	// - DOWNLINK: The corresponding filter applies for traffic to the UE.
-	// - UPLINK: The corresponding filter applies for traffic from the UE.
-	// - BIDIRECTIONAL: The corresponding filter applies for traffic both to and from the UE.
-	// - UNSPECIFIED: The corresponding filter applies for traffic to the UE (downlink), but has no specific direction declared. The service data flow detection shall apply the filter for uplink traffic as if the filter was bidirectional. The PCF shall not use the value UNSPECIFIED in filters created by the network in NW-initiated procedures. The PCF shall only include the value UNSPECIFIED in filters in UE-initiated procedures if the same value is received from the SMF.
-	FDir *FlowDirection `json:"fDir,omitempty"`
-
-	// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-	SourceMacAddr *externalRef0.MacAddr48 `json:"sourceMacAddr,omitempty"`
-
-	// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-	SrcMacAddrEnd *externalRef0.MacAddr48 `json:"srcMacAddrEnd,omitempty"`
-	VlanTags      *[]string               `json:"vlanTags,omitempty"`
-}
-
-// Defines a packet filter of an IP flow.
-type FlowDescription string
-
-// Possible values are
-// - DOWNLINK: The corresponding filter applies for traffic to the UE.
-// - UPLINK: The corresponding filter applies for traffic from the UE.
-// - BIDIRECTIONAL: The corresponding filter applies for traffic both to and from the UE.
-// - UNSPECIFIED: The corresponding filter applies for traffic to the UE (downlink), but has no specific direction declared. The service data flow detection shall apply the filter for uplink traffic as if the filter was bidirectional. The PCF shall not use the value UNSPECIFIED in filters created by the network in NW-initiated procedures. The PCF shall only include the value UNSPECIFIED in filters in UE-initiated procedures if the same value is received from the SMF.
-type FlowDirection string
-
-// Common base type for GAD shapes.
-type GADShape struct {
-	// Indicates supported GAD shapes.
-	Shape SupportedGADShapes `json:"shape"`
-}
-
-// Geographic area specified by different shape.
-type GeographicArea interface{}
-
-// Geographical coordinates.
-type GeographicalCoordinates struct {
-	Lat float64 `json:"lat"`
-	Lon float64 `json:"lon"`
-}
-
-// Indicates value of the inner radius.
-type InnerRadius int32
-
-// Range of IPv4 addresses
-type Ipv4AddressRange struct {
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	End *externalRef0.Ipv4Addr `json:"end,omitempty"`
-
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	Start *externalRef0.Ipv4Addr `json:"start,omitempty"`
-}
-
-// Local2dPointUncertaintyEllipse defines model for Local2dPointUncertaintyEllipse.
-type Local2dPointUncertaintyEllipse struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of confidence.
-	Confidence Confidence `json:"confidence"`
-
-	// Indicates a Local origin in a reference system
-	LocalOrigin LocalOrigin `json:"localOrigin"`
-
-	// Relative Cartesian Location
-	Point RelativeCartesianLocation `json:"point"`
-
-	// Ellipse with uncertainty.
-	UncertaintyEllipse UncertaintyEllipse `json:"uncertaintyEllipse"`
-}
-
-// Local3dPointUncertaintyEllipsoid defines model for Local3dPointUncertaintyEllipsoid.
-type Local3dPointUncertaintyEllipsoid struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of confidence.
-	Confidence Confidence `json:"confidence"`
-
-	// Indicates a Local origin in a reference system
-	LocalOrigin LocalOrigin `json:"localOrigin"`
-
-	// Relative Cartesian Location
-	Point RelativeCartesianLocation `json:"point"`
-
-	// Ellipsoid with uncertainty
-	UncertaintyEllipsoid UncertaintyEllipsoid `json:"uncertaintyEllipsoid"`
-}
-
-// Indicates a Local origin in a reference system
-type LocalOrigin struct {
-	CoordinateId *string `json:"coordinateId,omitempty"`
-
-	// Geographical coordinates.
-	Point *GeographicalCoordinates `json:"point,omitempty"`
-}
-
-// Describes a network area information in which the NF service consumer requests the number of UEs.
-type NetworkAreaInfo struct {
-	// Contains a list of E-UTRA cell identities.
-	Ecgis *[]externalRef0.Ecgi `json:"ecgis,omitempty"`
-
-	// Contains a list of NG RAN nodes.
-	GRanNodeIds *[]externalRef0.GlobalRanNodeId `json:"gRanNodeIds,omitempty"`
-
-	// Contains a list of NR cell identities.
-	Ncgis *[]externalRef0.Ncgi `json:"ncgis,omitempty"`
-
-	// Contains a list of tracking area identities.
-	Tais *[]externalRef0.Tai `json:"tais,omitempty"`
-}
-
-// Possible values are - PERIODIC - ONE_TIME - ON_EVENT_DETECTION
-type NotificationMethod string
-
-// Indicates value of orientation angle.
-type Orientation int
-
-// Point defines model for Point.
-type Point struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-}
-
-// PointAltitude defines model for PointAltitude.
-type PointAltitude struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of altitude.
-	Altitude Altitude `json:"altitude"`
-
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-}
-
-// PointAltitudeUncertainty defines model for PointAltitudeUncertainty.
-type PointAltitudeUncertainty struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of altitude.
-	Altitude Altitude `json:"altitude"`
-
-	// Indicates value of confidence.
-	Confidence Confidence `json:"confidence"`
-
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-
-	// Indicates value of uncertainty.
-	UncertaintyAltitude Uncertainty `json:"uncertaintyAltitude"`
-
-	// Ellipse with uncertainty.
-	UncertaintyEllipse UncertaintyEllipse `json:"uncertaintyEllipse"`
-}
-
-// List of points.
-type PointList []GeographicalCoordinates
-
-// PointUncertaintyCircle defines model for PointUncertaintyCircle.
-type PointUncertaintyCircle struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-
-	// Indicates value of uncertainty.
-	Uncertainty Uncertainty `json:"uncertainty"`
-}
-
-// PointUncertaintyEllipse defines model for PointUncertaintyEllipse.
-type PointUncertaintyEllipse struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// Indicates value of confidence.
-	Confidence Confidence `json:"confidence"`
-
-	// Geographical coordinates.
-	Point GeographicalCoordinates `json:"point"`
-
-	// Ellipse with uncertainty.
-	UncertaintyEllipse UncertaintyEllipse `json:"uncertaintyEllipse"`
-}
-
-// Polygon defines model for Polygon.
-type Polygon struct {
-	// Embedded struct due to allOf(#/components/schemas/GADShape)
-	GADShape `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	// List of points.
-	PointList PointList `json:"pointList"`
-}
-
-// Relative Cartesian Location
-type RelativeCartesianLocation struct {
-	// string with format 'float' as defined in OpenAPI.
-	X externalRef0.Float `json:"x"`
-
-	// string with format 'float' as defined in OpenAPI.
-	Z *externalRef0.Float `json:"z,omitempty"`
-}
-
-// Represents the type of reporting that the subscription requires.
-type ReportingInformation struct {
-	// indicating a time in seconds.
-	GrpRepTime *externalRef0.DurationSec `json:"grpRepTime,omitempty"`
-	ImmRep     *bool                     `json:"immRep,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	MaxReportNbr *externalRef0.Uinteger `json:"maxReportNbr,omitempty"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	MonDur *externalRef0.DateTime `json:"monDur,omitempty"`
-
-	// Possible values are:
-	// - ACTIVATE: The event notification is activated.
-	// - DEACTIVATE: The event notification is deactivated and shall be muted. The available event(s) shall be stored.
-	// - RETRIEVAL: The event notification shall be sent to the NF service consumer(s), after that, is muted again.
-	NotifFlag *externalRef0.NotificationFlag `json:"notifFlag,omitempty"`
-
-	// Possible values are - PERIODIC - ONE_TIME - ON_EVENT_DETECTION
-	NotifMethod *NotificationMethod `json:"notifMethod,omitempty"`
-
-	// Criteria for partitioning the UEs before applying the sampling ratio.
-	PartitionCriteria *[]externalRef0.PartitioningCriteria `json:"partitionCriteria,omitempty"`
-
-	// indicating a time in seconds.
-	RepPeriod *externalRef0.DurationSec `json:"repPeriod,omitempty"`
-
-	// Unsigned integer indicating Sampling Ratio (see clauses 4.15.1 of 3GPP TS 23.502), expressed in percent.
-	SampRatio *externalRef0.SamplingRatio `json:"sampRatio,omitempty"`
-}
-
-// Indicates supported GAD shapes.
-type SupportedGADShapes string
-
-// Indicates TSC Traffic pattern.
-type TscaiInputContainer struct {
-	// string with format 'date-time' as defined in OpenAPI.
-	BurstArrivalTime *externalRef0.DateTime `json:"burstArrivalTime,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	Periodicity *externalRef0.Uinteger `json:"periodicity,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	SurTimeInNumMsg *externalRef0.Uinteger `json:"surTimeInNumMsg,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	SurTimeInTime *externalRef0.Uinteger `json:"surTimeInTime,omitempty"`
-}
-
-// Indicates value of uncertainty.
-type Uncertainty float32
-
-// Ellipse with uncertainty.
-type UncertaintyEllipse struct {
-	// Indicates value of orientation angle.
-	OrientationMajor Orientation `json:"orientationMajor"`
-
-	// Indicates value of uncertainty.
-	SemiMajor Uncertainty `json:"semiMajor"`
-
-	// Indicates value of uncertainty.
-	SemiMinor Uncertainty `json:"semiMinor"`
-}
-
-// Ellipsoid with uncertainty
-type UncertaintyEllipsoid struct {
-	// Indicates value of orientation angle.
-	OrientationMajor Orientation `json:"orientationMajor"`
-
-	// Indicates value of uncertainty.
-	SemiMajor Uncertainty `json:"semiMajor"`
-
-	// Indicates value of uncertainty.
-	SemiMinor Uncertainty `json:"semiMinor"`
-
-	// Indicates value of uncertainty.
-	Vertical Uncertainty `json:"vertical"`
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/auditingapi/auditing-server.gen.go b/capif/internal/readonly/auditingapi/auditing-server.gen.go
deleted file mode 100644
index aaa745e..0000000
--- a/capif/internal/readonly/auditingapi/auditing-server.gen.go
+++ /dev/null
@@ -1,304 +0,0 @@
-// Package auditingapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package auditingapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"encoding/json"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /apiInvocationLogs)
-	GetApiInvocationLogs(ctx echo.Context, params GetApiInvocationLogsParams) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetApiInvocationLogs converts echo context to params.
-func (w *ServerInterfaceWrapper) GetApiInvocationLogs(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params GetApiInvocationLogsParams
-	// ------------- Optional query parameter "aef-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "aef-id", ctx.QueryParams(), &params.AefId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aef-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-invoker-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-invoker-id", ctx.QueryParams(), &params.ApiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-invoker-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "time-range-start" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "time-range-start", ctx.QueryParams(), &params.TimeRangeStart)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter time-range-start: %s", err))
-	}
-
-	// ------------- Optional query parameter "time-range-end" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "time-range-end", ctx.QueryParams(), &params.TimeRangeEnd)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter time-range-end: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-id", ctx.QueryParams(), &params.ApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-name", ctx.QueryParams(), &params.ApiName)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-name: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-version" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-version", ctx.QueryParams(), &params.ApiVersion)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-version: %s", err))
-	}
-
-	// ------------- Optional query parameter "protocol" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "protocol", ctx.QueryParams(), &params.Protocol)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter protocol: %s", err))
-	}
-
-	// ------------- Optional query parameter "operation" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "operation", ctx.QueryParams(), &params.Operation)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter operation: %s", err))
-	}
-
-	// ------------- Optional query parameter "result" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "result", ctx.QueryParams(), &params.Result)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter result: %s", err))
-	}
-
-	// ------------- Optional query parameter "resource-name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "resource-name", ctx.QueryParams(), &params.ResourceName)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter resource-name: %s", err))
-	}
-
-	// ------------- Optional query parameter "src-interface" -------------
-
-	if paramValue := ctx.QueryParam("src-interface"); paramValue != "" {
-
-		var value externalRef2.InterfaceDescription
-		err = json.Unmarshal([]byte(paramValue), &value)
-		if err != nil {
-			return echo.NewHTTPError(http.StatusBadRequest, "Error unmarshaling parameter 'src-interface' as JSON")
-		}
-		params.SrcInterface = &value
-
-	}
-
-	// ------------- Optional query parameter "dest-interface" -------------
-
-	if paramValue := ctx.QueryParam("dest-interface"); paramValue != "" {
-
-		var value externalRef2.InterfaceDescription
-		err = json.Unmarshal([]byte(paramValue), &value)
-		if err != nil {
-			return echo.NewHTTPError(http.StatusBadRequest, "Error unmarshaling parameter 'dest-interface' as JSON")
-		}
-		params.DestInterface = &value
-
-	}
-
-	// ------------- Optional query parameter "supported-features" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "supported-features", ctx.QueryParams(), &params.SupportedFeatures)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter supported-features: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetApiInvocationLogs(ctx, params)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/apiInvocationLogs", wrapper.GetApiInvocationLogs)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"H4sIAAAAAAAC/9RXzXLbNhB+lR20h3aGIkXaimPdVDvJaCaTqJaaS5PxwOSSREMCKABKcT18oL5Gn6yz",
-	"oKgotmVHlnvoRT/k7rff7gcsFjcsVbVWEqWzbHzTBgy/ODSSV+cqpScsQ5saoZ1Qko3Z0ZvZDBZzSE7D",
-	"JEngQ3wSxuEQzlRdKwmT2RReG17jSpnPkCsD3v6dMq68Uo3MyMKygDWmYmNWOqfHUbRarcKjQutQmSLK",
-	"nY7mGlMbcZOWYolRcnpp0Qi0URc0Ym3AhMzVXXYUn6LyJhNOyCL8KP/5G5JhEgcdk/em4FL8xcmeVzDj",
-	"xkk0Fn6aXEx/CWCymM4DODubTwJ4tZhPA1jMz/3XYkIfZz+HH+WkqsCIonQWDFo0S8zCj5IFzAlXIRuz",
-	"s8ls+vpysuZwOZlNWcCWaGxHMg6TcDjglS55GFMuSqPkWlB1w2E4ZAHT3JW++BHXYiqXKvWM36rCPy3Q",
-	"3c391wbNNXCZgUFnBC4RiJxI0csiNihQqcKCdcpgBkqCKxE8ZUiVQcgbmZJZyDwz432mGRuzN+gmd+gQ",
-	"WVLcobFs/PttVnNnhCxAZCidyK/pN8UjRvhFK0sPtiMKcvqTUmEBk7ymenLMByJjAbNpiTWn1N21pjfW",
-	"o7O2DfaIS5X4jAZWpUjL9b/Mv92q104uWgzWAE/gxI0DJ2oElfuAW6L4x4bLAneFJouBtxhYQvom+I8G",
-	"czZmi3lyGifJZbcfz7nj4TWvqx+ir7s86pxsdM4dLkSN91F9JbNnIYoy+y9pPqpy9qCOe+pHsOQegHAg",
-	"LFh0wC3ccC3e8Rpb0KTvumK/XUzBOtOkrjFIZhnmQmIGQoJtrtKKNxbhODwmh62uOhrGD3H2P/di/aFr",
-	"PD0vSqJb+Stuv6dKfePaK+jMKKdSVT0WQK/tdi2ShBaJb6ez5qoStrycd3uUuuruNdOHv4/a+76ngSu5",
-	"265C3wwf2P6bhvjMhDek7mN8gbapHCgDqnG6cXc35S66xnvuJx0t5T6C1ZiKXKR00KnGpPiYnr3dd63T",
-	"VEmH0h9lXOtKdLlEf1jicfOs9Z1KhybnKZ5v5dq2bXAr+Y0dbD3f3jrr3r8rf2vSgegx2P87yZ0iZ2jd",
-	"rSy/DbBQkIvKoQFhDFa45NLREtJKWqSpqeKOjlwFjbSN1srQ3xw59Uq7q7S94WDL8N7yjU7i7zpZ5j3i",
-	"6x6wbT8FbEOUYJPhkL4OU/GtKor1JHj5dXx6TMytMes+Ffuu0MnmiwWb9gS8UrKAlXAl5OjSErMHpkHI",
-	"qE40ih4NT/Y8pjfVisjXQ7w8AOIlQRx3RX8SBPl6iPgAiLiDODoA4qiDOD4A4riDeHEAxAsPER/AIu5Y",
-	"JKdPh0hOCWJ0gKijTtTRAYqMOkUyzDkdiU+F6f3b1m9Jf/1bX3y6Oy1NgxdKuTaia1a0jOnux43gV1XX",
-	"Udbvuwvcmoy/CdtxFOEXXusKw1TV7PaGXzvunCVPwtGtWTJJkpCYfmr/DQAA//8fy/fu5w8AAA==",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29222_CAPIF_Publish_Service_API.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/auditingapi/auditing-types.gen.go b/capif/internal/readonly/auditingapi/auditing-types.gen.go
deleted file mode 100644
index 75aaf41..0000000
--- a/capif/internal/readonly/auditingapi/auditing-types.gen.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Package auditingapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package auditingapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// GetApiInvocationLogsParams defines parameters for GetApiInvocationLogs.
-type GetApiInvocationLogsParams struct {
-	// String identifying the API exposing function.
-	AefId *string `json:"aef-id,omitempty"`
-
-	// String identifying the API invoker which invoked the service API.
-	ApiInvokerId *string `json:"api-invoker-id,omitempty"`
-
-	// Start time of the invocation time range.
-	TimeRangeStart *externalRef0.DateTime `json:"time-range-start,omitempty"`
-
-	// End time of the invocation time range.
-	TimeRangeEnd *externalRef0.DateTime `json:"time-range-end,omitempty"`
-
-	// String identifying the API invoked.
-	ApiId *string `json:"api-id,omitempty"`
-
-	// API name, it is set as {apiName} part of the URI structure as defined in subclause 4.4 of 3GPP TS 29.501.
-	ApiName *string `json:"api-name,omitempty"`
-
-	// Version of the API which was invoked.
-	ApiVersion *string `json:"api-version,omitempty"`
-
-	// Protocol invoked.
-	Protocol *externalRef2.Protocol `json:"protocol,omitempty"`
-
-	// Operation that was invoked on the API.
-	Operation *externalRef2.Operation `json:"operation,omitempty"`
-
-	// Result or output of the invocation.
-	Result *string `json:"result,omitempty"`
-
-	// Name of the specific resource invoked.
-	ResourceName *string `json:"resource-name,omitempty"`
-
-	// Interface description of the API invoker.
-	SrcInterface *externalRef2.InterfaceDescription `json:"src-interface,omitempty"`
-
-	// Interface description of the API invoked.
-	DestInterface *externalRef2.InterfaceDescription `json:"dest-interface,omitempty"`
-
-	// To filter irrelevant responses related to unsupported features
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supported-features,omitempty"`
-}
diff --git a/capif/internal/readonly/auditingapi/generator_settings_server.yaml b/capif/internal/readonly/auditingapi/generator_settings_server.yaml
deleted file mode 100644
index c2c2738..0000000
--- a/capif/internal/readonly/auditingapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/auditingapi/auditing-server.gen.go
-package: auditingapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/auditingapi/generator_settings_types.yaml b/capif/internal/readonly/auditingapi/generator_settings_types.yaml
deleted file mode 100644
index 90652ee..0000000
--- a/capif/internal/readonly/auditingapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/auditingapi/auditing-types.gen.go
-package: auditingapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/common29122/common.gen.go b/capif/internal/readonly/common29122/common.gen.go
deleted file mode 100644
index 8d6c308..0000000
--- a/capif/internal/readonly/common29122/common.gen.go
+++ /dev/null
@@ -1,492 +0,0 @@
-// Package common29122 provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package common29122
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/url"
-	"path"
-	"strings"
-	"time"
-
-	"github.com/getkin/kin-openapi/openapi3"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Defines values for Event.
-const (
-	EventFAILEDRESOURCESALLOCATION Event = "FAILED_RESOURCES_ALLOCATION"
-
-	EventLOSSOFBEARER Event = "LOSS_OF_BEARER"
-
-	EventRECOVERYOFBEARER Event = "RECOVERY_OF_BEARER"
-
-	EventRELEASEOFBEARER Event = "RELEASE_OF_BEARER"
-
-	EventSESSIONTERMINATION Event = "SESSION_TERMINATION"
-
-	EventSUCCESSFULRESOURCESALLOCATION Event = "SUCCESSFUL_RESOURCES_ALLOCATION"
-
-	EventUSAGEREPORT Event = "USAGE_REPORT"
-)
-
-// Defines values for ResultReason.
-const (
-	ResultReasonOTHERREASON ResultReason = "OTHER_REASON"
-
-	ResultReasonROAMINGNOTALLOWED ResultReason = "ROAMING_NOT_ALLOWED"
-)
-
-// Represents an accumulated usage.
-type AccumulatedUsage struct {
-	// Unsigned integer identifying a volume in units of bytes.
-	DownlinkVolume *Volume `json:"downlinkVolume,omitempty"`
-
-	// Unsigned integer identifying a period of time in units of seconds.
-	Duration *DurationSec `json:"duration,omitempty"`
-
-	// Unsigned integer identifying a volume in units of bytes.
-	TotalVolume *Volume `json:"totalVolume,omitempty"`
-
-	// Unsigned integer identifying a volume in units of bytes.
-	UplinkVolume *Volume `json:"uplinkVolume,omitempty"`
-}
-
-// Represents a successful acknowledgement of a notification.
-type Acknowledgement struct {
-	// A human-readable explanation specific to this successful acknowledgement
-	Details string `json:"details"`
-}
-
-// integer indicating a bandwidth in bits per second.
-type Bandwidth int
-
-// string identifying a BDT Reference ID as defined in subclause 5.3.3 of 3GPP TS 29.154.
-type BdtReferenceId string
-
-// This data type is defined in the same way as the BdtReferenceId data type, but with the nullable property set to true.
-type BdtReferenceIdRm string
-
-// string with format "binary" as defined in OpenAPI Specification.
-type Binary string
-
-// String with format "byte" as defined in OpenAPI Specification, i.e, base64-encoded characters.
-type Bytes string
-
-// Represents one configuration processing result for a group's members.
-type ConfigResult interface{}
-
-// string with format "date-time" as defined in OpenAPI.
-type DateTime time.Time
-
-// string with format "date-time" as defined in OpenAPI with "nullable=true" property.
-type DateTimeRm time.Time
-
-// string with format "date-time" as defined in OpenAPI with "readOnly=true" property.
-type DateTimeRo time.Time
-
-// integer between and including 1 and 7 denoting a weekday. 1 shall indicate Monday, and the subsequent weekdays shall be indicated with the next higher numbers. 7 shall indicate Sunday.
-type DayOfWeek int
-
-// Unsigned integer identifying a period of time in units of minutes.
-type DurationMin int32
-
-// Unsigned integer identifying a period of time in units of seconds.
-type DurationSec int
-
-// Unsigned integer identifying a period of time in units of seconds with "nullable=true" property.
-type DurationSecRm int
-
-// Unsigned integer identifying a period of time in units of seconds with "readOnly=true" property.
-type DurationSecRo int
-
-// Possible values are - SESSION_TERMINATION: Indicates that Rx session is terminated. - LOSS_OF_BEARER : Indicates a loss of a bearer. - RECOVERY_OF_BEARER: Indicates a recovery of a bearer. - RELEASE_OF_BEARER: Indicates a release of a bearer. - USAGE_REPORT: Indicates the usage report event.  - FAILED_RESOURCES_ALLOCATION: Indicates the resource allocation is failed. - SUCCESSFUL_RESOURCES_ALLOCATION: Indicates the resource allocation is successful.
-type Event string
-
-// Represents an event report.
-type EventReport struct {
-	// Represents an accumulated usage.
-	AccumulatedUsage *AccumulatedUsage `json:"accumulatedUsage,omitempty"`
-
-	// Possible values are - SESSION_TERMINATION: Indicates that Rx session is terminated. - LOSS_OF_BEARER : Indicates a loss of a bearer. - RECOVERY_OF_BEARER: Indicates a recovery of a bearer. - RELEASE_OF_BEARER: Indicates a release of a bearer. - USAGE_REPORT: Indicates the usage report event.  - FAILED_RESOURCES_ALLOCATION: Indicates the resource allocation is failed. - SUCCESSFUL_RESOURCES_ALLOCATION: Indicates the resource allocation is successful.
-	Event Event `json:"event"`
-
-	// Identifies the IP flows that were sent during event subscription
-	FlowIds *[]int `json:"flowIds,omitempty"`
-}
-
-// string containing a local identifier followed by "@" and a domain identifier. Both the local identifier and the domain identifier shall be encoded as strings that do not contain any "@" characters. See Clauses 4.6.2 and 4.6.3 of 3GPP TS 23.682 for more information.
-type ExternalGroupId string
-
-// string containing a local identifier followed by "@" and a domain identifier. Both the local identifier and the domain identifier shall be encoded as strings that do not contain any "@" characters. See Clause 4.6.2 of 3GPP TS 23.682 for more information.
-type ExternalId string
-
-// Represents flow information.
-type FlowInfo struct {
-	// Indicates the packet filters of the IP flow. Refer to subclause 5.3.8 of 3GPP TS 29.214 for encoding. It shall contain UL and/or DL IP flow description.
-	FlowDescriptions *[]string `json:"flowDescriptions,omitempty"`
-
-	// Indicates the IP flow.
-	FlowId int `json:"flowId"`
-}
-
-// Represents the description of invalid parameters, for a request rejected due to invalid parameters.
-type InvalidParam struct {
-	// Attribute's name encoded as a JSON Pointer, or header's name.
-	Param string `json:"param"`
-
-	// A human-readable reason, e.g. "must be a positive integer".
-	Reason *string `json:"reason,omitempty"`
-}
-
-// string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166.
-type Ipv4Addr string
-
-// string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166, with "readOnly=true" property.
-type Ipv4AddrRo string
-
-// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used.
-type Ipv6Addr string
-
-// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952, with "readOnly=true" property. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used.
-type Ipv6AddrRo string
-
-// string formatted according to IETF RFC 3986 identifying a referenced resource.
-type Link string
-
-// Represents a user location area.
-type LocationArea struct {
-	// Indicates a list of Cell Global Identities of the user which identifies the cell the UE is registered.
-	CellIds *[]string `json:"cellIds,omitempty"`
-
-	// Identifies a list of civic addresses of the user where the UE is located.
-	CivicAddresses *[]externalRef0.CivicAddress `json:"civicAddresses,omitempty"`
-
-	// Indicates a list of eNodeB identities in which the UE is currently located.
-	EnodeBIds *[]string `json:"enodeBIds,omitempty"`
-
-	// Identifies a list of geographic area of the user where the UE is located.
-	GeographicAreas *[]externalRef0.GeographicArea `json:"geographicAreas,omitempty"`
-
-	// Identifies a list of Routing Area Identities of the user where the UE is located.
-	RoutingAreaIds *[]string `json:"routingAreaIds,omitempty"`
-
-	// Identifies a list of Tracking Area Identities of the user where the UE is located.
-	TrackingAreaIds *[]string `json:"trackingAreaIds,omitempty"`
-}
-
-// Represents a user location area when the UE is attached to 5G.
-type LocationArea5G struct {
-	// Identifies a list of civic addresses of the user where the UE is located.
-	CivicAddresses *[]externalRef0.CivicAddress `json:"civicAddresses,omitempty"`
-
-	// Identifies a list of geographic area of the user where the UE is located.
-	GeographicAreas *[]externalRef0.GeographicArea `json:"geographicAreas,omitempty"`
-
-	// Describes a network area information in which the NF service consumer requests the number of UEs.
-	NwAreaInfo *externalRef0.NetworkAreaInfo `json:"nwAreaInfo,omitempty"`
-}
-
-// String encoding a Mobile Country Code part of the PLMN, comprising 3 digits, as defined in 3GPP TS 38.413.
-type Mcc string
-
-// String encoding a Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in 3GPP TS 38.413.
-type Mnc string
-
-// string formatted according to subclause 3.3 of 3GPP TS 23.003 that describes an MSISDN.
-type Msisdn string
-
-// Represents the information to be conveyed in a bearer level event(s) notification.
-type NotificationData struct {
-	// Contains the reported event and applicable information
-	EventReports []EventReport `json:"eventReports"`
-
-	// string formatted according to IETF RFC 3986 identifying a referenced resource.
-	Transaction Link `json:"transaction"`
-}
-
-// Represents the identifier of a PLMN.
-type PlmnId struct {
-	// String encoding a Mobile Country Code part of the PLMN, comprising 3 digits, as defined in 3GPP TS 38.413.
-	Mcc Mcc `json:"mcc"`
-
-	// String encoding a Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in 3GPP TS 38.413.
-	Mnc Mnc `json:"mnc"`
-}
-
-// Unsigned integer with valid values between 0 and 65535.
-type Port int
-
-// Unsigned integer with valid values between 0 and 65535, with "readOnly=true" property.
-type PortRo int
-
-// Represents additional information and details on an error response.
-type ProblemDetails struct {
-	// A machine-readable application error cause specific to this occurrence of the problem. This IE should be present and provide application-related error information, if available.
-	Cause *string `json:"cause,omitempty"`
-
-	// A human-readable explanation specific to this occurrence of the problem.
-	Detail *string `json:"detail,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	Instance *Uri `json:"instance,omitempty"`
-
-	// Description of invalid parameters, for a request rejected due to invalid parameters.
-	InvalidParams *[]InvalidParam `json:"invalidParams,omitempty"`
-
-	// The HTTP status code for this occurrence of the problem.
-	Status *int `json:"status,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supportedFeatures,omitempty"`
-
-	// A short, human-readable summary of the problem type. It should not change from occurrence to occurrence of the problem.
-	Title *string `json:"title,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	Type *Uri `json:"type,omitempty"`
-}
-
-// string chosen by the SCEF to serve as identifier in a resource URI.
-type ResourceId string
-
-// Possible values are - ROAMING_NOT_ALLOWED: Identifies the configuration parameters are not allowed by roaming agreement. - OTHER_REASON: Identifies the configuration parameters are not configured due to other reason.
-type ResultReason string
-
-// string that identifies an SCS/AS.
-type ScsAsId string
-
-// Represents a sponsor information.
-type SponsorInformation struct {
-	// It indicates Application Service Provider ID.
-	AspId string `json:"aspId"`
-
-	// It indicates Sponsor ID.
-	SponsorId string `json:"sponsorId"`
-}
-
-// Represents a notification that can be sent to test whether a chosen notification mechanism works.
-type TestNotification struct {
-	// string formatted according to IETF RFC 3986 identifying a referenced resource.
-	Subscription Link `json:"subscription"`
-}
-
-// String with format partial-time or full-time as defined in subclause 5.6 of IETF RFC 3339. Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC).
-type TimeOfDay string
-
-// Represents a time window identified by a start time and a stop time.
-type TimeWindow struct {
-	// string with format "date-time" as defined in OpenAPI.
-	StartTime DateTime `json:"startTime"`
-
-	// string with format "date-time" as defined in OpenAPI.
-	StopTime DateTime `json:"stopTime"`
-}
-
-// string providing an URI formatted according to IETF RFC 3986.
-type Uri string
-
-// Represents a usage threshold.
-type UsageThreshold struct {
-	// Unsigned integer identifying a volume in units of bytes.
-	DownlinkVolume *Volume `json:"downlinkVolume,omitempty"`
-
-	// Unsigned integer identifying a period of time in units of seconds.
-	Duration *DurationSec `json:"duration,omitempty"`
-
-	// Unsigned integer identifying a volume in units of bytes.
-	TotalVolume *Volume `json:"totalVolume,omitempty"`
-
-	// Unsigned integer identifying a volume in units of bytes.
-	UplinkVolume *Volume `json:"uplinkVolume,omitempty"`
-}
-
-// Represents the same as the UsageThreshold data type but with the nullable:true property.
-type UsageThresholdRm struct {
-	// Unsigned integer identifying a volume in units of bytes with "nullable=true" property.
-	DownlinkVolume *VolumeRm `json:"downlinkVolume"`
-
-	// Unsigned integer identifying a period of time in units of seconds with "nullable=true" property.
-	Duration *DurationSecRm `json:"duration"`
-
-	// Unsigned integer identifying a volume in units of bytes with "nullable=true" property.
-	TotalVolume *VolumeRm `json:"totalVolume"`
-
-	// Unsigned integer identifying a volume in units of bytes with "nullable=true" property.
-	UplinkVolume *VolumeRm `json:"uplinkVolume"`
-}
-
-// Unsigned integer identifying a volume in units of bytes.
-type Volume int64
-
-// Unsigned integer identifying a volume in units of bytes with "nullable=true" property.
-type VolumeRm int64
-
-// Represents the configuration information for the delivery of notifications over Websockets.
-type WebsockNotifConfig struct {
-	// Set by the SCS/AS to indicate that the Websocket delivery is requested.
-	RequestWebsocketUri *bool `json:"requestWebsocketUri,omitempty"`
-
-	// string formatted according to IETF RFC 3986 identifying a referenced resource.
-	WebsocketUri *Link `json:"websocketUri,omitempty"`
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/common29122/generator_settings.yaml b/capif/internal/readonly/common29122/generator_settings.yaml
deleted file mode 100644
index b763bbb..0000000
--- a/capif/internal/readonly/common29122/generator_settings.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/common29122/common.gen.go
-package: common29122
-generate:
-  - types
-  - skip-prune
-  - spec
-import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon
diff --git a/capif/internal/readonly/common29571/common.gen.go b/capif/internal/readonly/common29571/common.gen.go
deleted file mode 100644
index 1022359..0000000
--- a/capif/internal/readonly/common29571/common.gen.go
+++ /dev/null
@@ -1,3379 +0,0 @@
-// Package common29571 provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package common29571
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"encoding/json"
-	"fmt"
-	"net/url"
-	"path"
-	"strings"
-	"time"
-
-	openapi_types "github.com/deepmap/oapi-codegen/pkg/types"
-	"github.com/getkin/kin-openapi/openapi3"
-)
-
-// Defines values for AccessType.
-const (
-	AccessTypeN3GPPACCESS AccessType = "3GPP_ACCESS"
-
-	AccessTypeNON3GPPACCESS AccessType = "NON_3GPP_ACCESS"
-)
-
-// Defines values for AuthStatus.
-const (
-	AuthStatusEAPFAILURE AuthStatus = "EAP_FAILURE"
-
-	AuthStatusEAPSUCCESS AuthStatus = "EAP_SUCCESS"
-
-	AuthStatusPENDING AuthStatus = "PENDING"
-)
-
-// Defines values for ChangeType.
-const (
-	ChangeTypeADD ChangeType = "ADD"
-
-	ChangeTypeMOVE ChangeType = "MOVE"
-
-	ChangeTypeREMOVE ChangeType = "REMOVE"
-
-	ChangeTypeREPLACE ChangeType = "REPLACE"
-)
-
-// Defines values for CollectionPeriodRmmLteMdt.
-const (
-	CollectionPeriodRmmLteMdtN1024 CollectionPeriodRmmLteMdt = "1024"
-
-	CollectionPeriodRmmLteMdtN10240 CollectionPeriodRmmLteMdt = "10240"
-
-	CollectionPeriodRmmLteMdtN1280 CollectionPeriodRmmLteMdt = "1280"
-
-	CollectionPeriodRmmLteMdtN2048 CollectionPeriodRmmLteMdt = "2048"
-
-	CollectionPeriodRmmLteMdtN2560 CollectionPeriodRmmLteMdt = "2560"
-
-	CollectionPeriodRmmLteMdtN5120 CollectionPeriodRmmLteMdt = "5120"
-
-	CollectionPeriodRmmLteMdtN60000 CollectionPeriodRmmLteMdt = "60000"
-)
-
-// Defines values for CollectionPeriodRmmNrMdt.
-const (
-	CollectionPeriodRmmNrMdtN1024 CollectionPeriodRmmNrMdt = "1024"
-
-	CollectionPeriodRmmNrMdtN10240 CollectionPeriodRmmNrMdt = "10240"
-
-	CollectionPeriodRmmNrMdtN2048 CollectionPeriodRmmNrMdt = "2048"
-
-	CollectionPeriodRmmNrMdtN5120 CollectionPeriodRmmNrMdt = "5120"
-
-	CollectionPeriodRmmNrMdtN60000 CollectionPeriodRmmNrMdt = "60000"
-)
-
-// Defines values for CoreNetworkType.
-const (
-	CoreNetworkTypeEPC CoreNetworkType = "EPC"
-
-	CoreNetworkTypeN5GC CoreNetworkType = "5GC"
-)
-
-// Defines values for DlDataDeliveryStatus.
-const (
-	DlDataDeliveryStatusBUFFERED DlDataDeliveryStatus = "BUFFERED"
-
-	DlDataDeliveryStatusDISCARDED DlDataDeliveryStatus = "DISCARDED"
-
-	DlDataDeliveryStatusTRANSMITTED DlDataDeliveryStatus = "TRANSMITTED"
-)
-
-// Defines values for DnaiChangeType.
-const (
-	DnaiChangeTypeEARLY DnaiChangeType = "EARLY"
-
-	DnaiChangeTypeEARLYLATE DnaiChangeType = "EARLY_LATE"
-
-	DnaiChangeTypeLATE DnaiChangeType = "LATE"
-)
-
-// Defines values for EventForMdt.
-const (
-	EventForMdtA2EVENT EventForMdt = "A2_EVENT"
-
-	EventForMdtOUTOFCOVERAG EventForMdt = "OUT_OF_COVERAG"
-)
-
-// Defines values for HttpMethod.
-const (
-	HttpMethodCONNECT HttpMethod = "CONNECT"
-
-	HttpMethodDELETE HttpMethod = "DELETE"
-
-	HttpMethodGET HttpMethod = "GET"
-
-	HttpMethodHEAD HttpMethod = "HEAD"
-
-	HttpMethodOPTIONS HttpMethod = "OPTIONS"
-
-	HttpMethodPATCH HttpMethod = "PATCH"
-
-	HttpMethodPOST HttpMethod = "POST"
-
-	HttpMethodPUT HttpMethod = "PUT"
-
-	HttpMethodTRACE HttpMethod = "TRACE"
-)
-
-// Defines values for JobType.
-const (
-	JobTypeIMMEDIATEMDTANDTRACE JobType = "IMMEDIATE_MDT_AND_TRACE"
-
-	JobTypeIMMEDIATEMDTONLY JobType = "IMMEDIATE_MDT_ONLY"
-
-	JobTypeLOGGEDMBSFNMDT JobType = "LOGGED_MBSFN_MDT"
-
-	JobTypeLOGGEDMDTONLY JobType = "LOGGED_MDT_ONLY"
-
-	JobTypeRCEFREPORTSONLY JobType = "RCEF_REPORTS_ONLY"
-
-	JobTypeRLFREPORTSONLY JobType = "RLF_REPORTS_ONLY"
-
-	JobTypeTRACEONLY JobType = "TRACE_ONLY"
-)
-
-// Defines values for LcsServiceAuth.
-const (
-	LcsServiceAuthLOCATIONALLOWEDWITHNOTIFICATION LcsServiceAuth = "LOCATION_ALLOWED_WITH_NOTIFICATION"
-
-	LcsServiceAuthLOCATIONALLOWEDWITHOUTNOTIFICATION LcsServiceAuth = "LOCATION_ALLOWED_WITHOUT_NOTIFICATION"
-
-	LcsServiceAuthLOCATIONALLOWEDWITHOUTRESPONSE LcsServiceAuth = "LOCATION_ALLOWED_WITHOUT_RESPONSE"
-
-	LcsServiceAuthLOCATIONRESTRICTEDWITHOUTRESPONSE LcsServiceAuth = "LOCATION_RESTRICTED_WITHOUT_RESPONSE"
-
-	LcsServiceAuthNOTIFICATIONANDVERIFICATIONONLY LcsServiceAuth = "NOTIFICATION_AND_VERIFICATION_ONLY"
-
-	LcsServiceAuthNOTIFICATIONONLY LcsServiceAuth = "NOTIFICATION_ONLY"
-)
-
-// Defines values for LineType.
-const (
-	LineTypeDSL LineType = "DSL"
-
-	LineTypePON LineType = "PON"
-)
-
-// Defines values for LoggingDurationMdt.
-const (
-	LoggingDurationMdtN1200 LoggingDurationMdt = "1200"
-
-	LoggingDurationMdtN2400 LoggingDurationMdt = "2400"
-
-	LoggingDurationMdtN3600 LoggingDurationMdt = "3600"
-
-	LoggingDurationMdtN5400 LoggingDurationMdt = "5400"
-
-	LoggingDurationMdtN600 LoggingDurationMdt = "600"
-
-	LoggingDurationMdtN7200 LoggingDurationMdt = "7200"
-)
-
-// Defines values for LoggingDurationNrMdt.
-const (
-	LoggingDurationNrMdtN1200 LoggingDurationNrMdt = "1200"
-
-	LoggingDurationNrMdtN2400 LoggingDurationNrMdt = "2400"
-
-	LoggingDurationNrMdtN3600 LoggingDurationNrMdt = "3600"
-
-	LoggingDurationNrMdtN5400 LoggingDurationNrMdt = "5400"
-
-	LoggingDurationNrMdtN600 LoggingDurationNrMdt = "600"
-
-	LoggingDurationNrMdtN7200 LoggingDurationNrMdt = "7200"
-)
-
-// Defines values for LoggingIntervalMdt.
-const (
-	LoggingIntervalMdtN1024 LoggingIntervalMdt = "1024"
-
-	LoggingIntervalMdtN128 LoggingIntervalMdt = "128"
-
-	LoggingIntervalMdtN2048 LoggingIntervalMdt = "2048"
-
-	LoggingIntervalMdtN256 LoggingIntervalMdt = "256"
-
-	LoggingIntervalMdtN3072 LoggingIntervalMdt = "3072"
-
-	LoggingIntervalMdtN4096 LoggingIntervalMdt = "4096"
-
-	LoggingIntervalMdtN512 LoggingIntervalMdt = "512"
-
-	LoggingIntervalMdtN6144 LoggingIntervalMdt = "6144"
-)
-
-// Defines values for LoggingIntervalNrMdt.
-const (
-	LoggingIntervalNrMdtInfinity LoggingIntervalNrMdt = "infinity"
-
-	LoggingIntervalNrMdtN1024 LoggingIntervalNrMdt = "1024"
-
-	LoggingIntervalNrMdtN128 LoggingIntervalNrMdt = "128"
-
-	LoggingIntervalNrMdtN2048 LoggingIntervalNrMdt = "2048"
-
-	LoggingIntervalNrMdtN256 LoggingIntervalNrMdt = "256"
-
-	LoggingIntervalNrMdtN3072 LoggingIntervalNrMdt = "3072"
-
-	LoggingIntervalNrMdtN320 LoggingIntervalNrMdt = "320"
-
-	LoggingIntervalNrMdtN4096 LoggingIntervalNrMdt = "4096"
-
-	LoggingIntervalNrMdtN512 LoggingIntervalNrMdt = "512"
-
-	LoggingIntervalNrMdtN6144 LoggingIntervalNrMdt = "6144"
-
-	LoggingIntervalNrMdtN640 LoggingIntervalNrMdt = "640"
-)
-
-// Defines values for MbsServiceType.
-const (
-	MbsServiceTypeBROADCAST MbsServiceType = "BROADCAST"
-
-	MbsServiceTypeMULTICAST MbsServiceType = "MULTICAST"
-)
-
-// Defines values for MbsSessionActivityStatus.
-const (
-	MbsSessionActivityStatusACTIVE MbsSessionActivityStatus = "ACTIVE"
-
-	MbsSessionActivityStatusINACTIVE MbsSessionActivityStatus = "INACTIVE"
-)
-
-// Defines values for MbsSessionEventType.
-const (
-	MbsSessionEventTypeBROADCASTDELIVERYSTATUS MbsSessionEventType = "BROADCAST_DELIVERY_STATUS"
-
-	MbsSessionEventTypeMBSRELTMGIEXPIRY MbsSessionEventType = "MBS_REL_TMGI_EXPIRY"
-)
-
-// Defines values for MeasurementLteForMdt.
-const (
-	MeasurementLteForMdtM1 MeasurementLteForMdt = "M1"
-
-	MeasurementLteForMdtM2 MeasurementLteForMdt = "M2"
-
-	MeasurementLteForMdtM3 MeasurementLteForMdt = "M3"
-
-	MeasurementLteForMdtM4DL MeasurementLteForMdt = "M4_DL"
-
-	MeasurementLteForMdtM4UL MeasurementLteForMdt = "M4_UL"
-
-	MeasurementLteForMdtM5DL MeasurementLteForMdt = "M5_DL"
-
-	MeasurementLteForMdtM5UL MeasurementLteForMdt = "M5_UL"
-
-	MeasurementLteForMdtM6DL MeasurementLteForMdt = "M6_DL"
-
-	MeasurementLteForMdtM6UL MeasurementLteForMdt = "M6_UL"
-
-	MeasurementLteForMdtM7DL MeasurementLteForMdt = "M7_DL"
-
-	MeasurementLteForMdtM7UL MeasurementLteForMdt = "M7_UL"
-
-	MeasurementLteForMdtM8 MeasurementLteForMdt = "M8"
-
-	MeasurementLteForMdtM9 MeasurementLteForMdt = "M9"
-)
-
-// Defines values for MeasurementNrForMdt.
-const (
-	MeasurementNrForMdtM1 MeasurementNrForMdt = "M1"
-
-	MeasurementNrForMdtM2 MeasurementNrForMdt = "M2"
-
-	MeasurementNrForMdtM3 MeasurementNrForMdt = "M3"
-
-	MeasurementNrForMdtM4DL MeasurementNrForMdt = "M4_DL"
-
-	MeasurementNrForMdtM4UL MeasurementNrForMdt = "M4_UL"
-
-	MeasurementNrForMdtM5DL MeasurementNrForMdt = "M5_DL"
-
-	MeasurementNrForMdtM5UL MeasurementNrForMdt = "M5_UL"
-
-	MeasurementNrForMdtM6DL MeasurementNrForMdt = "M6_DL"
-
-	MeasurementNrForMdtM6UL MeasurementNrForMdt = "M6_UL"
-
-	MeasurementNrForMdtM7DL MeasurementNrForMdt = "M7_DL"
-
-	MeasurementNrForMdtM7UL MeasurementNrForMdt = "M7_UL"
-
-	MeasurementNrForMdtM8 MeasurementNrForMdt = "M8"
-
-	MeasurementNrForMdtM9 MeasurementNrForMdt = "M9"
-)
-
-// Defines values for MeasurementPeriodLteMdt.
-const (
-	MeasurementPeriodLteMdtN1024 MeasurementPeriodLteMdt = "1024"
-
-	MeasurementPeriodLteMdtN10240 MeasurementPeriodLteMdt = "10240"
-
-	MeasurementPeriodLteMdtN1280 MeasurementPeriodLteMdt = "1280"
-
-	MeasurementPeriodLteMdtN2048 MeasurementPeriodLteMdt = "2048"
-
-	MeasurementPeriodLteMdtN2560 MeasurementPeriodLteMdt = "2560"
-
-	MeasurementPeriodLteMdtN5120 MeasurementPeriodLteMdt = "5120"
-
-	MeasurementPeriodLteMdtN60000 MeasurementPeriodLteMdt = "60000"
-)
-
-// Defines values for NotificationControl.
-const (
-	NotificationControlNOTREQUESTED NotificationControl = "NOT_REQUESTED"
-
-	NotificationControlREQUESTED NotificationControl = "REQUESTED"
-)
-
-// Defines values for NotificationFlag.
-const (
-	NotificationFlagACTIVATE NotificationFlag = "ACTIVATE"
-
-	NotificationFlagDEACTIVATE NotificationFlag = "DEACTIVATE"
-
-	NotificationFlagRETRIEVAL NotificationFlag = "RETRIEVAL"
-)
-
-// Defines values for PartitioningCriteria.
-const (
-	PartitioningCriteriaDNN PartitioningCriteria = "DNN"
-
-	PartitioningCriteriaGEOAREA PartitioningCriteria = "GEOAREA"
-
-	PartitioningCriteriaSNSSAI PartitioningCriteria = "SNSSAI"
-
-	PartitioningCriteriaSUBPLMN PartitioningCriteria = "SUBPLMN"
-
-	PartitioningCriteriaTAC PartitioningCriteria = "TAC"
-)
-
-// Defines values for PatchOperation.
-const (
-	PatchOperationAdd PatchOperation = "add"
-
-	PatchOperationCopy PatchOperation = "copy"
-
-	PatchOperationMove PatchOperation = "move"
-
-	PatchOperationRemove PatchOperation = "remove"
-
-	PatchOperationReplace PatchOperation = "replace"
-
-	PatchOperationTest PatchOperation = "test"
-)
-
-// Defines values for PduSessionType.
-const (
-	PduSessionTypeETHERNET PduSessionType = "ETHERNET"
-
-	PduSessionTypeIPV4 PduSessionType = "IPV4"
-
-	PduSessionTypeIPV4V6 PduSessionType = "IPV4V6"
-
-	PduSessionTypeIPV6 PduSessionType = "IPV6"
-
-	PduSessionTypeUNSTRUCTURED PduSessionType = "UNSTRUCTURED"
-)
-
-// Defines values for PositioningMethodMdt.
-const (
-	PositioningMethodMdtECELLID PositioningMethodMdt = "E_CELL_ID"
-
-	PositioningMethodMdtGNSS PositioningMethodMdt = "GNSS"
-)
-
-// Defines values for PreemptionCapability.
-const (
-	PreemptionCapabilityMAYPREEMPT PreemptionCapability = "MAY_PREEMPT"
-
-	PreemptionCapabilityNOTPREEMPT PreemptionCapability = "NOT_PREEMPT"
-)
-
-// Defines values for PreemptionVulnerability.
-const (
-	PreemptionVulnerabilityNOTPREEMPTABLE PreemptionVulnerability = "NOT_PREEMPTABLE"
-
-	PreemptionVulnerabilityPREEMPTABLE PreemptionVulnerability = "PREEMPTABLE"
-)
-
-// Defines values for PresenceState.
-const (
-	PresenceStateINACTIVE PresenceState = "INACTIVE"
-
-	PresenceStateINAREA PresenceState = "IN_AREA"
-
-	PresenceStateOUTOFAREA PresenceState = "OUT_OF_AREA"
-
-	PresenceStateUNKNOWN PresenceState = "UNKNOWN"
-)
-
-// Defines values for QosResourceType.
-const (
-	QosResourceTypeCRITICALGBR QosResourceType = "CRITICAL_GBR"
-
-	QosResourceTypeNONCRITICALGBR QosResourceType = "NON_CRITICAL_GBR"
-
-	QosResourceTypeNONGBR QosResourceType = "NON_GBR"
-)
-
-// Defines values for RatType.
-const (
-	RatTypeEUTRA RatType = "EUTRA"
-
-	RatTypeEUTRAU RatType = "EUTRA_U"
-
-	RatTypeGERA RatType = "GERA"
-
-	RatTypeLTEM RatType = "LTE-M"
-
-	RatTypeNBIOT RatType = "NBIOT"
-
-	RatTypeNR RatType = "NR"
-
-	RatTypeNRGEO RatType = "NR_GEO"
-
-	RatTypeNRLEO RatType = "NR_LEO"
-
-	RatTypeNRMEO RatType = "NR_MEO"
-
-	RatTypeNROTHERSAT RatType = "NR_OTHER_SAT"
-
-	RatTypeNRREDCAP RatType = "NR_REDCAP"
-
-	RatTypeNRU RatType = "NR_U"
-
-	RatTypeTRUSTEDN3GA RatType = "TRUSTED_N3GA"
-
-	RatTypeTRUSTEDWLAN RatType = "TRUSTED_WLAN"
-
-	RatTypeUTRA RatType = "UTRA"
-
-	RatTypeVIRTUAL RatType = "VIRTUAL"
-
-	RatTypeWIRELINE RatType = "WIRELINE"
-
-	RatTypeWIRELINEBBF RatType = "WIRELINE_BBF"
-
-	RatTypeWIRELINECABLE RatType = "WIRELINE_CABLE"
-
-	RatTypeWLAN RatType = "WLAN"
-)
-
-// Defines values for ReflectiveQoSAttribute.
-const (
-	ReflectiveQoSAttributeNORQOS ReflectiveQoSAttribute = "NO_RQOS"
-
-	ReflectiveQoSAttributeRQOS ReflectiveQoSAttribute = "RQOS"
-)
-
-// Defines values for ReportAmountMdt.
-const (
-	ReportAmountMdtInfinity ReportAmountMdt = "infinity"
-
-	ReportAmountMdtN1 ReportAmountMdt = "1"
-
-	ReportAmountMdtN16 ReportAmountMdt = "16"
-
-	ReportAmountMdtN2 ReportAmountMdt = "2"
-
-	ReportAmountMdtN32 ReportAmountMdt = "32"
-
-	ReportAmountMdtN4 ReportAmountMdt = "4"
-
-	ReportAmountMdtN64 ReportAmountMdt = "64"
-
-	ReportAmountMdtN8 ReportAmountMdt = "8"
-)
-
-// Defines values for ReportIntervalMdt.
-const (
-	ReportIntervalMdtN1024 ReportIntervalMdt = "1024"
-
-	ReportIntervalMdtN10240 ReportIntervalMdt = "10240"
-
-	ReportIntervalMdtN120 ReportIntervalMdt = "120"
-
-	ReportIntervalMdtN1800000 ReportIntervalMdt = "1800000"
-
-	ReportIntervalMdtN2048 ReportIntervalMdt = "2048"
-
-	ReportIntervalMdtN240 ReportIntervalMdt = "240"
-
-	ReportIntervalMdtN360000 ReportIntervalMdt = "360000"
-
-	ReportIntervalMdtN3600000 ReportIntervalMdt = "3600000"
-
-	ReportIntervalMdtN480 ReportIntervalMdt = "480"
-
-	ReportIntervalMdtN5120 ReportIntervalMdt = "5120"
-
-	ReportIntervalMdtN60000 ReportIntervalMdt = "60000"
-
-	ReportIntervalMdtN640 ReportIntervalMdt = "640"
-
-	ReportIntervalMdtN720000 ReportIntervalMdt = "720000"
-)
-
-// Defines values for ReportIntervalNrMdt.
-const (
-	ReportIntervalNrMdtN1024 ReportIntervalNrMdt = "1024"
-
-	ReportIntervalNrMdtN10240 ReportIntervalNrMdt = "10240"
-
-	ReportIntervalNrMdtN120 ReportIntervalNrMdt = "120"
-
-	ReportIntervalNrMdtN1800000 ReportIntervalNrMdt = "1800000"
-
-	ReportIntervalNrMdtN2048 ReportIntervalNrMdt = "2048"
-
-	ReportIntervalNrMdtN20480 ReportIntervalNrMdt = "20480"
-
-	ReportIntervalNrMdtN240 ReportIntervalNrMdt = "240"
-
-	ReportIntervalNrMdtN360000 ReportIntervalNrMdt = "360000"
-
-	ReportIntervalNrMdtN3600000 ReportIntervalNrMdt = "3600000"
-
-	ReportIntervalNrMdtN40960 ReportIntervalNrMdt = "40960"
-
-	ReportIntervalNrMdtN480 ReportIntervalNrMdt = "480"
-
-	ReportIntervalNrMdtN5120 ReportIntervalNrMdt = "5120"
-
-	ReportIntervalNrMdtN60000 ReportIntervalNrMdt = "60000"
-
-	ReportIntervalNrMdtN640 ReportIntervalNrMdt = "640"
-
-	ReportIntervalNrMdtN720000 ReportIntervalNrMdt = "720000"
-)
-
-// Defines values for ReportTypeMdt.
-const (
-	ReportTypeMdtEVENTTRIGGED ReportTypeMdt = "EVENT_TRIGGED"
-
-	ReportTypeMdtPERIODICAL ReportTypeMdt = "PERIODICAL"
-)
-
-// Defines values for ReportingTrigger.
-const (
-	ReportingTriggerALLRRMEVENTTRIGGERS ReportingTrigger = "ALL_RRM_EVENT_TRIGGERS"
-
-	ReportingTriggerEVENTA2 ReportingTrigger = "EVENT_A2"
-
-	ReportingTriggerEVENTA2PERIODIC ReportingTrigger = "EVENT_A2_PERIODIC"
-
-	ReportingTriggerPERIODICAL ReportingTrigger = "PERIODICAL"
-)
-
-// Defines values for RestrictionType.
-const (
-	RestrictionTypeALLOWEDAREAS RestrictionType = "ALLOWED_AREAS"
-
-	RestrictionTypeNOTALLOWEDAREAS RestrictionType = "NOT_ALLOWED_AREAS"
-)
-
-// Defines values for RoamingOdb.
-const (
-	RoamingOdbOUTSIDEHOMEPLMN RoamingOdb = "OUTSIDE_HOME_PLMN"
-
-	RoamingOdbOUTSIDEHOMEPLMNCOUNTRY RoamingOdb = "OUTSIDE_HOME_PLMN_COUNTRY"
-)
-
-// Defines values for SatelliteBackhaulCategory.
-const (
-	SatelliteBackhaulCategoryGEO SatelliteBackhaulCategory = "GEO"
-
-	SatelliteBackhaulCategoryLEO SatelliteBackhaulCategory = "LEO"
-
-	SatelliteBackhaulCategoryMEO SatelliteBackhaulCategory = "MEO"
-
-	SatelliteBackhaulCategoryNONSATELLITE SatelliteBackhaulCategory = "NON_SATELLITE"
-
-	SatelliteBackhaulCategoryOTHERSAT SatelliteBackhaulCategory = "OTHER_SAT"
-)
-
-// Defines values for ScheduledCommunicationType.
-const (
-	ScheduledCommunicationTypeBIDIRECTIONAL ScheduledCommunicationType = "BIDIRECTIONAL"
-
-	ScheduledCommunicationTypeDOWNLINKONLY ScheduledCommunicationType = "DOWNLINK_ONLY"
-
-	ScheduledCommunicationTypeUPLINKONLY ScheduledCommunicationType = "UPLINK_ONLY"
-)
-
-// Defines values for SensorMeasurement.
-const (
-	SensorMeasurementBAROMETRICPRESSURE SensorMeasurement = "BAROMETRIC_PRESSURE"
-
-	SensorMeasurementUEORIENTATION SensorMeasurement = "UE_ORIENTATION"
-
-	SensorMeasurementUESPEED SensorMeasurement = "UE_SPEED"
-)
-
-// Defines values for SscMode.
-const (
-	SscModeSSCMODE1 SscMode = "SSC_MODE_1"
-
-	SscModeSSCMODE2 SscMode = "SSC_MODE_2"
-
-	SscModeSSCMODE3 SscMode = "SSC_MODE_3"
-)
-
-// Defines values for StationaryIndication.
-const (
-	StationaryIndicationMOBILE StationaryIndication = "MOBILE"
-
-	StationaryIndicationSTATIONARY StationaryIndication = "STATIONARY"
-)
-
-// Defines values for TraceDepth.
-const (
-	TraceDepthMAXIMUM TraceDepth = "MAXIMUM"
-
-	TraceDepthMAXIMUMWOVENDOREXTENSION TraceDepth = "MAXIMUM_WO_VENDOR_EXTENSION"
-
-	TraceDepthMEDIUM TraceDepth = "MEDIUM"
-
-	TraceDepthMEDIUMWOVENDOREXTENSION TraceDepth = "MEDIUM_WO_VENDOR_EXTENSION"
-
-	TraceDepthMINIMUM TraceDepth = "MINIMUM"
-
-	TraceDepthMINIMUMWOVENDOREXTENSION TraceDepth = "MINIMUM_WO_VENDOR_EXTENSION"
-)
-
-// Defines values for TrafficProfile.
-const (
-	TrafficProfileDUALTRANSDLFIRST TrafficProfile = "DUAL_TRANS_DL_FIRST"
-
-	TrafficProfileDUALTRANSULFIRST TrafficProfile = "DUAL_TRANS_UL_FIRST"
-
-	TrafficProfileMULTITRANS TrafficProfile = "MULTI_TRANS"
-
-	TrafficProfileSINGLETRANSDL TrafficProfile = "SINGLE_TRANS_DL"
-
-	TrafficProfileSINGLETRANSUL TrafficProfile = "SINGLE_TRANS_UL"
-)
-
-// Defines values for TransportProtocol.
-const (
-	TransportProtocolTCP TransportProtocol = "TCP"
-
-	TransportProtocolUDP TransportProtocol = "UDP"
-)
-
-// Defines values for UeAuth.
-const (
-	UeAuthAUTHORIZED UeAuth = "AUTHORIZED"
-
-	UeAuthNOTAUTHORIZED UeAuth = "NOT_AUTHORIZED"
-)
-
-// Defines values for UpConfidentiality.
-const (
-	UpConfidentialityNOTNEEDED UpConfidentiality = "NOT_NEEDED"
-
-	UpConfidentialityPREFERRED UpConfidentiality = "PREFERRED"
-
-	UpConfidentialityREQUIRED UpConfidentiality = "REQUIRED"
-)
-
-// Defines values for UpIntegrity.
-const (
-	UpIntegrityNOTNEEDED UpIntegrity = "NOT_NEEDED"
-
-	UpIntegrityPREFERRED UpIntegrity = "PREFERRED"
-
-	UpIntegrityREQUIRED UpIntegrity = "REQUIRED"
-)
-
-// Defines values for UriScheme.
-const (
-	UriSchemeHttp UriScheme = "http"
-
-	UriSchemeHttps UriScheme = "https"
-)
-
-// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-type N5GMmCause Uinteger
-
-// Unsigned integer representing a 5G QoS Identifier (see clause 5.7.2.1 of 3GPP TS 23.501, within the range 0 to 255
-type N5Qi int
-
-// Unsigned integer indicating the 5QI Priority Level (see clauses 5.7.3.3 and 5.7.4 of 3GPP TS 23.501, within the range 1 to 127.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 127 as the lowest priority.
-type N5QiPriorityLevel int
-
-// This data type is defined in the same way as the '5QiPriorityLevel' data type, but with the OpenAPI 'nullable: true' property.
-type N5QiPriorityLevelRm int
-
-// This data type is defined in the same way as the '5QiPriorityLevel' data type, but with the OpenAPI 'nullable: true' property.
-type N5QiRm int
-
-// Indicates wether the access is  via 3GPP or via non-3GPP.
-type AccessType string
-
-// Indicates wether the access is via 3GPP or via non-3GPP but with the OpenAPI 'nullable: true' property.
-type AccessTypeRm interface{}
-
-// The ACS information for the 5G-RG is defined in BBF TR-069 [42] or in BBF TR-369
-type AcsInfo struct {
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	AcsIpv4Addr *Ipv4Addr `json:"acsIpv4Addr,omitempty"`
-
-	// String identifying an IPv6 address formatted according to clause 4 of RFC5952. The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used
-	AcsIpv6Addr *Ipv6Addr `json:"acsIpv6Addr,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	AcsUrl *Uri `json:"acsUrl,omitempty"`
-}
-
-// This data type is defined in the same way as the 'AcsInfo' data type, but with the OpenAPI 'nullable: true' property.
-type AcsInfoRm interface{}
-
-// The enumeration AdditionalQosFlowInfo provides additional QoS flow information (see clause  9.3.1.12 3GPP TS 38.413 [11]). It shall comply with the provisions defined in table 5.5.3.12-1.
-type AdditionalQosFlowInfo interface{}
-
-// Contains the maximum aggregated uplink and downlink bit rates.
-type Ambr struct {
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	Downlink BitRate `json:"downlink"`
-
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	Uplink BitRate `json:"uplink"`
-}
-
-// This data type is defined in the same way as the 'Ambr' data type, but with the OpenAPI 'nullable: true' property.
-type AmbrRm interface{}
-
-// String identifying the AMF ID composed of AMF Region ID (8 bits), AMF Set ID (10 bits) and AMF  Pointer (6 bits) as specified in clause 2.10.1 of 3GPP TS 23.003. It is encoded as a string of  6 hexadecimal characters (i.e., 24 bits).
-type AmfId string
-
-// Fully Qualified Domain Name
-type AmfName Fqdn
-
-// String identifying the AMF Set ID (10 bits) as specified in clause 2.10.1 of 3GPP TS 23.003.  It is encoded as a string of 3 hexadecimal characters where the first character is limited to  values 0 to 3 (i.e. 10 bits)
-type AmfRegionId string
-
-// String identifying the AMF Set ID (10 bits) as specified in clause 2.10.1 of 3GPP TS 23.003.  It is encoded as a string of 3 hexadecimal characters where the first character is limited to  values 0 to 3 (i.e. 10 bits).
-type AmfSetId string
-
-// Contains the APN rate control status e.g. of the AMF.
-type ApnRateStatus struct {
-	// When present, it shall indicate the number of additional exception reports the AF is allowed to send downlink in the  given time unit for the given APN (all PDN connections of the UE to this APN, see clause 4.7.7.3 in 3GPP TS 23.401.
-	RemainExReportsDl *int `json:"remainExReportsDl,omitempty"`
-
-	// When present, it shall indicate the number of additional exception reports the UE is allowed to send uplink in the given time unit for the given APN (all PDN connections of the UE to this APN, see clause 4.7.7.3 in 3GPP TS 23.401.
-	RemainExReportsUl *int `json:"remainExReportsUl,omitempty"`
-
-	// When present, it shall contain the number of packets the UE is allowed to send uplink in the given time unit for the given APN (all PDN connections of the UE to this APN see clause 4.7.7.3 in 3GPP TS 23.401.
-	RemainPacketsDl *int `json:"remainPacketsDl,omitempty"`
-
-	// When present, it shall contain the number of packets the UE is allowed to send uplink in the given time unit for  the given APN (all PDN connections of the UE to this APN see clause 4.7.7.3 in 3GPP TS 23.401.
-	RemainPacketsUl *int `json:"remainPacketsUl,omitempty"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	ValidityTime *DateTime `json:"validityTime,omitempty"`
-}
-
-// Application provided charging identifier allowing correlation of charging information.
-type ApplicationChargingId string
-
-// String providing an application identifier.
-type ApplicationId string
-
-// String providing an application identifier with the OpenAPI 'nullable: true' property.
-type ApplicationIdRm string
-
-// Provides area information.
-type Area interface{}
-
-// Values are operator specific.
-type AreaCode string
-
-// This data type is defined in the same way as the 'AreaCode' data type, but with the OpenAPI 'nullable: true' property.
-type AreaCodeRm string
-
-// Contain the area based on Cells or Tracking Areas.
-type AreaScope struct {
-	EutraCellIdList *[]EutraCellId `json:"eutraCellIdList,omitempty"`
-	NrCellIdList    *[]NrCellId    `json:"nrCellIdList,omitempty"`
-
-	// A map (list of key-value pairs) where PlmnId converted to a string serves as key
-	TacInfoPerPlmn *AreaScope_TacInfoPerPlmn `json:"tacInfoPerPlmn,omitempty"`
-	TacList        *[]Tac                    `json:"tacList,omitempty"`
-}
-
-// A map (list of key-value pairs) where PlmnId converted to a string serves as key
-type AreaScope_TacInfoPerPlmn struct {
-	AdditionalProperties map[string]TacInfo `json:"-"`
-}
-
-// Integer where the allowed values correspond to the value range of an unsigned 16-bit integer.
-type AreaSessionId Uint16
-
-// Integer value indicating the ARFCN applicable for a downlink, uplink or bi-directional (TDD) NR global frequency raster, as definition of "ARFCN-ValueNR" IE in clause 6.3.2 of 3GPP TS 38.331.
-type ArfcnValueNR int
-
-// Contains Allocation and Retention Priority information.
-type Arp struct {
-	// The enumeration PreemptionCapability indicates the pre-emption capability of a request on other QoS flows.  See clause 5.7.2.2 of 3GPP TS 23.501. It shall comply with the provisions defined in table 5.5.3.1-1.
-	PreemptCap PreemptionCapability `json:"preemptCap"`
-
-	// The enumeration PreemptionVulnerability indicates the pre-emption vulnerability of the QoS flow to pre-emption from other QoS flows. See clause 5.7.2.2 of 3GPP TS 23.501. It shall comply with the provisions defined in table 5.5.3.2-1
-	PreemptVuln PreemptionVulnerability `json:"preemptVuln"`
-
-	// nullable true shall not be used for this attribute. Unsigned integer indicating the ARP Priority Level (see clause 5.7.2.2 of 3GPP TS 23.501, within the range 1 to 15.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 15 as the lowest priority.
-	PriorityLevel *ArpPriorityLevel `json:"priorityLevel"`
-}
-
-// nullable true shall not be used for this attribute. Unsigned integer indicating the ARP Priority Level (see clause 5.7.2.2 of 3GPP TS 23.501, within the range 1 to 15.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 15 as the lowest priority.
-type ArpPriorityLevel int
-
-// This data type is defined in the same way as the 'ArpPriorityLevel' data type, but with the OpenAPI 'nullable: true' property.
-type ArpPriorityLevelRm int
-
-// This data type is defined in the same way as the 'Arp' data type, but with the OpenAPI 'nullable: true' property.
-type ArpRm interface{}
-
-// contains a search parameter and its positive or negative content.
-type Atom struct {
-	// contains the name of a defined query parameter.
-	Attr string `json:"attr"`
-
-	// indicates whether the negative condition applies for the query condition
-	Negative *bool       `json:"negative,omitempty"`
-	Value    interface{} `json:"value"`
-}
-
-// Containes Capability to support procedures related to Access Traffic Steering, Switching, Splitting.
-type AtsssCapability struct {
-	// Indicates the ATSSS-LL capability to support procedures related to Access Traffic Steering, Switching, Splitting (see clauses 4.2.10, 5.32 of 3GPP TS 23.501) true: Supported false (default): Not Supported
-	AtsssLL *bool `json:"atsssLL,omitempty"`
-
-	// Indicates the MPTCP capability to support procedures related to Access Traffic Steering, Switching, Splitting (see clauses 4.2.10, 5.32 of 3GPP TS 23.501 true: Supported false (default): Not Supported
-	Mptcp *bool `json:"mptcp,omitempty"`
-
-	// This IE is only used by the UPF to indicate whether the UPF supports RTT measurement without PMF (see clauses 5.32.2, 6.3.3.3 of 3GPP TS 23.501 true: Supported false (default): Not Supported
-	RttWithoutPmf *bool `json:"rttWithoutPmf,omitempty"`
-}
-
-// Possible values are:
-// - "EAP_SUCCESS": The NSSAA status is EAP-Success.
-// - "EAP_FAILURE": The NSSAA status is EAP-Failure.
-// - "PENDING": The NSSAA status is Pending.
-type AuthStatus string
-
-// Unsigned integer indicating Averaging Window (see clause 5.7.3.6 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds.
-type AverWindow int
-
-// This data type is defined in the same way as the 'AverWindow' data type, but with the OpenAPI 'nullable: true' property.
-type AverWindowRm int
-
-// Provides details of the Backup AMF.
-type BackupAmfInfo struct {
-	// Fully Qualified Domain Name
-	BackupAmf AmfName `json:"backupAmf"`
-
-	// If present, this IE shall contain the list of GUAMI(s) (supported by the AMF) for which the backupAmf IE applies.
-	GuamiList *[]Guami `json:"guamiList,omitempty"`
-}
-
-// Parameters "replaceableInd" and "rechargeableInd" are only included if the value of Parameter "batteryInd" is true.
-type BatteryIndication struct {
-	// This IE shall indicate whether the UE is battery powered or not. true: the UE is battery powered; false or absent: the UE is not battery powered
-	BatteryInd *bool `json:"batteryInd,omitempty"`
-
-	// This IE shall indicate whether the battery of the UE is rechargeable or not. true: the battery of UE is rechargeable; false or absent: the battery of the UE is not rechargeable.
-	RechargeableInd *bool `json:"rechargeableInd,omitempty"`
-
-	// This IE shall indicate whether the battery of the UE is replaceable or not. true: the battery of the UE is replaceable; false or absent: the battery of the UE is not replaceable.
-	ReplaceableInd *bool `json:"replaceableInd,omitempty"`
-}
-
-// This data type is defined in the same way as the 'BatteryIndication' data type, but with the OpenAPI 'nullable: true' property.
-type BatteryIndicationRm interface{}
-
-// string with format 'binary' as defined in OpenAPI
-type Binary string
-
-// string with format 'binary' as defined in OpenAPI OpenAPI with 'nullable: true' property.
-type BinaryRm string
-
-// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-type BitRate string
-
-// This data type is defined in the same way as the 'BitRate' data type, but with the OpenAPI 'nullable: true' property.
-type BitRateRm string
-
-// string with format 'bytes' as defined in OpenAPI
-type Bytes []byte
-
-// string with format 'bytes' as defined in OpenAPI OpenAPI with 'nullable: true' property.
-type BytesRm []byte
-
-// String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003.
-type CMsisdn string
-
-// String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003 with the OpenAPI 'nullable: true' property.
-type CMsisdnRm string
-
-// String containing a Closed Access Group Identifier.
-type CagId string
-
-// Contains a Cell Global Identification as defined in 3GPP TS 23.003, clause 4.3.1.
-type CellGlobalId struct {
-	CellId string `json:"cellId"`
-	Lac    string `json:"lac"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-}
-
-// It contains data which need to be changed.
-type ChangeItem struct {
-	// indicates the path of the source JSON element (according to JSON Pointer syntax) being moved or copied to the location indicated by the "path" attribute. It shall be present if the "op" attribute is of value "MOVE".
-	From     *string      `json:"from,omitempty"`
-	NewValue *interface{} `json:"newValue,omitempty"`
-
-	// Indicates the type of change to be performed.
-	Op        ChangeType   `json:"op"`
-	OrigValue *interface{} `json:"origValue,omitempty"`
-
-	// contains a JSON pointer value (as defined in IETF RFC 6901) that references a target location within the resource on which the change has been applied.
-	Path string `json:"path"`
-}
-
-// Indicates the type of change to be performed.
-type ChangeType string
-
-// Integer where the allowed values correspond to the value range of an unsigned 32-bit integer.
-type ChargingId Uint32
-
-// A conjunctive normal form
-type Cnf struct {
-	CnfUnits []CnfUnit `json:"cnfUnits"`
-}
-
-// During the processing of cnfUnits attribute, all the members in the array shall be interpreted as logically concatenated with logical "AND".
-type CnfUnit struct {
-	CnfUnit []Atom `json:"cnfUnit"`
-}
-
-// The enumeration CollectionPeriodRmmLteMdt defines Collection period for RRM measurements LTE for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.15-1.
-type CollectionPeriodRmmLteMdt string
-
-// The enumeration CollectionPeriodRmmNrMdt defines Collection period for RRM measurements NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.19-1
-type CollectionPeriodRmmNrMdt string
-
-// The ComplexQuery data type is either a conjunctive normal form or a disjunctive normal form. The attribute names "cnfUnits" and "dnfUnits" (see clause 5.2.4.11 and clause 5.2.4.12) serve as discriminator.
-type ComplexQuery interface{}
-
-// It contains the Core Network type 5GC or EPC.
-type CoreNetworkType string
-
-// It contains the Core Network type 5GC or EPC but with the OpenAPI 'nullable: true' property.
-type CoreNetworkTypeRm interface{}
-
-// string with format 'date' as defined in OpenAPI
-type Date openapi_types.Date
-
-// string with format 'date' as defined in OpenAPI OpenAPI with 'nullable: true' property.
-type DateRm openapi_types.Date
-
-// string with format 'date-time' as defined in OpenAPI.
-type DateTime time.Time
-
-// string with format 'date-time' as defined in OpenAPI with 'nullable:true' property.
-type DateTimeRm time.Time
-
-// integer between and including 1 and 7 denoting a weekday. 1 shall indicate Monday, and the subsequent weekdays  shall be indicated with the next higher numbers. 7 shall indicate Sunday.
-type DayOfWeek int
-
-// Contains a Traffic Descriptor.
-type DddTrafficDescriptor struct {
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	Ipv4Addr *Ipv4Addr `json:"ipv4Addr,omitempty"`
-
-	// String identifying an IPv6 address formatted according to clause 4 of RFC5952. The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used
-	Ipv6Addr *Ipv6Addr `json:"ipv6Addr,omitempty"`
-
-	// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-	MacAddr *MacAddr48 `json:"macAddr,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	PortNumber *Uinteger `json:"portNumber,omitempty"`
-}
-
-// Fully Qualified Domain Name
-type DiameterIdentity Fqdn
-
-// Fully Qualified Domain Name, but it also allows the null value
-type DiameterIdentityRm FqdnRm
-
-// Possible values are:
-// - BUFFERED: The first downlink data is buffered with extended buffering matching the source of the downlink traffic.
-// - TRANSMITTED: The first downlink data matching the source of the downlink traffic is transmitted after previous buffering or discarding of corresponding packet(s) because the UE of the PDU Session becomes ACTIVE, and buffered data can be delivered to UE.
-// - DISCARDED: The first downlink data matching the source of the downlink traffic is discarded because the Extended Buffering time, as determined by the SMF, expires or the amount of downlink data to be buffered is exceeded.
-type DlDataDeliveryStatus string
-
-// This data type is defined in the same way as the ' DlDataDeliveryStatus ' data type, but with the OpenAPI 'nullable: true' property.
-type DlDataDeliveryStatusRm interface{}
-
-// DNAI (Data network access identifier), see clause 5.6.7 of 3GPP TS 23.501.
-type Dnai string
-
-// Possible values are:
-// - EARLY: Early notification of UP path reconfiguration.
-// - EARLY_LATE: Early and late notification of UP path reconfiguration. This value shall only be present in the subscription to the DNAI change event.
-// - LATE: Late notification of UP path reconfiguration.
-type DnaiChangeType string
-
-// It can take the values  as specified for DnaiChangeType but with the OpenAPI 'nullable: true' property.
-type DnaiChangeTypeRm interface{}
-
-// This data type is defined in the same way as the 'Dnai' data type, but with the OpenAPI 'nullable: true' property.
-type DnaiRm string
-
-// A disjunctive normal form
-type Dnf struct {
-	DnfUnits []DnfUnit `json:"dnfUnits"`
-}
-
-// During the processing of dnfUnits attribute, all the members in the array shall be interpreted as logically concatenated with logical "OR".
-type DnfUnit struct {
-	DnfUnit []Atom `json:"dnfUnit"`
-}
-
-// String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; it shall contain either a DNN Network Identifier, or a full DNN with both the Network Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1 and 9.1.2. It shall be coded as string in which the labels are separated by dots (e.g. "Label1.Label2.Label3").
-type Dnn string
-
-// "String representing a Data Network as defined in clause 9A of 3GPP TS 23.003;  it shall contain either a DNN Network Identifier, or a full DNN with both the  Network Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1  and 9.1.2. It shall be coded as string in which the labels are separated by dots  (e.g. 'Label1.Label2.Label3') with the OpenAPI 'nullable: true' property."
-type DnnRm string
-
-// string with format 'double' as defined in OpenAPI
-type Double float64
-
-// string with format 'double' as defined in OpenAPI with 'nullable: true' property.
-type DoubleRm float64
-
-// indicating a time in seconds.
-type DurationSec int
-
-// indicating a time in seconds with OpenAPI defined 'nullable: true' property.
-type DurationSecRm int
-
-// It indicates the QoS Characteristics for a Non-standardised or not pre-configured 5QI for downlink and uplink.
-type Dynamic5Qi struct {
-	// Unsigned integer indicating Averaging Window (see clause 5.7.3.6 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds.
-	AverWindow *AverWindow `json:"averWindow,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-	CnPacketDelayBudgetDl *ExtPacketDelBudget `json:"cnPacketDelayBudgetDl,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-	CnPacketDelayBudgetUl *ExtPacketDelBudget `json:"cnPacketDelayBudgetUl,omitempty"`
-
-	// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-	ExtMaxDataBurstVol *ExtMaxDataBurstVol `json:"extMaxDataBurstVol,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-	ExtPacketDelBudget *ExtPacketDelBudget `json:"extPacketDelBudget,omitempty"`
-
-	// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-	MaxDataBurstVol *MaxDataBurstVol `json:"maxDataBurstVol,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds.
-	PacketDelayBudget PacketDelBudget `json:"packetDelayBudget"`
-
-	// String representing Packet Error Rate (see clause 5.7.3.5 and 5.7.4 of 3GPP TS 23.501, expressed as a "scalar x 10-k" where the scalar and the exponent k are each encoded as one decimal digit.
-	PacketErrRate PacketErrRate `json:"packetErrRate"`
-
-	// Unsigned integer indicating the 5QI Priority Level (see clauses 5.7.3.3 and 5.7.4 of 3GPP TS 23.501, within the range 1 to 127.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 127 as the lowest priority.
-	PriorityLevel N5QiPriorityLevel `json:"priorityLevel"`
-
-	// The enumeration QosResourceType indicates whether a QoS Flow is non-GBR, delay critical GBR, or non-delay critical GBR (see clauses 5.7.3.4 and 5.7.3.5 of 3GPP TS 23.501). It shall comply with the provisions defined in table 5.5.3.6-1.
-	ResourceType QosResourceType `json:"resourceType"`
-}
-
-// This represents the identifier of the eNB ID as specified in clause 9.2.1.37 of  3GPP TS 36.413. The string shall be formatted with the following pattern  '^('MacroeNB-[A-Fa-f0-9]{5}|LMacroeNB-[A-Fa-f0-9]{6}|SMacroeNB-[A-Fa-f0-9]{5}|HomeeNB-[A-Fa-f0-9]{7})$'. The value of the eNB ID shall be encoded in hexadecimal representation. Each character in the  string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits.  The padding 0 shall be added to make multiple nibbles, so the most significant character  representing the padding 0 if required together with the 4 most significant bits of the eNB ID  shall appear first in the string, and the character representing the 4 least significant bit  of the eNB ID (to form a nibble) shall appear last in the string.
-type ENbId string
-
-// Contains EAS IP replacement information for a Source and a Target EAS.
-type EasIpReplacementInfo struct {
-	// Represents the IP address and port of an EAS server.
-	Source EasServerAddress `json:"source"`
-
-	// Represents the IP address and port of an EAS server.
-	Target EasServerAddress `json:"target"`
-}
-
-// Represents the IP address and port of an EAS server.
-type EasServerAddress struct {
-	// Contains an IP adresse.
-	Ip IpAddr `json:"ip"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	Port Uinteger `json:"port"`
-}
-
-// Contains the ECGI (E-UTRAN Cell Global Identity), as described in 3GPP 23.003
-type Ecgi struct {
-	// 28-bit string identifying an E-UTRA Cell Id as specified in clause 9.3.1.9 of  3GPP TS 38.413, in hexadecimal representation. Each character in the string shall take a  value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most  significant character representing the 4 most significant bits of the Cell Id shall appear  first in the string, and the character representing the 4 least significant bit of the  Cell Id shall appear last in the string.
-	EutraCellId EutraCellId `json:"eutraCellId"`
-
-	// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-	Nid *Nid `json:"nid,omitempty"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-}
-
-// This data type is defined in the same way as the 'Ecgi' data type, but with the OpenAPI 'nullable: true' property.
-type EcgiRm interface{}
-
-// Contains the Edge Configuration Server Address Configuration Information as defined in clause 5.2.3.6.1 of 3GPP TS 23.502.
-type EcsServerAddr struct {
-	EcsFqdnList      *[]Fqdn   `json:"ecsFqdnList,omitempty"`
-	EcsIpAddressList *[]IpAddr `json:"ecsIpAddressList,omitempty"`
-	EcsProviderId    *string   `json:"ecsProviderId,omitempty"`
-}
-
-// This data type is defined in the same way as the ' EcsServerAddr ' data type, but with the OpenAPI 'nullable: true' property.
-type EcsServerAddrRm interface{}
-
-// Empty JSON object { }, it is defined with the keyword additionalProperties false
-type EmptyObject map[string]interface{}
-
-// 28-bit string identifying an E-UTRA Cell Id as specified in clause 9.3.1.9 of  3GPP TS 38.413, in hexadecimal representation. Each character in the string shall take a  value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most  significant character representing the 4 most significant bits of the Cell Id shall appear  first in the string, and the character representing the 4 least significant bit of the  Cell Id shall appear last in the string.
-type EutraCellId string
-
-// This data type is defined in the same way as the 'EutraCellId' data type, but with the OpenAPI 'nullable: true' property.
-type EutraCellIdRm string
-
-// Contains the E-UTRA user location.
-type EutraLocation struct {
-	// The value represents the elapsed time in minutes since the last network contact of the mobile station. Value "0" indicates that the location information was obtained after a successful paging procedure for Active Location Retrieval when the UE is in idle mode or after a successful NG-RAN location reporting procedure with the eNB when the UE is in connected mode. Any other value than "0" indicates that the location information is the last known one. See 3GPP TS 29.002 clause 17.7.8.
-	AgeOfLocationInformation *int `json:"ageOfLocationInformation,omitempty"`
-
-	// Contains the ECGI (E-UTRAN Cell Global Identity), as described in 3GPP 23.003
-	Ecgi Ecgi `json:"ecgi"`
-
-	// Refers to Calling Geodetic Location. See ITU-T Recommendation Q.763 (1999) [24] clause 3.88.2. Only the description of an ellipsoid point with uncertainty circle is allowed to be used.
-	GeodeticInformation *string `json:"geodeticInformation,omitempty"`
-
-	// Refer to geographical Information. See 3GPP TS 23.032 clause 7.3.2. Only the description of an ellipsoid point with uncertainty circle is allowed to be used.
-	GeographicalInformation *string `json:"geographicalInformation,omitempty"`
-
-	// One of the six attributes n3IwfId, gNbIdm, ngeNbId, wagfId, tngfId, eNbId shall be present.
-	GlobalENbId *GlobalRanNodeId `json:"globalENbId,omitempty"`
-
-	// One of the six attributes n3IwfId, gNbIdm, ngeNbId, wagfId, tngfId, eNbId shall be present.
-	GlobalNgenbId *GlobalRanNodeId `json:"globalNgenbId,omitempty"`
-
-	// This flag when present shall indicate that the Ecgi shall be ignored When present, it shall be set as follows: - true: ecgi shall be ignored. - false (default): ecgi shall not be ignored.
-	IgnoreEcgi *bool `json:"ignoreEcgi,omitempty"`
-	IgnoreTai  *bool `json:"ignoreTai,omitempty"`
-
-	// Contains the tracking area identity as described in 3GPP 23.003
-	Tai Tai `json:"tai"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	UeLocationTimestamp *DateTime `json:"ueLocationTimestamp,omitempty"`
-}
-
-// This data type is defined in the same way as the 'EutraLocation' data type, but with the OpenAPI 'nullable: true' property.
-type EutraLocationRm interface{}
-
-// The enumeration EventForMdt defines events triggered measurement for logged MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.11-1
-type EventForMdt string
-
-// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-type ExtMaxDataBurstVol int
-
-// This data type is defined in the same way as the 'ExtMaxDataBurstVol' data type, but with the OpenAPI 'nullable: true' property.
-type ExtMaxDataBurstVolRm int
-
-// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-type ExtPacketDelBudget int
-
-// This data type is defined in the same way as the 'ExtPacketDelBudget' data type, but with the OpenAPI 'nullable: true' property.
-type ExtPacketDelBudgetRm int
-
-// ExtSnssai defines model for ExtSnssai.
-type ExtSnssai struct {
-	// Embedded struct due to allOf(#/components/schemas/Snssai)
-	Snssai `yaml:",inline"`
-	// Embedded struct due to allOf(#/components/schemas/SnssaiExtension)
-	SnssaiExtension `yaml:",inline"`
-}
-
-// String identifying External Group Identifier that identifies a group made up of one or more  subscriptions associated to a group of IMSIs, as specified in clause 19.7.3 of 3GPP TS 23.003.
-type ExternalGroupId string
-
-// String identifying External Group Identifier that identifies a group made up of one or more  subscriptions associated to a group of IMSIs, as specified in clause 19.7.3 of 3GPP TS 23.003  with the OpenAPI 'nullable: true' property.
-type ExternalGroupIdRm string
-
-// List of geographic area or list of civic address info for MBS Service Area
-type ExternalMbsServiceArea interface{}
-
-// string with format 'float' as defined in OpenAPI.
-type Float float32
-
-// string with format 'float' as defined in OpenAPI with the OpenAPI defined 'nullable: true' property.
-type FloatRm float32
-
-// Fully Qualified Domain Name
-type Fqdn string
-
-// Fully Qualified Domain Name, but it also allows the null value
-type FqdnRm interface{}
-
-// Provides the G-NB identifier.
-type GNbId struct {
-	// Unsigned integer representing the bit length of the gNB ID as defined in clause 9.3.1.6 of 3GPP TS 38.413 [11], within the range 22 to 32.
-	BitLength int `json:"bitLength"`
-
-	// This represents the identifier of the gNB. The value of the gNB ID shall be encoded in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The padding 0 shall be added to make multiple nibbles,  the most significant character representing the padding 0 if required together with the 4 most significant bits of the gNB ID  shall appear first in the string, and the character representing the 4 least significant bit of the gNB ID shall appear last in the string.
-	GNBValue string `json:"gNBValue"`
-}
-
-// Global Cable Identifier uniquely identifying the connection between the 5G-CRG or FN-CRG to the 5GS. See clause 28.15.4 of 3GPP TS 23.003.  This shall be encoded as a string per clause 28.15.4 of 3GPP TS 23.003, and compliant with the syntax specified  in clause 2.2 of IETF RFC 7542 for the username part of a NAI. The GCI value is specified in CableLabs WR-TR-5WWC-ARCH.
-type Gci string
-
-// Exactly one of cgi, sai or lai shall be present.
-type GeraLocation interface{}
-
-// string with format 'bytes' as defined in OpenAPI
-type Gli Bytes
-
-// One of the six attributes n3IwfId, gNbIdm, ngeNbId, wagfId, tngfId, eNbId shall be present.
-type GlobalRanNodeId interface{}
-
-// String identifying a Gpsi shall contain either an External Id or an MSISDN.  It shall be formatted as follows -External Identifier= "extid-<extid>, where <extid>  shall be formatted according to clause 19.7.2 of 3GPP TS 23.003 that describes an  External Identifier.
-type Gpsi string
-
-// "String identifying a Gpsi shall contain either an External Id or an MSISDN. It shall be  formatted as follows -External Identifier= 'extid-<extid>, where <extid> shall be formatted  according to clause 19.7.2 of 3GPP TS 23.003 that describes an External Identifier with the  OpenAPI 'nullable: true' property. "
-type GpsiRm string
-
-// String identifying a group of devices network internal globally unique ID which identifies a set of IMSIs, as specified in clause 19.9 of 3GPP TS 23.003.
-type GroupId string
-
-// String identifying a group of devices network internal globally unique ID which identifies a set of IMSIs, as specified in clause 19.9 of 3GPP TS 23.003 with the OpenAPI 'nullable: true' property.
-type GroupIdRm string
-
-// Globally Unique AMF Identifier constructed out of PLMN, Network and AMF identity.
-type Guami struct {
-	// String identifying the AMF ID composed of AMF Region ID (8 bits), AMF Set ID (10 bits) and AMF  Pointer (6 bits) as specified in clause 2.10.1 of 3GPP TS 23.003. It is encoded as a string of  6 hexadecimal characters (i.e., 24 bits).
-	AmfId AmfId `json:"amfId"`
-
-	// Contains the serving core network operator PLMN ID and, for an SNPN, the NID that together with the PLMN ID identifies the SNPN.
-	PlmnId PlmnIdNid `json:"plmnId"`
-}
-
-// This data type is defined in the same way as the 'Guami' data type, but with the OpenAPI 'nullable: true' property.
-type GuamiRm interface{}
-
-// Hypertext Application Language (HAL) template contains the extended 3GPP hypermedia format.
-type HalTemplate struct {
-	// The media type that should be used for the corresponding request. If the attribute is missing, or contains an unrecognized value, the client should act as if the contentType is set to "application/json".
-	ContentType *string `json:"contentType,omitempty"`
-
-	// HTTP methodes.
-	Method HttpMethod `json:"method"`
-
-	// The properties that should be included in the body of the corresponding request. If the contentType attribute is set to "application/json", then this attribute describes the attributes of the JSON object of the body.
-	Properties *[]Property `json:"properties,omitempty"`
-
-	// A human-readable string that can be used to identify this template
-	Title *string `json:"title,omitempty"`
-}
-
-// This IE represents the identifier of the HFC node Id as specified in CableLabs WR-TR-5WWC-ARCH. It is provisioned by the wireline operator as part of wireline operations and may contain up to six characters.
-type HfcNId string
-
-// This data type is defined in the same way as the 'HfcNId' data type, but with the OpenAPI 'nullable: true' property.
-type HfcNIdRm string
-
-// REpresents the HFC Node Identifer received over NGAP.
-type HfcNodeId struct {
-	// This IE represents the identifier of the HFC node Id as specified in CableLabs WR-TR-5WWC-ARCH. It is provisioned by the wireline operator as part of wireline operations and may contain up to six characters.
-	HfcNId HfcNId `json:"hfcNId"`
-}
-
-// This data type is defined in the same way as the 'HfcNodeId' data type, but with the OpenAPI 'nullable: true' property.
-type HfcNodeIdRm interface{}
-
-// HTTP methodes.
-type HttpMethod string
-
-// string with format 'int32' as defined in OpenAPI.
-type Int32 int32
-
-// string with format 'int32' as defined in OpenAPI with the OpenAPI defined 'nullable: true' property.
-type Int32Rm int32
-
-// string with format 'int64' as defined in OpenAPI.
-type Int64 int64
-
-// string with format 'int64' as defined in OpenAPI with the OpenAPI defined 'nullable: true' property.
-type Int64Rm int64
-
-// Indicates the Inter Frequency Target information.
-type InterFreqTargetInfo struct {
-	// When present, this IE shall contain a list of the physical cell identities where the UE is requested to perform measurement logging for the indicated frequency.
-	CellIdList *[]PhysCellId `json:"cellIdList,omitempty"`
-
-	// Integer value indicating the ARFCN applicable for a downlink, uplink or bi-directional (TDD) NR global frequency raster, as definition of "ARFCN-ValueNR" IE in clause 6.3.2 of 3GPP TS 38.331.
-	DlCarrierFreq ArfcnValueNR `json:"dlCarrierFreq"`
-}
-
-// It contains an invalid parameter and a related description.
-type InvalidParam struct {
-	// If the invalid parameter is an attribute in a JSON body, this IE shall contain the attribute's name and shall be encoded as a JSON Pointer. If the invalid parameter is an HTTP header, this IE shall be formatted as the concatenation of the string "header " plus the name of such header. If the invalid parameter is a query parameter, this IE shall be formatted as the concatenation of the string "query " plus the name of such query parameter. If the invalid parameter is a variable part in the path of a resource URI, this IE shall contain the name of the variable, including the symbols "{" and "}" used in OpenAPI specification as the notation to represent variable path segments.
-	Param string `json:"param"`
-
-	// A human-readable reason, e.g. "must be a positive integer". In cases involving failed operations in a PATCH request, the reason string should identify the operation that failed using the operation's array index to assist in correlation of the invalid parameter with the failed operation, e.g." Replacement value invalid for attribute (failed operation index= 4)"
-	Reason *string `json:"reason,omitempty"`
-}
-
-// Contains an IP adresse.
-type IpAddr interface{}
-
-// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-type Ipv4Addr string
-
-// String identifying a IPv4 address mask formatted in the 'dotted decimal' notation as defined in RFC 1166.
-type Ipv4AddrMask string
-
-// String identifying a IPv4 address mask formatted in the 'dotted decimal' notation as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property.
-type Ipv4AddrMaskRm string
-
-// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property.
-type Ipv4AddrRm string
-
-// Ipv6Addr defines model for Ipv6Addr.
-type Ipv6Addr struct {
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-}
-
-// Ipv6AddrRm defines model for Ipv6AddrRm.
-type Ipv6AddrRm struct {
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-}
-
-// Ipv6Prefix defines model for Ipv6Prefix.
-type Ipv6Prefix struct {
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-}
-
-// Ipv6PrefixRm defines model for Ipv6PrefixRm.
-type Ipv6PrefixRm struct {
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-}
-
-// The enumeration JobType defines Job Type in the trace. See 3GPP TS 32.422 for further  description of the values. It shall comply with the provisions defined in table 5.6.3.3-1.
-type JobType string
-
-// Possible values are:
-// - "LOCATION_ALLOWED_WITH_NOTIFICATION": Location allowed with notification
-// - "LOCATION_ALLOWED_WITHOUT_NOTIFICATION": Location allowed without notification
-// - "LOCATION_ALLOWED_WITHOUT_RESPONSE": Location with notification and privacy verification; location allowed if no response
-// - "LOCATION_RESTRICTED_WITHOUT_RESPONSE": Location with notification and privacy verification; location restricted if no response
-// - "NOTIFICATION_ONLY": Notification only
-// - "NOTIFICATION_AND_VERIFICATION_ONLY": Notification and privacy verification only
-type LcsServiceAuth string
-
-// Possible values are:
-// - DSL: Identifies a DSL line
-// - PON: Identifies a PON line
-type LineType string
-
-// This data type is defined in the same way as the 'LineType' data type, but with the OpenAPI 'nullable: true' property.
-type LineTypeRm interface{}
-
-// It contains the URI of the linked resource.
-type Link struct {
-	// String providing an URI formatted according to RFC 3986
-	Href *Uri `json:"href,omitempty"`
-}
-
-// It contains the URI of the linked resource with the OpenAPI 'nullable: true' property.
-type LinkRm struct {
-	// String providing an URI formatted according to RFC 3986
-	Href *Uri `json:"href,omitempty"`
-}
-
-// A list of mutually exclusive alternatives of 1 or more links
-type LinksValueSchema interface{}
-
-// Contains a Location area identification as defined in 3GPP TS 23.003, clause 4.1.
-type LocationAreaId struct {
-	// Location Area Code
-	Lac string `json:"lac"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-}
-
-// The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.12-1.
-type LoggingDurationMdt string
-
-// The enumeration LoggingDurationMdt defines Logging Duration in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.20-1.
-type LoggingDurationNrMdt string
-
-// The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.12-1.
-type LoggingIntervalMdt string
-
-// The enumeration LoggingIntervalNrMdt defines Logging Interval in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.18-1.
-type LoggingIntervalNrMdt string
-
-// Contains LTE V2X services authorized information.
-type LteV2xAuth struct {
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	PedestrianUeAuth *UeAuth `json:"pedestrianUeAuth,omitempty"`
-
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	VehicleUeAuth *UeAuth `json:"vehicleUeAuth,omitempty"`
-}
-
-// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042
-type MacAddr48 string
-
-// String identifying a MAC address formatted in the hexadecimal notation according to clause 1.1 and clause 2.1 of RFC 7042 with the OpenAPI 'nullable: true' property.
-type MacAddr48Rm string
-
-// string with format 'bytes' as defined in OpenAPI
-type ManAssiUeRadioCapId Bytes
-
-// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-type MaxDataBurstVol int
-
-// This data type is defined in the same way as the 'MaxDataBurstVol' data type, but with the OpenAPI 'nullable: true' property.
-type MaxDataBurstVolRm int
-
-// MBS Service Area
-type MbsServiceArea struct {
-	// List of NR cell Ids
-	NcgiList *[]NcgiTai `json:"ncgiList,omitempty"`
-
-	// List of tracking area Ids
-	TaiList *[]Tai `json:"taiList,omitempty"`
-}
-
-// Indicates the type of an MBS session
-type MbsServiceType string
-
-// Individual MBS session
-type MbsSession interface{}
-
-// Indicates the MBS session's activity status
-type MbsSessionActivityStatus string
-
-// MBS session event
-type MbsSessionEvent struct {
-	// MBS Session Event Type
-	EventType MbsSessionEventType `json:"eventType"`
-}
-
-// MBS session event report
-type MbsSessionEventReport struct {
-	// MBS Session Event Type
-	EventType MbsSessionEventType `json:"eventType"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	TimeStamp *DateTime `json:"timeStamp,omitempty"`
-}
-
-// MBS session event report list
-type MbsSessionEventReportList struct {
-	EventReportList     []MbsSessionEventReport `json:"eventReportList"`
-	NotifyCorrelationId *string                 `json:"notifyCorrelationId,omitempty"`
-}
-
-// MBS Session Event Type
-type MbsSessionEventType string
-
-// MBS Session Identifier
-type MbsSessionId struct {
-	// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-	Nid *Nid `json:"nid,omitempty"`
-
-	// Source specific IP multicast address
-	Ssm *Ssm `json:"ssm,omitempty"`
-
-	// Temporary Mobile Group Identity
-	Tmgi *Tmgi `json:"tmgi,omitempty"`
-}
-
-// MBS session subscription
-type MbsSessionSubscription struct {
-	// Integer where the allowed values correspond to the value range of an unsigned 16-bit integer.
-	AreaSessionId *AreaSessionId    `json:"areaSessionId,omitempty"`
-	EventList     []MbsSessionEvent `json:"eventList"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	ExpiryTime *DateTime `json:"expiryTime,omitempty"`
-
-	// MBS Session Identifier
-	MbsSessionId *MbsSessionId `json:"mbsSessionId,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	MbsSessionSubscUri *Uri `json:"mbsSessionSubscUri,omitempty"`
-
-	// String uniquely identifying a NF instance. The format of the NF Instance ID shall be a  Universally Unique Identifier (UUID) version 4, as described in IETF RFC 4122.
-	NfcInstanceId       *NfInstanceId `json:"nfcInstanceId,omitempty"`
-	NotifyCorrelationId *string       `json:"notifyCorrelationId,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	NotifyUri Uri `json:"notifyUri"`
-}
-
-// Contains an MBSFN area information.
-type MbsfnArea struct {
-	// When present, this IE shall contain the Carrier Frequency (EARFCN).
-	CarrierFrequency *int `json:"carrierFrequency,omitempty"`
-
-	// This IE shall contain the MBSFN Area ID.
-	MbsfnAreaId *int `json:"mbsfnAreaId,omitempty"`
-}
-
-// Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-type Mcc string
-
-// "Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of  3GPP TS 38.413 with the OpenAPI 'nullable: true' property. "
-type MccRm string
-
-// contains contain MDT configuration data.
-type MdtConfiguration struct {
-	AddPositioningMethodList *[]PositioningMethodMdt `json:"addPositioningMethodList,omitempty"`
-
-	// Contain the area based on Cells or Tracking Areas.
-	AreaScope *AreaScope `json:"areaScope,omitempty"`
-
-	// The enumeration CollectionPeriodRmmLteMdt defines Collection period for RRM measurements LTE for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.15-1.
-	CollectionPeriodRmmLte *CollectionPeriodRmmLteMdt `json:"collectionPeriodRmmLte,omitempty"`
-
-	// The enumeration CollectionPeriodRmmNrMdt defines Collection period for RRM measurements NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.19-1
-	CollectionPeriodRmmNr *CollectionPeriodRmmNrMdt `json:"collectionPeriodRmmNr,omitempty"`
-	EventList             *[]EventForMdt            `json:"eventList,omitempty"`
-
-	// This IE shall be present if the report trigger parameter is configured for A2 event reporting or A2 event triggered periodic reporting and the job type parameter is configured for Immediate MDT or combined Immediate MDT and Trace in LTE. When present, this IE shall indicate the Event Threshold for RSRP, and the value shall be between 0-97.
-	EventThresholdRsrp *int `json:"eventThresholdRsrp,omitempty"`
-
-	// This IE shall be present if the report trigger parameter is configured for A2 event reporting or A2 event triggered periodic reporting and the job type parameter is configured for Immediate MDT or combined Immediate MDT and Trace in NR.When present, this IE shall indicate the Event Threshold for RSRP, and the value shall be between 0-127.
-	EventThresholdRsrpNr *int `json:"eventThresholdRsrpNr,omitempty"`
-
-	// This IE shall be present if the report trigger parameter is configured for A2 event reporting or A2 event triggered periodic reporting and the job type parameter is configured for Immediate MDT or combined Immediate MDT and Trace in LTE.When present, this IE shall indicate the Event Threshold for RSRQ, and the value shall be between 0-34.
-	EventThresholdRsrq *int `json:"eventThresholdRsrq,omitempty"`
-
-	// This IE shall be present if the report trigger parameter is configured for A2 event reporting or A2 event triggered periodic reporting and the job type parameter is configured for Immediate MDT or combined Immediate MDT and Trace in NR.When present, this IE shall indicate the Event Threshold for RSRQ, and the value shall be between 0-127.
-	EventThresholdRsrqNr *int                   `json:"eventThresholdRsrqNr,omitempty"`
-	InterFreqTargetList  *[]InterFreqTargetInfo `json:"interFreqTargetList,omitempty"`
-
-	// The enumeration JobType defines Job Type in the trace. See 3GPP TS 32.422 for further  description of the values. It shall comply with the provisions defined in table 5.6.3.3-1.
-	JobType JobType `json:"jobType"`
-
-	// The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.12-1.
-	LoggingDuration *LoggingDurationMdt `json:"loggingDuration,omitempty"`
-
-	// The enumeration LoggingDurationMdt defines Logging Duration in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.20-1.
-	LoggingDurationNr *LoggingDurationNrMdt `json:"loggingDurationNr,omitempty"`
-
-	// The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.12-1.
-	LoggingInterval *LoggingIntervalMdt `json:"loggingInterval,omitempty"`
-
-	// The enumeration LoggingIntervalNrMdt defines Logging Interval in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.18-1.
-	LoggingIntervalNr    *LoggingIntervalNrMdt   `json:"loggingIntervalNr,omitempty"`
-	MbsfnAreaList        *[]MbsfnArea            `json:"mbsfnAreaList,omitempty"`
-	MdtAllowedPlmnIdList *[]PlmnId               `json:"mdtAllowedPlmnIdList,omitempty"`
-	MeasurementLteList   *[]MeasurementLteForMdt `json:"measurementLteList,omitempty"`
-	MeasurementNrList    *[]MeasurementNrForMdt  `json:"measurementNrList,omitempty"`
-
-	// The enumeration MeasurementPeriodLteMdt defines Measurement period LTE for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.16-1.
-	MeasurementPeriodLte *MeasurementPeriodLteMdt `json:"measurementPeriodLte,omitempty"`
-
-	// The enumeration LoggingDurationMdt defines Logging Duration for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.13-1.
-	PositioningMethod *PositioningMethodMdt `json:"positioningMethod,omitempty"`
-
-	// The enumeration ReportAmountMdt defines Report Amount for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.10-1.
-	ReportAmount *ReportAmountMdt `json:"reportAmount,omitempty"`
-
-	// The enumeration ReportIntervalMdt defines Report Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.9-1.
-	ReportInterval *ReportIntervalMdt `json:"reportInterval,omitempty"`
-
-	// The enumeration ReportIntervalNrMdt defines Report Interval in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.17-1.
-	ReportIntervalNr *ReportIntervalNrMdt `json:"reportIntervalNr,omitempty"`
-
-	// The enumeration ReportTypeMdt defines Report Type for logged MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.4-1.
-	ReportType            *ReportTypeMdt       `json:"reportType,omitempty"`
-	ReportingTriggerList  *[]ReportingTrigger  `json:"reportingTriggerList,omitempty"`
-	SensorMeasurementList *[]SensorMeasurement `json:"sensorMeasurementList,omitempty"`
-}
-
-// The enumeration MeasurementLteForMdt defines Measurements used for MDT in LTE in the trace. See 3GPP TS 32.422  for further description of the values. It shall comply with the provisions defined in table 5.6.3.5-1.
-type MeasurementLteForMdt string
-
-// The enumeration MeasurementNrForMdt defines Measurements used for MDT in NR in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.6-1.
-type MeasurementNrForMdt string
-
-// The enumeration MeasurementPeriodLteMdt defines Measurement period LTE for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.16-1.
-type MeasurementPeriodLteMdt string
-
-// Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-type Mnc string
-
-// Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413 with the OpenAPI 'nullable: true' property.
-type MncRm string
-
-// Contain the MO Exception Data Counter.
-type MoExpDataCounter struct {
-	// Unsigned integer identifying the MO Exception Data Counter, as specified in clause 5.31.14.3 of 3GPP TS 23.501.
-	Counter int `json:"counter"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	TimeStamp *DateTime `json:"timeStamp,omitempty"`
-}
-
-// String uniquely identifying MTC provider information.
-type MtcProviderInformation string
-
-// This represents the identifier of the N3IWF ID as specified in clause 9.3.1.57 of  3GPP TS 38.413 in hexadecimal representation. Each character in the string shall take a value  of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant  character representing the 4 most significant bits of the N3IWF ID shall appear first in the  string, and the character representing the 4 least significant bit of the N3IWF ID shall  appear last in the string.
-type N3IwfId string
-
-// Contains the Non-3GPP access user location.
-type N3gaLocation struct {
-	// Global Cable Identifier uniquely identifying the connection between the 5G-CRG or FN-CRG to the 5GS. See clause 28.15.4 of 3GPP TS 23.003.  This shall be encoded as a string per clause 28.15.4 of 3GPP TS 23.003, and compliant with the syntax specified  in clause 2.2 of IETF RFC 7542 for the username part of a NAI. The GCI value is specified in CableLabs WR-TR-5WWC-ARCH.
-	Gci *Gci `json:"gci,omitempty"`
-
-	// string with format 'bytes' as defined in OpenAPI
-	Gli *Gli `json:"gli,omitempty"`
-
-	// REpresents the HFC Node Identifer received over NGAP.
-	HfcNodeId *HfcNodeId `json:"hfcNodeId,omitempty"`
-
-	// This IE shall contain the N3IWF identifier received over NGAP and shall be encoded as a  string of hexadecimal characters. Each character in the string shall take a value of "0"  to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant  character representing the 4 most significant bits of the N3IWF ID shall appear first in  the string, and the character representing the 4 least significant bit of the N3IWF ID  shall appear last in the string.
-	N3IwfId *string `json:"n3IwfId,omitempty"`
-
-	// Contains the tracking area identity as described in 3GPP 23.003
-	N3gppTai *Tai `json:"n3gppTai,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	PortNumber *Uinteger `json:"portNumber,omitempty"`
-
-	// Possible values are:
-	// - UDP: User Datagram Protocol.
-	// - TCP: Transmission Control Protocol.
-	Protocol *TransportProtocol `json:"protocol,omitempty"`
-
-	// Contain the TNAP Identifier see clause5.6.2 of 3GPP TS 23.501.
-	TnapId *TnapId `json:"tnapId,omitempty"`
-
-	// Contain the TWAP Identifier as defined in clause 4.2.8.5.3 of 3GPP TS 23.501.
-	TwapId *TwapId `json:"twapId,omitempty"`
-
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	UeIpv4Addr *Ipv4Addr `json:"ueIpv4Addr,omitempty"`
-
-	// String identifying an IPv6 address formatted according to clause 4 of RFC5952. The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used
-	UeIpv6Addr *Ipv6Addr `json:"ueIpv6Addr,omitempty"`
-
-	// Possible values are:
-	// - DSL: Identifies a DSL line
-	// - PON: Identifies a PON line
-	W5gbanLineType *LineType `json:"w5gbanLineType,omitempty"`
-}
-
-// Contains the NCGI (NR Cell Global Identity), as described in 3GPP 23.003
-type Ncgi struct {
-	// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-	Nid *Nid `json:"nid,omitempty"`
-
-	// 36-bit string identifying an NR Cell Id as specified in clause 9.3.1.7 of 3GPP TS 38.413,  in hexadecimal representation. Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character  representing the 4 most significant bits of the Cell Id shall appear first in the string, and  the character representing the 4 least significant bit of the Cell Id shall appear last in the  string.
-	NrCellId NrCellId `json:"nrCellId"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-}
-
-// This data type is defined in the same way as the 'Ncgi' data type, but with the OpenAPI 'nullable: true' property.
-type NcgiRm interface{}
-
-// List of NR cell ids, with their pertaining TAIs
-type NcgiTai struct {
-	// List of List of NR cell ids
-	CellList []Ncgi `json:"cellList"`
-
-	// Contains the tracking area identity as described in 3GPP 23.003
-	Tai Tai `json:"tai"`
-}
-
-// contains PLMN and Network identity.
-type NetworkId struct {
-	// Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mcc *Mcc `json:"mcc,omitempty"`
-
-	// Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mnc *Mnc `json:"mnc,omitempty"`
-}
-
-// Identifier of a group of NFs.
-type NfGroupId string
-
-// String uniquely identifying a NF instance. The format of the NF Instance ID shall be a  Universally Unique Identifier (UUID) version 4, as described in IETF RFC 4122.
-type NfInstanceId openapi_types.UUID
-
-// NF Service Set Identifier (see clause 28.12 of 3GPP TS 23.003) formatted as the following  string  " set<Set ID>.sn<Service Name>.nfi<NF Instance ID>.5gc.mnc<MNC>.mcc<MCC>">", or  "set<SetID>.sn<ServiceName>.nfi<NFInstanceID>.5gc.nid<NID>.mnc<MNC>.mcc<MCC>" with <MCC>  encoded as defined in clause 5.4.2 ("Mcc" data type definition)  <MNC> encoded as defined in  clause 5.4.2 ("Mnc" data type definition)  <NID> encoded as defined in clause 5.4.2 ("Nid"  data type definition) <NFInstanceId> encoded as defined in clause 5.3.2 <ServiceName> encoded  as defined in 3GPP TS 29.510 <Set ID> encoded as a string of characters consisting of  alphabetic characters (A-Z and a-z), digits (0-9) and/or the hyphen (-) and that shall end  with either an alphabetic character or a digit.
-type NfServiceSetId string
-
-// NF Set Identifier (see clause 28.12 of 3GPP TS 23.003), formatted as the following string "  set<Set ID>.<nftype>set.5gc.mnc<MNC>.mcc<MCC>", or "set<SetID>.  <NFType>set.5gc.nid<NID>.mnc<MNC>.mcc<MCC>" with <MCC> encoded as defined in clause 5.4.2  ("Mcc" data type definition) <MNC> encoded as defined in clause 5.4.2 ("Mnc" data type  definition) <NFType> encoded as a value defined in Table 6.1.6.3.3-1 of 3GPP TS 29.510 but  with lower case characters <Set ID> encoded as a string of characters consisting of alphabetic  characters (A-Z and a-z), digits (0-9) and/or the hyphen (-) and that shall end with either an  alphabetic character or a digit.
-type NfSetId string
-
-// Represents the NGAP cause.
-type NgApCause struct {
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	Group Uinteger `json:"group"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	Value Uinteger `json:"value"`
-}
-
-// This represents the identifier of the ng-eNB ID as specified in clause 9.3.1.8 of  3GPP TS 38.413. The value of the ng-eNB ID shall be encoded in hexadecimal representation.  Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and  shall represent 4 bits. The padding 0 shall be added to make multiple nibbles, so the most  significant character representing the padding 0 if required together with the 4 most  significant bits of the ng-eNB ID shall appear first in the string, and the character  representing the 4 least significant bit of the ng-eNB ID (to form a nibble) shall appear last  in the string.
-type NgeNbId string
-
-// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-type Nid string
-
-// This data type is defined in the same way as the 'Nid' data type, but with the OpenAPI 'nullable: true' property.
-type NidRm string
-
-// It indicates the QoS Characteristics for a standardized or pre-configured 5QI for downlink and uplink.
-type NonDynamic5Qi struct {
-	// Unsigned integer indicating Averaging Window (see clause 5.7.3.6 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds.
-	AverWindow *AverWindow `json:"averWindow,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-	CnPacketDelayBudgetDl *ExtPacketDelBudget `json:"cnPacketDelayBudgetDl,omitempty"`
-
-	// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501 [8])), expressed in 0.01 milliseconds.
-	CnPacketDelayBudgetUl *ExtPacketDelBudget `json:"cnPacketDelayBudgetUl,omitempty"`
-
-	// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-	ExtMaxDataBurstVol *ExtMaxDataBurstVol `json:"extMaxDataBurstVol,omitempty"`
-
-	// Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of 3GPP TS 23.501), expressed in Bytes.
-	MaxDataBurstVol *MaxDataBurstVol `json:"maxDataBurstVol,omitempty"`
-
-	// Unsigned integer indicating the 5QI Priority Level (see clauses 5.7.3.3 and 5.7.4 of 3GPP TS 23.501, within the range 1 to 127.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 127 as the lowest priority.
-	PriorityLevel *N5QiPriorityLevel `json:"priorityLevel,omitempty"`
-}
-
-// The enumeration NotificationControl indicates whether notifications are requested from the RAN when the GFBR can no longer (or again) be fulfilled for a QoS Flow during the lifetime of the QoS Flow (see clause 5.7.2.4 of 3GPP TS 23.501). It shall comply with the provisions defined in table 5.5.3.5-1.
-type NotificationControl string
-
-// This enumeration is defined in the same way as the 'NotificationControl' enumeration, but with the OpenAPI 'nullable: true' property.
-type NotificationControlRm interface{}
-
-// Possible values are:
-// - ACTIVATE: The event notification is activated.
-// - DEACTIVATE: The event notification is deactivated and shall be muted. The available event(s) shall be stored.
-// - RETRIEVAL: The event notification shall be sent to the NF service consumer(s), after that, is muted again.
-type NotificationFlag string
-
-// Indicates changes on a resource.
-type NotifyItem struct {
-	Changes []ChangeItem `json:"changes"`
-
-	// String providing an URI formatted according to RFC 3986
-	ResourceId Uri `json:"resourceId"`
-}
-
-// 36-bit string identifying an NR Cell Id as specified in clause 9.3.1.7 of 3GPP TS 38.413,  in hexadecimal representation. Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character  representing the 4 most significant bits of the Cell Id shall appear first in the string, and  the character representing the 4 least significant bit of the Cell Id shall appear last in the  string.
-type NrCellId string
-
-// This data type is defined in the same way as the 'NrCellId' data type, but with the OpenAPI 'nullable: true' property.
-type NrCellIdRm string
-
-// Contains the NR user location.
-type NrLocation struct {
-	// The value represents the elapsed time in minutes since the last network contact of the mobile station. Value "0" indicates that the location information was obtained after a successful paging  procedure for Active Location Retrieval when the UE is in idle mode or after a successful  NG-RAN location reporting procedure with the eNB when the UE is in connected mode. Any other value than "0" indicates that the location information is the last known one. See 3GPP TS 29.002 clause 17.7.8.
-	AgeOfLocationInformation *int `json:"ageOfLocationInformation,omitempty"`
-
-	// Refers to Calling Geodetic Location. See ITU-T Recommendation Q.763 (1999) [24] clause 3.88.2. Only the description of an ellipsoid point with uncertainty circle is allowed to be used.
-	GeodeticInformation *string `json:"geodeticInformation,omitempty"`
-
-	// Refer to geographical Information. See 3GPP TS 23.032 clause 7.3.2. Only the description of an ellipsoid point with uncertainty circle is allowed to be used.
-	GeographicalInformation *string `json:"geographicalInformation,omitempty"`
-
-	// One of the six attributes n3IwfId, gNbIdm, ngeNbId, wagfId, tngfId, eNbId shall be present.
-	GlobalGnbId *GlobalRanNodeId `json:"globalGnbId,omitempty"`
-	IgnoreNcgi  *bool            `json:"ignoreNcgi,omitempty"`
-
-	// Contains the NCGI (NR Cell Global Identity), as described in 3GPP 23.003
-	Ncgi Ncgi `json:"ncgi"`
-
-	// Contains the tracking area identity as described in 3GPP 23.003
-	Tai Tai `json:"tai"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	UeLocationTimestamp *DateTime `json:"ueLocationTimestamp,omitempty"`
-}
-
-// This data type is defined in the same way as the 'NrLocation' data type, but with the OpenAPI 'nullable: true' property.
-type NrLocationRm interface{}
-
-// Contains NR V2X services authorized information.
-type NrV2xAuth struct {
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	PedestrianUeAuth *UeAuth `json:"pedestrianUeAuth,omitempty"`
-
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	VehicleUeAuth *UeAuth `json:"vehicleUeAuth,omitempty"`
-}
-
-// String providing a Network Slice Simultaneous Registration Group. See clause 5.15.12 of 3GPP TS 23.501
-type NsSrg string
-
-// String providing a Network Slice Simultaneous Registration Group with the OpenAPI "nullable: true" property. See clause 5.15.12 of 3GPP TS 23.501
-type NsSrgRm string
-
-// contains the Subscribed S-NSSAI subject to NSSAA procedure and the status.
-type NssaaStatus struct {
-	// When Snssai needs to be converted to string (e.g. when used in maps as key), the string shall be composed of one to three digits "sst" optionally followed by "-" and 6 hexadecimal digits "sd".
-	Snssai Snssai `json:"snssai"`
-
-	// Possible values are:
-	// - "EAP_SUCCESS": The NSSAA status is EAP-Success.
-	// - "EAP_FAILURE": The NSSAA status is EAP-Failure.
-	// - "PENDING": The NSSAA status is Pending.
-	Status AuthStatus `json:"status"`
-}
-
-// This data type is defined in the same way as the 'NssaaStatus' data type, but with the OpenAPI 'nullable: true' property.
-type NssaaStatusRm interface{}
-
-// JSON's null value.
-type NullValue interface{}
-
-// Contains information regarding operater  determined  barring.
-type OdbData struct {
-	// The enumeration RoamingOdb defines the Barring of Roaming as. See 3GPP TS 23.015 for further description. It shall comply with the provisions defined in table 5.7.3.1-1.
-	RoamingOdb *RoamingOdb `json:"roamingOdb,omitempty"`
-}
-
-// The enumeration OdbPacketServices defines the Barring of Packet Oriented Services. See 3GPP TS 23.015 for further description. It shall comply with the provisions defined in table 5.7.3.2-1
-type OdbPacketServices interface{}
-
-// Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds.
-type PacketDelBudget int
-
-// This data type is defined in the same way as the 'PacketDelBudget' data type, but with the OpenAPI 'nullable: true' property
-type PacketDelBudgetRm int
-
-// String representing Packet Error Rate (see clause 5.7.3.5 and 5.7.4 of 3GPP TS 23.501, expressed as a "scalar x 10-k" where the scalar and the exponent k are each encoded as one decimal digit.
-type PacketErrRate string
-
-// This data type is defined in the same way as the 'PacketErrRate' data type, but with the OpenAPI 'nullable: true' property.
-type PacketErrRateRm string
-
-// Unsigned integer indicating Packet Loss Rate (see clauses 5.7.2.8 and 5.7.4 of 3GPP TS 23.501), expressed in tenth of percent.
-type PacketLossRate int
-
-// This data type is defined in the same way as the 'PacketLossRate' data type, but with the OpenAPI 'nullable: true' property.
-type PacketLossRateRm int
-
-// Possible values are:
-// - "TAC": Type Allocation Code
-// - "SUBPLMN": Subscriber PLMN ID
-// - "GEOAREA": Geographical area, i.e. list(s) of TAI(s)
-// - "SNSSAI": S-NSSAI
-// - "DNN": DNN
-type PartitioningCriteria string
-
-// This data type is defined in the same way as the ' PartitioningCriteria ' data type, but with the OpenAPI 'nullable: true' property.
-type PartitioningCriteriaRm interface{}
-
-// it contains information on data to be changed.
-type PatchItem struct {
-	// indicates the path of the source JSON element (according to JSON Pointer syntax) being moved or copied to the location indicated by the "path" attribute.
-	From *string `json:"from,omitempty"`
-
-	// Operations as defined in IETF RFC 6902.
-	Op PatchOperation `json:"op"`
-
-	// contains a JSON pointer value (as defined in IETF RFC 6901) that references a location of a resource on which the patch operation shall be performed.
-	Path  string       `json:"path"`
-	Value *interface{} `json:"value,omitempty"`
-}
-
-// Operations as defined in IETF RFC 6902.
-type PatchOperation string
-
-// The execution report result on failed modification.
-type PatchResult struct {
-	// The execution report contains an array of report items. Each report item indicates one failed modification.
-	Report []ReportItem `json:"report"`
-}
-
-// it shall represent the PC5 Flow Bit Rates
-type Pc5FlowBitRates struct {
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	GuaFbr *BitRate `json:"guaFbr,omitempty"`
-
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	MaxFbr *BitRate `json:"maxFbr,omitempty"`
-}
-
-// Contains policy data on the PC5 QoS parameters.
-type Pc5QoSPara struct {
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	Pc5LinkAmbr    *BitRate         `json:"pc5LinkAmbr,omitempty"`
-	Pc5QosFlowList []Pc5QosFlowItem `json:"pc5QosFlowList"`
-}
-
-// Contains a PC5 QOS flow.
-type Pc5QosFlowItem struct {
-	// it shall represent the PC5 Flow Bit Rates
-	Pc5FlowBitRates *Pc5FlowBitRates `json:"pc5FlowBitRates,omitempty"`
-
-	// Unsigned integer representing a 5G QoS Identifier (see clause 5.7.2.1 of 3GPP TS 23.501, within the range 0 to 255
-	Pqi N5Qi `json:"pqi"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	Range *Uinteger `json:"range,omitempty"`
-}
-
-// Contains the PCF for the UE information necessary for the PCF for the PDU session to send  SM Policy Association Establishment and Termination events.
-type PcfUeCallbackInfo struct {
-	BindingInfo *string `json:"bindingInfo,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	CallbackUri Uri `json:"callbackUri"`
-}
-
-// Unsigned integer identifying a PDU session, within the range 0 to 255, as specified in  clause 11.2.3.1b, bits 1 to 8, of 3GPP TS 24.007. If the PDU Session ID is allocated by the  Core Network for UEs not supporting N1 mode, reserved range 64 to 95 is used. PDU Session ID  within the reserved range is only visible in the Core Network.
-type PduSessionId int
-
-// indicates the DNN and S-NSSAI combination of a PDU session.
-type PduSessionInfo struct {
-	// String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; it shall contain either a DNN Network Identifier, or a full DNN with both the Network Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1 and 9.1.2. It shall be coded as string in which the labels are separated by dots (e.g. "Label1.Label2.Label3").
-	Dnn Dnn `json:"dnn"`
-
-	// When Snssai needs to be converted to string (e.g. when used in maps as key), the string shall be composed of one to three digits "sst" optionally followed by "-" and 6 hexadecimal digits "sd".
-	Snssai Snssai `json:"snssai"`
-}
-
-// PduSessionType indicates the type of a PDU session. It shall comply with the provisions defined in table 5.4.3.3-1.
-type PduSessionType string
-
-// PduSessionType indicates the type of a PDU session. It shall comply with the provisions defined in table 5.4.3.3-1 but with the OpenAPI "nullable: true" property.
-type PduSessionTypeRm interface{}
-
-// String representing a Permanent Equipment Identifier that may contain - an IMEI or IMEISV, as  specified in clause 6.2 of 3GPP TS 23.003; a MAC address for a 5G-RG or FN-RG via wireline  access, with an indication that this address cannot be trusted for regulatory purpose if this  address cannot be used as an Equipment Identifier of the FN-RG, as specified in clause 4.7.7  of 3GPP TS23.316. Examples are imei-012345678901234 or imeisv-0123456789012345.
-type Pei string
-
-// This data type is defined in the same way as the 'Pei' data type but with the OpenAPI 'nullable: true' property.
-type PeiRm string
-
-// Integer value identifying the physical cell identity (PCI), as definition of "PhysCellId" IE  in clause 6.3.2 of 3GPP TS 38.331.
-type PhysCellId int
-
-// string with format 'bytes' as defined in OpenAPI
-type PlmnAssiUeRadioCapId Bytes
-
-// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-type PlmnId struct {
-	// Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mcc Mcc `json:"mcc"`
-
-	// Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mnc Mnc `json:"mnc"`
-}
-
-// Contains the serving core network operator PLMN ID and, for an SNPN, the NID that together with the PLMN ID identifies the SNPN.
-type PlmnIdNid struct {
-	// Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mcc Mcc `json:"mcc"`
-
-	// Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413.
-	Mnc Mnc `json:"mnc"`
-
-	// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-	Nid *Nid `json:"nid,omitempty"`
-}
-
-// This data type is defined in the same way as the 'PlmnIdNid' data type, but with the OpenAPI 'nullable: true' property.
-type PlmnIdNidRm interface{}
-
-// This data type is defined in the same way as the 'PlmnId' data type, but with the OpenAPI 'nullable: true' property.
-type PlmnIdRm interface{}
-
-// The enumeration LoggingDurationMdt defines Logging Duration for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.13-1.
-type PositioningMethodMdt string
-
-// The enumeration PreemptionCapability indicates the pre-emption capability of a request on other QoS flows.  See clause 5.7.2.2 of 3GPP TS 23.501. It shall comply with the provisions defined in table 5.5.3.1-1.
-type PreemptionCapability string
-
-// This enumeration is defined in the same way as the 'PreemptionCapability' enumeration, but with the OpenAPI 'nullable: true' property.
-type PreemptionCapabilityRm interface{}
-
-// The enumeration PreemptionVulnerability indicates the pre-emption vulnerability of the QoS flow to pre-emption from other QoS flows. See clause 5.7.2.2 of 3GPP TS 23.501. It shall comply with the provisions defined in table 5.5.3.2-1
-type PreemptionVulnerability string
-
-// This enumeration is defined in the same way as the 'PreemptionVulnerability' enumeration, but with the OpenAPI 'nullable: true' property.
-type PreemptionVulnerabilityRm interface{}
-
-// If the additionalPraId IE is present, this IE shall state the presence information of the UE for the individual PRA identified by the additionalPraId IE;  If the additionalPraId IE is not present, this IE shall state the presence information of the UE for the PRA identified by the praId IE.
-type PresenceInfo struct {
-	// This IE may be present if the praId IE is present and if it contains a PRA identifier referring to a set of Core Network predefined Presence Reporting Areas. When present, this IE shall contain a PRA Identifier of an individual PRA within the Set of Core Network predefined Presence Reporting Areas indicated by the praId IE.
-	AdditionalPraId *string `json:"additionalPraId,omitempty"`
-
-	// Represents the list of EUTRAN cell Ids that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of EUTRAN cell Ids.
-	EcgiList *[]Ecgi `json:"ecgiList,omitempty"`
-
-	// Represents the list of NG RAN node identifiers that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of NG RAN node identifiers.
-	GlobalRanNodeIdList *[]GlobalRanNodeId `json:"globalRanNodeIdList,omitempty"`
-
-	// Represents the list of eNodeB identifiers that constitutes the area. This IE shall be  present if the Area of Interest subscribed is a list of eNodeB identifiers.
-	GlobaleNbIdList *[]GlobalRanNodeId `json:"globaleNbIdList,omitempty"`
-
-	// Represents the list of NR cell Ids that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of NR cell Ids.
-	NcgiList *[]Ncgi `json:"ncgiList,omitempty"`
-
-	// Represents an identifier of the Presence Reporting Area (see clause 28.10 of 3GPP TS 23.003.  This IE shall be present  if the Area of Interest subscribed or reported is a Presence Reporting Area or a Set of Core Network predefined Presence Reporting Areas. When present, it shall be encoded as a string representing an integer in the following ranges: 0 to 8 388 607 for UE-dedicated PRA 8 388 608 to 16 777 215 for Core Network predefined PRA Examples: PRA ID 123 is encoded as "123" PRA ID 11 238 660 is encoded as "11238660"
-	PraId *string `json:"praId,omitempty"`
-
-	// Possible values are:
-	// -IN_AREA: Indicates that the UE is inside or enters the presence reporting area.
-	// -OUT_OF_AREA: Indicates that the UE is outside or leaves the presence reporting area
-	// -UNKNOW: Indicates it is unknown whether the UE is in the presence reporting area or not
-	// -INACTIVE: Indicates that the presence reporting area is inactive in the serving node.
-	PresenceState *PresenceState `json:"presenceState,omitempty"`
-
-	// Represents the list of tracking areas that constitutes the area. This IE shall be present if the subscription or  the event report is for tracking UE presence in the tracking areas. For non 3GPP access the TAI shall be the N3GPP TAI.
-	TrackingAreaList *[]Tai `json:"trackingAreaList,omitempty"`
-}
-
-// "This data type is defined in the same way as the 'PresenceInfo' data type, but with the OpenAPI 'nullable: true' property.  If the additionalPraId IE is present, this IE shall state the presence information of the UE for the individual PRA identified by the additionalPraId IE;  If the additionalPraId IE is not present, this IE shall state the presence information of the UE for the PRA identified by the praId IE. "
-type PresenceInfoRm struct {
-	// This IE may be present if the praId IE is present and if it contains a PRA identifier referring to a set of Core Network predefined Presence Reporting Areas. When present, this IE shall contain a PRA Identifier of an individual PRA within the Set of Core Network predefined Presence Reporting Areas indicated by the praId IE.
-	AdditionalPraId *string `json:"additionalPraId,omitempty"`
-
-	// Represents the list of EUTRAN cell Ids that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of EUTRAN cell Ids.
-	EcgiList *[]Ecgi `json:"ecgiList,omitempty"`
-
-	// Represents the list of NG RAN node identifiers that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of NG RAN node identifiers.
-	GlobalRanNodeIdList *[]GlobalRanNodeId `json:"globalRanNodeIdList,omitempty"`
-
-	// Represents the list of eNodeB identifiers that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of eNodeB identifiers.
-	GlobaleNbIdList *[]GlobalRanNodeId `json:"globaleNbIdList,omitempty"`
-
-	// Represents the list of NR cell Ids that constitutes the area. This IE shall be present if the Area of Interest subscribed is a list of NR cell Ids.
-	NcgiList *[]Ncgi `json:"ncgiList,omitempty"`
-
-	// Represents an identifier of the Presence Reporting Area (see clause 28.10 of 3GPP TS 23.003. This IE shall be present
-	// if the Area of Interest subscribed or reported is a Presence Reporting Area or a Set of Core Network predefined Presence Reporting Areas.
-	// When present, it shall be encoded as a string representing an integer in the following ranges:
-	// - 0 to 8 388 607 for UE-dedicated PRA
-	// - 8 388 608 to 16 777 215 for Core Network predefined PRA
-	// Examples:
-	// PRA ID 123 is encoded as "123"
-	// PRA ID 11 238 660 is encoded as "11238660"
-	PraId *string `json:"praId,omitempty"`
-
-	// Possible values are:
-	// -IN_AREA: Indicates that the UE is inside or enters the presence reporting area.
-	// -OUT_OF_AREA: Indicates that the UE is outside or leaves the presence reporting area
-	// -UNKNOW: Indicates it is unknown whether the UE is in the presence reporting area or not
-	// -INACTIVE: Indicates that the presence reporting area is inactive in the serving node.
-	PresenceState *PresenceState `json:"presenceState,omitempty"`
-
-	// Represents the list of tracking areas that constitutes the area. This IE shall be present if the subscription or the event report  is for tracking UE presence in the tracking areas. For non 3GPP access the TAI shall be the N3GPP TAI.
-	TrackingAreaList *[]Tai `json:"trackingAreaList,omitempty"`
-}
-
-// Possible values are:
-// -IN_AREA: Indicates that the UE is inside or enters the presence reporting area.
-// -OUT_OF_AREA: Indicates that the UE is outside or leaves the presence reporting area
-// -UNKNOW: Indicates it is unknown whether the UE is in the presence reporting area or not
-// -INACTIVE: Indicates that the presence reporting area is inactive in the serving node.
-type PresenceState string
-
-// Provides additional information in an error response.
-type ProblemDetails struct {
-	// A machine-readable application error cause specific to this occurrence of the problem.  This IE should be present and provide application-related error information, if available.
-	Cause *string `json:"cause,omitempty"`
-
-	// A human-readable explanation specific to this occurrence of the problem.
-	Detail *string `json:"detail,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	Instance      *Uri            `json:"instance,omitempty"`
-	InvalidParams *[]InvalidParam `json:"invalidParams,omitempty"`
-
-	// Fully Qualified Domain Name
-	NrfId  *Fqdn `json:"nrfId,omitempty"`
-	Status *int  `json:"status,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *SupportedFeatures `json:"supportedFeatures,omitempty"`
-	Title             *string            `json:"title,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	Type *Uri `json:"type,omitempty"`
-}
-
-// If the contentType attribute is set to "application/json", then this attribute describes the attributes of the JSON object of the body.
-type Property struct {
-	// The name of the property
-	Name string `json:"name"`
-
-	// A regular expression string to be applied to the value of the property.
-	Regex *string `json:"regex,omitempty"`
-
-	// Indicates whether the property is required – true= required - false(default)= not required
-	Required *bool `json:"required,omitempty"`
-
-	// The property value. When present, it shall be a valid JSON string.
-	Value *string `json:"value,omitempty"`
-}
-
-// Indicates whether the UE is authorized to use ProSe Direct Discovery, ProSe Direct Communication, or both.
-type ProseServiceAuth struct {
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	ProseDirectCommunicationAuth *UeAuth `json:"proseDirectCommunicationAuth,omitempty"`
-
-	// Possible values are:
-	// - AUTHORIZED: Indicates that the UE is authorized.
-	// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-	ProseDirectDiscoveryAuth *UeAuth `json:"proseDirectDiscoveryAuth,omitempty"`
-}
-
-// Unsigned integer identifying a QoS flow, within the range 0 to 63.
-type Qfi int
-
-// This data type is defined in the same way as the 'Qfi' data type, but with the OpenAPI 'nullable: true' property.
-type QfiRm int
-
-// Contains QoS flows usage data information.
-type QosFlowUsageReport struct {
-	// string with format 'int64' as defined in OpenAPI.
-	DownlinkVolume Int64 `json:"downlinkVolume"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	EndTimeStamp DateTime `json:"endTimeStamp"`
-
-	// Unsigned integer identifying a QoS flow, within the range 0 to 63.
-	Qfi Qfi `json:"qfi"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	StartTimeStamp DateTime `json:"startTimeStamp"`
-
-	// string with format 'int64' as defined in OpenAPI.
-	UplinkVolume Int64 `json:"uplinkVolume"`
-}
-
-// The enumeration QosResourceType indicates whether a QoS Flow is non-GBR, delay critical GBR, or non-delay critical GBR (see clauses 5.7.3.4 and 5.7.3.5 of 3GPP TS 23.501). It shall comply with the provisions defined in table 5.5.3.6-1.
-type QosResourceType string
-
-// This enumeration is defined in the same way as the 'QosResourceType' enumeration, but with the OpenAPI 'nullable: true' property.
-type QosResourceTypeRm interface{}
-
-// Indicates the radio access used.
-type RatType string
-
-// Provides information about the radio access but with the OpenAPI 'nullable: true' property.
-type RatTypeRm interface{}
-
-// Integer where the allowed values correspond to the value range of an unsigned 32-bit integer.
-type RatingGroup Uint32
-
-// The response shall include a Location header field containing a different URI (pointing to a different URI of an other service instance), or the same URI if a request is redirected to the same target resource via a different SCP.
-type RedirectResponse struct {
-	Cause *string `json:"cause,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	TargetScp *Uri `json:"targetScp,omitempty"`
-
-	// String providing an URI formatted according to RFC 3986
-	TargetSepp *Uri `json:"targetSepp,omitempty"`
-}
-
-// This parameter provides information about the referenced binary body data.
-type RefToBinaryData struct {
-	// This IE shall contain the value of the Content-ID header of the referenced binary body part.
-	ContentId string `json:"contentId"`
-}
-
-// This data type is defined in the same way as the ' RefToBinaryData ' data type, but with the OpenAPI 'nullable: true' property.
-type RefToBinaryDataRm interface{}
-
-// The enumeration ReflectiveQosAttribute indicates whether certain traffic of the QoS flow may be subject to Reflective QoS (see clause 5.7.2.3 of 3GPP TS 23.501). It shall comply with the provisions defined in table 5.5.3.3-1.
-type ReflectiveQoSAttribute string
-
-// This enumeration is defined in the same way as the 'ReflectiveQosAttribute' enumeration, but with the OpenAPI 'nullable: true' property.
-type ReflectiveQoSAttributeRm interface{}
-
-// The enumeration ReportAmountMdt defines Report Amount for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.10-1.
-type ReportAmountMdt string
-
-// The enumeration ReportIntervalMdt defines Report Interval for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.9-1.
-type ReportIntervalMdt string
-
-// The enumeration ReportIntervalNrMdt defines Report Interval in NR for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.17-1.
-type ReportIntervalNrMdt string
-
-// indicates performed modivications.
-type ReportItem struct {
-	// Contains a JSON pointer value (as defined in IETF RFC 6901) that references a location of a resource to which the modification is subject.
-	Path string `json:"path"`
-
-	// A human-readable reason providing details on the reported modification failure. The reason string should identify the operation that failed using the operation's array index to assist in correlation of the invalid parameter with the failed operation, e.g. "Replacement value invalid for attribute (failed operation index= 4)".
-	Reason *string `json:"reason,omitempty"`
-}
-
-// The enumeration ReportTypeMdt defines Report Type for logged MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.4-1.
-type ReportTypeMdt string
-
-// The enumeration ReportingTrigger defines Reporting Triggers for MDT in the trace. See 3GPP TS 32.42] for further description of the values. It shall comply with the provisions defined in table 5.6.3.8-1.
-type ReportingTrigger string
-
-// It contains the restriction type ALLOWED_AREAS or NOT_ALLOWED_AREAS.
-type RestrictionType string
-
-// It contains the restriction type ALLOWED_AREAS or NOT_ALLOWED_AREAS but with the OpenAPI 'nullable: true' property.
-type RestrictionTypeRm interface{}
-
-// Unsigned integer representing the "Subscriber Profile ID for RAT/Frequency Priority"  as specified in 3GPP TS 36.413.
-type RfspIndex int
-
-// "Unsigned integer representing the 'Subscriber Profile ID for RAT/Frequency Priority'  as specified in 3GPP TS 36.413 with the OpenAPI 'nullable: true' property."
-type RfspIndexRm int
-
-// string with format 'bytes' as defined in OpenAPI
-type RgWirelineCharacteristics Bytes
-
-// This data type is defined in the same way as the 'RgWirelineCharacteristics' data type, but with the OpenAPI 'nullable: true' property.
-type RgWirelineCharacteristicsRm interface{}
-
-// The enumeration RoamingOdb defines the Barring of Roaming as. See 3GPP TS 23.015 for further description. It shall comply with the provisions defined in table 5.7.3.1-1.
-type RoamingOdb string
-
-// Indicates if access is allowed to a given serving network, e.g. a PLMN (MCC, MNC) or an SNPN (MCC, MNC, NID).
-type RoamingRestrictions struct {
-	AccessAllowed *bool `json:"accessAllowed,omitempty"`
-}
-
-// At least one of the "ipv4Addr" attribute and the "ipv6Addr" attribute shall be included in the "RouteInformation" data type.
-type RouteInformation struct {
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	Ipv4Addr *Ipv4Addr `json:"ipv4Addr,omitempty"`
-
-	// String identifying an IPv6 address formatted according to clause 4 of RFC5952. The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used
-	Ipv6Addr *Ipv6Addr `json:"ipv6Addr,omitempty"`
-
-	// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-	PortNumber Uinteger `json:"portNumber"`
-}
-
-// Either the "routeInfo" attribute or the "routeProfId" attribute shall be included in the "RouteToLocation" data type.
-type RouteToLocation interface{}
-
-// Contains a Routing Area Identification as defined in 3GPP TS 23.003, clause 4.2.
-type RoutingAreaId struct {
-	// Location Area Code
-	Lac string `json:"lac"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-
-	// Routing Area Code
-	Rac string `json:"rac"`
-}
-
-// Contains the network slice status information in terms of the current number of UEs registered  with a network slice, the current number of PDU Sessions established on a network slice or both.
-type SACEventStatus struct {
-	// Represents threshold(s) to control the triggering of network slice reporting notifications or  the information contained in the network slice reporting notification.
-	ReachedNumPduSess *SACInfo `json:"reachedNumPduSess,omitempty"`
-
-	// Represents threshold(s) to control the triggering of network slice reporting notifications or  the information contained in the network slice reporting notification.
-	ReachedNumUes *SACInfo `json:"reachedNumUes,omitempty"`
-}
-
-// Represents threshold(s) to control the triggering of network slice reporting notifications or  the information contained in the network slice reporting notification.
-type SACInfo struct {
-	NumericValNumPduSess *int `json:"numericValNumPduSess,omitempty"`
-	NumericValNumUes     *int `json:"numericValNumUes,omitempty"`
-	PercValueNumPduSess  *int `json:"percValueNumPduSess,omitempty"`
-	PercValueNumUes      *int `json:"percValueNumUes,omitempty"`
-}
-
-// Unsigned integer indicating Sampling Ratio (see clauses 4.15.1 of 3GPP TS 23.502), expressed in percent.
-type SamplingRatio int
-
-// This data type is defined in the same way as the 'SamplingRatio' data type, but with the  OpenAPI 'nullable: true' property.
-type SamplingRatioRm int
-
-// Indicates the satellite backhaul used.
-type SatelliteBackhaulCategory string
-
-// Provides information about the satellite backhaul but with the OpenAPI 'nullable: true' property.
-type SatelliteBackhaulCategoryRm interface{}
-
-// Identifies time and day of the week when the UE is available for communication.
-type ScheduledCommunicationTime struct {
-	// Identifies the day(s) of the week. If absent, it indicates every day of the week.
-	DaysOfWeek *[]DayOfWeek `json:"daysOfWeek,omitempty"`
-
-	// String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339. Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC).
-	TimeOfDayEnd *TimeOfDay `json:"timeOfDayEnd,omitempty"`
-
-	// String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339. Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC).
-	TimeOfDayStart *TimeOfDay `json:"timeOfDayStart,omitempty"`
-}
-
-// This data type is defined in the same way as the 'ScheduledCommunicationTime' data type, but with the OpenAPI 'nullable: true' property.
-type ScheduledCommunicationTimeRm interface{}
-
-// Possible values are:
-// -DOWNLINK_ONLY: Downlink only
-// -UPLINK_ONLY: Uplink only
-// -BIDIRECTIONA: Bi-directional
-type ScheduledCommunicationType string
-
-// This enumeration is defined in the same way as the 'ScheduledCommunicationTypen' enumeration, but with the OpenAPI 'nullable: true' property.
-type ScheduledCommunicationTypeRm interface{}
-
-// A range of SDs (Slice Differentiators)
-type SdRange struct {
-	// Last value identifying the end of an SD range. This string shall be formatted as specified for the sd attribute of the Snssai data type in clause 5.4.4.2.
-	End *string `json:"end,omitempty"`
-
-	// First value identifying the start of an SD range. This string shall be formatted as specified for the sd attribute of the Snssai data type in clause 5.4.4.2.
-	Start *string `json:"start,omitempty"`
-}
-
-// Secondary RAT Usage Information to report usage data for a secondary RAT for QoS flows and/or the whole PDU session.
-type SecondaryRatUsageInfo struct {
-	PduSessionUsageData *[]VolumeTimedReport  `json:"pduSessionUsageData,omitempty"`
-	QosFlowsUsageData   *[]QosFlowUsageReport `json:"qosFlowsUsageData,omitempty"`
-
-	// Indicates the radio access used.
-	SecondaryRatType RatType `json:"secondaryRatType"`
-}
-
-// Secondary RAT Usage Report to report usage data for a secondary RAT for QoS flows.
-type SecondaryRatUsageReport struct {
-	QosFlowsUsageData []QosFlowUsageReport `json:"qosFlowsUsageData"`
-
-	// Indicates the radio access used.
-	SecondaryRatType RatType `json:"secondaryRatType"`
-}
-
-// It contains the URI of the linked resource
-type SelfLink struct {
-	// It contains the URI of the linked resource.
-	Self Link `json:"self"`
-}
-
-// The enumeration SensorMeasurement defines sensor measurement type for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.7-1.
-type SensorMeasurement string
-
-// Contains addressing information (IP addresses and/or FQDNs) of a server.
-type ServerAddressingInfo interface{}
-
-// Contains a Service Area Identifier as defined in 3GPP TS 23.003, clause 12.5.
-type ServiceAreaId struct {
-	// Location Area Code.
-	Lac string `json:"lac"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-
-	// Service Area Code.
-	Sac string `json:"sac"`
-}
-
-// ServiceAreaRestriction defines model for ServiceAreaRestriction.
-type ServiceAreaRestriction struct {
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-	// Embedded fields due to inline allOf schema
-}
-
-// Integer where the allowed values correspond to the value range of an unsigned 32-bit integer.
-type ServiceId Uint32
-
-// MBR related to slice
-type SliceMbr struct {
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	Downlink BitRate `json:"downlink"`
-
-	// String representing a bit rate prefixes follow the standard symbols from The International System of Units, and represent x1000 multipliers, with the exception that prefix "K" is used to represent the standard symbol "k".
-	Uplink BitRate `json:"uplink"`
-}
-
-// SliceMbr with nullable: true
-type SliceMbrRm interface{}
-
-// It indicates theSmall Data Rate Control Status
-type SmallDataRateStatus struct {
-	// When present, it shall indicate number of additional exception reports the AF is allowed to send downlink in the given time unit for the given PDU session (see clause 5.31.14.3 in 3GPP TS 23.501
-	RemainExReportsDl *int `json:"remainExReportsDl,omitempty"`
-
-	// When present, it shall indicate number of additional exception reports the UE is allowed to send uplink in the given time  unit for  the given PDU session (see clause 5.31.14.3 of 3GPP TS 23.501.
-	RemainExReportsUl *int `json:"remainExReportsUl,omitempty"`
-
-	// When present it shall contain the number of packets the AF is allowed to send downlink in the given time unit for the given PDU session (see clause 5.31.14.3 of 3GPP TS 23.501
-	RemainPacketsDl *int `json:"remainPacketsDl,omitempty"`
-
-	// When present, it shall contain the number of packets the UE is allowed to send uplink in the given time unit for the given PDU session (see clause 5.31.14.3 of 3GPP TS 23.501
-	RemainPacketsUl *int `json:"remainPacketsUl,omitempty"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	ValidityTime *DateTime `json:"validityTime,omitempty"`
-}
-
-// When Snssai needs to be converted to string (e.g. when used in maps as key), the string shall be composed of one to three digits "sst" optionally followed by "-" and 6 hexadecimal digits "sd".
-type Snssai struct {
-	// 3-octet string, representing the Slice Differentiator, in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the SD shall appear first in the string, and the character representing the 4 least significant bit of the SD shall appear last in the string. This is an optional parameter that complements the Slice/Service type(s) to allow to differentiate amongst multiple Network Slices of the same Slice/Service type. This IE shall be absent if no SD value is associated with the SST.
-	Sd *string `json:"sd,omitempty"`
-
-	// Unsigned integer, within the range 0 to 255, representing the Slice/Service Type.  It indicates the expected Network Slice behaviour in terms of features and services. Values 0 to 127 correspond to the standardized SST range. Values 128 to 255 correspond  to the Operator-specific range. See clause 28.4.2 of 3GPP TS 23.003. Standardized values are defined in clause 5.15.2.2 of 3GPP TS 23.501.
-	Sst int `json:"sst"`
-}
-
-// Extensions to the Snssai data type, sdRanges and wildcardSd shall not be present simultaneously
-type SnssaiExtension struct {
-	// When present, it shall contain the range(s) of Slice Differentiator values supported for the Slice/Service Type value indicated in the sst attribute of the Snssai data type
-	SdRanges *[]SdRange `json:"sdRanges,omitempty"`
-
-	// When present, it shall be set to true, to indicate that all SD values are supported for the Slice/Service Type value indicated in the sst attribute of the Snssai data type
-	WildcardSd *bool `json:"wildcardSd,omitempty"`
-}
-
-// Contains the Spatial Validity Condition.
-type SpatialValidityCond struct {
-	Countries        *[]Mcc `json:"countries,omitempty"`
-	TrackingAreaList *[]Tai `json:"trackingAreaList,omitempty"`
-}
-
-// Contains the Spatial Validity Condition or the null value.
-type SpatialValidityCondRm interface{}
-
-// represents the service and session continuity mode It shall comply with the provisions defined in table 5.4.3.6-1.
-type SscMode string
-
-// represents the service and session continuity mode It shall comply with the provisions defined in table 5.4.3.6-1 but with the OpenAPI 'nullable: true' property.
-type SscModeRm interface{}
-
-// Source specific IP multicast address
-type Ssm struct {
-	// Contains an IP adresse.
-	DestIpAddr IpAddr `json:"destIpAddr"`
-
-	// Contains an IP adresse.
-	SourceIpAddr IpAddr `json:"sourceIpAddr"`
-}
-
-// Possible values are:
-// - STATIONARY: Identifies the UE is stationary
-// - MOBILE: Identifies the UE is mobile
-type StationaryIndication string
-
-// This enumeration is defined in the same way as the 'StationaryIndication' enumeration, but with the OpenAPI 'nullable: true' property.
-type StationaryIndicationRm interface{}
-
-// String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003.
-type StnSr string
-
-// String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003 with the OpenAPI 'nullable: true' property.
-type StnSrRm string
-
-// Provides the subsribed 5QI and the ARP, it may contain the priority level.
-type SubscribedDefaultQos struct {
-	// Unsigned integer representing a 5G QoS Identifier (see clause 5.7.2.1 of 3GPP TS 23.501, within the range 0 to 255
-	N5qi N5Qi `json:"5qi"`
-
-	// Contains Allocation and Retention Priority information.
-	Arp Arp `json:"arp"`
-
-	// Unsigned integer indicating the 5QI Priority Level (see clauses 5.7.3.3 and 5.7.4 of 3GPP TS 23.501, within the range 1 to 127.Values are ordered in decreasing order of priority, i.e. with 1 as the highest priority and 127 as the lowest priority.
-	PriorityLevel *N5QiPriorityLevel `json:"priorityLevel,omitempty"`
-}
-
-// String identifying a Supi that shall contain either an IMSI, a network specific identifier, a Global Cable Identifier (GCI) or a Global Line Identifier (GLI) as specified in clause 2.2A of 3GPP TS 23.003. It shall be formatted as follows
-//  - for an IMSI "imsi-<imsi>", where <imsi> shall be formatted according to clause 2.2 of 3GPP TS 23.003 that describes an IMSI.
-//  - for a network specific identifier "nai-<nai>, where <nai> shall be formatted according to clause 28.7.2 of 3GPP TS 23.003 that describes an NAI.
-//  - for a GCI "gci-<gci>", where <gci> shall be formatted according to clause 28.15.2 of 3GPP TS 23.003.
-//  - for a GLI "gli-<gli>", where <gli> shall be formatted according to clause 28.16.2 of 3GPP TS 23.003.To enable that the value is used as part of an URI, the string shall only contain characters allowed according to the "lower-with-hyphen" naming convention defined in 3GPP TS 29.501.
-type Supi string
-
-// String identifying a SUPI or a SUCI.
-type SupiOrSuci string
-
-// This data type is defined in the same way as the 'Supi' data type, but with the OpenAPI 'nullable: true' property.
-type SupiRm string
-
-// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-type SupportedFeatures string
-
-// 2 or 3-octet string identifying a tracking area code as specified in clause 9.3.3.10  of 3GPP TS 38.413, in hexadecimal representation. Each character in the string shall  take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the TAC shall  appear first in the string, and the character representing the 4 least significant bit  of the TAC shall appear last in the string.
-type Tac string
-
-// contains tracking area information (tracking area codes).
-type TacInfo struct {
-	TacList []Tac `json:"tacList"`
-}
-
-// This data type is defined in the same way as the 'Tac' data type, but with the OpenAPI 'nullable: true' property.
-type TacRm string
-
-// Contains the tracking area identity as described in 3GPP 23.003
-type Tai struct {
-	// This represents the Network Identifier, which together with a PLMN ID is used to identify an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1).
-	Nid *Nid `json:"nid,omitempty"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-
-	// 2 or 3-octet string identifying a tracking area code as specified in clause 9.3.3.10  of 3GPP TS 38.413, in hexadecimal representation. Each character in the string shall  take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the TAC shall  appear first in the string, and the character representing the 4 least significant bit  of the TAC shall appear last in the string.
-	Tac Tac `json:"tac"`
-}
-
-// This data type is defined in the same way as the 'Tai' data type, but with the OpenAPI 'nullable: true' property.
-type TaiRm interface{}
-
-// String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339. Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC).
-type TimeOfDay string
-
-// String with format "<time-numoffset>" optionally appended by "<daylightSavingTime>", where
-// -  <time-numoffset> shall represent the time zone adjusted for daylight saving time and be encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339;
-// - <daylightSavingTime> shall represent the adjustment that has been made and shall be encoded as "+1" or "+2" for a +1 or +2 hours adjustment.
-// The example is for 8 hours behind UTC, +1 hour adjustment for Daylight Saving Time.
-type TimeZone string
-
-// "String with format '<time-numoffset>' optionally appended by '<daylightSavingTime>', where
-//   - <time-numoffset> shall represent the time zone adjusted for daylight saving time and be encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339;
-//   - <daylightSavingTime> shall represent the adjustment that has been made and shall be encoded as '+1' or '+2' for a +1 or +2 hours adjustment.
-//   But with the OpenAPI 'nullable: true' property."
-type TimeZoneRm string
-
-// Temporary Mobile Group Identity
-type Tmgi struct {
-	// MBS Service ID
-	MbsServiceId string `json:"mbsServiceId"`
-
-	// When PlmnId needs to be converted to string (e.g. when used in maps as key), the string  shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc".
-	PlmnId PlmnId `json:"plmnId"`
-}
-
-// Contain the TNAP Identifier see clause5.6.2 of 3GPP TS 23.501.
-type TnapId struct {
-	// When present, it shall contain the BSSID of the access point to which the UE is attached, that is received over NGAP, see IEEE Std 802.11-2012.
-	BssId *string `json:"bssId,omitempty"`
-
-	// string with format 'bytes' as defined in OpenAPI
-	CivicAddress *Bytes `json:"civicAddress,omitempty"`
-
-	// This IE shall be present if the UE is accessing the 5GC via a trusted WLAN access network.When present, it shall contain the SSID of the access point to which the UE is attached, that is received over NGAP, see IEEE Std 802.11-2012.
-	SsId *string `json:"ssId,omitempty"`
-}
-
-// This data type is defined in the same way as the 'TnapId' data type, but with the OpenAPI 'nullable: true' property.
-type TnapIdRm interface{}
-
-// This represents the identifier of the TNGF ID as specified in clause 9.3.1.161 of 3GPP TS 38.413  in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a"  to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the  4 most significant bits of the TNGF ID shall appear first in the string, and the character  representing the 4 least significant bit of the TNGF ID shall appear last in the string.
-type TngfId string
-
-// contains Trace control and configuration parameters.
-type TraceData struct {
-	// String identifying a IPv4 address formatted in the 'dotted decimal' notation as defined in RFC 1166.
-	CollectionEntityIpv4Addr *Ipv4Addr `json:"collectionEntityIpv4Addr,omitempty"`
-
-	// String identifying an IPv6 address formatted according to clause 4 of RFC5952. The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used
-	CollectionEntityIpv6Addr *Ipv6Addr `json:"collectionEntityIpv6Addr,omitempty"`
-
-	// Triggering events (see 3GPP TS 32.422).It shall be encoded as an octet string in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits shall appear first in the string, and the character representing the 4 least significant bit shall appear last in the string. Octets shall be coded according to 3GPP TS 32.422.
-	EventList string `json:"eventList"`
-
-	// List of Interfaces (see 3GPP TS 32.422).It shall be encoded as an octet string in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits shall appear first in the string, and the character representing the 4 least significant bit shall appear last in the string. Octets shall be coded according to 3GPP TS 32.422. If this attribute is not present, all the interfaces applicable to the list of NE types indicated in the neTypeList attribute should be traced.
-	InterfaceList *string `json:"interfaceList,omitempty"`
-
-	// List of NE Types (see 3GPP TS 32.422).It shall be encoded as an octet string in hexadecimal representation. Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits shall appear first in the string, and the character representing the 4 least significant bit shall appear last in the string.Octets shall be coded according to 3GPP TS 32.422.
-	NeTypeList string `json:"neTypeList"`
-
-	// The enumeration TraceDepth defines how detailed information should be recorded in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.1-1
-	TraceDepth TraceDepth `json:"traceDepth"`
-
-	// Trace Reference (see 3GPP TS 32.422).It shall be encoded as the concatenation of MCC, MNC and Trace ID as follows: <MCC><MNC>-<Trace ID>The Trace ID shall be encoded as a 3 octet string in hexadecimal representation. Each character in the Trace ID string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character representing the 4 most significant bits of the Trace ID shall appear first  in the string, and the character representing the 4 least significant bit of the Trace ID shall appear last in the string.
-	TraceRef string `json:"traceRef"`
-}
-
-// The enumeration TraceDepth defines how detailed information should be recorded in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.1-1
-type TraceDepth string
-
-// This enumeration is defined in the same way as the 'TraceDepth' enumeration, but with the OpenAPI 'nullable: true' property.
-type TraceDepthRm interface{}
-
-// Possible values are:
-// - SINGLE_TRANS_UL: Uplink single packet transmission.
-// - SINGLE_TRANS_DL: Downlink single packet transmission.
-// - DUAL_TRANS_UL_FIRST: Dual packet transmission, firstly uplink packet transmission with subsequent downlink packet transmission.
-// - DUAL_TRANS_DL_FIRST: Dual packet transmission, firstly downlink packet transmission with subsequent uplink packet transmission.
-type TrafficProfile string
-
-// This enumeration is defined in the same way as the 'TrafficProfile' enumeration, but with the OpenAPI 'nullable: true' property.
-type TrafficProfileRm interface{}
-
-// Possible values are:
-// - UDP: User Datagram Protocol.
-// - TCP: Transmission Control Protocol.
-type TransportProtocol string
-
-// Tunnel address
-type TunnelAddress interface{}
-
-// Contain the TWAP Identifier as defined in clause 4.2.8.5.3 of 3GPP TS 23.501.
-type TwapId struct {
-	// When present, it shall contain the BSSID of the access point to which the UE is attached, for trusted WLAN access, see IEEE Std 802.11-2012.
-	BssId *string `json:"bssId,omitempty"`
-
-	// string with format 'bytes' as defined in OpenAPI
-	CivicAddress *Bytes `json:"civicAddress,omitempty"`
-
-	// This IE shall contain the SSID of the access point to which the UE is attached, that is received over NGAP, see IEEE Std 802.11-2012.
-	SsId string `json:"ssId"`
-}
-
-// This data type is defined in the same way as the 'TwapId' data type, but with the OpenAPI 'nullable: true' property.
-type TwapIdRm interface{}
-
-// Type Allocation Code (TAC) of the UE, comprising the initial eight-digit portion of the 15-digit IMEI and 16-digit IMEISV codes. See clause 6.2 of 3GPP TS 23.003.
-type TypeAllocationCode string
-
-// Possible values are:
-// - AUTHORIZED: Indicates that the UE is authorized.
-// - NOT_AUTHORIZED: Indicates that the UE is not authorized.
-type UeAuth string
-
-// Integer where the allowed values correspond to the value range of an unsigned 16-bit integer.
-type Uint16 int
-
-// Integer where the allowed values correspond to the value range of an unsigned 16-bit integer with the OpenAPI 'nullable: true' property.
-type Uint16Rm int
-
-// Integer where the allowed values correspond to the value range of an unsigned 32-bit integer.
-type Uint32 int
-
-// Integer where the allowed values correspond to the value range of an unsigned 32-bit integer with the OpenAPI 'nullable: true' property.
-type Uint32Rm int32
-
-// Integer where the allowed values correspond to the value range of an unsigned 64-bit integer.
-type Uint64 int
-
-// Integer where the allowed values correspond to the value range of an unsigned 16-bit integer with the OpenAPI 'nullable: true' property.
-type Uint64Rm int
-
-// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible.
-type Uinteger int
-
-// Unsigned Integer, i.e. only value 0 and integers above 0 are permissible with the OpenAPI 'nullable: true' property.
-type UintegerRm int
-
-// indicates whether UP confidentiality protection is required, preferred or not needed for all the traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.5-1.
-type UpConfidentiality string
-
-// indicates whether UP integrity protection is required, preferred or not needed for all the  traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.4-1, but with the OpenAPI 'nullable: true' property.
-type UpConfidentialityRm interface{}
-
-// indicates whether UP integrity protection is required, preferred or not needed for all the traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.4-1.
-type UpIntegrity string
-
-// indicates whether UP integrity protection is required, preferred or not needed for all the traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.4-1.
-type UpIntegrityRm interface{}
-
-// Contains Userplain security information.
-type UpSecurity struct {
-	// indicates whether UP confidentiality protection is required, preferred or not needed for all the traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.5-1.
-	UpConfid UpConfidentiality `json:"upConfid"`
-
-	// indicates whether UP integrity protection is required, preferred or not needed for all the traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.4-1.
-	UpIntegr UpIntegrity `json:"upIntegr"`
-}
-
-// This data type is defined in the same way as the 'UpSecurity' data type, but with the OpenAPI 'nullable: true' property.
-type UpSecurityRm interface{}
-
-// String providing an URI formatted according to RFC 3986
-type Uri string
-
-// String providing an URI formatted according to RFC 3986 with the OpenAPI 'nullable: true' property.
-type UriRm string
-
-// HTTP and HTTPS URI scheme.
-type UriScheme string
-
-// At least one of eutraLocation, nrLocation and n3gaLocation shall be present. Several of them may be present
-type UserLocation struct {
-	// Contains the E-UTRA user location.
-	EutraLocation *EutraLocation `json:"eutraLocation,omitempty"`
-
-	// Exactly one of cgi, sai or lai shall be present.
-	GeraLocation *GeraLocation `json:"geraLocation,omitempty"`
-
-	// Contains the Non-3GPP access user location.
-	N3gaLocation *N3gaLocation `json:"n3gaLocation,omitempty"`
-
-	// Contains the NR user location.
-	NrLocation *NrLocation `json:"nrLocation,omitempty"`
-
-	// Exactly one of cgi, sai or lai shall be present.
-	UtraLocation *UtraLocation `json:"utraLocation,omitempty"`
-}
-
-// Exactly one of cgi, sai or lai shall be present.
-type UtraLocation interface{}
-
-// String represents the SUPI or GPSI
-type VarUeId string
-
-// String represents the SUPI or GPSI with the OpenAPI 'nullable: true' property.
-type VarUeIdRm string
-
-// Contains Usage data information.
-type VolumeTimedReport struct {
-	// string with format 'int64' as defined in OpenAPI.
-	DownlinkVolume Int64 `json:"downlinkVolume"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	EndTimeStamp DateTime `json:"endTimeStamp"`
-
-	// string with format 'date-time' as defined in OpenAPI.
-	StartTimeStamp DateTime `json:"startTimeStamp"`
-
-	// string with format 'int64' as defined in OpenAPI.
-	UplinkVolume Int64 `json:"uplinkVolume"`
-}
-
-// This represents the identifier of the W-AGF ID as specified in clause 9.3.1.162 of  3GPP TS 38.413 in hexadecimal representation. Each character in the string shall take a value  of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant  character representing the 4 most significant bits of the W-AGF ID shall appear first in the  string, and the character representing the 4 least significant bit of the W-AGF ID shall  appear last in the string.
-type WAgfId string
-
-// String representing the Wildcard DNN. It shall contain the string "*".
-type WildcardDnn string
-
-// String representing the Wildcard DNN. It shall contain the string '*' but with the OpenAPI 'nullable: true' property.
-type WildcardDnnRm string
-
-// One and only one of the "globLineIds", "hfcNIds", "areaCodeB" and "areaCodeC" attributes shall be included in a WirelineArea data structure
-type WirelineArea struct {
-	// Values are operator specific.
-	AreaCodeB *AreaCode `json:"areaCodeB,omitempty"`
-
-	// Values are operator specific.
-	AreaCodeC     *AreaCode `json:"areaCodeC,omitempty"`
-	GlobalLineIds *[]Gli    `json:"globalLineIds,omitempty"`
-	HfcNIds       *[]HfcNId `json:"hfcNIds,omitempty"`
-}
-
-// The "restrictionType" attribute and the "areas" attribute shall be either both present or absent. The empty array of areas is used when service is allowed/restricted nowhere.
-type WirelineServiceAreaRestriction struct {
-	Areas *[]WirelineArea `json:"areas,omitempty"`
-
-	// It contains the restriction type ALLOWED_AREAS or NOT_ALLOWED_AREAS.
-	RestrictionType *RestrictionType `json:"restrictionType,omitempty"`
-}
-
-// The response shall include a Location header field containing a different URI (pointing to a different URI of an other service instance), or the same URI if a request is redirected to the same target resource via a different SCP.
-type N307 RedirectResponse
-
-// The response shall include a Location header field containing a different URI (pointing to a different URI of an other service instance), or the same URI if a request is redirected to the same target resource via a different SCP.
-type N308 RedirectResponse
-
-// Getter for additional properties for AreaScope_TacInfoPerPlmn. Returns the specified
-// element and whether it was found
-func (a AreaScope_TacInfoPerPlmn) Get(fieldName string) (value TacInfo, found bool) {
-	if a.AdditionalProperties != nil {
-		value, found = a.AdditionalProperties[fieldName]
-	}
-	return
-}
-
-// Setter for additional properties for AreaScope_TacInfoPerPlmn
-func (a *AreaScope_TacInfoPerPlmn) Set(fieldName string, value TacInfo) {
-	if a.AdditionalProperties == nil {
-		a.AdditionalProperties = make(map[string]TacInfo)
-	}
-	a.AdditionalProperties[fieldName] = value
-}
-
-// Override default JSON handling for AreaScope_TacInfoPerPlmn to handle AdditionalProperties
-func (a *AreaScope_TacInfoPerPlmn) UnmarshalJSON(b []byte) error {
-	object := make(map[string]json.RawMessage)
-	err := json.Unmarshal(b, &object)
-	if err != nil {
-		return err
-	}
-
-	if len(object) != 0 {
-		a.AdditionalProperties = make(map[string]TacInfo)
-		for fieldName, fieldBuf := range object {
-			var fieldVal TacInfo
-			err := json.Unmarshal(fieldBuf, &fieldVal)
-			if err != nil {
-				return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
-			}
-			a.AdditionalProperties[fieldName] = fieldVal
-		}
-	}
-	return nil
-}
-
-// Override default JSON handling for AreaScope_TacInfoPerPlmn to handle AdditionalProperties
-func (a AreaScope_TacInfoPerPlmn) MarshalJSON() ([]byte, error) {
-	var err error
-	object := make(map[string]json.RawMessage)
-
-	for fieldName, field := range a.AdditionalProperties {
-		object[fieldName], err = json.Marshal(field)
-		if err != nil {
-			return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
-		}
-	}
-	return json.Marshal(object)
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/discoverserviceapi/discoverservice-server.gen.go b/capif/internal/readonly/discoverserviceapi/discoverservice-server.gen.go
deleted file mode 100644
index 09a9700..0000000
--- a/capif/internal/readonly/discoverserviceapi/discoverservice-server.gen.go
+++ /dev/null
@@ -1,267 +0,0 @@
-// Package discoverserviceapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package discoverserviceapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /allServiceAPIs)
-	GetAllServiceAPIs(ctx echo.Context, params GetAllServiceAPIsParams) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetAllServiceAPIs converts echo context to params.
-func (w *ServerInterfaceWrapper) GetAllServiceAPIs(ctx echo.Context) error {
-	var err error
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params GetAllServiceAPIsParams
-	// ------------- Required query parameter "api-invoker-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "api-invoker-id", ctx.QueryParams(), &params.ApiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-invoker-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-name" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-name", ctx.QueryParams(), &params.ApiName)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-name: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-version" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-version", ctx.QueryParams(), &params.ApiVersion)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-version: %s", err))
-	}
-
-	// ------------- Optional query parameter "comm-type" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "comm-type", ctx.QueryParams(), &params.CommType)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter comm-type: %s", err))
-	}
-
-	// ------------- Optional query parameter "protocol" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "protocol", ctx.QueryParams(), &params.Protocol)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter protocol: %s", err))
-	}
-
-	// ------------- Optional query parameter "aef-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "aef-id", ctx.QueryParams(), &params.AefId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aef-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "data-format" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "data-format", ctx.QueryParams(), &params.DataFormat)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter data-format: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-cat" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-cat", ctx.QueryParams(), &params.ApiCat)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-cat: %s", err))
-	}
-
-	// ------------- Optional query parameter "supported-features" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "supported-features", ctx.QueryParams(), &params.SupportedFeatures)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter supported-features: %s", err))
-	}
-
-	// ------------- Optional query parameter "api-supported-features" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "api-supported-features", ctx.QueryParams(), &params.ApiSupportedFeatures)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter api-supported-features: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetAllServiceAPIs(ctx, params)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/allServiceAPIs", wrapper.GetAllServiceAPIs)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"H4sIAAAAAAAC/7xX23IaPRJ+lS7tXiRVMAPjU8wda+MUe+GwhuzNJuUSmoZRopEmkgaHdfFA+xr7ZH+1",
-	"NByMsf9ySP03Bovur78+qvXIhCkro1F7x3qPzIkCSx6+XksnzAIt5v3RMJzk6ISVlZdGsx67w8qiI0Xg",
-	"oKTzYGZAoiBqa1F7tQSLc+k8YYDU4AuEq/5oeAPCWIRZrQVhAdc5OO6lmy2lngMHXZdTtIQ3k8qjBWGl",
-	"Rys5VNYsZI45TJcBrj8agjDa1SXahLVYZU2F1kuM3qBdSIH90fB6S/2AKzu/klECblSDAe6gqqdKumJr",
-	"uPk9gQEXxRPpHWhwBVcKpBaqzhH6gxtyYCYVOii5FwW5S2h7bpIn0mMZqP7d4oz12GScXWZZdh8CeD+K",
-	"fO7H0fB9fzRMlrxUf0u3+UybZKbjQ2FgqxYrpR5GM90W88sKWY9xa/mSrVabAzP9hsKzFR3hT49Wc3Vt",
-	"xIEwnnwcjWAyhuwyybIM/t29SE6SDlyZsjQ6xObG8hIfjP0OM2MhyN8a64upqXUeioe1WG0V67HC+6qX",
-	"pg8PD8nJvKoSY+fpzFfpuELhUm5FIReYZpf3Dq1El0ajKbkl9cw8Z0f2yWre1DXFfidvLvmi//8/yDpZ",
-	"txWZfbJzruV/OelzBSNuvUbr4F3/bviPFvQnw3ELrq7G/RYMJuNhCybj6/Ax6dOfq/fJF91XCqycF94B",
-	"NYtdYJ580azFvPSKohvTue613XyyFlugdZF8N8mSTpurquBJRj6aCjWvJEU96SQdKn3ui5CUlCu1TXk4",
-	"mqM/UPWN0Z3i3o1HaEuL3kpcIHAQRikU6x6JEkIYm4ciNiDQei71oVqmngxhHOasxz6i7z9lSOSpMjxa",
-	"x3r/2Sc69iFZMkftZZwR696XemG+owXunJzrbXseGDMJDD1w5QzY7eQKslc3a2yJ9smgap+n5whSe7Qz",
-	"LjD0JTH6UaNdshbTvAw9U8l2w6Qtc9ZiFn/U0mLOet7W2GrGKqWgaSoXXKI2O1SmBNsC6UE6cOhpAD3y",
-	"St7yEldQcevXU+rz3RCct7XwtUUSy3EmdZy2rp4KxWuHcJqcksJOe551uq/5Er6+mXXJvxkLTc1u6L3D",
-	"ZJ7Aovv+NYPrQn+TTZortZYiVBaQONTu6dUQjd8N/vV5MJ7c3w3Go0+348GLVIQpy3awu0vk+AH8hOmE",
-	"8A+4M7LGG2HUvhMvka0a+d/MdU3jYJYHm06J1+3BfOIsNsEbUnnNPafhXHLvXkgijXmumnEMa+fhn+NP",
-	"t0HjxaTm3PN2xP7NoSLWNxH4gE+TvS1CcI9zY5c0Kx8KKYpne8YUldFzB9681itiz48/De4NchoPDlxd",
-	"Vcb6bXRvbzbLU7gat5NzczeMt/xeIrWBbc8aSy/F+eyiex+3AQrdKwvLGnFN/W1u5ZvN9Ul4pc6pBaPc",
-	"eszB5uZJYFJI2suWYLRawhShuSZAzrbywfmtFo3oRuy1pP01MfpKN4+rjHZx/806HfoQRnvUYQPgVaWa",
-	"OZR+cxTHx+c0Dhf70+dAWAefF/zaPExNvqTiopUgXrMWXa38dr+mFQ5CjdH/6wfEzoshLGW065x0LvaC",
-	"1KWGfSVImyikpBsgPhwB8YEgTmMwfwmCdANE9wiIboQ4OQLiJEKcHgFxGiHOj4A4DxDdI1h0I4vs8tch",
-	"skuCODsiqWcxqWdHZOQsZiTHGa+V/2WYtf5qFdoyvDOaTTo+pmh7vDPGr9JmILZ5JV266NIjg1vJpypO",
-	"jEYuPhYaUuEp5nppij95WSlMhCnZfvM3ii/uoBfJ2d4OmmVZQoy/rv4IAAD//37ZMOyFEAAA",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29222_CAPIF_Publish_Service_API.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/discoverserviceapi/discoverservice-types.gen.go b/capif/internal/readonly/discoverserviceapi/discoverservice-types.gen.go
deleted file mode 100644
index 789ab60..0000000
--- a/capif/internal/readonly/discoverserviceapi/discoverservice-types.gen.go
+++ /dev/null
@@ -1,48 +0,0 @@
-// Package discoverserviceapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package discoverserviceapi
-
-import (
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// Represents a list of APIs currently registered in the CAPIF core function and satisfying a number of filter criteria provided by the API consumer.
-type DiscoveredAPIs struct {
-	// Description of the service API as published by the service. Each service API description shall include AEF profiles matching the filter criteria.
-	ServiceAPIDescriptions *[]externalRef2.ServiceAPIDescription `json:"serviceAPIDescriptions,omitempty"`
-}
-
-// GetAllServiceAPIsParams defines parameters for GetAllServiceAPIs.
-type GetAllServiceAPIsParams struct {
-	// String identifying the API invoker assigned by the CAPIF core function. It also represents the CCF identifier in the CAPIF-6/6e interface.
-	ApiInvokerId string `json:"api-invoker-id"`
-
-	// API name, it is set as {apiName} part of the URI structure as defined in subclause 4.4 of 3GPP TS 29.501.
-	ApiName *string `json:"api-name,omitempty"`
-
-	// API major version the URI (e.g. v1).
-	ApiVersion *string `json:"api-version,omitempty"`
-
-	// Communication type used by the API (e.g. REQUEST_RESPONSE).
-	CommType *externalRef2.CommunicationType `json:"comm-type,omitempty"`
-
-	// Protocol used by the API.
-	Protocol *externalRef2.Protocol `json:"protocol,omitempty"`
-
-	// AEF identifer.
-	AefId *string `json:"aef-id,omitempty"`
-
-	// Data formats used by the API (e.g. serialization protocol JSON used).
-	DataFormat *externalRef2.DataFormat `json:"data-format,omitempty"`
-
-	// The service API category to which the service API belongs to.
-	ApiCat *string `json:"api-cat,omitempty"`
-
-	// Features supported by the NF consumer for the CAPIF Discover Service API.
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supported-features,omitempty"`
-
-	// Features supported by the discovered service API indicated by api-name parameter. This may only be present if api-name query parameter is present.
-	ApiSupportedFeatures *externalRef1.SupportedFeatures `json:"api-supported-features,omitempty"`
-}
diff --git a/capif/internal/readonly/discoverserviceapi/generator_settings_server.yaml b/capif/internal/readonly/discoverserviceapi/generator_settings_server.yaml
deleted file mode 100644
index 18d490d..0000000
--- a/capif/internal/readonly/discoverserviceapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/discoverserviceapi/discoverservice-server.gen.go
-package: discoverserviceapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/discoverserviceapi/generator_settings_types.yaml b/capif/internal/readonly/discoverserviceapi/generator_settings_types.yaml
deleted file mode 100644
index 1a5ad40..0000000
--- a/capif/internal/readonly/discoverserviceapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/discoverserviceapi/discoverservice-types.gen.go
-package: discoverserviceapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/eventsapi/events-server.gen.go b/capif/internal/readonly/eventsapi/events-server.gen.go
deleted file mode 100644
index d0f89e5..0000000
--- a/capif/internal/readonly/eventsapi/events-server.gen.go
+++ /dev/null
@@ -1,220 +0,0 @@
-// Package eventsapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package eventsapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (POST /{subscriberId}/subscriptions)
-	PostSubscriberIdSubscriptions(ctx echo.Context, subscriberId string) error
-
-	// (DELETE /{subscriberId}/subscriptions/{subscriptionId})
-	DeleteSubscriberIdSubscriptionsSubscriptionId(ctx echo.Context, subscriberId string, subscriptionId string) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostSubscriberIdSubscriptions converts echo context to params.
-func (w *ServerInterfaceWrapper) PostSubscriberIdSubscriptions(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "subscriberId" -------------
-	var subscriberId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "subscriberId", runtime.ParamLocationPath, ctx.Param("subscriberId"), &subscriberId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter subscriberId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostSubscriberIdSubscriptions(ctx, subscriberId)
-	return err
-}
-
-// DeleteSubscriberIdSubscriptionsSubscriptionId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteSubscriberIdSubscriptionsSubscriptionId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "subscriberId" -------------
-	var subscriberId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "subscriberId", runtime.ParamLocationPath, ctx.Param("subscriberId"), &subscriberId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter subscriberId: %s", err))
-	}
-
-	// ------------- Path parameter "subscriptionId" -------------
-	var subscriptionId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "subscriptionId", runtime.ParamLocationPath, ctx.Param("subscriptionId"), &subscriptionId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter subscriptionId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.DeleteSubscriberIdSubscriptionsSubscriptionId(ctx, subscriberId, subscriptionId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/:subscriberId/subscriptions", wrapper.PostSubscriberIdSubscriptions)
-	router.DELETE(baseURL+"/:subscriberId/subscriptions/:subscriptionId", wrapper.DeleteSubscriberIdSubscriptionsSubscriptionId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-	"+GH97wAAAP//6q1GObMmAAA=",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/eventsapi/events-types.gen.go b/capif/internal/readonly/eventsapi/events-types.gen.go
deleted file mode 100644
index f815645..0000000
--- a/capif/internal/readonly/eventsapi/events-types.gen.go
+++ /dev/null
@@ -1,135 +0,0 @@
-// Package eventsapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package eventsapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/accesscontrolpolicyapi"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef3 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef4 "oransc.org/nonrtric/plt/capif/internal/readonly/loggingapi"
-	externalRef5 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-	externalRef6 "oransc.org/nonrtric/plt/capif/internal/readonly/routinginfoapi"
-)
-
-// Defines values for CAPIFEvent.
-const (
-	CAPIFEventACCESSCONTROLPOLICYUNAVAILABLE CAPIFEvent = "ACCESS_CONTROL_POLICY_UNAVAILABLE"
-
-	CAPIFEventACCESSCONTROLPOLICYUPDATE CAPIFEvent = "ACCESS_CONTROL_POLICY_UPDATE"
-
-	CAPIFEventAPIINVOKERAUTHORIZATIONREVOKED CAPIFEvent = "API_INVOKER_AUTHORIZATION_REVOKED"
-
-	CAPIFEventAPIINVOKEROFFBOARDED CAPIFEvent = "API_INVOKER_OFFBOARDED"
-
-	CAPIFEventAPIINVOKERONBOARDED CAPIFEvent = "API_INVOKER_ONBOARDED"
-
-	CAPIFEventAPIINVOKERUPDATED CAPIFEvent = "API_INVOKER_UPDATED"
-
-	CAPIFEventAPITOPOLOGYHIDINGCREATED CAPIFEvent = "API_TOPOLOGY_HIDING_CREATED"
-
-	CAPIFEventAPITOPOLOGYHIDINGREVOKED CAPIFEvent = "API_TOPOLOGY_HIDING_REVOKED"
-
-	CAPIFEventSERVICEAPIAVAILABLE CAPIFEvent = "SERVICE_API_AVAILABLE"
-
-	CAPIFEventSERVICEAPIINVOCATIONFAILURE CAPIFEvent = "SERVICE_API_INVOCATION_FAILURE"
-
-	CAPIFEventSERVICEAPIINVOCATIONSUCCESS CAPIFEvent = "SERVICE_API_INVOCATION_SUCCESS"
-
-	CAPIFEventSERVICEAPIUNAVAILABLE CAPIFEvent = "SERVICE_API_UNAVAILABLE"
-
-	CAPIFEventSERVICEAPIUPDATE CAPIFEvent = "SERVICE_API_UPDATE"
-)
-
-// AccessControlPolicyListExt defines model for AccessControlPolicyListExt.
-type AccessControlPolicyListExt struct {
-	// Embedded struct due to allOf(TS29222_CAPIF_Access_Control_Policy_API.yaml#/components/schemas/AccessControlPolicyList)
-	externalRef0.AccessControlPolicyList `yaml:",inline"`
-	// Embedded fields due to inline allOf schema
-	ApiId *string `json:"apiId,omitempty"`
-}
-
-// Possible values are - SERVICE_API_AVAILABLE: Events related to the availability of service APIs after the service APIs are published. - SERVICE_API_UNAVAILABLE: Events related to the unavailability of service APIs after the service APIs are unpublished. - SERVICE_API_UPDATE: Events related to change in service API information. - API_INVOKER_ONBOARDED: Events related to API invoker onboarded to CAPIF. - API_INVOKER_OFFBOARDED: Events related to API invoker offboarded from CAPIF. - SERVICE_API_INVOCATION_SUCCESS: Events related to the successful invocation of service APIs. - SERVICE_API_INVOCATION_FAILURE: Events related to the failed invocation of service APIs. - ACCESS_CONTROL_POLICY_UPDATE: Events related to the update for the access control policy related to the service APIs. - ACCESS_CONTROL_POLICY_UNAVAILABLE: Events related to the unavailability of the access control policy related to the service APIs. - API_INVOKER_AUTHORIZATION_REVOKED: Events related to the revocation of the authorization of API invokers to access the service APIs. - API_INVOKER_UPDATED: Events related to API invoker profile updated to CAPIF. - API_TOPOLOGY_HIDING_CREATED: Events related to the creation or update of the API topology hiding information of the service APIs after the service APIs are published. - API_TOPOLOGY_HIDING_REVOKED: Events related to the revocation of the API topology hiding information of the service APIs after the service APIs are unpublished.
-type CAPIFEvent string
-
-// Represents a CAPIF event details.
-type CAPIFEventDetail struct {
-	// Represents the extension for access control policies.
-	AccCtrlPolList *AccessControlPolicyListExt `json:"accCtrlPolList,omitempty"`
-
-	// Identifier of the service API
-	ApiIds *[]string `json:"apiIds,omitempty"`
-
-	// Identity of the API invoker
-	ApiInvokerIds *[]string `json:"apiInvokerIds,omitempty"`
-
-	// Represents the routing rules information of a service API.
-	ApiTopoHide *TopologyHiding `json:"apiTopoHide,omitempty"`
-
-	// Invocation logs.
-	InvocationLogs *[]externalRef4.InvocationLog `json:"invocationLogs,omitempty"`
-
-	// Description of the service API as published by the APF.
-	ServiceAPIDescriptions *[]externalRef5.ServiceAPIDescription `json:"serviceAPIDescriptions,omitempty"`
-}
-
-// Represents a CAPIF event filter.
-type CAPIFEventFilter struct {
-	// Identifier of the API exposing function
-	AefIds *[]string `json:"aefIds,omitempty"`
-
-	// Identifier of the service API
-	ApiIds *[]string `json:"apiIds,omitempty"`
-
-	// Identity of the API invoker
-	ApiInvokerIds *[]string `json:"apiInvokerIds,omitempty"`
-}
-
-// Represents an individual CAPIF Event notification.
-type EventNotification struct {
-	// Represents a CAPIF event details.
-	EventDetail *CAPIFEventDetail `json:"eventDetail,omitempty"`
-
-	// Possible values are - SERVICE_API_AVAILABLE: Events related to the availability of service APIs after the service APIs are published. - SERVICE_API_UNAVAILABLE: Events related to the unavailability of service APIs after the service APIs are unpublished. - SERVICE_API_UPDATE: Events related to change in service API information. - API_INVOKER_ONBOARDED: Events related to API invoker onboarded to CAPIF. - API_INVOKER_OFFBOARDED: Events related to API invoker offboarded from CAPIF. - SERVICE_API_INVOCATION_SUCCESS: Events related to the successful invocation of service APIs. - SERVICE_API_INVOCATION_FAILURE: Events related to the failed invocation of service APIs. - ACCESS_CONTROL_POLICY_UPDATE: Events related to the update for the access control policy related to the service APIs. - ACCESS_CONTROL_POLICY_UNAVAILABLE: Events related to the unavailability of the access control policy related to the service APIs. - API_INVOKER_AUTHORIZATION_REVOKED: Events related to the revocation of the authorization of API invokers to access the service APIs. - API_INVOKER_UPDATED: Events related to API invoker profile updated to CAPIF. - API_TOPOLOGY_HIDING_CREATED: Events related to the creation or update of the API topology hiding information of the service APIs after the service APIs are published. - API_TOPOLOGY_HIDING_REVOKED: Events related to the revocation of the API topology hiding information of the service APIs after the service APIs are unpublished.
-	Events CAPIFEvent `json:"events"`
-
-	// Identifier of the subscription resource to which the notification is related – CAPIF resource identifier
-	SubscriptionId string `json:"subscriptionId"`
-}
-
-// Represents an individual CAPIF Event Subscription resource.
-type EventSubscription struct {
-	// Subscribed event filters
-	EventFilters *[]CAPIFEventFilter `json:"eventFilters,omitempty"`
-
-	// Represents the type of reporting that the subscription requires.
-	EventReq *externalRef1.ReportingInformation `json:"eventReq,omitempty"`
-
-	// Subscribed events
-	Events []CAPIFEvent `json:"events"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	NotificationDestination externalRef2.Uri `json:"notificationDestination"`
-
-	// Set to true by Subscriber to request the CAPIF core function to send a test notification as defined in in subclause 7.6. Set to false or omitted otherwise.
-	RequestTestNotification *bool `json:"requestTestNotification,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef3.SupportedFeatures `json:"supportedFeatures,omitempty"`
-
-	// Represents the configuration information for the delivery of notifications over Websockets.
-	WebsockNotifConfig *externalRef2.WebsockNotifConfig `json:"websockNotifConfig,omitempty"`
-}
-
-// Represents the routing rules information of a service API.
-type TopologyHiding struct {
-	ApiId        string                     `json:"apiId"`
-	RoutingRules []externalRef6.RoutingRule `json:"routingRules"`
-}
-
-// PostSubscriberIdSubscriptionsJSONBody defines parameters for PostSubscriberIdSubscriptions.
-type PostSubscriberIdSubscriptionsJSONBody EventSubscription
-
-// PostSubscriberIdSubscriptionsJSONRequestBody defines body for PostSubscriberIdSubscriptions for application/json ContentType.
-type PostSubscriberIdSubscriptionsJSONRequestBody PostSubscriberIdSubscriptionsJSONBody
diff --git a/capif/internal/readonly/eventsapi/generator_settings_types.yaml b/capif/internal/readonly/eventsapi/generator_settings_types.yaml
deleted file mode 100644
index 136710b..0000000
--- a/capif/internal/readonly/eventsapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/eventsapi/events-types.gen.go
-package: eventsapi
-generate:
-  - types
-import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon
-  TS29222_CAPIF_Access_Control_Policy_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/accesscontrolpolicyapi
-  TS29222_CAPIF_Logging_API_Invocation_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/loggingapi
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
-  TS29222_CAPIF_Routing_Info_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/routinginfoapi
\ No newline at end of file
diff --git a/capif/internal/readonly/invokermanagementapi/generator_settings_server.yaml b/capif/internal/readonly/invokermanagementapi/generator_settings_server.yaml
deleted file mode 100644
index b88d695..0000000
--- a/capif/internal/readonly/invokermanagementapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/invokermanagementapi/invokermanagement-server.gen.go
-package: invokermanagementapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/invokermanagementapi/generator_settings_types.yaml b/capif/internal/readonly/invokermanagementapi/generator_settings_types.yaml
deleted file mode 100644
index 486c5b1..0000000
--- a/capif/internal/readonly/invokermanagementapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/invokermanagementapi/invokermanagement-types.gen.go
-package: invokermanagementapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/invokermanagementapi/invokermanagement-server.gen.go b/capif/internal/readonly/invokermanagementapi/invokermanagement-server.gen.go
deleted file mode 100644
index c5853f7..0000000
--- a/capif/internal/readonly/invokermanagementapi/invokermanagement-server.gen.go
+++ /dev/null
@@ -1,266 +0,0 @@
-// Package invokermanagementapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package invokermanagementapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (POST /onboardedInvokers)
-	PostOnboardedInvokers(ctx echo.Context) error
-
-	// (DELETE /onboardedInvokers/{onboardingId})
-	DeleteOnboardedInvokersOnboardingId(ctx echo.Context, onboardingId string) error
-
-	// (PATCH /onboardedInvokers/{onboardingId})
-	ModifyIndApiInvokeEnrolment(ctx echo.Context, onboardingId string) error
-
-	// (PUT /onboardedInvokers/{onboardingId})
-	PutOnboardedInvokersOnboardingId(ctx echo.Context, onboardingId string) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostOnboardedInvokers converts echo context to params.
-func (w *ServerInterfaceWrapper) PostOnboardedInvokers(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostOnboardedInvokers(ctx)
-	return err
-}
-
-// DeleteOnboardedInvokersOnboardingId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteOnboardedInvokersOnboardingId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "onboardingId" -------------
-	var onboardingId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "onboardingId", runtime.ParamLocationPath, ctx.Param("onboardingId"), &onboardingId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter onboardingId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.DeleteOnboardedInvokersOnboardingId(ctx, onboardingId)
-	return err
-}
-
-// ModifyIndApiInvokeEnrolment converts echo context to params.
-func (w *ServerInterfaceWrapper) ModifyIndApiInvokeEnrolment(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "onboardingId" -------------
-	var onboardingId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "onboardingId", runtime.ParamLocationPath, ctx.Param("onboardingId"), &onboardingId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter onboardingId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.ModifyIndApiInvokeEnrolment(ctx, onboardingId)
-	return err
-}
-
-// PutOnboardedInvokersOnboardingId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutOnboardedInvokersOnboardingId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "onboardingId" -------------
-	var onboardingId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "onboardingId", runtime.ParamLocationPath, ctx.Param("onboardingId"), &onboardingId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter onboardingId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PutOnboardedInvokersOnboardingId(ctx, onboardingId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/onboardedInvokers", wrapper.PostOnboardedInvokers)
-	router.DELETE(baseURL+"/onboardedInvokers/:onboardingId", wrapper.DeleteOnboardedInvokersOnboardingId)
-	router.PATCH(baseURL+"/onboardedInvokers/:onboardingId", wrapper.ModifyIndApiInvokeEnrolment)
-	router.PUT(baseURL+"/onboardedInvokers/:onboardingId", wrapper.PutOnboardedInvokersOnboardingId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29222_CAPIF_Publish_Service_API.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/invokermanagementapi/invokermanagement-types.gen.go b/capif/internal/readonly/invokermanagementapi/invokermanagement-types.gen.go
deleted file mode 100644
index 0b6725e..0000000
--- a/capif/internal/readonly/invokermanagementapi/invokermanagement-types.gen.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Package invokermanagementapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package invokermanagementapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// Information about the API Invoker that requested to onboard
-type APIInvokerEnrolmentDetails struct {
-	// API invoker ID assigned by the CAPIF core function to the API invoker while on-boarding the API invoker. Shall not be present in the HTTP POST request from the API invoker to the CAPIF core function, to on-board itself. Shall be present in all other HTTP requests and responses.
-	ApiInvokerId *string `json:"apiInvokerId,omitempty"`
-
-	// Generic information related to the API invoker such as details of the device or the application.
-	ApiInvokerInformation *string `json:"apiInvokerInformation,omitempty"`
-
-	// The list of service APIs that the API Invoker is allowed to invoke
-	ApiList *APIList `json:"apiList,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	NotificationDestination externalRef0.Uri `json:"notificationDestination"`
-
-	// Represents on-boarding information of the API invoker.
-	OnboardingInformation OnboardingInformation `json:"onboardingInformation"`
-
-	// Set to true by Subscriber to request the CAPIF core function to send a test notification as defined in in subclause 7.6. Set to false or omitted otherwise.
-	RequestTestNotification *bool `json:"requestTestNotification,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supportedFeatures,omitempty"`
-
-	// Represents the configuration information for the delivery of notifications over Websockets.
-	WebsockNotifConfig *externalRef0.WebsockNotifConfig `json:"websockNotifConfig,omitempty"`
-}
-
-// Represents an API Invoker’s enrolment details to be updated.
-type APIInvokerEnrolmentDetailsPatch struct {
-	// Generic information related to the API invoker such as details of the device or the application.
-	ApiInvokerInformation *string `json:"apiInvokerInformation,omitempty"`
-
-	// The list of service APIs that the API Invoker is allowed to invoke
-	ApiList *APIList `json:"apiList,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	NotificationDestination *externalRef0.Uri `json:"notificationDestination,omitempty"`
-
-	// Represents on-boarding information of the API invoker.
-	OnboardingInformation *OnboardingInformation `json:"onboardingInformation,omitempty"`
-}
-
-// The list of service APIs that the API Invoker is allowed to invoke
-type APIList []externalRef2.ServiceAPIDescription
-
-// Represents on-boarding information of the API invoker.
-type OnboardingInformation struct {
-	// The API Invoker’s generic client certificate, provided by the CAPIF core function.
-	ApiInvokerCertificate *string `json:"apiInvokerCertificate,omitempty"`
-
-	// The API Invoker’s public key
-	ApiInvokerPublicKey string `json:"apiInvokerPublicKey"`
-
-	// The API Invoker’s onboarding secret, provided by the CAPIF core function.
-	OnboardingSecret *string `json:"onboardingSecret,omitempty"`
-}
-
-// Represents a notification of on-boarding or update result.
-type OnboardingNotification struct {
-	// Information about the API Invoker that requested to onboard
-	ApiInvokerEnrolmentDetails *APIInvokerEnrolmentDetails `json:"apiInvokerEnrolmentDetails,omitempty"`
-
-	// The list of service APIs that the API Invoker is allowed to invoke
-	ApiList *APIList `json:"apiList,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	ResourceLocation *externalRef0.Uri `json:"resourceLocation,omitempty"`
-
-	// Set to "true" indicate successful on-boarding. Otherwise set to "false"
-	Result bool `json:"result"`
-}
-
-// PostOnboardedInvokersJSONBody defines parameters for PostOnboardedInvokers.
-type PostOnboardedInvokersJSONBody APIInvokerEnrolmentDetails
-
-// PutOnboardedInvokersOnboardingIdJSONBody defines parameters for PutOnboardedInvokersOnboardingId.
-type PutOnboardedInvokersOnboardingIdJSONBody APIInvokerEnrolmentDetails
-
-// PostOnboardedInvokersJSONRequestBody defines body for PostOnboardedInvokers for application/json ContentType.
-type PostOnboardedInvokersJSONRequestBody PostOnboardedInvokersJSONBody
-
-// PutOnboardedInvokersOnboardingIdJSONRequestBody defines body for PutOnboardedInvokersOnboardingId for application/json ContentType.
-type PutOnboardedInvokersOnboardingIdJSONRequestBody PutOnboardedInvokersOnboardingIdJSONBody
diff --git a/capif/internal/readonly/loggingapi/generator_settings_types.yaml b/capif/internal/readonly/loggingapi/generator_settings_types.yaml
deleted file mode 100644
index c0e43f5..0000000
--- a/capif/internal/readonly/loggingapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/loggingapi/logging-types.gen.go
-package: loggingapi
-generate:
-  - types
-import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/loggingapi/logging-server.gen.go b/capif/internal/readonly/loggingapi/logging-server.gen.go
deleted file mode 100644
index 13948bb..0000000
--- a/capif/internal/readonly/loggingapi/logging-server.gen.go
+++ /dev/null
@@ -1,183 +0,0 @@
-// Package loggingapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package loggingapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (POST /{aefId}/logs)
-	PostAefIdLogs(ctx echo.Context, aefId string) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostAefIdLogs converts echo context to params.
-func (w *ServerInterfaceWrapper) PostAefIdLogs(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "aefId" -------------
-	var aefId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "aefId", runtime.ParamLocationPath, ctx.Param("aefId"), &aefId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aefId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostAefIdLogs(ctx, aefId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/:aefId/logs", wrapper.PostAefIdLogs)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-	"BJDPm/8EAAD//6taPk1VFAAA",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/loggingapi/logging-types.gen.go b/capif/internal/readonly/loggingapi/logging-types.gen.go
deleted file mode 100644
index 372b435..0000000
--- a/capif/internal/readonly/loggingapi/logging-types.gen.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Package loggingapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package loggingapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// Unsigned integer identifying a period of time in units of milliseconds.
-type DurationMs int
-
-// Represents a set of Service API invocation logs to be stored in a CAPIF core function.
-type InvocationLog struct {
-	// Identity information of the API exposing function requesting logging of service API invocations
-	AefId string `json:"aefId"`
-
-	// Identity of the API invoker which invoked the service API
-	ApiInvokerId string `json:"apiInvokerId"`
-
-	// Service API invocation log
-	Logs []Log `json:"logs"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supportedFeatures,omitempty"`
-}
-
-// Represents an individual service API invocation log entry.
-type Log struct {
-	// String identifying the API invoked.
-	ApiId string `json:"apiId"`
-
-	// Name of the API which was invoked, it is set as {apiName} part of the URI structure as defined in subclause 4.4 of 3GPP TS 29.501.
-	ApiName string `json:"apiName"`
-
-	// Version of the API which was invoked
-	ApiVersion string `json:"apiVersion"`
-
-	// Represents the description of an API's interface.
-	DestInterface *externalRef2.InterfaceDescription `json:"destInterface,omitempty"`
-
-	// It includes the node identifier (as defined in IETF RFC 7239 of all forwarding entities between the API invoker and the AEF, concatenated with comma and space, e.g. 192.0.2.43:80, unknown:_OBFport, 203.0.113.60
-	FwdInterface *string `json:"fwdInterface,omitempty"`
-
-	// List of input parameters. Can be any value - string, number, boolean, array or object.
-	InputParameters *interface{} `json:"inputParameters,omitempty"`
-
-	// Unsigned integer identifying a period of time in units of milliseconds.
-	InvocationLatency *DurationMs `json:"invocationLatency,omitempty"`
-
-	// string with format "date-time" as defined in OpenAPI.
-	InvocationTime *externalRef0.DateTime `json:"invocationTime,omitempty"`
-
-	// Possible values are - GET: HTTP GET method - POST: HTTP POST method - PUT: HTTP PUT method - PATCH: HTTP PATCH method - DELETE: HTTP DELETE method
-	Operation *externalRef2.Operation `json:"operation,omitempty"`
-
-	// List of output parameters. Can be any value - string, number, boolean, array or object.
-	OutputParameters *interface{} `json:"outputParameters,omitempty"`
-
-	// Possible values are - HTTP_1_1: HTTP version 1.1 - HTTP_2: HTTP version 2
-	Protocol externalRef2.Protocol `json:"protocol"`
-
-	// Name of the specific resource invoked
-	ResourceName string `json:"resourceName"`
-
-	// For HTTP protocol, it contains HTTP status code of the invocation
-	Result string `json:"result"`
-
-	// Represents the description of an API's interface.
-	SrcInterface *externalRef2.InterfaceDescription `json:"srcInterface,omitempty"`
-
-	// string providing an URI formatted according to IETF RFC 3986.
-	Uri *externalRef0.Uri `json:"uri,omitempty"`
-}
-
-// PostAefIdLogsJSONBody defines parameters for PostAefIdLogs.
-type PostAefIdLogsJSONBody InvocationLog
-
-// PostAefIdLogsJSONRequestBody defines body for PostAefIdLogs for application/json ContentType.
-type PostAefIdLogsJSONRequestBody PostAefIdLogsJSONBody
diff --git a/capif/internal/readonly/providermanagementapi/providermanagement-server.gen.go b/capif/internal/readonly/providermanagementapi/providermanagement-server.gen.go
deleted file mode 100644
index cd06dd8..0000000
--- a/capif/internal/readonly/providermanagementapi/providermanagement-server.gen.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Package providermanagementapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package providermanagementapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (POST /registrations)
-	PostRegistrations(ctx echo.Context) error
-
-	// (DELETE /registrations/{registrationId})
-	DeleteRegistrationsRegistrationId(ctx echo.Context, registrationId string) error
-
-	// (PATCH /registrations/{registrationId})
-	ModifyIndApiProviderEnrolment(ctx echo.Context, registrationId string) error
-
-	// (PUT /registrations/{registrationId})
-	PutRegistrationsRegistrationId(ctx echo.Context, registrationId string) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostRegistrations converts echo context to params.
-func (w *ServerInterfaceWrapper) PostRegistrations(ctx echo.Context) error {
-	var err error
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostRegistrations(ctx)
-	return err
-}
-
-// DeleteRegistrationsRegistrationId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteRegistrationsRegistrationId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "registrationId" -------------
-	var registrationId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "registrationId", runtime.ParamLocationPath, ctx.Param("registrationId"), &registrationId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter registrationId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.DeleteRegistrationsRegistrationId(ctx, registrationId)
-	return err
-}
-
-// ModifyIndApiProviderEnrolment converts echo context to params.
-func (w *ServerInterfaceWrapper) ModifyIndApiProviderEnrolment(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "registrationId" -------------
-	var registrationId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "registrationId", runtime.ParamLocationPath, ctx.Param("registrationId"), &registrationId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter registrationId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.ModifyIndApiProviderEnrolment(ctx, registrationId)
-	return err
-}
-
-// PutRegistrationsRegistrationId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutRegistrationsRegistrationId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "registrationId" -------------
-	var registrationId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "registrationId", runtime.ParamLocationPath, ctx.Param("registrationId"), &registrationId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter registrationId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PutRegistrationsRegistrationId(ctx, registrationId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/registrations", wrapper.PostRegistrations)
-	router.DELETE(baseURL+"/registrations/:registrationId", wrapper.DeleteRegistrationsRegistrationId)
-	router.PATCH(baseURL+"/registrations/:registrationId", wrapper.ModifyIndApiProviderEnrolment)
-	router.PUT(baseURL+"/registrations/:registrationId", wrapper.PutRegistrationsRegistrationId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-	"xkoD5HV4iVxbv3VB2989/z8AAP//iW60XwAqAAA=",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/providermanagementapi/providermanagement-types.gen.go b/capif/internal/readonly/providermanagementapi/providermanagement-types.gen.go
deleted file mode 100644
index 33c73c9..0000000
--- a/capif/internal/readonly/providermanagementapi/providermanagement-types.gen.go
+++ /dev/null
@@ -1,86 +0,0 @@
-// Package providermanagementapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package providermanagementapi
-
-import (
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Defines values for ApiProviderFuncRole.
-const (
-	ApiProviderFuncRoleAEF ApiProviderFuncRole = "AEF"
-
-	ApiProviderFuncRoleAMF ApiProviderFuncRole = "AMF"
-
-	ApiProviderFuncRoleAPF ApiProviderFuncRole = "APF"
-)
-
-// Represents an API provider domain's enrolment details.
-type APIProviderEnrolmentDetails struct {
-	// API provider domain ID assigned by the CAPIF core function to the API management function while registering the API provider domain. Shall not be present in the HTTP POST request from the API Management function to the CAPIF core function, to on-board itself. Shall be present in all other HTTP requests and responses.
-	ApiProvDomId *string `json:"apiProvDomId,omitempty"`
-
-	// Generic information related to the API provider domain such as details of the API provider applications.
-	ApiProvDomInfo *string `json:"apiProvDomInfo,omitempty"`
-
-	// A list of individual API provider domain functions details. When included by the API management function in the HTTP request message, it lists the API provider domain functions that the API management function intends to register/update in registration or update registration procedure. When included by the CAPIF core function in the HTTP response message, it lists the API domain functions details that are registered or updated successfully.
-	ApiProvFuncs *[]APIProviderFunctionDetails `json:"apiProvFuncs,omitempty"`
-
-	// Registration or update specific failure information of failed API provider domain function registrations.Shall be present in the HTTP response body if atleast one of the API provider domain function registration or update registration fails.
-	FailReason *string `json:"failReason,omitempty"`
-
-	// Security information necessary for the CAPIF core function to validate the registration of the API provider domain. Shall be present in HTTP POST request from API management function to CAPIF core function for API provider domain registration.
-	RegSec string `json:"regSec"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SuppFeat *externalRef1.SupportedFeatures `json:"suppFeat,omitempty"`
-}
-
-// Represents an API provider domain's enrolment details.
-type APIProviderEnrolmentDetailsPatch struct {
-	// Generic information related to the API provider domain such as details of the API provider applications.
-	ApiProvDomInfo *string `json:"apiProvDomInfo,omitempty"`
-
-	// A list of individual API provider domain functions details. When included by the API management function in the HTTP request message, it lists the API provider domain functions that the API management function intends to register/update in registration or update registration procedure.
-	ApiProvFuncs *[]APIProviderFunctionDetails `json:"apiProvFuncs,omitempty"`
-}
-
-// Represents API provider domain function's details.
-type APIProviderFunctionDetails struct {
-	// API provider domain functionID assigned by the CAPIF core function to the API provider domain function while registering/updating the API provider domain. Shall not be present in the HTTP POST request from the API management function to the CAPIF core function, to register itself. Shall be present in all other HTTP requests and responses.
-	ApiProvFuncId *string `json:"apiProvFuncId,omitempty"`
-
-	// Generic information related to the API provider domain function such as details of the API provider applications.
-	ApiProvFuncInfo *string `json:"apiProvFuncInfo,omitempty"`
-
-	// Possible values are - AEF: API provider function is API Exposing Function. - APF: API provider function is API Publishing Function. - AMF: API Provider function is API Management Function.
-	ApiProvFuncRole ApiProviderFuncRole `json:"apiProvFuncRole"`
-
-	// Represents registration information of an individual API provider domain function.
-	RegInfo RegistrationInformation `json:"regInfo"`
-}
-
-// Possible values are - AEF: API provider function is API Exposing Function. - APF: API provider function is API Publishing Function. - AMF: API Provider function is API Management Function.
-type ApiProviderFuncRole string
-
-// Represents registration information of an individual API provider domain function.
-type RegistrationInformation struct {
-	// API provider domain function's client certificate
-	ApiProvCert *string `json:"apiProvCert,omitempty"`
-
-	// Public Key of API Provider domain function.
-	ApiProvPubKey string `json:"apiProvPubKey"`
-}
-
-// PostRegistrationsJSONBody defines parameters for PostRegistrations.
-type PostRegistrationsJSONBody APIProviderEnrolmentDetails
-
-// PutRegistrationsRegistrationIdJSONBody defines parameters for PutRegistrationsRegistrationId.
-type PutRegistrationsRegistrationIdJSONBody APIProviderEnrolmentDetails
-
-// PostRegistrationsJSONRequestBody defines body for PostRegistrations for application/json ContentType.
-type PostRegistrationsJSONRequestBody PostRegistrationsJSONBody
-
-// PutRegistrationsRegistrationIdJSONRequestBody defines body for PutRegistrationsRegistrationId for application/json ContentType.
-type PutRegistrationsRegistrationIdJSONRequestBody PutRegistrationsRegistrationIdJSONBody
diff --git a/capif/internal/readonly/publishserviceapi/generator_settings_server.yaml b/capif/internal/readonly/publishserviceapi/generator_settings_server.yaml
deleted file mode 100644
index efe475a..0000000
--- a/capif/internal/readonly/publishserviceapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/publishserviceapi/publishservice-server.gen.go
-package: publishserviceapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon
\ No newline at end of file
diff --git a/capif/internal/readonly/publishserviceapi/generator_settings_types.yaml b/capif/internal/readonly/publishserviceapi/generator_settings_types.yaml
deleted file mode 100644
index fa467fc..0000000
--- a/capif/internal/readonly/publishserviceapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-  internal/readonly/publishserviceapi/publishservice-types.gen.go
-package: publishserviceapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon
\ No newline at end of file
diff --git a/capif/internal/readonly/publishserviceapi/publishservice-server.gen.go b/capif/internal/readonly/publishserviceapi/publishservice-server.gen.go
deleted file mode 100644
index 256f432..0000000
--- a/capif/internal/readonly/publishserviceapi/publishservice-server.gen.go
+++ /dev/null
@@ -1,361 +0,0 @@
-// Package publishserviceapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package publishserviceapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /{apfId}/service-apis)
-	GetApfIdServiceApis(ctx echo.Context, apfId ApfId) error
-
-	// (POST /{apfId}/service-apis)
-	PostApfIdServiceApis(ctx echo.Context, apfId ApfId) error
-
-	// (DELETE /{apfId}/service-apis/{serviceApiId})
-	DeleteApfIdServiceApisServiceApiId(ctx echo.Context, apfId ApfId, serviceApiId ServiceApiId) error
-
-	// (GET /{apfId}/service-apis/{serviceApiId})
-	GetApfIdServiceApisServiceApiId(ctx echo.Context, apfId ApfId, serviceApiId ServiceApiId) error
-
-	// (PATCH /{apfId}/service-apis/{serviceApiId})
-	ModifyIndAPFPubAPI(ctx echo.Context, apfId ApfId, serviceApiId ServiceApiId) error
-
-	// (PUT /{apfId}/service-apis/{serviceApiId})
-	PutApfIdServiceApisServiceApiId(ctx echo.Context, apfId ApfId, serviceApiId ServiceApiId) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetApfIdServiceApis converts echo context to params.
-func (w *ServerInterfaceWrapper) GetApfIdServiceApis(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetApfIdServiceApis(ctx, apfId)
-	return err
-}
-
-// PostApfIdServiceApis converts echo context to params.
-func (w *ServerInterfaceWrapper) PostApfIdServiceApis(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostApfIdServiceApis(ctx, apfId)
-	return err
-}
-
-// DeleteApfIdServiceApisServiceApiId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteApfIdServiceApisServiceApiId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId ServiceApiId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.DeleteApfIdServiceApisServiceApiId(ctx, apfId, serviceApiId)
-	return err
-}
-
-// GetApfIdServiceApisServiceApiId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetApfIdServiceApisServiceApiId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId ServiceApiId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetApfIdServiceApisServiceApiId(ctx, apfId, serviceApiId)
-	return err
-}
-
-// ModifyIndAPFPubAPI converts echo context to params.
-func (w *ServerInterfaceWrapper) ModifyIndAPFPubAPI(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId ServiceApiId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.ModifyIndAPFPubAPI(ctx, apfId, serviceApiId)
-	return err
-}
-
-// PutApfIdServiceApisServiceApiId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutApfIdServiceApisServiceApiId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apfId" -------------
-	var apfId ApfId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apfId", runtime.ParamLocationPath, ctx.Param("apfId"), &apfId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apfId: %s", err))
-	}
-
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId ServiceApiId
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PutApfIdServiceApisServiceApiId(ctx, apfId, serviceApiId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/:apfId/service-apis", wrapper.GetApfIdServiceApis)
-	router.POST(baseURL+"/:apfId/service-apis", wrapper.PostApfIdServiceApis)
-	router.DELETE(baseURL+"/:apfId/service-apis/:serviceApiId", wrapper.DeleteApfIdServiceApisServiceApiId)
-	router.GET(baseURL+"/:apfId/service-apis/:serviceApiId", wrapper.GetApfIdServiceApisServiceApiId)
-	router.PATCH(baseURL+"/:apfId/service-apis/:serviceApiId", wrapper.ModifyIndAPFPubAPI)
-	router.PUT(baseURL+"/:apfId/service-apis/:serviceApiId", wrapper.PutApfIdServiceApisServiceApiId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-	"3nih3el0PMXzx8V/AgAA///zJgSKrkQAAA==",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/publishserviceapi/publishservice-types.gen.go b/capif/internal/readonly/publishserviceapi/publishservice-types.gen.go
deleted file mode 100644
index 05811ad..0000000
--- a/capif/internal/readonly/publishserviceapi/publishservice-types.gen.go
+++ /dev/null
@@ -1,256 +0,0 @@
-// Package publishserviceapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package publishserviceapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Defines values for CommunicationType.
-const (
-	CommunicationTypeREQUESTRESPONSE CommunicationType = "REQUEST_RESPONSE"
-
-	CommunicationTypeSUBSCRIBENOTIFY CommunicationType = "SUBSCRIBE_NOTIFY"
-)
-
-// Defines values for DataFormat.
-const (
-	DataFormatJSON DataFormat = "JSON"
-)
-
-// Defines values for Operation.
-const (
-	OperationDELETE Operation = "DELETE"
-
-	OperationGET Operation = "GET"
-
-	OperationPATCH Operation = "PATCH"
-
-	OperationPOST Operation = "POST"
-
-	OperationPUT Operation = "PUT"
-)
-
-// Defines values for Protocol.
-const (
-	ProtocolHTTP11 Protocol = "HTTP_1_1"
-
-	ProtocolHTTP2 Protocol = "HTTP_2"
-)
-
-// Defines values for SecurityMethod.
-const (
-	SecurityMethodOAUTH SecurityMethod = "OAUTH"
-
-	SecurityMethodPKI SecurityMethod = "PKI"
-
-	SecurityMethodPSK SecurityMethod = "PSK"
-)
-
-// The location information (e.g. civic address, GPS coordinates, data center ID) where the AEF providing the service API is located.
-type AefLocation struct {
-	// Indicates a Civic address.
-	CivicAddr *externalRef0.CivicAddress `json:"civicAddr,omitempty"`
-
-	// Identifies the data center where the AEF providing the service API is located.
-	DcId *string `json:"dcId,omitempty"`
-
-	// Geographic area specified by different shape.
-	GeoArea *externalRef0.GeographicArea `json:"geoArea,omitempty"`
-}
-
-// Represents the AEF profile data.
-type AefProfile struct {
-	// Identifier of the API exposing function
-	AefId string `json:"aefId"`
-
-	// The location information (e.g. civic address, GPS coordinates, data center ID) where the AEF providing the service API is located.
-	AefLocation *AefLocation `json:"aefLocation,omitempty"`
-
-	// Possible values are - JSON: JavaScript Object Notation
-	DataFormat *DataFormat `json:"dataFormat,omitempty"`
-
-	// Domain to which API belongs to
-	DomainName *string `json:"domainName,omitempty"`
-
-	// Interface details
-	InterfaceDescriptions *[]InterfaceDescription `json:"interfaceDescriptions,omitempty"`
-
-	// Possible values are - HTTP_1_1: HTTP version 1.1 - HTTP_2: HTTP version 2
-	Protocol *Protocol `json:"protocol,omitempty"`
-
-	// Security methods supported by the AEF
-	SecurityMethods *[]SecurityMethod `json:"securityMethods,omitempty"`
-
-	// API version
-	Versions []Version `json:"versions"`
-}
-
-// Possible values are - REQUEST_RESPONSE: The communication is of the type request-response - SUBSCRIBE_NOTIFY: The communication is of the type subscribe-notify
-type CommunicationType string
-
-// Represents the description of a custom operation.
-type CustomOperation struct {
-	// Possible values are - REQUEST_RESPONSE: The communication is of the type request-response - SUBSCRIBE_NOTIFY: The communication is of the type subscribe-notify
-	CommType CommunicationType `json:"commType"`
-
-	// it is set as {custOpName} part of the URI structure for a custom operation without resource association as defined in subclause 4.4 of 3GPP TS 29.501.
-	CustOpName string `json:"custOpName"`
-
-	// Text description of the custom operation
-	Description *string `json:"description,omitempty"`
-
-	// Supported HTTP methods for the API resource. Only applicable when the protocol in AefProfile indicates HTTP.
-	Operations *[]Operation `json:"operations,omitempty"`
-}
-
-// Possible values are - JSON: JavaScript Object Notation
-type DataFormat string
-
-// Represents the description of an API's interface.
-type InterfaceDescription struct {
-	// string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in IETF RFC 1166.
-	Ipv4Addr *externalRef1.Ipv4Addr `json:"ipv4Addr,omitempty"`
-
-	// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used.
-	Ipv6Addr *externalRef1.Ipv6Addr `json:"ipv6Addr,omitempty"`
-
-	// Unsigned integer with valid values between 0 and 65535.
-	Port *externalRef1.Port `json:"port,omitempty"`
-
-	// Security methods supported by the interface, it take precedence over the security methods provided in AefProfile, for this specific interface.
-	SecurityMethods *[]SecurityMethod `json:"securityMethods,omitempty"`
-}
-
-// Possible values are - GET: HTTP GET method - POST: HTTP POST method - PUT: HTTP PUT method - PATCH: HTTP PATCH method - DELETE: HTTP DELETE method
-type Operation string
-
-// Possible values are - HTTP_1_1: HTTP version 1.1 - HTTP_2: HTTP version 2
-type Protocol string
-
-// Represents the published API path within the same CAPIF provider domain.
-type PublishedApiPath struct {
-	// A list of CCF identifiers where the service API is already published.
-	CcfIds *[]string `json:"ccfIds,omitempty"`
-}
-
-// Represents the API resource data.
-type Resource struct {
-	// Possible values are - REQUEST_RESPONSE: The communication is of the type request-response - SUBSCRIBE_NOTIFY: The communication is of the type subscribe-notify
-	CommType CommunicationType `json:"commType"`
-
-	// it is set as {custOpName} part of the URI structure for a custom operation associated with a resource as defined in subclause 4.4 of 3GPP TS 29.501.
-	CustOpName *string `json:"custOpName,omitempty"`
-
-	// Text description of the API resource
-	Description *string `json:"description,omitempty"`
-
-	// Supported HTTP methods for the API resource. Only applicable when the protocol in AefProfile indicates HTTP.
-	Operations *[]Operation `json:"operations,omitempty"`
-
-	// Resource name
-	ResourceName string `json:"resourceName"`
-
-	// Relative URI of the API resource, it is set as {apiSpecificResourceUriPart} part of the URI structure as defined in subclause 4.4 of 3GPP TS 29.501.
-	Uri string `json:"uri"`
-}
-
-// Possible values are - PSK: Security method 1 (Using TLS-PSK) as described in 3GPP TS 33.122 - PKI: Security method 2 (Using PKI) as described in 3GPP TS 33.122 - OAUTH: Security method 3 (TLS with OAuth token) as described in 3GPP TS 33.122
-type SecurityMethod string
-
-// Represents the description of a service API as published by the APF.
-type ServiceAPIDescription struct {
-	// AEF profile information, which includes the exposed API details (e.g. protocol).
-	AefProfiles *[]AefProfile `json:"aefProfiles,omitempty"`
-
-	// API identifier assigned by the CAPIF core function to the published service API. Shall not be present in the HTTP POST request from the API publishing function to the CAPIF core function. Shall be present in the HTTP POST response from the CAPIF core function to the API publishing function and in the HTTP GET response from the CAPIF core function to the API invoker (discovery API).
-	ApiId *string `json:"apiId,omitempty"`
-
-	// API name, it is set as {apiName} part of the URI structure as defined in subclause 4.4 of 3GPP TS 29.501.
-	ApiName string `json:"apiName"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	ApiSuppFeats *externalRef2.SupportedFeatures `json:"apiSuppFeats,omitempty"`
-
-	// CAPIF core function identifier.
-	CcfId *string `json:"ccfId,omitempty"`
-
-	// Text description of the API
-	Description *string `json:"description,omitempty"`
-
-	// Represents the published API path within the same CAPIF provider domain.
-	PubApiPath         *PublishedApiPath `json:"pubApiPath,omitempty"`
-	ServiceAPICategory *string           `json:"serviceAPICategory,omitempty"`
-
-	// Indicates whether the service API and/or the service API category can be shared to the list of CAPIF provider domains.
-	ShareableInfo *ShareableInformation `json:"shareableInfo,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef2.SupportedFeatures `json:"supportedFeatures,omitempty"`
-}
-
-// Represents the parameters to request the modification of an APF published API resource.
-type ServiceAPIDescriptionPatch struct {
-	AefProfiles *[]AefProfile `json:"aefProfiles,omitempty"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	ApiSuppFeats *externalRef2.SupportedFeatures `json:"apiSuppFeats,omitempty"`
-
-	// CAPIF core function identifier.
-	CcfId *string `json:"ccfId,omitempty"`
-
-	// Text description of the API
-	Description *string `json:"description,omitempty"`
-
-	// Represents the published API path within the same CAPIF provider domain.
-	PubApiPath         *PublishedApiPath `json:"pubApiPath,omitempty"`
-	ServiceAPICategory *string           `json:"serviceAPICategory,omitempty"`
-
-	// Indicates whether the service API and/or the service API category can be shared to the list of CAPIF provider domains.
-	ShareableInfo *ShareableInformation `json:"shareableInfo,omitempty"`
-}
-
-// Indicates whether the service API and/or the service API category can be shared to the list of CAPIF provider domains.
-type ShareableInformation struct {
-	// List of CAPIF provider domains to which the service API information to be shared.
-	CapifProvDoms *[]string `json:"capifProvDoms,omitempty"`
-
-	// Set to "true" indicates that the service API and/or the service API category can be shared to the list of CAPIF provider domain information. Otherwise set to "false".
-	IsShareable bool `json:"isShareable"`
-}
-
-// Represents the API version information.
-type Version struct {
-	// API major version in URI (e.g. v1)
-	ApiVersion string `json:"apiVersion"`
-
-	// Custom operations without resource association.
-	CustOperations *[]CustomOperation `json:"custOperations,omitempty"`
-
-	// string with format "date-time" as defined in OpenAPI.
-	Expiry *externalRef1.DateTime `json:"expiry,omitempty"`
-
-	// Resources supported by the API.
-	Resources *[]Resource `json:"resources,omitempty"`
-}
-
-// Identification of the API publishing function.
-type ApfId string
-
-// String identifying an individual published service API.
-type ServiceApiId string
-
-// PostApfIdServiceApisJSONBody defines parameters for PostApfIdServiceApis.
-type PostApfIdServiceApisJSONBody ServiceAPIDescription
-
-// PutApfIdServiceApisServiceApiIdJSONBody defines parameters for PutApfIdServiceApisServiceApiId.
-type PutApfIdServiceApisServiceApiIdJSONBody ServiceAPIDescription
-
-// PostApfIdServiceApisJSONRequestBody defines body for PostApfIdServiceApis for application/json ContentType.
-type PostApfIdServiceApisJSONRequestBody PostApfIdServiceApisJSONBody
-
-// PutApfIdServiceApisServiceApiIdJSONRequestBody defines body for PutApfIdServiceApisServiceApiId for application/json ContentType.
-type PutApfIdServiceApisServiceApiIdJSONRequestBody PutApfIdServiceApisServiceApiIdJSONBody
diff --git a/capif/internal/readonly/routinginfoapi/generator_settings_server.yaml b/capif/internal/readonly/routinginfoapi/generator_settings_server.yaml
deleted file mode 100644
index adc3928..0000000
--- a/capif/internal/readonly/routinginfoapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/routinginfoapi/routinginfo-server.gen.go
-package: routinginfoapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/routinginfoapi/generator_settings_types.yaml b/capif/internal/readonly/routinginfoapi/generator_settings_types.yaml
deleted file mode 100644
index 7419f12..0000000
--- a/capif/internal/readonly/routinginfoapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/routinginfoapi/routinginfo-types.gen.go
-package: routinginfoapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/routinginfoapi/routinginfo-server.gen.go b/capif/internal/readonly/routinginfoapi/routinginfo-server.gen.go
deleted file mode 100644
index 3c8ce7c..0000000
--- a/capif/internal/readonly/routinginfoapi/routinginfo-server.gen.go
+++ /dev/null
@@ -1,212 +0,0 @@
-// Package routinginfoapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package routinginfoapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (GET /service-apis/{serviceApiId})
-	GetServiceApisServiceApiId(ctx echo.Context, serviceApiId string, params GetServiceApisServiceApiIdParams) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// GetServiceApisServiceApiId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetServiceApisServiceApiId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "serviceApiId" -------------
-	var serviceApiId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "serviceApiId", runtime.ParamLocationPath, ctx.Param("serviceApiId"), &serviceApiId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter serviceApiId: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params GetServiceApisServiceApiIdParams
-	// ------------- Required query parameter "aef-id" -------------
-
-	err = runtime.BindQueryParameter("form", true, true, "aef-id", ctx.QueryParams(), &params.AefId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter aef-id: %s", err))
-	}
-
-	// ------------- Optional query parameter "supp-feat" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "supp-feat", ctx.QueryParams(), &params.SuppFeat)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter supp-feat: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetServiceApisServiceApiId(ctx, serviceApiId, params)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.GET(baseURL+"/service-apis/:serviceApiId", wrapper.GetServiceApisServiceApiId)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"H4sIAAAAAAAC/6RW0W7buBL9FYL3PuwCsmTJcdL4zZs2hbDA1rCMfWkDg5FGNrsSyQ4pp9nAH7S/sV+2",
-	"GFJJnMQ10vgliuzhOWdmznB8x0vdGq1AOcsnd9yWa2iF/zc3m9NpVSFYOxdqBfRZBbZEaZzUik/4HAyC",
-	"paMsn21OmQjRDCk85hE3qA2gk+ABQVX0+D9CzSd8UWTnaZYtL3TbavVeOBHfirb5X/IoKOnVJPdS+Dbi",
-	"1gl0R+NsI47wrZMIFZ987kEjL/Eq4u7WAJ9wff0VSkekc905qVa5qvXBMgjFprOcYQhnUtUaW0FxL8vR",
-	"B827JrxLB63dSWxvBvPHQ6SrlSoPx9IH1QJR3L7I8AnbgRQ98k+kiF2zp9UC6hnqWgasnU5l1KnpLL9c",
-	"zrrrRtr1sgDcyBKW01n+48ZNH/G2EZdmc0Jt9LbcW7tXmuHkib8P19PTnh6mPWi6V/I869tOJV92jYLh",
-	"uwNUonmvS/uycaOPsxlbFCw7j7MsY3+mZ/EoHrJQH9/ISxQt3Gj8i9UamY//Q6NbX+tOVRRhecQ7bPiE",
-	"r50zkyS5ubmJRytjYo2rpHYmKQyUNhFYruUGkux8aQEl2CSQJr52eyeH+Il1vmdevqh//2HZMEujIOoT",
-	"roSSf/svRcNmAp0CtOyX6Tz/LWLTRV5E7OKimEbsw6LII7Yo3vvHYkp/Ln6Nv6hp0zCUq7WzjOyMG6ji",
-	"L4pH3ElHVuXBmr2cJY07+ZJHfANog+Y0TuPhQDRmLeKMUtMGlDCSih0P4yHNgnBr34vEBnMPhJE2uevf",
-	"pkbm1Za+X4HbN2sOJWzAMreGQ9cJDZx/ySs+4R/BFQ/4ttih8oqoyw7Q8snn54R5BcrJWgIyXTPBTJhM",
-	"qFgvmIUaSAqm3HjElWipXvYpzaNxHXYQ9duEUuyNax1KtSKTHxbhM/9weU/6rQO8fWQVUA/kkXwLzWrZ",
-	"OEAmEaGBjVCOTGG0skD2aISDijnNOmU7YzTSaw3CdQj2B8IocEAxfFfLzvU3PktftaiKe8bLe8Lt9ory",
-	"7fURbDYc0qPUyoHyPhLGNLL0lki+Wkrz7qWMQ2vF7zd/qzwt1qffY3L6aHj2k4v3QXBCZz3EuyMg3hHE",
-	"Scj7TRB01kOkR0CkAWJ0BMQoQJwcAXESIE6PgDj1EOkRKtKgIjt/O0R2ThDjI5o6Dk0dH9GRcehIBbXo",
-	"GvdmmPvz260fIr9h+is3bNA7YeRca7dNSmFkPehv9gHd7MkmpUUjUIrr/idhHx12RC/Nb2E7SRL4LlrT",
-	"QFzqlj8f2P4gE5ZVUEsFFZOK2e66bERngZ3FY7pmn/46INlX2/8CAAD//0fkW+0SDAAA",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29222_CAPIF_Publish_Service_API.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/routinginfoapi/routinginfo-types.gen.go b/capif/internal/readonly/routinginfoapi/routinginfo-types.gen.go
deleted file mode 100644
index bd908df..0000000
--- a/capif/internal/readonly/routinginfoapi/routinginfo-types.gen.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// Package routinginfoapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package routinginfoapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/aggregatecommon"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef3 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// Represents IPv6 address range.
-type Ipv6AddressRange struct {
-	// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used.
-	End externalRef1.Ipv6Addr `json:"end"`
-
-	// string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used.
-	Start externalRef1.Ipv6Addr `json:"start"`
-}
-
-// Represents an API routing information.
-type RoutingInfo struct {
-	RoutingRules []RoutingRule `json:"routingRules"`
-}
-
-// Represents an API routing rule.
-type RoutingRule struct {
-	// Represents the AEF profile data.
-	AefProfile     externalRef3.AefProfile          `json:"aefProfile"`
-	Ipv4AddrRanges *[]externalRef0.Ipv4AddressRange `json:"ipv4AddrRanges,omitempty"`
-	Ipv6AddrRanges *[]Ipv6AddressRange              `json:"ipv6AddrRanges,omitempty"`
-}
-
-// GetServiceApisServiceApiIdParams defines parameters for GetServiceApisServiceApiId.
-type GetServiceApisServiceApiIdParams struct {
-	// Identifier of the AEF
-	AefId string `json:"aef-id"`
-
-	// To filter irrelevant responses related to unsupported features
-	SuppFeat *externalRef2.SupportedFeatures `json:"supp-feat,omitempty"`
-}
diff --git a/capif/internal/readonly/securityapi/generator_settings_server.yaml b/capif/internal/readonly/securityapi/generator_settings_server.yaml
deleted file mode 100644
index ee5cb5a..0000000
--- a/capif/internal/readonly/securityapi/generator_settings_server.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/securityapi/security-server.gen.go
-package: securityapi
-generate:
-  - server
-  - spec
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/securityapi/generator_settings_types.yaml b/capif/internal/readonly/securityapi/generator_settings_types.yaml
deleted file mode 100644
index ed334fb..0000000
--- a/capif/internal/readonly/securityapi/generator_settings_types.yaml
+++ /dev/null
@@ -1,29 +0,0 @@
-# -
-#   ========================LICENSE_START=================================
-#   O-RAN-SC
-#   %%
-#   Copyright (C) 2022: Nordix Foundation
-#   %%
-#   Licensed under the Apache License, Version 2.0 (the "License");
-#   you may not use this file except in compliance with the License.
-#   You may obtain a copy of the License at
-#
-#        http://www.apache.org/licenses/LICENSE-2.0
-#
-#   Unless required by applicable law or agreed to in writing, software
-#   distributed under the License is distributed on an "AS IS" BASIS,
-#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#   See the License for the specific language governing permissions and
-#   limitations under the License.
-#   ========================LICENSE_END===================================
-#
-
-output:
-    internal/readonly/securityapi/security-types.gen.go
-package: securityapi
-generate:
-  - types
-import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29222_CAPIF_Publish_Service_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/securityapi/security-server.gen.go b/capif/internal/readonly/securityapi/security-server.gen.go
deleted file mode 100644
index 631c90f..0000000
--- a/capif/internal/readonly/securityapi/security-server.gen.go
+++ /dev/null
@@ -1,333 +0,0 @@
-// Package securityapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package securityapi
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"fmt"
-	"net/http"
-	"net/url"
-	"path"
-	"strings"
-
-	"github.com/deepmap/oapi-codegen/pkg/runtime"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/labstack/echo/v4"
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-	externalRef2 "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-)
-
-// ServerInterface represents all server handlers.
-type ServerInterface interface {
-
-	// (POST /securities/{securityId}/token)
-	PostSecuritiesSecurityIdToken(ctx echo.Context, securityId string) error
-
-	// (DELETE /trustedInvokers/{apiInvokerId})
-	DeleteTrustedInvokersApiInvokerId(ctx echo.Context, apiInvokerId string) error
-
-	// (GET /trustedInvokers/{apiInvokerId})
-	GetTrustedInvokersApiInvokerId(ctx echo.Context, apiInvokerId string, params GetTrustedInvokersApiInvokerIdParams) error
-
-	// (PUT /trustedInvokers/{apiInvokerId})
-	PutTrustedInvokersApiInvokerId(ctx echo.Context, apiInvokerId string) error
-
-	// (POST /trustedInvokers/{apiInvokerId}/delete)
-	PostTrustedInvokersApiInvokerIdDelete(ctx echo.Context, apiInvokerId string) error
-
-	// (POST /trustedInvokers/{apiInvokerId}/update)
-	PostTrustedInvokersApiInvokerIdUpdate(ctx echo.Context, apiInvokerId string) error
-}
-
-// ServerInterfaceWrapper converts echo contexts to parameters.
-type ServerInterfaceWrapper struct {
-	Handler ServerInterface
-}
-
-// PostSecuritiesSecurityIdToken converts echo context to params.
-func (w *ServerInterfaceWrapper) PostSecuritiesSecurityIdToken(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "securityId" -------------
-	var securityId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "securityId", runtime.ParamLocationPath, ctx.Param("securityId"), &securityId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter securityId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostSecuritiesSecurityIdToken(ctx, securityId)
-	return err
-}
-
-// DeleteTrustedInvokersApiInvokerId converts echo context to params.
-func (w *ServerInterfaceWrapper) DeleteTrustedInvokersApiInvokerId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apiInvokerId" -------------
-	var apiInvokerId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apiInvokerId", runtime.ParamLocationPath, ctx.Param("apiInvokerId"), &apiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apiInvokerId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.DeleteTrustedInvokersApiInvokerId(ctx, apiInvokerId)
-	return err
-}
-
-// GetTrustedInvokersApiInvokerId converts echo context to params.
-func (w *ServerInterfaceWrapper) GetTrustedInvokersApiInvokerId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apiInvokerId" -------------
-	var apiInvokerId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apiInvokerId", runtime.ParamLocationPath, ctx.Param("apiInvokerId"), &apiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apiInvokerId: %s", err))
-	}
-
-	// Parameter object where we will unmarshal all parameters from the context
-	var params GetTrustedInvokersApiInvokerIdParams
-	// ------------- Optional query parameter "authenticationInfo" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "authenticationInfo", ctx.QueryParams(), &params.AuthenticationInfo)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter authenticationInfo: %s", err))
-	}
-
-	// ------------- Optional query parameter "authorizationInfo" -------------
-
-	err = runtime.BindQueryParameter("form", true, false, "authorizationInfo", ctx.QueryParams(), &params.AuthorizationInfo)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter authorizationInfo: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.GetTrustedInvokersApiInvokerId(ctx, apiInvokerId, params)
-	return err
-}
-
-// PutTrustedInvokersApiInvokerId converts echo context to params.
-func (w *ServerInterfaceWrapper) PutTrustedInvokersApiInvokerId(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apiInvokerId" -------------
-	var apiInvokerId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apiInvokerId", runtime.ParamLocationPath, ctx.Param("apiInvokerId"), &apiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apiInvokerId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PutTrustedInvokersApiInvokerId(ctx, apiInvokerId)
-	return err
-}
-
-// PostTrustedInvokersApiInvokerIdDelete converts echo context to params.
-func (w *ServerInterfaceWrapper) PostTrustedInvokersApiInvokerIdDelete(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apiInvokerId" -------------
-	var apiInvokerId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apiInvokerId", runtime.ParamLocationPath, ctx.Param("apiInvokerId"), &apiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apiInvokerId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostTrustedInvokersApiInvokerIdDelete(ctx, apiInvokerId)
-	return err
-}
-
-// PostTrustedInvokersApiInvokerIdUpdate converts echo context to params.
-func (w *ServerInterfaceWrapper) PostTrustedInvokersApiInvokerIdUpdate(ctx echo.Context) error {
-	var err error
-	// ------------- Path parameter "apiInvokerId" -------------
-	var apiInvokerId string
-
-	err = runtime.BindStyledParameterWithLocation("simple", false, "apiInvokerId", runtime.ParamLocationPath, ctx.Param("apiInvokerId"), &apiInvokerId)
-	if err != nil {
-		return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter apiInvokerId: %s", err))
-	}
-
-	// Invoke the callback with all the unmarshalled arguments
-	err = w.Handler.PostTrustedInvokersApiInvokerIdUpdate(ctx, apiInvokerId)
-	return err
-}
-
-// This is a simple interface which specifies echo.Route addition functions which
-// are present on both echo.Echo and echo.Group, since we want to allow using
-// either of them for path registration
-type EchoRouter interface {
-	CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-	TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route
-}
-
-// RegisterHandlers adds each server route to the EchoRouter.
-func RegisterHandlers(router EchoRouter, si ServerInterface) {
-	RegisterHandlersWithBaseURL(router, si, "")
-}
-
-// Registers handlers, and prepends BaseURL to the paths, so that the paths
-// can be served under a prefix.
-func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) {
-
-	wrapper := ServerInterfaceWrapper{
-		Handler: si,
-	}
-
-	router.POST(baseURL+"/securities/:securityId/token", wrapper.PostSecuritiesSecurityIdToken)
-	router.DELETE(baseURL+"/trustedInvokers/:apiInvokerId", wrapper.DeleteTrustedInvokersApiInvokerId)
-	router.GET(baseURL+"/trustedInvokers/:apiInvokerId", wrapper.GetTrustedInvokersApiInvokerId)
-	router.PUT(baseURL+"/trustedInvokers/:apiInvokerId", wrapper.PutTrustedInvokersApiInvokerId)
-	router.POST(baseURL+"/trustedInvokers/:apiInvokerId/delete", wrapper.PostTrustedInvokersApiInvokerIdDelete)
-	router.POST(baseURL+"/trustedInvokers/:apiInvokerId/update", wrapper.PostTrustedInvokersApiInvokerIdUpdate)
-
-}
-
-// Base64 encoded, gzipped, json marshaled Swagger object
-var swaggerSpec = []string{
-
-	"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",
-}
-
-// GetSwagger returns the content of the embedded swagger specification file
-// or error if failed to decode
-func decodeSpec() ([]byte, error) {
-	zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, ""))
-	if err != nil {
-		return nil, fmt.Errorf("error base64 decoding spec: %s", err)
-	}
-	zr, err := gzip.NewReader(bytes.NewReader(zipped))
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-	var buf bytes.Buffer
-	_, err = buf.ReadFrom(zr)
-	if err != nil {
-		return nil, fmt.Errorf("error decompressing spec: %s", err)
-	}
-
-	return buf.Bytes(), nil
-}
-
-var rawSpec = decodeSpecCached()
-
-// a naive cached of a decoded swagger spec
-func decodeSpecCached() func() ([]byte, error) {
-	data, err := decodeSpec()
-	return func() ([]byte, error) {
-		return data, err
-	}
-}
-
-// Constructs a synthetic filesystem for resolving external references when loading openapi specifications.
-func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) {
-	var res = make(map[string]func() ([]byte, error))
-	if len(pathToFile) > 0 {
-		res[pathToFile] = rawSpec
-	}
-
-	pathPrefix := path.Dir(pathToFile)
-
-	for rawPath, rawFunc := range externalRef0.PathToRawSpec(path.Join(pathPrefix, "TS29122_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef2.PathToRawSpec(path.Join(pathPrefix, "TS29222_CAPIF_Publish_Service_API.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	for rawPath, rawFunc := range externalRef1.PathToRawSpec(path.Join(pathPrefix, "TS29571_CommonData.yaml")) {
-		if _, ok := res[rawPath]; ok {
-			// it is not possible to compare functions in golang, so always overwrite the old value
-		}
-		res[rawPath] = rawFunc
-	}
-	return res
-}
-
-// GetSwagger returns the Swagger specification corresponding to the generated code
-// in this file. The external references of Swagger specification are resolved.
-// The logic of resolving external references is tightly connected to "import-mapping" feature.
-// Externally referenced files must be embedded in the corresponding golang packages.
-// Urls can be supported but this task was out of the scope.
-func GetSwagger() (swagger *openapi3.T, err error) {
-	var resolvePath = PathToRawSpec("")
-
-	loader := openapi3.NewLoader()
-	loader.IsExternalRefsAllowed = true
-	loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) {
-		var pathToFile = url.String()
-		pathToFile = path.Clean(pathToFile)
-		getSpec, ok := resolvePath[pathToFile]
-		if !ok {
-			err1 := fmt.Errorf("path not found: %s", pathToFile)
-			return nil, err1
-		}
-		return getSpec()
-	}
-	var specData []byte
-	specData, err = rawSpec()
-	if err != nil {
-		return
-	}
-	swagger, err = loader.LoadFromData(specData)
-	if err != nil {
-		return
-	}
-	return
-}
diff --git a/capif/internal/readonly/securityapi/security-types.gen.go b/capif/internal/readonly/securityapi/security-types.gen.go
deleted file mode 100644
index d8a7a72..0000000
--- a/capif/internal/readonly/securityapi/security-types.gen.go
+++ /dev/null
@@ -1,140 +0,0 @@
-// Package securityapi provides primitives to interact with the openapi HTTP API.
-//
-// Code generated by github.com/deepmap/oapi-codegen version v1.10.1 DO NOT EDIT.
-package securityapi
-
-import (
-	externalRef0 "oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	externalRef1 "oransc.org/nonrtric/plt/capif/internal/readonly/common29571"
-)
-
-// Defines values for AccessTokenErrError.
-const (
-	AccessTokenErrErrorInvalidClient AccessTokenErrError = "invalid_client"
-
-	AccessTokenErrErrorInvalidGrant AccessTokenErrError = "invalid_grant"
-
-	AccessTokenErrErrorInvalidRequest AccessTokenErrError = "invalid_request"
-
-	AccessTokenErrErrorInvalidScope AccessTokenErrError = "invalid_scope"
-
-	AccessTokenErrErrorUnauthorizedClient AccessTokenErrError = "unauthorized_client"
-
-	AccessTokenErrErrorUnsupportedGrantType AccessTokenErrError = "unsupported_grant_type"
-)
-
-// Defines values for AccessTokenReqGrantType.
-const (
-	AccessTokenReqGrantTypeClientCredentials AccessTokenReqGrantType = "client_credentials"
-)
-
-// Defines values for AccessTokenRspTokenType.
-const (
-	AccessTokenRspTokenTypeBearer AccessTokenRspTokenType = "Bearer"
-)
-
-// Defines values for Cause.
-const (
-	CauseOVERLIMITUSAGE Cause = "OVERLIMIT_USAGE"
-
-	CauseUNEXPECTEDREASON Cause = "UNEXPECTED_REASON"
-)
-
-// Represents an error in the access token request.
-type AccessTokenErr struct {
-	Error            AccessTokenErrError `json:"error"`
-	ErrorDescription *string             `json:"error_description,omitempty"`
-	ErrorUri         *string             `json:"error_uri,omitempty"`
-}
-
-// AccessTokenErrError defines model for AccessTokenErr.Error.
-type AccessTokenErrError string
-
-// Represents the access token request information.
-type AccessTokenReq struct {
-	ClientId     string                  `json:"client_id"`
-	ClientSecret *string                 `json:"client_secret,omitempty"`
-	GrantType    AccessTokenReqGrantType `json:"grant_type"`
-	Scope        *string                 `json:"scope,omitempty"`
-}
-
-// AccessTokenReqGrantType defines model for AccessTokenReq.GrantType.
-type AccessTokenReqGrantType string
-
-// Represents the access token response information.
-type AccessTokenRsp struct {
-	// JWS Compact Serialized representation of JWS signed JSON object (AccessTokenClaims)
-	AccessToken string `json:"access_token"`
-
-	// Unsigned integer identifying a period of time in units of seconds.
-	ExpiresIn externalRef0.DurationSec `json:"expires_in"`
-	Scope     *string                  `json:"scope,omitempty"`
-	TokenType AccessTokenRspTokenType  `json:"token_type"`
-}
-
-// AccessTokenRspTokenType defines model for AccessTokenRsp.TokenType.
-type AccessTokenRspTokenType string
-
-// Possible values are - OVERLIMIT_USAGE: The revocation of the authorization of the API invoker is due to the overlimit usage of the service API - UNEXPECTED_REASON: The revocation of the authorization of the API invoker is due to unexpected reason.
-type Cause string
-
-// Represents the interface details and the security method.
-type SecurityInformation interface{}
-
-// Represents revoked authorization notification details.
-type SecurityNotification struct {
-	// String identifying the AEF.
-	AefId *string `json:"aefId,omitempty"`
-
-	// Identifier of the service API
-	ApiIds []string `json:"apiIds"`
-
-	// String identifying the API invoker assigned by the CAPIF core function.
-	ApiInvokerId string `json:"apiInvokerId"`
-
-	// Possible values are - OVERLIMIT_USAGE: The revocation of the authorization of the API invoker is due to the overlimit usage of the service API - UNEXPECTED_REASON: The revocation of the authorization of the API invoker is due to unexpected reason.
-	Cause Cause `json:"cause"`
-}
-
-// Represents the details of the security method for each service API interface. When included by the API invoker, it indicates the preferred method of security. When included by the CAPIF core function, it indicates the security method to be used for the service API interface.
-type ServiceSecurity struct {
-	// string providing an URI formatted according to IETF RFC 3986.
-	NotificationDestination externalRef0.Uri `json:"notificationDestination"`
-
-	// Set to true by API invoker to request the CAPIF core function to send a test notification as defined in in subclause 7.6. Set to false or omitted otherwise.
-	RequestTestNotification *bool                 `json:"requestTestNotification,omitempty"`
-	SecurityInfo            []SecurityInformation `json:"securityInfo"`
-
-	// A string used to indicate the features supported by an API that is used as defined in clause  6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in  hexadecimal representation Each character in the string shall take a value of "0" to "9",  "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in  table 5.2.2-3. The most significant character representing the highest-numbered features shall  appear first in the string, and the character representing features 1 to 4 shall appear last  in the string. The list of features and their numbering (starting with 1) are defined  separately for each API. If the string contains a lower number of characters than there are  defined features for an API, all features that would be represented by characters that are not  present in the string are not supported.
-	SupportedFeatures *externalRef1.SupportedFeatures `json:"supportedFeatures,omitempty"`
-
-	// Represents the configuration information for the delivery of notifications over Websockets.
-	WebsockNotifConfig *externalRef0.WebsockNotifConfig `json:"websockNotifConfig,omitempty"`
-}
-
-// GetTrustedInvokersApiInvokerIdParams defines parameters for GetTrustedInvokersApiInvokerId.
-type GetTrustedInvokersApiInvokerIdParams struct {
-	// When set to 'true', it indicates the CAPIF core function to send the authentication information of the API invoker. Set to false or omitted otherwise.
-	AuthenticationInfo *bool `json:"authenticationInfo,omitempty"`
-
-	// When set to 'true', it indicates the CAPIF core function to send the authorization information of the API invoker. Set to false or omitted otherwise.
-	AuthorizationInfo *bool `json:"authorizationInfo,omitempty"`
-}
-
-// PutTrustedInvokersApiInvokerIdJSONBody defines parameters for PutTrustedInvokersApiInvokerId.
-type PutTrustedInvokersApiInvokerIdJSONBody ServiceSecurity
-
-// PostTrustedInvokersApiInvokerIdDeleteJSONBody defines parameters for PostTrustedInvokersApiInvokerIdDelete.
-type PostTrustedInvokersApiInvokerIdDeleteJSONBody SecurityNotification
-
-// PostTrustedInvokersApiInvokerIdUpdateJSONBody defines parameters for PostTrustedInvokersApiInvokerIdUpdate.
-type PostTrustedInvokersApiInvokerIdUpdateJSONBody ServiceSecurity
-
-// PutTrustedInvokersApiInvokerIdJSONRequestBody defines body for PutTrustedInvokersApiInvokerId for application/json ContentType.
-type PutTrustedInvokersApiInvokerIdJSONRequestBody PutTrustedInvokersApiInvokerIdJSONBody
-
-// PostTrustedInvokersApiInvokerIdDeleteJSONRequestBody defines body for PostTrustedInvokersApiInvokerIdDelete for application/json ContentType.
-type PostTrustedInvokersApiInvokerIdDeleteJSONRequestBody PostTrustedInvokersApiInvokerIdDeleteJSONBody
-
-// PostTrustedInvokersApiInvokerIdUpdateJSONRequestBody defines body for PostTrustedInvokersApiInvokerIdUpdate for application/json ContentType.
-type PostTrustedInvokersApiInvokerIdUpdateJSONRequestBody PostTrustedInvokersApiInvokerIdUpdateJSONBody
diff --git a/capif/java/.gitignore b/capif/java/.gitignore
deleted file mode 100644
index 667aaef..0000000
--- a/capif/java/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/capif/java/capifapi/.gitignore b/capif/java/capifapi/.gitignore
deleted file mode 100644
index eb5a316..0000000
--- a/capif/java/capifapi/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-target
diff --git a/capif/java/capifapi/pom.xml b/capif/java/capifapi/pom.xml
deleted file mode 100644
index a24485c..0000000
--- a/capif/java/capifapi/pom.xml
+++ /dev/null
@@ -1,430 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.7.0</version>
-        <relativePath/> <!-- lookup parent from repository -->
-    </parent>
-
-    <groupId>org.oransc.nonrtric.plt</groupId>
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>capifapi</artifactId>
-    <version>0.0.1-SNAPSHOT</version>
-    <name>capifapi</name>
-    <description>Capif API</description>
-    <packaging>jar</packaging>
-
-    <properties>
-        <java.version>11</java.version>
-        <maven.compiler.source>${java.version}</maven.compiler.source>
-        <maven.compiler.target>${java.version}</maven.compiler.target>
-        <swagger-annotations.version>1.5.22</swagger-annotations.version>
-        <springfox.version>3.0.0</springfox.version>
-        <jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version>
-        <openapi-generator-maven-plugin.version>5.3.1</openapi-generator-maven-plugin.version>
-        <swagger-codegen-maven-plugin.version>3.0.31</swagger-codegen-maven-plugin.version>
-    </properties>
-    <dependencies>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-validation</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.openapitools</groupId>
-            <artifactId>jackson-databind-nullable</artifactId>
-            <version>${jackson-databind-nullable.version}</version>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml -->
-        <dependency>
-            <groupId>com.fasterxml.jackson.dataformat</groupId>
-            <artifactId>jackson-dataformat-yaml</artifactId>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
-        <dependency>
-            <groupId>javax.validation</groupId>
-            <artifactId>validation-api</artifactId>
-        </dependency>
-        <!-- https://mvnrepository.com/artifact/io.swagger/swagger-annotations -->
-        <dependency>
-            <groupId>io.swagger</groupId>
-            <artifactId>swagger-annotations</artifactId>
-            <version>1.6.6</version>
-        </dependency>
-        <dependency>
-            <groupId>org.openapitools</groupId>
-            <artifactId>openapi-generator-maven-plugin</artifactId>
-            <version>5.4.0</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>joda-time</groupId>
-            <artifactId>joda-time</artifactId>
-            <version>2.10.14</version>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>attach-sources</id>
-                        <goals>
-                            <goal>jar</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.openapitools</groupId>
-                <artifactId>openapi-generator-maven-plugin</artifactId>
-                <version>${openapi-generator-maven-plugin.version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildProviderApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_API_Provider_Management_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.providermanagement</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildInvokerApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_API_Invoker_Management_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.invokermanagement</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildPublishApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Publish_Service_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.publishservice</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildDiscoverApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Discover_Service_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.discoverservice</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildSecurityApi</id>
-                        <configuration>
-                            <inputSpec>${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Security_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.security</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildLoggingApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Logging_API_Invocation_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.loggingapiinvocation</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildRoutingApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Routing_Info_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.routinginfo</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildAccessControlApi</id>
-                        <configuration>
-                            <inputSpec>
-                                ${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Access_Control_Policy_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.accesscontrolpolicy</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildEventsApi</id>
-                        <configuration>
-                            <inputSpec>${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Events_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.events</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildAuditingsApi</id>
-                        <configuration>
-                            <inputSpec>${project.basedir}/../../internal/readonly/api/TS29222_CAPIF_Auditing_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.auditing</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                    <execution>
-                        <goals>
-                            <goal>generate</goal>
-                        </goals>
-                        <id>buildAefSecurityApi</id>
-                        <configuration>
-                            <inputSpec>${project.basedir}/../../internal/readonly/api/TS29222_AEF_Security_API.yaml
-                            </inputSpec>
-                            <generatorName>spring</generatorName>
-                            <library>spring-boot</library>
-                            <skipValidateSpec>true</skipValidateSpec>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApis>true</generateApis>
-                            <generateModels>true</generateModels>
-                            <generateApiTests>false</generateApiTests>
-                            <generateModelTests>false</generateModelTests>
-                            <configOptions>
-                                <basePackage>org.oransc.nonrtric.plt.capifapi</basePackage>
-                                <apiPackage>org.oransc.nonrtric.plt.capifapi.aefsecurity</apiPackage>
-                                <modelPackage>org.oransc.nonrtric.plt.capifapi.model</modelPackage>
-                                <dateLibrary>joda</dateLibrary>
-                                <interfaceOnly>true</interfaceOnly>
-                                <!-- <useBeanValidation>true</useBeanValidation>
-                                <performBeanValidation>true</performBeanValidation> -->
-                                <delegatePattern>true</delegatePattern>
-                            </configOptions>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/capifapi/.gitignore b/capifapi/.gitignore
new file mode 100644
index 0000000..36306bc
--- /dev/null
+++ b/capifapi/.gitignore
@@ -0,0 +1,7 @@
+.idea
+target
+specs
+commoncollector
+enumfixer
+specificationfixer
+src/capifserverapi/**/*.gen.go
\ No newline at end of file
diff --git a/capifapi/README.md b/capifapi/README.md
new file mode 100644
index 0000000..bd0d95c
--- /dev/null
+++ b/capifapi/README.md
@@ -0,0 +1,30 @@
+<!--
+-
+========================LICENSE_START=================================
+O-RAN-SC
+%%
+Copyright (C) 2022: Nordix Foundation
+%%
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+========================LICENSE_END===================================
+
+-->
+
+# O-RAN-SC CAPIF API
+
+This product contains generated code for the 3GPP CAPIF interfaces. It provides server API interfaces for Go and Java and client interfaces for Java.
+
+## Generation
+
+To generate the code run the `generate.sh` script. This script will download the specifications for release 17, unzip them, fix some issues and remove some not needed definitions, and generate the code. 
+
diff --git a/capifapi/client_pom.xml b/capifapi/client_pom.xml
new file mode 100644
index 0000000..5a6703f
--- /dev/null
+++ b/capifapi/client_pom.xml
@@ -0,0 +1,329 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+* ========================LICENSE_START=================================
+* O-RAN-SC
+* %%
+* Copyright (C) 2022 Nordix Foundation
+* %%
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ========================LICENSE_END===================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <groupId>org.oransc</groupId>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>capifclientapi</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>capifclientapi</name>
+  <description>Capif Lient API</description>
+  <packaging>jar</packaging>
+
+  <properties>
+    <java.version>11</java.version>
+    <maven.compiler.source>${java.version}</maven.compiler.source>
+    <maven.compiler.target>${java.version}</maven.compiler.target>
+    <servlet-api.version>2.5</servlet-api.version>
+    <jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version>
+    <spring-boot-starter-validation.version>2.7.0</spring-boot-starter-validation.version>
+    <spring-web.version>5.3.20</spring-web.version>
+    <joda-time.version>2.10.14</joda-time.version>
+    <openapi-generator-maven-plugin.version>6.0.0</openapi-generator-maven-plugin.version>
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>${servlet-api.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.openapitools</groupId>
+      <artifactId>jackson-databind-nullable</artifactId>
+      <version>${jackson-databind-nullable.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.openapitools</groupId>
+      <artifactId>openapi-generator-maven-plugin</artifactId>
+      <version>${openapi-generator-maven-plugin.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-web</artifactId>
+      <version>${spring-web.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-validation</artifactId>
+      <version>${spring-boot-starter-validation.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+      <version>${joda-time.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.openapitools</groupId>
+        <artifactId>openapi-generator-maven-plugin</artifactId>
+        <version>${openapi-generator-maven-plugin.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingProviderApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_API_Provider_Management_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.providermanagement.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingInvokerApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.invokermanagement.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingPublishApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Publish_Service_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.publishservice.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingDiscoverApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Discover_Service_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.discoverservice.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingSecurityApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Security_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.security.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingLoggingApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.loggingapiinvocation.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingRoutingApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Routing_Info_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.routinginfo.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingAccess_ControlApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.accesscontrolpolicy.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingEventsApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Events_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.events.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingAuditingApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Auditing_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.auditing.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>generatingAEF_SecurityApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_AEF_Security_API.yaml
+              </inputSpec>
+              <language>java</language>
+              <generatorName>java</generatorName>
+              <library>native</library>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.client</basePackage>
+                <apiPackage>org.oransc.capif.client.aefsecurity.api</apiPackage>
+                <modelPackage>org.oransc.capif.client.model</modelPackage>
+                <dateLibrary>java8</dateLibrary>
+              </configOptions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/capifapi/generate.sh b/capifapi/generate.sh
new file mode 100755
index 0000000..a0980c2
--- /dev/null
+++ b/capifapi/generate.sh
@@ -0,0 +1,158 @@
+# -
+#   ========================LICENSE_START=================================
+#   O-RAN-SC
+#   %%
+#   Copyright (C) 2022: Nordix Foundation
+#   %%
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#   ========================LICENSE_END===================================
+#
+
+cwd=$(pwd)
+
+mkdir -p specs
+
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/29222-h40.zip -o specs/apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/29122-h50.zip -o specs/common29122apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/29508-h60.zip -o specs/common29508apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/29510-h50.zip -o specs/common29510apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.512/29512-h60.zip -o specs/common29512apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.514/29514-h40.zip -o specs/common29514apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.517/29517-h50.zip -o specs/common29517apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/29518-h50.zip -o specs/common29518apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/29522-h50.zip -o specs/common29522apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.523/29523-h60.zip -o specs/common29523apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.554/29554-h30.zip -o specs/common29554apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/29571-h50.zip -o specs/common29571apidef.zip
+curl https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/29572-h40.zip -o specs/common29572apidef.zip
+
+cd specs/
+
+jar xvf apidef.zip
+jar xvf common29122apidef.zip
+jar xvf common29508apidef.zip
+jar xvf common29510apidef.zip
+jar xvf common29512apidef.zip
+jar xvf common29514apidef.zip
+jar xvf common29517apidef.zip
+jar xvf common29518apidef.zip
+jar xvf common29522apidef.zip
+jar xvf common29523apidef.zip
+jar xvf common29554apidef.zip
+jar xvf common29571apidef.zip
+jar xvf common29572apidef.zip
+
+sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\CivicAddress/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
+mv temp.yaml TS29571_CommonData.yaml
+sed -e 'H;x;/^\(  *\)\n\1/{s/\n.*//;x;d;}' -e 's/.*//;x;/\GeographicArea/{s/^\( *\).*/ \1/;x;d;}' TS29571_CommonData.yaml >temp.yaml
+mv temp.yaml TS29571_CommonData.yaml
+sed '/accessTokenError.*/,+3d' TS29571_CommonData.yaml >temp.yaml
+mv temp.yaml TS29571_CommonData.yaml
+sed '/accessTokenRequest.*/,+3d' TS29571_CommonData.yaml >temp.yaml
+mv temp.yaml TS29571_CommonData.yaml
+
+sed '/oneOf.*/,+2d' TS29222_CAPIF_Publish_Service_API.yaml >temp.yaml
+mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
+
+sed '64,68d' TS29222_CAPIF_Discover_Service_API.yaml >temp.yaml # Remove parameter preferred-aef-loc since it doesn't follow the OpenApi specification, "The behavior for nested objects and arrays is undefined."
+mv temp.yaml TS29222_CAPIF_Discover_Service_API.yaml
+
+cat TS29222_CAPIF_Security_API.yaml | sed -E 's/(    AccessTokenReq*)\:/\1:|      type: object/' | tr '|' '\n' > temp.yaml
+mv temp.yaml TS29222_CAPIF_Security_API.yaml
+
+cat TS29122_CommonData.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
+mv temp.yaml TS29122_CommonData.yaml
+cat TS29122_CommonData.yaml | sed 's/TS29554_Npcf_BDTPolicyControl/CommonData/g' > temp.yaml
+mv temp.yaml TS29122_CommonData.yaml
+cat TS29571_CommonData.yaml | sed 's/TS29571_CommonData.yaml//g' > temp.yaml
+mv temp.yaml TS29571_CommonData.yaml
+cat TS29222_CAPIF_Publish_Service_API.yaml | sed 's/TS29572_Nlmf_Location/CommonData/g' > temp.yaml
+mv temp.yaml TS29222_CAPIF_Publish_Service_API.yaml
+cat TS29222_CAPIF_Routing_Info_API.yaml | sed 's/TS29520_Nnwdaf_EventsSubscription/CommonData/g' > temp.yaml
+mv temp.yaml TS29222_CAPIF_Routing_Info_API.yaml
+cat TS29222_CAPIF_Routing_Info_API.yaml | sed 's/TS29510_Nnrf_NFManagement/CommonData/g' > temp.yaml
+mv temp.yaml TS29222_CAPIF_Routing_Info_API.yaml
+cat TS29222_CAPIF_Events_API.yaml | sed 's/TS29523_Npcf_EventExposure/CommonData/g' > temp.yaml
+mv temp.yaml TS29222_CAPIF_Events_API.yaml
+
+go install github.com/deepmap/oapi-codegen/cmd/oapi-codegen@v1.10.1
+PATH=$PATH:~/go/bin
+
+cd $cwd
+
+echo "Fixing enums"
+cd src/internal/enumfixer
+go build .
+./enumfixer -apidir=../../../specs
+
+cd $cwd
+echo "Gathering common references"
+cd src/internal/commoncollector
+go build .
+./commoncollector -apidir=../../../specs
+
+cd $cwd
+echo "Fixing misc in specifications"
+cd src/internal/specificationfixer
+go build .
+./specificationfixer -apidir=../../../specs
+
+cd $cwd
+
+echo "Generating TS29122_CommonData"
+oapi-codegen --config gogeneratorspecs/common29122/generator_settings.yaml specs/TS29122_CommonData.yaml
+echo "Generating aggregated CommonData"
+oapi-codegen --config gogeneratorspecs/aggregatecommon/generator_settings.yaml specs/CommonData.yaml
+echo "Generating TS29571_CommonData"
+oapi-codegen --config gogeneratorspecs/common29571/generator_settings.yaml specs/TS29571_CommonData.yaml
+echo "Generating TS29222_CAPIF_Publish_Service_API"
+oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
+oapi-codegen --config gogeneratorspecs/publishserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Publish_Service_API.yaml
+echo "Generating TS29222_CAPIF_API_Invoker_Management_API"
+oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
+oapi-codegen --config gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
+echo "Generating TS29222_CAPIF_API_Provider_Management_API"
+oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_types.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
+oapi-codegen --config gogeneratorspecs/providermanagementapi/generator_settings_server.yaml specs/TS29222_CAPIF_API_Provider_Management_API.yaml
+echo "Generating TS29222_CAPIF_Discover_Service_API"
+oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
+oapi-codegen --config gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml specs/TS29222_CAPIF_Discover_Service_API.yaml
+echo "Generating TS29222_CAPIF_Security_API"
+oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_types.yaml specs/TS29222_CAPIF_Security_API.yaml
+oapi-codegen --config gogeneratorspecs/securityapi/generator_settings_server.yaml specs/TS29222_CAPIF_Security_API.yaml
+echo "Generating TS29222_CAPIF_Logging_API_Invocation_API"
+oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
+oapi-codegen --config gogeneratorspecs/loggingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
+echo "Generating TS29222_CAPIF_Routing_Info_API"
+oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_types.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
+oapi-codegen --config gogeneratorspecs/routinginfoapi/generator_settings_server.yaml specs/TS29222_CAPIF_Routing_Info_API.yaml
+echo "Generating TS29222_CAPIF_Access_Control_Policy_API"
+oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
+oapi-codegen --config gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
+echo "Generating TS29222_CAPIF_Events_API"
+oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_types.yaml specs/TS29222_CAPIF_Events_API.yaml
+oapi-codegen --config gogeneratorspecs/eventsapi/generator_settings_server.yaml specs/TS29222_CAPIF_Events_API.yaml
+echo "Generating TS29222_CAPIF_Auditing_API"
+oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_types.yaml specs/TS29222_CAPIF_Auditing_API.yaml
+oapi-codegen --config gogeneratorspecs/auditingapi/generator_settings_server.yaml specs/TS29222_CAPIF_Auditing_API.yaml
+echo "Generating TS29222_AEF_Security_API"
+oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml specs/TS29222_AEF_Security_API.yaml
+oapi-codegen --config gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml specs/TS29222_AEF_Security_API.yaml
+
+echo "Install Java version of CAPIF Server API"
+mvn clean install -f server_pom.xml
+echo "Install Java version of CAPIF Client API"
+mvn clean install -f client_pom.xml
+
+echo "Cleanup"
+#rm -rf specs
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml
similarity index 84%
rename from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
rename to capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml
index 3a4f726..80eb425 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_server.yaml
@@ -19,10 +19,10 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
+  src/capifserverapi/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
 package: accesscontrolpolicyapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml
similarity index 78%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml
index 3a4f726..2c38e0f 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/accesscontrolpolicyapi/generator_settings_types.yaml
@@ -19,10 +19,10 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
+  src/capifserverapi/accesscontrolpolicyapi/accesscontrolpolicy-types.gen.go
 package: accesscontrolpolicyapi
 generate:
-  - server
-  - spec
+  - types
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
\ No newline at end of file
diff --git a/capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml
similarity index 85%
rename from capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml
rename to capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml
index 258174e..fcc74b7 100644
--- a/capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_server.yaml
@@ -19,10 +19,10 @@
 #
 
 output:
-  internal/readonly/aefsecurityapi/aefsecurity-server.gen.go
+  src/capifserverapi/aefsecurityapi/aefsecurity-server.gen.go
 package: aefsecurityapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
diff --git a/capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml
similarity index 74%
copy from capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml
index 258174e..a4368ca 100644
--- a/capif/internal/readonly/aefsecurityapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/aefsecurityapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-  internal/readonly/aefsecurityapi/aefsecurity-server.gen.go
+  src/capifserverapi/aefsecurityapi/aefsecurity-types.gen.go
 package: aefsecurityapi
 generate:
-  - server
-  - spec
+  - types
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29222_CAPIF_Security_API.yaml: o-ran-sc.org/capifserverapi/securityapi
\ No newline at end of file
diff --git a/capif/internal/readonly/aggregatecommon/generator_settings.yaml b/capifapi/gogeneratorspecs/aggregatecommon/generator_settings.yaml
similarity index 86%
rename from capif/internal/readonly/aggregatecommon/generator_settings.yaml
rename to capifapi/gogeneratorspecs/aggregatecommon/generator_settings.yaml
index 7e44330..85c61fd 100644
--- a/capif/internal/readonly/aggregatecommon/generator_settings.yaml
+++ b/capifapi/gogeneratorspecs/aggregatecommon/generator_settings.yaml
@@ -19,11 +19,11 @@
 #
 
 output:
-  internal/readonly/aggregatecommon/common.gen.go
+  src/capifserverapi/aggregatecommon/common.gen.go
 package: common
 generate:
   - types
   - skip-prune
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/auditingapi/generator_settings_server.yaml
similarity index 73%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/auditingapi/generator_settings_server.yaml
index 3a4f726..1a56505 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/auditingapi/generator_settings_server.yaml
@@ -19,10 +19,12 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/auditingapi/auditing-server.gen.go
+package: auditingapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/auditingapi/generator_settings_types.yaml
similarity index 73%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/auditingapi/generator_settings_types.yaml
index f3c52ff..6a3034a 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/auditingapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/auditingapi/auditing-types.gen.go
+package: auditingapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/aggregatecommon/generator_settings.yaml b/capifapi/gogeneratorspecs/common29122/generator_settings.yaml
similarity index 80%
copy from capif/internal/readonly/aggregatecommon/generator_settings.yaml
copy to capifapi/gogeneratorspecs/common29122/generator_settings.yaml
index 7e44330..744f1c2 100644
--- a/capif/internal/readonly/aggregatecommon/generator_settings.yaml
+++ b/capifapi/gogeneratorspecs/common29122/generator_settings.yaml
@@ -19,11 +19,12 @@
 #
 
 output:
-  internal/readonly/aggregatecommon/common.gen.go
-package: common
+  src/capifserverapi/common29122/common.gen.go
+package: common29122
 generate:
   - types
   - skip-prune
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  CommonData.yaml: o-ran-sc.org/capifserverapi/aggregatecommon
diff --git a/capif/internal/readonly/common29571/generator_settings.yaml b/capifapi/gogeneratorspecs/common29571/generator_settings.yaml
similarity index 94%
rename from capif/internal/readonly/common29571/generator_settings.yaml
rename to capifapi/gogeneratorspecs/common29571/generator_settings.yaml
index b0386a3..feebe1d 100644
--- a/capif/internal/readonly/common29571/generator_settings.yaml
+++ b/capifapi/gogeneratorspecs/common29571/generator_settings.yaml
@@ -19,7 +19,7 @@
 #
 
 output:
-  internal/readonly/common29571/common.gen.go
+  src/capifserverapi/common29571/common.gen.go
 package: common29571
 generate:
   - types
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml
similarity index 72%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml
index 3a4f726..a2942e0 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_server.yaml
@@ -19,10 +19,12 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/discoverserviceapi/discoverservice-server.gen.go
+package: discoverserviceapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml
similarity index 72%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml
index f3c52ff..7674008 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/discoverserviceapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/discoverserviceapi/discoverservice-types.gen.go
+package: discoverserviceapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/eventsapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/eventsapi/generator_settings_server.yaml
similarity index 93%
rename from capif/internal/readonly/eventsapi/generator_settings_server.yaml
rename to capifapi/gogeneratorspecs/eventsapi/generator_settings_server.yaml
index 78c3524..f490bc8 100644
--- a/capif/internal/readonly/eventsapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/eventsapi/generator_settings_server.yaml
@@ -19,7 +19,7 @@
 #
 
 output:
-  internal/readonly/eventsapi/events-server.gen.go
+  src/capifserverapi/eventsapi/events-server.gen.go
 package: eventsapi
 generate:
   - server
diff --git a/capifapi/gogeneratorspecs/eventsapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/eventsapi/generator_settings_types.yaml
new file mode 100644
index 0000000..64077ef
--- /dev/null
+++ b/capifapi/gogeneratorspecs/eventsapi/generator_settings_types.yaml
@@ -0,0 +1,33 @@
+# -
+#   ========================LICENSE_START=================================
+#   O-RAN-SC
+#   %%
+#   Copyright (C) 2022: Nordix Foundation
+#   %%
+#   Licensed under the Apache License, Version 2.0 (the "License");
+#   you may not use this file except in compliance with the License.
+#   You may obtain a copy of the License at
+#
+#        http://www.apache.org/licenses/LICENSE-2.0
+#
+#   Unless required by applicable law or agreed to in writing, software
+#   distributed under the License is distributed on an "AS IS" BASIS,
+#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#   See the License for the specific language governing permissions and
+#   limitations under the License.
+#   ========================LICENSE_END===================================
+#
+
+output:
+  src/capifserverapi/eventsapi/events-types.gen.go
+package: eventsapi
+generate:
+  - types
+import-mapping:
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  CommonData.yaml: o-ran-sc.org/capifserverapi/aggregatecommon
+  TS29222_CAPIF_Access_Control_Policy_API.yaml: o-ran-sc.org/capifserverapi/accesscontrolpolicyapi
+  TS29222_CAPIF_Logging_API_Invocation_API.yaml: o-ran-sc.org/capifserverapi/loggingapi
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
+  TS29222_CAPIF_Routing_Info_API.yaml: o-ran-sc.org/capifserverapi/routinginfoapi
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml
similarity index 72%
rename from capif/internal/readonly/providermanagementapi/generator_settings_server.yaml
rename to capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml
index 1e606be..db907e3 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_server.yaml
@@ -19,11 +19,12 @@
 #
 
 output:
-  internal/readonly/providermanagementapi/providermanagement-server.gen.go
-package: providermanagementapi
+  src/capifserverapi/invokermanagementapi/invokermanagement-server.gen.go
+package: invokermanagementapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml
similarity index 71%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml
index f3c52ff..dc05c71 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/invokermanagementapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/invokermanagementapi/invokermanagement-types.gen.go
+package: invokermanagementapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/loggingapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/loggingapi/generator_settings_server.yaml
similarity index 93%
rename from capif/internal/readonly/loggingapi/generator_settings_server.yaml
rename to capifapi/gogeneratorspecs/loggingapi/generator_settings_server.yaml
index 179402d..fe54a78 100644
--- a/capif/internal/readonly/loggingapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/loggingapi/generator_settings_server.yaml
@@ -19,7 +19,7 @@
 #
 
 output:
-  internal/readonly/loggingapi/logging-server.gen.go
+  src/capifserverapi/loggingapi/logging-server.gen.go
 package: loggingapi
 generate:
   - server
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/loggingapi/generator_settings_types.yaml
similarity index 73%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/loggingapi/generator_settings_types.yaml
index f3c52ff..21d29ea 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/loggingapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/loggingapi/logging-types.gen.go
+package: loggingapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/providermanagementapi/generator_settings_server.yaml
similarity index 77%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/providermanagementapi/generator_settings_server.yaml
index 3a4f726..41affa0 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/providermanagementapi/generator_settings_server.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/providermanagementapi/providermanagement-server.gen.go
+package: providermanagementapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/providermanagementapi/generator_settings_types.yaml
similarity index 77%
rename from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
rename to capifapi/gogeneratorspecs/providermanagementapi/generator_settings_types.yaml
index f3c52ff..cbea330 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/providermanagementapi/generator_settings_types.yaml
@@ -19,10 +19,10 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
+  src/capifserverapi/providermanagementapi/providermanagement-types.gen.go
 package: providermanagementapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
\ No newline at end of file
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/publishserviceapi/generator_settings_server.yaml
similarity index 74%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/publishserviceapi/generator_settings_server.yaml
index 3a4f726..d9667ea 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/publishserviceapi/generator_settings_server.yaml
@@ -19,10 +19,12 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/publishserviceapi/publishservice-server.gen.go
+package: publishserviceapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  CommonData.yaml: o-ran-sc.org/capifserverapi/aggregatecommon
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/publishserviceapi/generator_settings_types.yaml
similarity index 73%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/publishserviceapi/generator_settings_types.yaml
index f3c52ff..e94ea2e 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/publishserviceapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/publishserviceapi/publishservice-types.gen.go
+package: publishserviceapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  CommonData.yaml: o-ran-sc.org/capifserverapi/aggregatecommon
\ No newline at end of file
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/routinginfoapi/generator_settings_server.yaml
similarity index 73%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/routinginfoapi/generator_settings_server.yaml
index 3a4f726..6698b24 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/routinginfoapi/generator_settings_server.yaml
@@ -19,10 +19,12 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/routinginfoapi/routinginfo-server.gen.go
+package: routinginfoapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/aefsecurityapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/routinginfoapi/generator_settings_types.yaml
similarity index 69%
rename from capif/internal/readonly/aefsecurityapi/generator_settings_types.yaml
rename to capifapi/gogeneratorspecs/routinginfoapi/generator_settings_types.yaml
index b46fff6..55dd0c3 100644
--- a/capif/internal/readonly/aefsecurityapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/routinginfoapi/generator_settings_types.yaml
@@ -19,11 +19,12 @@
 #
 
 output:
-    internal/readonly/aefsecurityapi/aefsecurity-types.gen.go
-package: aefsecurityapi
+  src/capifserverapi/routinginfoapi/routinginfo-types.gen.go
+package: routinginfoapi
 generate:
   - types
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29222_CAPIF_Security_API.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/securityapi
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  CommonData.yaml: o-ran-sc.org/capifserverapi/aggregatecommon
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml b/capifapi/gogeneratorspecs/securityapi/generator_settings_server.yaml
similarity index 73%
copy from capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
copy to capifapi/gogeneratorspecs/securityapi/generator_settings_server.yaml
index 3a4f726..dd47199 100644
--- a/capif/internal/readonly/accesscontrolpolicyapi/generator_settings_server.yaml
+++ b/capifapi/gogeneratorspecs/securityapi/generator_settings_server.yaml
@@ -19,10 +19,12 @@
 #
 
 output:
-  internal/readonly/accesscontrolpolicyapi/accesscontrolpolicy-server.gen.go
-package: accesscontrolpolicyapi
+  src/capifserverapi/securityapi/security-server.gen.go
+package: securityapi
 generate:
   - server
   - spec
 import-mapping:
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml b/capifapi/gogeneratorspecs/securityapi/generator_settings_types.yaml
similarity index 73%
copy from capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
copy to capifapi/gogeneratorspecs/securityapi/generator_settings_types.yaml
index f3c52ff..6106226 100644
--- a/capif/internal/readonly/providermanagementapi/generator_settings_types.yaml
+++ b/capifapi/gogeneratorspecs/securityapi/generator_settings_types.yaml
@@ -19,10 +19,11 @@
 #
 
 output:
-    internal/readonly/providermanagementapi/providermanagement-types.gen.go
-package: providermanagementapi
+  src/capifserverapi/securityapi/security-types.gen.go
+package: securityapi
 generate:
   - types
 import-mapping:
-  TS29122_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29122
-  TS29571_CommonData.yaml: oransc.org/nonrtric/plt/capif/internal/readonly/common29571
\ No newline at end of file
+  TS29122_CommonData.yaml: o-ran-sc.org/capifserverapi/common29122
+  TS29571_CommonData.yaml: o-ran-sc.org/capifserverapi/common29571
+  TS29222_CAPIF_Publish_Service_API.yaml: o-ran-sc.org/capifserverapi/publishserviceapi
\ No newline at end of file
diff --git a/capifapi/server_pom.xml b/capifapi/server_pom.xml
new file mode 100644
index 0000000..7915191
--- /dev/null
+++ b/capifapi/server_pom.xml
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+* ========================LICENSE_START=================================
+* O-RAN-SC
+* %%
+* Copyright (C) 2022 Nordix Foundation
+* %%
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* ========================LICENSE_END===================================
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <groupId>org.springframework.boot</groupId>
+    <artifactId>spring-boot-starter-parent</artifactId>
+    <version>2.7.0</version>
+    <relativePath/> <!-- lookup parent from repository -->
+  </parent>
+
+  <groupId>org.oransc</groupId>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>capifserverapi</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <name>capifserverapi</name>
+  <description>Capif Server API</description>
+  <packaging>jar</packaging>
+
+  <properties>
+    <java.version>11</java.version>
+    <maven.compiler.source>${java.version}</maven.compiler.source>
+    <maven.compiler.target>${java.version}</maven.compiler.target>
+    <servlet-api.version>2.5</servlet-api.version>
+    <swagger-annotations.version>1.6.6</swagger-annotations.version>
+    <jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version>
+    <joda-time.version>2.10.14</joda-time.version>
+    <openapi-generator-maven-plugin.version>5.3.1</openapi-generator-maven-plugin.version><!-->Do not step version! Higher versions introduce compile problem<-->
+  </properties>
+  <dependencies>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-web</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework.boot</groupId>
+      <artifactId>spring-boot-starter-validation</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.dataformat</groupId>
+      <artifactId>jackson-dataformat-yaml</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.validation</groupId>
+      <artifactId>validation-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>servlet-api</artifactId>
+      <version>${servlet-api.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.openapitools</groupId>
+      <artifactId>jackson-databind-nullable</artifactId>
+      <version>${jackson-databind-nullable.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>io.swagger</groupId>
+      <artifactId>swagger-annotations</artifactId>
+      <version>${swagger-annotations.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.openapitools</groupId>
+      <artifactId>openapi-generator-maven-plugin</artifactId>
+      <version>${openapi-generator-maven-plugin.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>joda-time</groupId>
+      <artifactId>joda-time</artifactId>
+      <version>${joda-time.version}</version>
+    </dependency>
+  </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.openapitools</groupId>
+        <artifactId>openapi-generator-maven-plugin</artifactId>
+        <version>${openapi-generator-maven-plugin.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildProviderApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_API_Provider_Management_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.providermanagement.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildInvokerApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_API_Invoker_Management_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.invokermanagement.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildPublishApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Publish_Service_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.publishservice.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildDiscoverApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Discover_Service_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.discoverservice.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildSecurityApi</id>
+            <configuration>
+              <inputSpec>${project.basedir}/specs/TS29222_CAPIF_Security_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.security.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildLoggingApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Logging_API_Invocation_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.loggingapiinvocation.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildRoutingApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Routing_Info_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.routinginfo.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildAccessControlApi</id>
+            <configuration>
+              <inputSpec>
+                ${project.basedir}/specs/TS29222_CAPIF_Access_Control_Policy_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.accesscontrolpolicy.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildEventsApi</id>
+            <configuration>
+              <inputSpec>${project.basedir}/specs/TS29222_CAPIF_Events_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.events.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildAuditingsApi</id>
+            <configuration>
+              <inputSpec>${project.basedir}/specs/TS29222_CAPIF_Auditing_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.auditing.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+            <id>buildAefSecurityApi</id>
+            <configuration>
+              <inputSpec>${project.basedir}/specs/TS29222_AEF_Security_API.yaml
+              </inputSpec>
+              <generatorName>spring</generatorName>
+              <library>spring-boot</library>
+              <skipValidateSpec>true</skipValidateSpec>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApis>true</generateApis>
+              <generateModels>true</generateModels>
+              <generateApiTests>false</generateApiTests>
+              <generateModelTests>false</generateModelTests>
+              <configOptions>
+                <basePackage>org.oransc.capif.server</basePackage>
+                <apiPackage>org.oransc.capif.server.aefsecurity.api</apiPackage>
+                <modelPackage>org.oransc.capif.server.model</modelPackage>
+                <dateLibrary>joda</dateLibrary>
+                <interfaceOnly>true</interfaceOnly>
+                <delegatePattern>true</delegatePattern>
+              </configOptions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.mod b/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.mod
new file mode 100644
index 0000000..543c312
--- /dev/null
+++ b/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.mod
@@ -0,0 +1,38 @@
+module o-ran-sc.org/capifserverapi/accesscontrolpolicyapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
diff --git a/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.sum b/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/accesscontrolpolicyapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/aefsecurityapi/go.mod b/capifapi/src/capifserverapi/aefsecurityapi/go.mod
new file mode 100644
index 0000000..aae7fb7
--- /dev/null
+++ b/capifapi/src/capifserverapi/aefsecurityapi/go.mod
@@ -0,0 +1,22 @@
+module o-ran-sc.org/capifserverapi/aefsecurityapi
+
+go 1.17
+
+require (
+	github.com/getkin/kin-openapi v0.97.0
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0 // indirect
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
diff --git a/capifapi/src/capifserverapi/aggregatecommon/go.mod b/capifapi/src/capifserverapi/aggregatecommon/go.mod
new file mode 100644
index 0000000..e23d3c7
--- /dev/null
+++ b/capifapi/src/capifserverapi/aggregatecommon/go.mod
@@ -0,0 +1,22 @@
+module o-ran-sc.org/capifserverapi/aggregatecommon
+
+go 1.17
+
+require (
+	github.com/getkin/kin-openapi v0.97.0
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0 // indirect
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
diff --git a/capifapi/src/capifserverapi/aggregatecommon/go.sum b/capifapi/src/capifserverapi/aggregatecommon/go.sum
new file mode 100644
index 0000000..5c72bc1
--- /dev/null
+++ b/capifapi/src/capifserverapi/aggregatecommon/go.sum
@@ -0,0 +1,169 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/auditingapi/go.mod b/capifapi/src/capifserverapi/auditingapi/go.mod
new file mode 100644
index 0000000..2254ee1
--- /dev/null
+++ b/capifapi/src/capifserverapi/auditingapi/go.mod
@@ -0,0 +1,41 @@
+module o-ran-sc.org/capifserverapi/auditingapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
diff --git a/capifapi/src/capifserverapi/auditingapi/go.sum b/capifapi/src/capifserverapi/auditingapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/auditingapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/common29122/go.mod b/capifapi/src/capifserverapi/common29122/go.mod
new file mode 100644
index 0000000..cc13b5b
--- /dev/null
+++ b/capifapi/src/capifserverapi/common29122/go.mod
@@ -0,0 +1,22 @@
+module o-ran-sc.org/capifserverapi/common29122
+
+go 1.17
+
+require (
+	github.com/getkin/kin-openapi v0.97.0
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0 // indirect
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
diff --git a/capifapi/src/capifserverapi/common29122/go.sum b/capifapi/src/capifserverapi/common29122/go.sum
new file mode 100644
index 0000000..5c72bc1
--- /dev/null
+++ b/capifapi/src/capifserverapi/common29122/go.sum
@@ -0,0 +1,169 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/common29571/go.mod b/capifapi/src/capifserverapi/common29571/go.mod
new file mode 100644
index 0000000..a8fe24c
--- /dev/null
+++ b/capifapi/src/capifserverapi/common29571/go.mod
@@ -0,0 +1,19 @@
+module o-ran-sc.org/capifserverapi/common29571
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
diff --git a/capifapi/src/capifserverapi/common29571/go.sum b/capifapi/src/capifserverapi/common29571/go.sum
new file mode 100644
index 0000000..5c72bc1
--- /dev/null
+++ b/capifapi/src/capifserverapi/common29571/go.sum
@@ -0,0 +1,169 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/discoverserviceapi/go.mod b/capifapi/src/capifserverapi/discoverserviceapi/go.mod
new file mode 100644
index 0000000..cd28cfb
--- /dev/null
+++ b/capifapi/src/capifserverapi/discoverserviceapi/go.mod
@@ -0,0 +1,41 @@
+module o-ran-sc.org/capifserverapi/discoverserviceapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
diff --git a/capifapi/src/capifserverapi/discoverserviceapi/go.sum b/capifapi/src/capifserverapi/discoverserviceapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/discoverserviceapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/eventsapi/go.mod b/capifapi/src/capifserverapi/eventsapi/go.mod
new file mode 100644
index 0000000..20703ef
--- /dev/null
+++ b/capifapi/src/capifserverapi/eventsapi/go.mod
@@ -0,0 +1,50 @@
+module o-ran-sc.org/capifserverapi/eventsapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/accesscontrolpolicyapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/loggingapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/routinginfoapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/accesscontrolpolicyapi v0.0.0-unpublished => ../accesscontrolpolicyapi
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/loggingapi v0.0.0-unpublished => ../loggingapi
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
+
+replace o-ran-sc.org/capifserverapi/routinginfoapi v0.0.0-unpublished => ../routinginfoapi
diff --git a/capifapi/src/capifserverapi/go.sum b/capifapi/src/capifserverapi/go.sum
new file mode 100644
index 0000000..4f3308c
--- /dev/null
+++ b/capifapi/src/capifserverapi/go.sum
@@ -0,0 +1,172 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/invokermanagementapi/go.mod b/capifapi/src/capifserverapi/invokermanagementapi/go.mod
new file mode 100644
index 0000000..49df677
--- /dev/null
+++ b/capifapi/src/capifserverapi/invokermanagementapi/go.mod
@@ -0,0 +1,41 @@
+module o-ran-sc.org/capifserverapi/invokermanagementapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
diff --git a/capifapi/src/capifserverapi/invokermanagementapi/go.sum b/capifapi/src/capifserverapi/invokermanagementapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/invokermanagementapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/loggingapi/go.mod b/capifapi/src/capifserverapi/loggingapi/go.mod
new file mode 100644
index 0000000..fb35bf6
--- /dev/null
+++ b/capifapi/src/capifserverapi/loggingapi/go.mod
@@ -0,0 +1,43 @@
+module o-ran-sc.org/capifserverapi/loggingapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/accesscontrolpolicyapi v0.0.0-unpublished => ../accesscontrolpolicyapi
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
diff --git a/capifapi/src/capifserverapi/loggingapi/go.sum b/capifapi/src/capifserverapi/loggingapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/loggingapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/providermanagementapi/go.mod b/capifapi/src/capifserverapi/providermanagementapi/go.mod
new file mode 100644
index 0000000..e9f06e3
--- /dev/null
+++ b/capifapi/src/capifserverapi/providermanagementapi/go.mod
@@ -0,0 +1,38 @@
+module o-ran-sc.org/capifserverapi/providermanagementapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
diff --git a/capifapi/src/capifserverapi/providermanagementapi/go.sum b/capifapi/src/capifserverapi/providermanagementapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/providermanagementapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/publishserviceapi/go.mod b/capifapi/src/capifserverapi/publishserviceapi/go.mod
new file mode 100644
index 0000000..f136b72
--- /dev/null
+++ b/capifapi/src/capifserverapi/publishserviceapi/go.mod
@@ -0,0 +1,38 @@
+module o-ran-sc.org/capifserverapi/publishserviceapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
diff --git a/capifapi/src/capifserverapi/publishserviceapi/go.sum b/capifapi/src/capifserverapi/publishserviceapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/publishserviceapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/routinginfoapi/go.mod b/capifapi/src/capifserverapi/routinginfoapi/go.mod
new file mode 100644
index 0000000..cdbe3f3
--- /dev/null
+++ b/capifapi/src/capifserverapi/routinginfoapi/go.mod
@@ -0,0 +1,41 @@
+module o-ran-sc.org/capifserverapi/routinginfoapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
diff --git a/capifapi/src/capifserverapi/routinginfoapi/go.sum b/capifapi/src/capifserverapi/routinginfoapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/routinginfoapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capifapi/src/capifserverapi/securityapi/go.mod b/capifapi/src/capifserverapi/securityapi/go.mod
new file mode 100644
index 0000000..650dafb
--- /dev/null
+++ b/capifapi/src/capifserverapi/securityapi/go.mod
@@ -0,0 +1,49 @@
+module o-ran-sc.org/capifserverapi/securityapi
+
+go 1.17
+
+require (
+	github.com/deepmap/oapi-codegen v1.11.0
+	github.com/getkin/kin-openapi v0.97.0
+	github.com/labstack/echo/v4 v4.7.2
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+)
+
+require (
+	github.com/go-openapi/jsonpointer v0.19.5 // indirect
+	github.com/go-openapi/swag v0.21.1 // indirect
+	github.com/google/uuid v1.3.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
+	github.com/josharian/intern v1.0.0 // indirect
+	github.com/labstack/gommon v0.3.1 // indirect
+	github.com/mailru/easyjson v0.7.7 // indirect
+	github.com/mattn/go-colorable v0.1.12 // indirect
+	github.com/mattn/go-isatty v0.0.14 // indirect
+	github.com/valyala/bytebufferpool v1.0.0 // indirect
+	github.com/valyala/fasttemplate v1.2.1 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
+	golang.org/x/text v0.3.7 // indirect
+	gopkg.in/yaml.v2 v2.4.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+)
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/discoverserviceapi v0.0.0-unpublished => ../discoverserviceapi
+
+replace o-ran-sc.org/capifserverapi/invokermanagementapi v0.0.0-unpublished => ../invokermanagementapi
+
+replace o-ran-sc.org/capifserverapi/providermanagementapi v0.0.0-unpublished => ../providermanagementapi
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../publishserviceapi
+
+replace o-ran-sc.org/capifserverapi/securityapi v0.0.0-unpublished => ../securityapi
diff --git a/capifapi/src/capifserverapi/securityapi/go.sum b/capifapi/src/capifserverapi/securityapi/go.sum
new file mode 100644
index 0000000..b860eca
--- /dev/null
+++ b/capifapi/src/capifserverapi/securityapi/go.sum
@@ -0,0 +1,179 @@
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
+github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
+github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
+github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
+github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
+github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
+github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
+github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
+github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
+github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
+github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
+github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
+github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
+github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4=
+github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8=
+github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs=
+github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
+github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
+github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
+github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
+github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
+github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
+github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
+github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
+github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
+github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=
+github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
+github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
+github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
+github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM=
+github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII=
+github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY=
+github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
+github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
+github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
+github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
+github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
+github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
+github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
+github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
+github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
+github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
+github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
+github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
+github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
+github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
+github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
+github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
+github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
+github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
+github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
+github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
+github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
+github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
+github.com/valyala/fasttemplate v1.2.1 h1:TVEnxayobAdVkhQfrfes2IzOB6o+z4roRkPF52WA1u4=
+github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
+github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
+google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
+google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
+gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/capif/internal/commoncollector/commoncollector.go b/capifapi/src/internal/commoncollector/commoncollector.go
similarity index 86%
rename from capif/internal/commoncollector/commoncollector.go
rename to capifapi/src/internal/commoncollector/commoncollector.go
index b6793b4..ab85e0a 100644
--- a/capif/internal/commoncollector/commoncollector.go
+++ b/capifapi/src/internal/commoncollector/commoncollector.go
@@ -51,7 +51,9 @@
 	if err != nil {
 		log.Fatalf("Error opening file: %v", err)
 	}
-	defer file.Close()
+	defer func(file *os.File) {
+		_ = file.Close()
+	}(file)
 
 	scanner := bufio.NewScanner(file)
 	components := common["components"]
@@ -60,14 +62,10 @@
 	for scanner.Scan() {
 		name, data := getDependency(scanner.Text())
 		if name == "EthFlowDescription" {
-			properties := data["properties"].(map[interface{}]interface{})
-			ref := properties["fDir"].(map[interface{}]interface{})
-			ref["$ref"] = "#/components/schemas/FlowDirection"
+			changeToLocalReference("fDir", "FlowDirection", data)
 		}
 		if name == "ReportingInformation" {
-			properties := data["properties"].(map[interface{}]interface{})
-			ref := properties["notifMethod"].(map[interface{}]interface{})
-			ref["$ref"] = "#/components/schemas/NotificationMethod"
+			changeToLocalReference("notifMethod", "NotificationMethod", data)
 		}
 		if name == "RelativeCartesianLocation" {
 			properties := data["properties"].(map[interface{}]interface{})
@@ -91,6 +89,12 @@
 	}
 }
 
+func changeToLocalReference(attrname, refName string, data map[interface{}]interface{}) {
+	properties := data["properties"].(map[interface{}]interface{})
+	ref := properties[attrname].(map[interface{}]interface{})
+	ref["$ref"] = "#/components/schemas/" + refName
+}
+
 func getDependency(s string) (string, map[interface{}]interface{}) {
 	info := strings.Split(s, "#")
 	yamlFile, err := ioutil.ReadFile(*apiDir + "/" + info[0])
diff --git a/capif/internal/enumfixer/enumfixer.go b/capifapi/src/internal/enumfixer/enumfixer.go
similarity index 96%
rename from capif/internal/enumfixer/enumfixer.go
rename to capifapi/src/internal/enumfixer/enumfixer.go
index d6a324a..b44c55c 100644
--- a/capif/internal/enumfixer/enumfixer.go
+++ b/capifapi/src/internal/enumfixer/enumfixer.go
@@ -49,7 +49,7 @@
 	}
 }
 
-func fixEnums(path string, info os.FileInfo, err error) error {
+func fixEnums(path string, info os.FileInfo, _ error) error {
 	if !info.IsDir() && strings.HasSuffix(info.Name(), ".yaml") {
 		yamlFile, err := ioutil.ReadFile(path)
 		if err != nil {
@@ -74,7 +74,7 @@
 					enumInterface := mapInterface["enum"]
 					if enumInterface != nil {
 						is := enumInterface.([]interface{})
-						enumVals := []string{}
+						var enumVals []string
 						for i := 0; i < len(is); i++ {
 							if reflect.TypeOf(is[i]).Kind() == reflect.String {
 								enumVals = append(enumVals, is[i].(string))
diff --git a/capifapi/src/internal/go.mod b/capifapi/src/internal/go.mod
new file mode 100644
index 0000000..66b9f4c
--- /dev/null
+++ b/capifapi/src/internal/go.mod
@@ -0,0 +1,5 @@
+module o-ran-sc.org/capifhelp
+
+go 1.17
+
+require gopkg.in/yaml.v2 v2.4.0
diff --git a/capifapi/src/internal/go.sum b/capifapi/src/internal/go.sum
new file mode 100644
index 0000000..dd0bc19
--- /dev/null
+++ b/capifapi/src/internal/go.sum
@@ -0,0 +1,4 @@
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
diff --git a/capif/internal/specificationfixer/specificationfixer.go b/capifapi/src/internal/specificationfixer/specificationfixer.go
similarity index 100%
rename from capif/internal/specificationfixer/specificationfixer.go
rename to capifapi/src/internal/specificationfixer/specificationfixer.go
diff --git a/capif/.gitignore b/capifcorego/.gitignore
similarity index 93%
rename from capif/.gitignore
rename to capifcorego/.gitignore
index c6af413..8677450 100644
--- a/capif/.gitignore
+++ b/capifcorego/.gitignore
@@ -1,5 +1,5 @@
 internal/readonly/api
-capif
+capifcore
 __debug_bin
 .vscode
 internal/enumfixer/enumfixer
diff --git a/capif/Dockerfile b/capifcorego/Dockerfile
similarity index 94%
rename from capif/Dockerfile
rename to capifcorego/Dockerfile
index 7883152..a401c97 100644
--- a/capif/Dockerfile
+++ b/capifcorego/Dockerfile
@@ -26,13 +26,13 @@
 COPY go.sum .
 RUN go mod download
 COPY . .
-RUN go build -o /capif
+RUN go build -o /capifcore
 ##
 ## Deploy
 ##
 FROM gcr.io/distroless/base-debian11
 WORKDIR /
 ## Copy from "build" stage
-COPY --from=build /capif .
+COPY --from=build /capifcore .
 USER nonroot:nonroot
 ENTRYPOINT ["/capif"]
diff --git a/capif/README.md b/capifcorego/README.md
similarity index 66%
rename from capif/README.md
rename to capifcorego/README.md
index 24f1d3d..8e65382 100644
--- a/capif/README.md
+++ b/capifcorego/README.md
@@ -22,15 +22,11 @@
 
 # O-RAN-SC Non-RealTime CAPIF implementation
 
-This product is an implementation of the 3GPP CAPIF interfaces.
-
-## Generation
-
-The CAPIF interfaces are generated in to Go code into the `internal/readonly` folder. To generate the code run the `generate.sh` script. This script will download the specifications for release 17, unzip them, remove some not needed definitions, and generate the code. NOTE! The specifications should not be checked in, only the generated code.
+This product is a Go implementation of the CAPIF Core function, based on the 3GPP CAPIF interfaces.
 
 ## Run
 
 To run the Core Function run the following commands from the top of the repo:
 
     go build
-    ./capif [-port <port (default 8080)>]
\ No newline at end of file
+    ./capifcore [-port <port (default 8080)>]
\ No newline at end of file
diff --git a/capif/configs/capif.yaml b/capifcorego/configs/capif.yaml
similarity index 95%
rename from capif/configs/capif.yaml
rename to capifcorego/configs/capif.yaml
index b061eb0..d00f2f5 100644
--- a/capif/configs/capif.yaml
+++ b/capifcorego/configs/capif.yaml
@@ -36,7 +36,7 @@
     spec:
       containers:
       - name: capif
-        image: oransc.org/nonrtric/plt/capif
+        image: o-ran-sc.org/nonrtric/plt/capifcore
         imagePullPolicy: IfNotPresent
         ports:
         - containerPort: 8090
diff --git a/capif/configs/chartmuseum.yaml b/capifcorego/configs/chartmuseum.yaml
similarity index 100%
rename from capif/configs/chartmuseum.yaml
rename to capifcorego/configs/chartmuseum.yaml
diff --git a/capif/go.mod b/capifcorego/go.mod
similarity index 77%
rename from capif/go.mod
rename to capifcorego/go.mod
index 7fb8f08..c97fd10 100644
--- a/capif/go.mod
+++ b/capifcorego/go.mod
@@ -1,10 +1,9 @@
-module oransc.org/nonrtric/plt/capif
+module o-ran-sc.org/nonrtric/plt/capifcore
 
 go 1.17
 
 require (
-	github.com/deepmap/oapi-codegen v1.10.1
-	github.com/getkin/kin-openapi v0.94.0
+	github.com/deepmap/oapi-codegen v1.11.0
 	github.com/labstack/echo/v4 v4.7.2
 	github.com/pkg/errors v0.9.1
 	github.com/sirupsen/logrus v1.8.1
@@ -13,6 +12,12 @@
 	helm.sh/helm/v3 v3.8.0
 	k8s.io/cli-runtime v0.23.1
 	k8s.io/client-go v0.23.1
+	o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/discoverserviceapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/invokermanagementapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/providermanagementapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished
+	o-ran-sc.org/capifserverapi/securityapi v0.0.0-unpublished
 )
 
 require (
@@ -42,7 +47,7 @@
 	github.com/evanphx/json-patch v4.12.0+incompatible // indirect
 	github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect
 	github.com/fatih/color v1.13.0 // indirect
-	github.com/ghodss/yaml v1.0.0 // indirect
+	github.com/getkin/kin-openapi v0.97.0 // indirect
 	github.com/go-errors/errors v1.0.1 // indirect
 	github.com/go-logr/logr v1.2.0 // indirect
 	github.com/go-openapi/jsonpointer v0.19.5 // indirect
@@ -64,6 +69,7 @@
 	github.com/huandu/xstrings v1.3.2 // indirect
 	github.com/imdario/mergo v0.3.12 // indirect
 	github.com/inconshreveable/mousetrap v1.0.0 // indirect
+	github.com/invopop/yaml v0.1.0 // indirect
 	github.com/jmoiron/sqlx v1.3.4 // indirect
 	github.com/josharian/intern v1.0.0 // indirect
 	github.com/json-iterator/go v1.1.12 // indirect
@@ -110,24 +116,21 @@
 	github.com/xeipuuv/gojsonschema v1.2.0 // indirect
 	github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca // indirect
 	go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 // indirect
-	golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect
-	golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect
-	golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 // indirect
+	golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 // indirect
+	golang.org/x/net v0.0.0-20220513224357-95641704303c // indirect
 	golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
-	golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect
+	golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a // indirect
 	golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
 	golang.org/x/text v0.3.7 // indirect
 	golang.org/x/time v0.0.0-20220411224347-583f2d630306 // indirect
-	golang.org/x/tools v0.1.10 // indirect
-	golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect
 	google.golang.org/appengine v1.6.7 // indirect
 	google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368 // indirect
 	google.golang.org/grpc v1.43.0 // indirect
 	google.golang.org/protobuf v1.28.0 // indirect
 	gopkg.in/gorp.v1 v1.7.2 // indirect
 	gopkg.in/inf.v0 v0.9.1 // indirect
-	gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
 	k8s.io/api v0.23.1 // indirect
 	k8s.io/apiextensions-apiserver v0.23.1 // indirect
 	k8s.io/apimachinery v0.23.1 // indirect
@@ -137,6 +140,8 @@
 	k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65 // indirect
 	k8s.io/kubectl v0.23.1 // indirect
 	k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b // indirect
+	o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished // indirect
+	o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished // indirect
 	oras.land/oras-go v1.1.0 // indirect
 	sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6 // indirect
 	sigs.k8s.io/kustomize/api v0.10.1 // indirect
@@ -144,3 +149,19 @@
 	sigs.k8s.io/structured-merge-diff/v4 v4.1.2 // indirect
 	sigs.k8s.io/yaml v1.3.0 // indirect
 )
+
+replace o-ran-sc.org/capifserverapi/common29571 v0.0.0-unpublished => ../capifapi/src/capifserverapi/common29571
+
+replace o-ran-sc.org/capifserverapi/common29122 v0.0.0-unpublished => ../capifapi/src/capifserverapi/common29122
+
+replace o-ran-sc.org/capifserverapi/aggregatecommon v0.0.0-unpublished => ../capifapi/src/capifserverapi/aggregatecommon
+
+replace o-ran-sc.org/capifserverapi/discoverserviceapi v0.0.0-unpublished => ../capifapi/src/capifserverapi/discoverserviceapi
+
+replace o-ran-sc.org/capifserverapi/invokermanagementapi v0.0.0-unpublished => ../capifapi/src/capifserverapi/invokermanagementapi
+
+replace o-ran-sc.org/capifserverapi/providermanagementapi v0.0.0-unpublished => ../capifapi/src/capifserverapi/providermanagementapi
+
+replace o-ran-sc.org/capifserverapi/publishserviceapi v0.0.0-unpublished => ../capifapi/src/capifserverapi/publishserviceapi
+
+replace o-ran-sc.org/capifserverapi/securityapi v0.0.0-unpublished => ../capifapi/src/capifserverapi/securityapi
diff --git a/capif/go.sum b/capifcorego/go.sum
similarity index 97%
rename from capif/go.sum
rename to capifcorego/go.sum
index 3e63c3a..12e64cb 100644
--- a/capif/go.sum
+++ b/capifcorego/go.sum
@@ -338,10 +338,8 @@
 github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc=
 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE=
 github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs=
-github.com/deepmap/oapi-codegen v1.9.1 h1:yHmEnA7jSTUMQgV+uN02WpZtwHnz2CBW3mZRIxr1vtI=
-github.com/deepmap/oapi-codegen v1.9.1/go.mod h1:PLqNAhdedP8ttRpBBkzLKU3bp+Fpy+tTgeAMlztR2cw=
-github.com/deepmap/oapi-codegen v1.10.1 h1:xybuJUR6D8l7P+LAuxOm5SD7nTlFKHWvOPl31q+DDVs=
-github.com/deepmap/oapi-codegen v1.10.1/go.mod h1:TvVmDQlUkFli9gFij/gtW1o+tFBr4qCHyv2zG+R0YZY=
+github.com/deepmap/oapi-codegen v1.11.0 h1:f/X2NdIkaBKsSdpeuwLnY/vDI0AtPUrmB5LMgc7YD+A=
+github.com/deepmap/oapi-codegen v1.11.0/go.mod h1:k+ujhoQGxmQYBZBbxhOZNZf4j08qv5mC+OH+fFTnKxM=
 github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
 github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
 github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
@@ -419,19 +417,14 @@
 github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
 github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
 github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/getkin/kin-openapi v0.87.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/getkin/kin-openapi v0.89.0 h1:p4nagHchUKGn85z/f+pse4aSh50nIBOYjOhMIku2hiA=
-github.com/getkin/kin-openapi v0.89.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo=
 github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
+github.com/getkin/kin-openapi v0.97.0 h1:bsvXZeuGiCW43ZKy6xOY5qfT5fCRYmnJwierblSrHCU=
+github.com/getkin/kin-openapi v0.97.0/go.mod h1:w4lRPHiyOdwGbOkLIyk+P0qCwlu7TXPCHD/64nSXzgE=
 github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
 github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
-github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY=
 github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U=
-github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs=
 github.com/go-chi/chi/v5 v5.0.7/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
 github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
@@ -465,7 +458,6 @@
 github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
 github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng=
 github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
 github.com/go-openapi/swag v0.21.1 h1:wm0rhTb5z7qpJRHBdPOMuY4QjVUMbF6/kwoYeRAOrKU=
 github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
@@ -475,8 +467,7 @@
 github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA=
 github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA=
 github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4=
-github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos=
-github.com/go-playground/validator/v10 v10.10.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
+github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU=
 github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
 github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -488,8 +479,7 @@
 github.com/gobuffalo/packr/v2 v2.8.1/go.mod h1:c/PLlOuTU+p3SybaJATW3H6lX/iK7xEz5OeMf+NnJpg=
 github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
-github.com/goccy/go-json v0.9.6/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
+github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
 github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
 github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw=
 github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
@@ -599,7 +589,6 @@
 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
 github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -687,6 +676,8 @@
 github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
 github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
 github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
+github.com/invopop/yaml v0.1.0 h1:YW3WGUoJEXYfzWBjn00zIlrw7brGVD0fUKRYDPAPhrc=
+github.com/invopop/yaml v0.1.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
 github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA=
 github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
 github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
@@ -737,8 +728,6 @@
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/labstack/echo/v4 v4.6.3 h1:VhPuIZYxsbPmo4m9KAkMU/el2442eB7EBFFhNTTT9ac=
-github.com/labstack/echo/v4 v4.6.3/go.mod h1:Hk5OiHj0kDqmFq7aHe7eDqI7CUhuCrfpupQtLGGLm7A=
 github.com/labstack/echo/v4 v4.7.2 h1:Kv2/p8OaQ+M6Ex4eGimg9b9e6icoxA42JSlOR3msKtI=
 github.com/labstack/echo/v4 v4.7.2/go.mod h1:xkCDAdFCIf8jsFQ5NnbK7oqaF/yU1A1X20Ltm0OvSks=
 github.com/labstack/gommon v0.3.1 h1:OomWaJXm7xR6L1HmEtGyQf26TEn7V6X88mktX9kee9o=
@@ -752,13 +741,10 @@
 github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y=
 github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ=
 github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU=
-github.com/lestrrat-go/codegen v1.0.2/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM=
-github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++0Gf8MBnAvE=
 github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E=
 github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc=
 github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4=
-github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA=
-github.com/lestrrat-go/jwx v1.2.23/go.mod h1:sAXjRwzSvCN6soO4RLoWWm1bVPpb8iOuv0IYfH8OWd8=
+github.com/lestrrat-go/jwx v1.2.24/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY=
 github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I=
 github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
@@ -776,7 +762,6 @@
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
 github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
@@ -787,7 +772,6 @@
 github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
 github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
 github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
-github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
 github.com/matryer/moq v0.2.7/go.mod h1:kITsx543GOENm48TUAQyJ9+SAvFSr7iGQXPoth/VUBk=
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
@@ -1069,7 +1053,6 @@
 github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
@@ -1084,10 +1067,8 @@
 github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
 github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw=
-github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0=
 github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M=
 github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
-github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw=
 github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
 github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
@@ -1197,17 +1178,14 @@
 golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
 golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
-golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 h1:/pEO3GD/ABYAjuakUS6xSEmmlyVS4kxBNkeA9tLJiTI=
 golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
-golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA=
-golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9 h1:NUzdAbFtCJSXU20AOXgeqaUwg8Ypg4MPYmL+d+rsB5c=
+golang.org/x/crypto v0.0.0-20220513210258-46612604a0f9/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -1244,7 +1222,6 @@
 golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
 golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -1303,14 +1280,12 @@
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d h1:62NvYBuaanGXR2ZOfwDFkhhl6X1DUgf8qg3GuQvxZsE=
 golang.org/x/net v0.0.0-20220107192237-5cfca573fb4d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 h1:6mzvA99KwZxbOrxww4EvWVQUnN1+xEu9tafK5ZxkYeA=
-golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220513224357-95641704303c h1:nF9mHSvoKBLkQNQhJZNsc66z2UzAMUbLGjC95CF3pU0=
+golang.org/x/net v0.0.0-20220513224357-95641704303c/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1452,13 +1427,10 @@
 golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e h1:fLOSk5Q00efkSvAm+4xcoXD+RRmLmmulPn5I3Y9F2EM=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
-golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a h1:N2T1jUrTQE9Re6TFF5PhvEHXHCguynGhKjWVsIUt5cY=
+golang.org/x/sys v0.0.0-20220513210249-45d2b4557a2a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b h1:9zKuko04nR4gjZ4+DNjHqRlAJqbJETHwiNKDqTfOjfE=
 golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
@@ -1480,7 +1452,6 @@
 golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac h1:7zkz7BUtwNFFqcowJ+RIgu2MaV/MapERkDIy+mwPyjs=
 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20220411224347-583f2d630306 h1:+gHMid33q6pen7kv9xvT+JRinntgeXO2AeZVd0AWD3w=
 golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1540,13 +1511,11 @@
 golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
 golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
-golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
 golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
 golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
@@ -1554,12 +1523,10 @@
 golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
 golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM=
-golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20=
 golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U=
 golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1724,7 +1691,6 @@
 google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
-google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ=
 google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
 google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
 google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
@@ -1767,8 +1733,10 @@
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
 gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
diff --git a/capif/internal/discoverservice/discoverservice.go b/capifcorego/internal/discoverservice/discoverservice.go
similarity index 92%
rename from capif/internal/discoverservice/discoverservice.go
rename to capifcorego/internal/discoverservice/discoverservice.go
index 42a870f..2bb530e 100644
--- a/capif/internal/discoverservice/discoverservice.go
+++ b/capifcorego/internal/discoverservice/discoverservice.go
@@ -24,9 +24,9 @@
 	"net/http"
 
 	"github.com/labstack/echo/v4"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/discoverserviceapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/discoverserviceapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
 )
 
 type DiscoverService struct {
diff --git a/capif/internal/discoverservice/discoverservice_test.go b/capifcorego/internal/discoverservice/discoverservice_test.go
similarity index 93%
rename from capif/internal/discoverservice/discoverservice_test.go
rename to capifcorego/internal/discoverservice/discoverservice_test.go
index 0c69bfc..f527ee7 100644
--- a/capif/internal/discoverservice/discoverservice_test.go
+++ b/capifcorego/internal/discoverservice/discoverservice_test.go
@@ -31,10 +31,10 @@
 	"github.com/labstack/echo/v4"
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	"github.com/stretchr/testify/assert"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/discoverserviceapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/discoverserviceapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice/mocks"
 )
 
 func TestGetAllServiceAPIs(t *testing.T) {
diff --git a/capif/internal/helmmanagement/helm.go b/capifcorego/internal/helmmanagement/helm.go
similarity index 100%
rename from capif/internal/helmmanagement/helm.go
rename to capifcorego/internal/helmmanagement/helm.go
diff --git a/capif/internal/helmmanagement/mocks/HelmManager.go b/capifcorego/internal/helmmanagement/mocks/HelmManager.go
similarity index 100%
rename from capif/internal/helmmanagement/mocks/HelmManager.go
rename to capifcorego/internal/helmmanagement/mocks/HelmManager.go
diff --git a/capif/internal/invokermanagement/invokermanagement.go b/capifcorego/internal/invokermanagement/invokermanagement.go
similarity index 95%
rename from capif/internal/invokermanagement/invokermanagement.go
rename to capifcorego/internal/invokermanagement/invokermanagement.go
index df7137d..309d6c6 100644
--- a/capif/internal/invokermanagement/invokermanagement.go
+++ b/capifcorego/internal/invokermanagement/invokermanagement.go
@@ -28,10 +28,10 @@
 	"sync"
 
 	"github.com/labstack/echo/v4"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	invokerapi "oransc.org/nonrtric/plt/capif/internal/readonly/invokermanagementapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	invokerapi "o-ran-sc.org/capifserverapi/invokermanagementapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
 )
 
 //go:generate mockery --name InvokerRegister
diff --git a/capif/internal/invokermanagement/invokermanagement_test.go b/capifcorego/internal/invokermanagement/invokermanagement_test.go
similarity index 96%
rename from capif/internal/invokermanagement/invokermanagement_test.go
rename to capifcorego/internal/invokermanagement/invokermanagement_test.go
index 537f1c9..7297619 100644
--- a/capif/internal/invokermanagement/invokermanagement_test.go
+++ b/capifcorego/internal/invokermanagement/invokermanagement_test.go
@@ -31,11 +31,11 @@
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	publishmocks "oransc.org/nonrtric/plt/capif/internal/publishservice/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/invokermanagementapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	"o-ran-sc.org/capifserverapi/invokermanagementapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
+	publishmocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice/mocks"
 )
 
 func TestOnboardInvoker(t *testing.T) {
diff --git a/capif/internal/invokermanagement/mocks/InvokerRegister.go b/capifcorego/internal/invokermanagement/mocks/InvokerRegister.go
similarity index 100%
rename from capif/internal/invokermanagement/mocks/InvokerRegister.go
rename to capifcorego/internal/invokermanagement/mocks/InvokerRegister.go
diff --git a/capif/internal/providermanagement/mocks/ServiceRegister.go b/capifcorego/internal/providermanagement/mocks/ServiceRegister.go
similarity index 100%
rename from capif/internal/providermanagement/mocks/ServiceRegister.go
rename to capifcorego/internal/providermanagement/mocks/ServiceRegister.go
diff --git a/capif/internal/providermanagement/providermanagement.go b/capifcorego/internal/providermanagement/providermanagement.go
similarity index 97%
rename from capif/internal/providermanagement/providermanagement.go
rename to capifcorego/internal/providermanagement/providermanagement.go
index 358f8ab..c18498a 100644
--- a/capif/internal/providermanagement/providermanagement.go
+++ b/capifcorego/internal/providermanagement/providermanagement.go
@@ -28,8 +28,8 @@
 
 	"github.com/labstack/echo/v4"
 	log "github.com/sirupsen/logrus"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	provapi "oransc.org/nonrtric/plt/capif/internal/readonly/providermanagementapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	provapi "o-ran-sc.org/capifserverapi/providermanagementapi"
 )
 
 //go:generate mockery --name ServiceRegister
diff --git a/capif/internal/providermanagement/providermanagement_test.go b/capifcorego/internal/providermanagement/providermanagement_test.go
similarity index 96%
rename from capif/internal/providermanagement/providermanagement_test.go
rename to capifcorego/internal/providermanagement/providermanagement_test.go
index 91d2f14..8a5c6d7 100644
--- a/capif/internal/providermanagement/providermanagement_test.go
+++ b/capifcorego/internal/providermanagement/providermanagement_test.go
@@ -31,8 +31,8 @@
 	"github.com/labstack/echo/v4"
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	"github.com/stretchr/testify/assert"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	provapi "oransc.org/nonrtric/plt/capif/internal/readonly/providermanagementapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	provapi "o-ran-sc.org/capifserverapi/providermanagementapi"
 )
 
 func TestProviderHandlingSuccessfully(t *testing.T) {
diff --git a/capif/internal/publishservice/mocks/APIRegister.go b/capifcorego/internal/publishservice/mocks/APIRegister.go
similarity index 93%
rename from capif/internal/publishservice/mocks/APIRegister.go
rename to capifcorego/internal/publishservice/mocks/APIRegister.go
index 557f8b8..17db3fd 100644
--- a/capif/internal/publishservice/mocks/APIRegister.go
+++ b/capifcorego/internal/publishservice/mocks/APIRegister.go
@@ -5,7 +5,7 @@
 import (
 	mock "github.com/stretchr/testify/mock"
 
-	publishserviceapi "oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	publishserviceapi "o-ran-sc.org/capifserverapi/publishserviceapi"
 )
 
 // APIRegister is an autogenerated mock type for the APIRegister type
diff --git a/capif/internal/publishservice/publishservice.go b/capifcorego/internal/publishservice/publishservice.go
similarity index 96%
rename from capif/internal/publishservice/publishservice.go
rename to capifcorego/internal/publishservice/publishservice.go
index 58b3f3d..16a6c62 100644
--- a/capif/internal/publishservice/publishservice.go
+++ b/capifcorego/internal/publishservice/publishservice.go
@@ -28,10 +28,10 @@
 
 	"github.com/labstack/echo/v4"
 	log "github.com/sirupsen/logrus"
-	"oransc.org/nonrtric/plt/capif/internal/helmmanagement"
-	"oransc.org/nonrtric/plt/capif/internal/providermanagement"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/helmmanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement"
 )
 
 //go:generate mockery --name APIRegister
diff --git a/capif/internal/publishservice/publishservice_test.go b/capifcorego/internal/publishservice/publishservice_test.go
similarity index 93%
rename from capif/internal/publishservice/publishservice_test.go
rename to capifcorego/internal/publishservice/publishservice_test.go
index 364362c..cfc5330 100644
--- a/capif/internal/publishservice/publishservice_test.go
+++ b/capifcorego/internal/publishservice/publishservice_test.go
@@ -32,11 +32,11 @@
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
-	"oransc.org/nonrtric/plt/capif/internal/helmmanagement"
-	helmMocks "oransc.org/nonrtric/plt/capif/internal/helmmanagement/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/providermanagement"
-	serviceMocks "oransc.org/nonrtric/plt/capif/internal/providermanagement/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/helmmanagement"
+	helmMocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/helmmanagement/mocks"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement"
+	serviceMocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement/mocks"
 )
 
 func TestPublishUnpublishService(t *testing.T) {
diff --git a/capif/internal/security/security.go b/capifcorego/internal/security/security.go
similarity index 92%
rename from capif/internal/security/security.go
rename to capifcorego/internal/security/security.go
index 07624b4..315c676 100644
--- a/capif/internal/security/security.go
+++ b/capifcorego/internal/security/security.go
@@ -25,11 +25,11 @@
 	"strings"
 
 	"github.com/labstack/echo/v4"
-	"oransc.org/nonrtric/plt/capif/internal/invokermanagement"
-	"oransc.org/nonrtric/plt/capif/internal/providermanagement"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/securityapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	"o-ran-sc.org/capifserverapi/securityapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/invokermanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
 )
 
 type Security struct {
diff --git a/capif/internal/security/security_test.go b/capifcorego/internal/security/security_test.go
similarity index 86%
rename from capif/internal/security/security_test.go
rename to capifcorego/internal/security/security_test.go
index b3c4f5f..6a9f3bc 100644
--- a/capif/internal/security/security_test.go
+++ b/capifcorego/internal/security/security_test.go
@@ -33,14 +33,14 @@
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	"github.com/stretchr/testify/assert"
 	"github.com/stretchr/testify/mock"
-	"oransc.org/nonrtric/plt/capif/internal/invokermanagement"
-	invokermocks "oransc.org/nonrtric/plt/capif/internal/invokermanagement/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/providermanagement"
-	servicemocks "oransc.org/nonrtric/plt/capif/internal/providermanagement/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	publishmocks "oransc.org/nonrtric/plt/capif/internal/publishservice/mocks"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/common29122"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/securityapi"
+	"o-ran-sc.org/capifserverapi/common29122"
+	"o-ran-sc.org/capifserverapi/securityapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/invokermanagement"
+	invokermocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/invokermanagement/mocks"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement"
+	servicemocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement/mocks"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
+	publishmocks "o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice/mocks"
 )
 
 func TestPostSecurityIdToken(t *testing.T) {
diff --git a/capif/main.go b/capifcorego/main.go
similarity index 87%
rename from capif/main.go
rename to capifcorego/main.go
index 3a31b01..15ed9e2 100644
--- a/capif/main.go
+++ b/capifcorego/main.go
@@ -29,17 +29,17 @@
 	"github.com/labstack/echo/v4"
 	echomiddleware "github.com/labstack/echo/v4/middleware"
 	log "github.com/sirupsen/logrus"
-	"oransc.org/nonrtric/plt/capif/internal/discoverservice"
-	"oransc.org/nonrtric/plt/capif/internal/helmmanagement"
-	"oransc.org/nonrtric/plt/capif/internal/invokermanagement"
-	"oransc.org/nonrtric/plt/capif/internal/providermanagement"
-	"oransc.org/nonrtric/plt/capif/internal/publishservice"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/discoverserviceapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/invokermanagementapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/providermanagementapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/publishserviceapi"
-	"oransc.org/nonrtric/plt/capif/internal/readonly/securityapi"
-	"oransc.org/nonrtric/plt/capif/internal/security"
+	"o-ran-sc.org/capifserverapi/discoverserviceapi"
+	"o-ran-sc.org/capifserverapi/invokermanagementapi"
+	"o-ran-sc.org/capifserverapi/providermanagementapi"
+	"o-ran-sc.org/capifserverapi/publishserviceapi"
+	"o-ran-sc.org/capifserverapi/securityapi"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/discoverservice"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/helmmanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/invokermanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/providermanagement"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/publishservice"
+	"o-ran-sc.org/nonrtric/plt/capifcore/internal/security"
 )
 
 var url string
diff --git a/capif/main_test.go b/capifcorego/main_test.go
similarity index 100%
rename from capif/main_test.go
rename to capifcorego/main_test.go
diff --git a/capif/start_pods.sh b/capifcorego/start_pods.sh
similarity index 100%
rename from capif/start_pods.sh
rename to capifcorego/start_pods.sh
diff --git a/capif/stop_pods.sh b/capifcorego/stop_pods.sh
similarity index 100%
rename from capif/stop_pods.sh
rename to capifcorego/stop_pods.sh
diff --git a/capifcorejava/.gitignore b/capifcorejava/.gitignore
new file mode 100644
index 0000000..ee44a96
--- /dev/null
+++ b/capifcorejava/.gitignore
@@ -0,0 +1,2 @@
+.idea
+target
diff --git a/capif/java/capifcore/.mvn/wrapper/maven-wrapper.properties b/capifcorejava/.mvn/wrapper/maven-wrapper.properties
similarity index 100%
rename from capif/java/capifcore/.mvn/wrapper/maven-wrapper.properties
rename to capifcorejava/.mvn/wrapper/maven-wrapper.properties
diff --git a/capifcorejava/HELP.md b/capifcorejava/HELP.md
new file mode 100644
index 0000000..7947563
--- /dev/null
+++ b/capifcorejava/HELP.md
@@ -0,0 +1,10 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/docs/2.6.7/maven-plugin/reference/html/)
+* [Create an OCI image](https://docs.spring.io/spring-boot/docs/2.6.7/maven-plugin/reference/html/#build-image)
+* [Spring Boot DevTools](https://docs.spring.io/spring-boot/docs/2.6.7/reference/htmlsingle/#using-boot-devtools)
+
diff --git a/capif/README.md b/capifcorejava/README.md
similarity index 65%
copy from capif/README.md
copy to capifcorejava/README.md
index 24f1d3d..4b4133e 100644
--- a/capif/README.md
+++ b/capifcorejava/README.md
@@ -22,15 +22,10 @@
 
 # O-RAN-SC Non-RealTime CAPIF implementation
 
-This product is an implementation of the 3GPP CAPIF interfaces.
-
-## Generation
-
-The CAPIF interfaces are generated in to Go code into the `internal/readonly` folder. To generate the code run the `generate.sh` script. This script will download the specifications for release 17, unzip them, remove some not needed definitions, and generate the code. NOTE! The specifications should not be checked in, only the generated code.
+This product is a Java implementation of the CAPIF Core function, based on the 3GPP CAPIF interfaces.
 
 ## Run
 
 To run the Core Function run the following commands from the top of the repo:
 
-    go build
-    ./capif [-port <port (default 8080)>]
\ No newline at end of file
+    ./mvnw spring-boot:run
\ No newline at end of file
diff --git a/capif/java/capifcore/config/application.yaml b/capifcorejava/config/application.yaml
similarity index 100%
rename from capif/java/capifcore/config/application.yaml
rename to capifcorejava/config/application.yaml
diff --git a/capif/java/capifcore/mvnw b/capifcorejava/mvnw
similarity index 100%
rename from capif/java/capifcore/mvnw
rename to capifcorejava/mvnw
diff --git a/capif/java/capifcore/mvnw.cmd b/capifcorejava/mvnw.cmd
similarity index 100%
rename from capif/java/capifcore/mvnw.cmd
rename to capifcorejava/mvnw.cmd
diff --git a/capif/java/capifcore/pom.xml b/capifcorejava/pom.xml
similarity index 97%
rename from capif/java/capifcore/pom.xml
rename to capifcorejava/pom.xml
index 7ed5137..4e34154 100644
--- a/capif/java/capifcore/pom.xml
+++ b/capifcorejava/pom.xml
@@ -44,9 +44,9 @@
     </properties>
     <dependencies>
         <dependency>
-            <groupId>org.oransc.nonrtric.plt</groupId>
-            <artifactId>capifapi</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
+            <groupId>org.oransc</groupId>
+            <artifactId>capifserverapi</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplication.java b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplication.java
similarity index 100%
rename from capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplication.java
rename to capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplication.java
diff --git a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java
similarity index 93%
rename from capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java
rename to capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java
index c0a7782..05cfbd9 100644
--- a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java
+++ b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ApiRegister.java
@@ -20,7 +20,7 @@
 
 package org.oransc.nonrtric.plt.capifcore.controller;
 
-import org.oransc.nonrtric.plt.capifapi.model.ServiceAPIDescription;
+import org.oransc.capif.server.model.ServiceAPIDescription;
 
 public interface ApiRegister {
     boolean areAPIsRegistered(ServiceAPIDescription[] serviceDescriptions);
diff --git a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java
similarity index 93%
rename from capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java
rename to capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java
index 20b926e..ce56fa7 100644
--- a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java
+++ b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/InvokerManager.java
@@ -20,8 +20,8 @@
 
 package org.oransc.nonrtric.plt.capifcore.controller;
 
-import org.oransc.nonrtric.plt.capifapi.invokermanagement.OnboardedInvokersApi;
-import org.oransc.nonrtric.plt.capifapi.model.APIInvokerEnrolmentDetails;
+import org.oransc.capif.server.invokermanagement.api.OnboardedInvokersApi;
+import org.oransc.capif.server.model.APIInvokerEnrolmentDetails;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
diff --git a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java
similarity index 92%
rename from capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java
rename to capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java
index b364105..8fbf074 100644
--- a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java
+++ b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/ProviderManager.java
@@ -20,8 +20,8 @@
 
 package org.oransc.nonrtric.plt.capifcore.controller;
 
-import org.oransc.nonrtric.plt.capifapi.model.APIProviderEnrolmentDetails;
-import org.oransc.nonrtric.plt.capifapi.providermanagement.RegistrationsApi;
+import org.oransc.capif.server.model.APIProviderEnrolmentDetails;
+import org.oransc.capif.server.providermanagement.api.RegistrationsApi;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
diff --git a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java
similarity index 95%
rename from capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java
rename to capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java
index 6a9c032..85c989b 100644
--- a/capif/java/capifcore/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java
+++ b/capifcorejava/src/main/java/org/oransc/nonrtric/plt/capifcore/controller/PublishService.java
@@ -20,9 +20,9 @@
 
 package org.oransc.nonrtric.plt.capifcore.controller;
 
-import org.oransc.nonrtric.plt.capifapi.model.AefProfile;
-import org.oransc.nonrtric.plt.capifapi.model.ServiceAPIDescription;
-import org.oransc.nonrtric.plt.capifapi.publishservice.ApfIdApi;
+import org.oransc.capif.server.model.AefProfile;
+import org.oransc.capif.server.model.ServiceAPIDescription;
+import org.oransc.capif.server.publishservice.api.ApfIdApi;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/capif/java/capifcore/src/main/resources/application.properties b/capifcorejava/src/main/resources/application.properties
similarity index 100%
rename from capif/java/capifcore/src/main/resources/application.properties
rename to capifcorejava/src/main/resources/application.properties
diff --git a/capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java b/capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java
similarity index 93%
rename from capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java
rename to capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java
index 16dfd23..3ca586f 100644
--- a/capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java
+++ b/capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/CapifCoreApplicationTests.java
@@ -24,9 +24,9 @@
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.oransc.nonrtric.plt.capifapi.model.APIInvokerEnrolmentDetails;
-import org.oransc.nonrtric.plt.capifapi.model.APIProviderEnrolmentDetails;
-import org.oransc.nonrtric.plt.capifapi.model.ServiceAPIDescription;
+import org.oransc.capif.server.model.APIInvokerEnrolmentDetails;
+import org.oransc.capif.server.model.APIProviderEnrolmentDetails;
+import org.oransc.capif.server.model.ServiceAPIDescription;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
 import org.springframework.boot.test.context.SpringBootTest;
diff --git a/capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java b/capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java
similarity index 96%
rename from capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java
rename to capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java
index 5127cac..fb7ed3d 100644
--- a/capif/java/capifcore/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java
+++ b/capifcorejava/src/test/java/org/oransc/nonrtric/plt/capifcore/controller/PublishServiceTest.java
@@ -22,8 +22,8 @@
 
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
-import org.oransc.nonrtric.plt.capifapi.model.AefProfile;
-import org.oransc.nonrtric.plt.capifapi.model.ServiceAPIDescription;
+import org.oransc.capif.server.model.AefProfile;
+import org.oransc.capif.server.model.ServiceAPIDescription;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.mock.web.MockHttpServletRequest;
