//go:build go1.18
// +build go1.18

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.
// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

package arminformaticadatamgmt

import "time"

// AdvancedCustomProperties - Informatica Serverless advanced custom properties
type AdvancedCustomProperties struct {
	// advanced custom properties key
	Key *string

	// advanced custom properties value
	Value *string
}

// ApplicationConfigs - Application configs
type ApplicationConfigs struct {
	// REQUIRED; Customized value of the application config.
	Customized *string

	// REQUIRED; Default value of the application config.
	DefaultValue *string

	// REQUIRED; Name of the application config.
	Name *string

	// REQUIRED; Platform type of the application config.
	Platform *string

	// REQUIRED; Type of the application config.
	Type *string

	// REQUIRED; Value of the application config.
	Value *string
}

// ApplicationTypeMetadata - Informatica Serverless Runtime Application type Metadata
type ApplicationTypeMetadata struct {
	// Application type name
	Name *string

	// Application type value
	Value *string
}

// CdiConfigProps - Informatica CDI Configuration Properties.
type CdiConfigProps struct {
	// REQUIRED; ApplicationConfigs of the CDI or CDIE.
	ApplicationConfigs []*ApplicationConfigs

	// REQUIRED; EngineName of the application config.
	EngineName *string

	// REQUIRED; EngineVersion of the application config.
	EngineVersion *string
}

// CheckDependenciesResponse - Model for the check dependencies API for an informatica serverless runtime resource
type CheckDependenciesResponse struct {
	// REQUIRED; Count of dependencies
	Count *int32

	// REQUIRED; id of resource
	ID *string

	// REQUIRED; List of dependencies
	References []*ServerlessRuntimeDependency
}

// CompanyDetails - Company Details.
type CompanyDetails struct {
	// Business phone number
	Business *string

	// company Name
	CompanyName *string

	// Country name
	Country *string

	// Domain name
	Domain *string

	// Number Of Employees
	NumberOfEmployees *int32

	// Office Address
	OfficeAddress *string
}

// CompanyDetailsUpdate - Company details of Informatica Organization resource
type CompanyDetailsUpdate struct {
	// Business phone number
	Business *string

	// company Name
	CompanyName *string

	// Country name
	Country *string

	// Domain name
	Domain *string

	// Number Of Employees
	NumberOfEmployees *int32

	// Office Address
	OfficeAddress *string
}

// ComputeUnitsMetadata - Informatica Serverless Runtime Application type Metadata
type ComputeUnitsMetadata struct {
	// ComputeUnit name
	Name *string

	// ComputeUnit value
	Value []*string
}

// InfaRuntimeResourceFetchMetaData - Informatica runtime resource metadata as received via the informatica fetch all runtime
// environments API
type InfaRuntimeResourceFetchMetaData struct {
	// REQUIRED; Created by
	CreatedBy *string

	// REQUIRED; Created time
	CreatedTime *string

	// REQUIRED; Informatica serverless runtime id
	ID *string

	// REQUIRED; Environment name
	Name *string

	// REQUIRED; Serverless Config Properties
	ServerlessConfigProperties *InfaServerlessFetchConfigProperties

	// REQUIRED; Status of the environment
	Status *string

	// REQUIRED; Display message for the given status
	StatusLocalized *string

	// REQUIRED; status message
	StatusMessage *string

	// REQUIRED; Environment Type
	Type *RuntimeType

	// REQUIRED; Last Updated by
	UpdatedBy *string

	// REQUIRED; Updated Time
	UpdatedTime *string

	// Description of the runtime resource
	Description *string
}

// InfaServerlessFetchConfigProperties for the fetch all serverless API as received from informatica API response
type InfaServerlessFetchConfigProperties struct {
	// Advanced custom properties
	AdvancedCustomProperties *string

	// applicationType name
	ApplicationType *string

	// Compute Units
	ComputeUnits *string

	// Execution timeout
	ExecutionTimeout *string

	// Serverless Account Platform
	Platform *string

	// region name for the runtime environment
	Region *string

	// Resource group name
	ResourceGroupName *string

	// Serverless Arm Resource ID
	ServerlessArmResourceID *string

	// subnet name
	Subnet *string

	// subscription ID
	SubscriptionID *string

	// Supplementary File location
	SupplementaryFileLocation *string

	// Tags for the resource
	Tags *string

	// Tenant ID
	TenantID *string

	// virtual network
	Vnet *string
}

// InformaticaOrganizationResource - An Organization Resource by Informatica.
type InformaticaOrganizationResource struct {
	// REQUIRED; The geo-location where the resource lives
	Location *string

	// The resource-specific properties for this resource.
	Properties *OrganizationProperties

	// Resource tags.
	Tags map[string]*string

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// InformaticaOrganizationResourceListResult - The response of a InformaticaOrganizationResource list operation.
type InformaticaOrganizationResourceListResult struct {
	// REQUIRED; The InformaticaOrganizationResource items on this page
	Value []*InformaticaOrganizationResource

	// The link to the next page of items
	NextLink *string
}

// InformaticaOrganizationResourceUpdate - The template for adding optional properties.
type InformaticaOrganizationResourceUpdate struct {
	// Patchable PropertieInformaticaOrganizationPropertiesUpdates of the Organization observability resource
	Properties *OrganizationPropertiesCustomUpdate

	// Resource tags.
	Tags map[string]*string
}

// InformaticaProperties - Properties of the Informatica organization.
type InformaticaProperties struct {
	// Informatica organization region
	InformaticaRegion *string

	// Organization id
	OrganizationID *string

	// Organization name
	OrganizationName *string

	// Single sing on URL for informatica organization
	SingleSignOnURL *string
}

// InformaticaServerlessRuntimeProperties - Serverless Runtime properties.
type InformaticaServerlessRuntimeProperties struct {
	// REQUIRED; Serverless account creation location
	ServerlessAccountLocation *string

	// String KV pairs indicating Advanced custom properties.
	AdvancedCustomProperties []*AdvancedCustomProperties

	// Application type of the Serverless Runtime environment.
	ApplicationType *ApplicationType

	// Compute units of the serverless runtime.
	ComputeUnits *string

	// description of the serverless runtime.
	Description *string

	// Serverless Execution timeout
	ExecutionTimeout *string

	// Platform type of the Serverless Runtime.
	Platform *PlatformType

	// Serverless config properties
	ServerlessRuntimeConfig *ServerlessRuntimeConfigProperties

	// Informatica Serverless Network profile properties.
	ServerlessRuntimeNetworkProfile *ServerlessRuntimeNetworkProfile

	// Serverless Runtime Tags
	ServerlessRuntimeTags []*ServerlessRuntimeTag

	// Serverless runtime user context properties
	ServerlessRuntimeUserContextProperties *ServerlessRuntimeUserContextProperties

	// Supplementary file location.
	SupplementaryFileLocation *string

	// READ-ONLY; Provisioning State of the resource.
	ProvisioningState *ProvisioningState
}

// InformaticaServerlessRuntimeResource - A Serverless Runtime environment resource by Informatica.
type InformaticaServerlessRuntimeResource struct {
	// The resource-specific properties for this resource.
	Properties *InformaticaServerlessRuntimeProperties

	// READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
	ID *string

	// READ-ONLY; The name of the resource
	Name *string

	// READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information.
	SystemData *SystemData

	// READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
	Type *string
}

// InformaticaServerlessRuntimeResourceList - A list of serverless runtime resources as fetched using the informatica APIs
type InformaticaServerlessRuntimeResourceList struct {
	// REQUIRED; List of runtime resources for the fetch all API
	InformaticaRuntimeResources []*InfaRuntimeResourceFetchMetaData
}

// InformaticaServerlessRuntimeResourceListResult - The response of a InformaticaServerlessRuntimeResource list operation.
type InformaticaServerlessRuntimeResourceListResult struct {
	// REQUIRED; The InformaticaServerlessRuntimeResource items on this page
	Value []*InformaticaServerlessRuntimeResource

	// The link to the next page of items
	NextLink *string
}

// InformaticaServerlessRuntimeResourceUpdate - The template for adding optional properties.
type InformaticaServerlessRuntimeResourceUpdate struct {
	// Patchable PropertieInformaticaOrganizationPropertiesUpdates of the Organization observability resource
	Properties *ServerlessRuntimePropertiesCustomUpdate
}

// LinkOrganization - Link Organization
type LinkOrganization struct {
	// Link organization token
	Token *string
}

// MarketplaceDetails - Marketplace details.
type MarketplaceDetails struct {
	// REQUIRED; Marketplace offer details.
	OfferDetails *OfferDetails

	// Marketplace Subscription Id
	MarketplaceSubscriptionID *string
}

// MarketplaceDetailsUpdate - Marketplace details
type MarketplaceDetailsUpdate struct {
	// Marketplace Subscription Id
	MarketplaceSubscriptionID *string

	// Marketplace offer details.
	OfferDetails *OfferDetailsUpdate
}

// NetworkInterfaceConfiguration - Informatica Serverless Runtime Network Interface configurations.
type NetworkInterfaceConfiguration struct {
	// REQUIRED; Virtual network subnet resource id
	SubnetID *string

	// REQUIRED; Virtual network resource id
	VnetID *string

	// Virtual network resource guid
	VnetResourceGUID *string
}

// NetworkInterfaceConfigurationUpdate - The template for adding optional properties.
type NetworkInterfaceConfigurationUpdate struct {
	// Virtual network subnet resource id
	SubnetID *string

	// Virtual network resource id
	VnetID *string

	// Virtual network resource guid
	VnetResourceGUID *string
}

// OfferDetails - Details of the product offering.
type OfferDetails struct {
	// REQUIRED; Id of the product offering.
	OfferID *string

	// REQUIRED; Id of the product offer plan.
	PlanID *string

	// REQUIRED; Name of the product offer plan.
	PlanName *string

	// REQUIRED; Id of the product publisher.
	PublisherID *string

	// REQUIRED; Offer plan term id.
	TermID *string

	// Offer plan term unit.
	TermUnit *string
}

// OfferDetailsUpdate - Details of the product offering
type OfferDetailsUpdate struct {
	// Id of the product offering.
	OfferID *string

	// Id of the product offer plan.
	PlanID *string

	// Name of the product offer plan.
	PlanName *string

	// Id of the product publisher.
	PublisherID *string

	// Offer plan term id.
	TermID *string

	// Offer plan term unit.
	TermUnit *string
}

// Operation - Details of a REST API operation, returned from the Resource Provider Operations API
type Operation struct {
	// Localized display information for this particular operation.
	Display *OperationDisplay

	// READ-ONLY; Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs.
	ActionType *ActionType

	// READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for ARM/control-plane
	// operations.
	IsDataAction *bool

	// READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write",
	// "Microsoft.Compute/virtualMachines/capture/action"
	Name *string

	// READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default
	// value is "user,system"
	Origin *Origin
}

// OperationDisplay - Localized display information for this particular operation.
type OperationDisplay struct {
	// READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views.
	Description *string

	// READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual
	// Machine", "Restart Virtual Machine".
	Operation *string

	// READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft
	// Compute".
	Provider *string

	// READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job
	// Schedule Collections".
	Resource *string
}

// OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to
// get the next set of results.
type OperationListResult struct {
	// READ-ONLY; URL to get the next set of operation list results (if there are any).
	NextLink *string

	// READ-ONLY; List of operations supported by the resource provider
	Value []*Operation
}

// OrganizationProperties - Properties specific to the Informatica DataManagement Organization resource.
type OrganizationProperties struct {
	// Company details.
	CompanyDetails *CompanyDetails

	// Informatica Organization properties.
	InformaticaProperties *InformaticaProperties

	// Link Organization
	LinkOrganization *LinkOrganization

	// Marketplace details.
	MarketplaceDetails *MarketplaceDetails

	// User details
	UserDetails *UserDetails

	// READ-ONLY; Provisioning State of the resource.
	ProvisioningState *ProvisioningState
}

// OrganizationPropertiesCustomUpdate - Patchable Properties of the Informatica Organization resource
type OrganizationPropertiesCustomUpdate struct {
	// Company Details
	CompanyDetails *CompanyDetailsUpdate

	// Existing Resource Id
	ExistingResourceID *string

	// Informatica Organization properties
	InformaticaOrganizationProperties *InformaticaOrganizationResourceUpdate

	// Marketplace details
	MarketplaceDetails *MarketplaceDetailsUpdate

	// User details
	UserDetails *UserDetailsUpdate
}

// RegionsMetadata - Informatica Serverless Runtime Regions Metadata
type RegionsMetadata struct {
	// Region Id
	ID *string

	// Region name
	Name *string
}

// ServerlessConfigProperties - Metadata Serverless Config Properties
type ServerlessConfigProperties struct {
	// List of application types supported by informatica
	ApplicationTypes []*ApplicationTypeMetadata

	// The list of compute units with possible array of values
	ComputeUnits []*ComputeUnitsMetadata

	// Serverless Runtime execution timeout
	ExecutionTimeout *string

	// Platform types
	Platform *PlatformType

	// List of supported serverless informatica regions
	Regions []*RegionsMetadata
}

// ServerlessMetadataResponse - Serverless Runtime environment Metadata response.
type ServerlessMetadataResponse struct {
	// serverless config properties
	ServerlessConfigProperties *ServerlessConfigProperties

	// serverless runtime config properties
	ServerlessRuntimeConfigProperties *ServerlessRuntimeConfigProperties

	// type of the runtime environment.
	Type *RuntimeType
}

// ServerlessRuntimeConfigProperties - Serverless Runtime config properties.
type ServerlessRuntimeConfigProperties struct {
	// The List of Informatica Serverless Runtime CDI Config Properties.
	CdiConfigProps []*CdiConfigProps

	// The List of Informatica Serverless Runtime CDIE Config Properties.
	CdieConfigProps []*CdiConfigProps
}

// ServerlessRuntimeConfigPropertiesUpdate - The template for adding optional properties.
type ServerlessRuntimeConfigPropertiesUpdate struct {
	// The List of Informatica Serverless Runtime CDI Config Properties.
	CdiConfigProps []*CdiConfigProps

	// The List of Informatica Serverless Runtime CDIE Config Properties.
	CdieConfigProps []*CdiConfigProps
}

// ServerlessRuntimeDependency - Dependency reference for a serverless runtime resource
type ServerlessRuntimeDependency struct {
	// REQUIRED; Application context ID
	AppContextID *string

	// REQUIRED; description of Dependency
	Description *string

	// REQUIRED; document type
	DocumentType *string

	// REQUIRED; Dependency ID
	ID *string

	// REQUIRED; Last Update Time
	LastUpdatedTime *string

	// REQUIRED; Dependency path
	Path *string
}

// ServerlessRuntimeNetworkProfile - Informatica Serverless Runtime Network Profile.
type ServerlessRuntimeNetworkProfile struct {
	// REQUIRED; Network Interface Configuration Profile
	NetworkInterfaceConfiguration *NetworkInterfaceConfiguration
}

// ServerlessRuntimeNetworkProfileUpdate - Informatica Serverless Network profile properties update.
type ServerlessRuntimeNetworkProfileUpdate struct {
	// Network Interface Configuration Profile Update
	NetworkInterfaceConfiguration *NetworkInterfaceConfigurationUpdate
}

// ServerlessRuntimePropertiesCustomUpdate - Patchable Properties of the Informatica Serverless Runtime resource
type ServerlessRuntimePropertiesCustomUpdate struct {
	// String KV pairs indicating Advanced custom properties.
	AdvancedCustomProperties []*AdvancedCustomProperties

	// Application type of the Serverless Runtime environment.
	ApplicationType *ApplicationType

	// Compute units of the serverless runtime.
	ComputeUnits *string

	// description of the serverless runtime.
	Description *string

	// Serverless Execution timeout
	ExecutionTimeout *string

	// Platform type of the Serverless Runtime.
	Platform *PlatformType

	// Serverless account creation location
	ServerlessAccountLocation *string

	// Serverless config properties
	ServerlessRuntimeConfig *ServerlessRuntimeConfigPropertiesUpdate

	// Informatica Serverless Network profile properties.
	ServerlessRuntimeNetworkProfile *ServerlessRuntimeNetworkProfileUpdate

	// Serverless Runtime Tags
	ServerlessRuntimeTags []*ServerlessRuntimeTag

	// Serverless runtime user context properties
	ServerlessRuntimeUserContextProperties *ServerlessRuntimeUserContextPropertiesUpdate

	// Supplementary file location.
	SupplementaryFileLocation *string
}

// ServerlessRuntimeTag - Serverless Runtime Tags
type ServerlessRuntimeTag struct {
	// The name (also known as the key) of the tag.
	Name *string

	// The value of the tag.
	Value *string
}

// ServerlessRuntimeUserContextProperties - Informatica Serverless Runtime User context properties
type ServerlessRuntimeUserContextProperties struct {
	// REQUIRED; User context token for OBO flow.
	UserContextToken *string
}

// ServerlessRuntimeUserContextPropertiesUpdate - The template for adding optional properties.
type ServerlessRuntimeUserContextPropertiesUpdate struct {
	// User context token for OBO flow.
	UserContextToken *string
}

// SystemData - Metadata pertaining to creation and last modification of the resource.
type SystemData struct {
	// The timestamp of resource creation (UTC).
	CreatedAt *time.Time

	// The identity that created the resource.
	CreatedBy *string

	// The type of identity that created the resource.
	CreatedByType *CreatedByType

	// The timestamp of resource last modification (UTC)
	LastModifiedAt *time.Time

	// The identity that last modified the resource.
	LastModifiedBy *string

	// The type of identity that last modified the resource.
	LastModifiedByType *CreatedByType
}

// UserDetails - User Info of Informatica Organization resource.
type UserDetails struct {
	// User email address.
	EmailAddress *string

	// User first name.
	FirstName *string

	// User last name.
	LastName *string

	// Phone number of the user used by for contacting them if needed
	PhoneNumber *string

	// UPN of user
	Upn *string
}

// UserDetailsUpdate - User Info of Informatica Organization resource
type UserDetailsUpdate struct {
	// User email address.
	EmailAddress *string

	// User first name.
	FirstName *string

	// User last name.
	LastName *string

	// Phone number of the user used by for contacting them if needed
	PhoneNumber *string

	// UPN of user
	Upn *string
}
