/*
 * Copyright (c) 2024  The AdvantEDGE Authors
 *
 * 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.
 *
 * AdvantEDGE MEC Application Support API
 *
 * MEC Application Support Service is AdvantEDGE's implementation of [ETSI MEC ISG MEC011 Application Enablement API](https://www.etsi.org/deliver/etsi_gs/MEC/001_099/011/03.01.01_60/gs_MEC011v030101p.pdf) <p>[Copyright (c) ETSI 2024](https://forge.etsi.org/etsi-forge-copyright-notice.txt) <p>**Micro-service**<br>[meep-app-enablement](https://github.com/InterDigitalInc/AdvantEDGE/tree/master/go-apps/meep-app-enablement/server/app-support) <p>**Type & Usage**<br>Edge Service used by edge applications that want to get information about applications in the network <p>**Note**<br>AdvantEDGE supports a selected subset of Application Support API endpoints (see below).
 *
 * API version: 3.1.1
 * Contact: AdvantEDGE@InterDigital.com
 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git)
 */
package server

// This type represents the information provided by the MEC application instance as part of the \"application registration request\" and \"application registration update\" messages.
type AppInfo struct {
	// Name of the application. It shall be consistent with the appName in the AppD, if an AppD is available.
	AppName string `json:"appName"`
	// Provider of the application. It shall be consistent with the appProvider in the AppD, if an AppD is available. See note 1.
	AppProvider string `json:"appProvider,omitempty"`

	AppCategory *CategoryRef `json:"appCategory,omitempty"`
	// The application descriptor identifier. It is managed by the application provider to identify the application descriptor in a globally unique way. Shall be present if the application instance is instantiated by the MEC Management.
	AppDId string `json:"appDId,omitempty"`
	// Identifier of the application instance. Shall be present if the application instance is instantiated by the MEC Management.
	AppInstanceId string `json:"appInstanceId,omitempty"`
	// This type represents information about a transport endpoint
	Endpoint *OneOfAppInfoEndpoint `json:"endpoint,omitempty"`
	// Describes services a MEC application requires to run. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available.
	AppServiceRequired []ServiceDependency `json:"appServiceRequired,omitempty"`
	// Describes services a MEC application may use if available. ServiceDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available.
	AppServiceOptional []ServiceDependency `json:"appServiceOptional,omitempty"`
	// Describes features a MEC application requires to run. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available.
	AppFeatureRequired []FeatureDependency `json:"appFeatureRequired,omitempty"`
	// Describes features a MEC application may use if available. FeatureDependency is defined in ETSI GS MEC 010-2 [4]. It shall not be provided if an AppD is available.
	AppFeatureOptional []FeatureDependency `json:"appFeatureOptional,omitempty"`
	// Indicate whether the application instance is instantiated by the MEC Management. Default to FALSE if absent.
	IsInsByMec bool        `json:"isInsByMec,omitempty"`
	Scheds     []string    `json:"scheds"`
	SvcArea    string      `json:"svcArea,omitempty"`
	AppProfile *AppProfile `json:"appProfile,omitempty"`
	// Service characteristics provided by the EAS.
	SvcKpi  string   `json:"svcKpi,omitempty"`
	PermLvl []string `json:"permLvl"`
}
