azure

package
v0.1.25 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 4, 2025 License: GPL-3.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Fetch bool
View Source
var SetActive bool
View Source
var ShowActive bool

Functions

func ChangeActiveSub

func ChangeActiveSub(azProfile AzureProfile)

func ChangeActiveSubscription

func ChangeActiveSubscription(subs []AzureProfileSubscription)

func CombineAllCostMeters

func CombineAllCostMeters(costDataPath string) (allCostMetersByMeterIdentifier map[string]lib.MongoDbCostItem, allCostMetersSlice []lib.MongoDbCostItem)

func CombineCostDataSlices

func CombineCostDataSlices(basePath string, saveOutput bool) (combinedSlice []lib.MongoDbCostItem)

func CombineCostExportCSVData

func CombineCostExportCSVData(dataPath string) lib.CostExportData

func CombineCostExportJSONData

func CombineCostExportJSONData(dataPath string) lib.CostExportData

func ConvertCsvDataToExcel

func ConvertCsvDataToExcel(sheetName string, inFileName string, outFileName string)

func ConvertCsvFileToExcel

func ConvertCsvFileToExcel(sheetName string, inFileName string, outFileName string)

func CostDataByInstanceId

func CostDataByInstanceId(data lib.AggregatedCostData) map[string][]lib.AggregatedCostItem

func CostDataToExcel

func CostDataToExcel(data lib.TransformedCostItemsByTenant, outFileName string)

func DeallocateAzureVm added in v0.1.15

func DeallocateAzureVm(resourceId string, mat *lib.AzureMultiAuthToken)

func DeallocateMultipleAzureVms added in v0.1.15

func DeallocateMultipleAzureVms(resourceIds []string, token *lib.AzureMultiAuthToken)

func DownloadAllBlobsInContainer

func DownloadAllBlobsInContainer(options lib.StorageAccountRequestOptions) (numFilesDownloaded int)

func DownloadAllConfiguredTenantCostExportsForMonth

func DownloadAllConfiguredTenantCostExportsForMonth(opts lib.DownloadAllConfiguredTenantCostExportsForMonthOptions, cldConfOpts *lib.CldConfigOptions)

func FlattenAggregatedCostData

func FlattenAggregatedCostData(data lib.AggregatedCostData, resources []lib.AzureResourceDetails) []lib.AzureResourceDetails

func GatherRelatedResourcesAndCostMeters

func GatherRelatedResourcesAndCostMeters(costData []lib.AggregatedCostItem, resources []lib.AzureResourceDetails, progBarNum int, progBarTotal int) (map[string][]lib.AzureResourceDetails, []lib.AzureResourceDetails)

func GenerateMonthlyCostReport

func GenerateMonthlyCostReport(outputDirectory string, outputFileName string, blobPrefix string, costExportMonth string)

Generates monthly cost report from Cost Data stored in Azure Blob Storages, exported from Azure

outputDirectory = Base directory to store downloaded data and generated Excel workbook.

Full save directory would be outputDirectory + "/cost-exports/" + lastMonth.Format("2006") + lastMonth.Format("01") + "/"

blobPrefix is the directory within the Blob Container to find files.

Full blob prefix becomes blobPrefix + "/" + lastMonth.Format("2006") + lastMonth.Format("01")

func GetAllGalleryImages

func GetAllGalleryImages(subscriptionId string, resourceGroup string, galleryName string, mat *lib.AzureMultiAuthToken) (images []lib.GalleryImage)

func GetAllImagesAndVersionsForAllGalleries

func GetAllImagesAndVersionsForAllGalleries(tokens lib.AllTenantTokens) (imagesWithVersions []lib.GalleryImage)

func GetAllImagesAndVersionsForGallery

func GetAllImagesAndVersionsForGallery(subscriptionId string, resourceGroup string, galleryName string, mat *lib.AzureMultiAuthToken) (imagesWithVersions []lib.GalleryImage)

func GetAllResourcesForAllConfiguredTenants

func GetAllResourcesForAllConfiguredTenants(opts *lib.GetAllResourcesForAllConfiguredTenantsOptions, tokens lib.AllTenantTokens) (allResources map[string]TenantResourceList, allResourcesSlice []lib.AzureResourceDetails)

func GetAllTenantSPTokens

func GetAllTenantSPTokens(options lib.AzureMultiAuthTokenRequestOptions, cldConfOpts *lib.CldConfigOptions) (lib.AllTenantTokens, error)

Gets a token for each tenant configured in the cld config file

Default path for config file is ~/.config/cld/cldConfig.json

First parameter passed into this function overwrites the config file path

func GetAppRegDataForAllConfiguredTenants

func GetAppRegDataForAllConfiguredTenants(outputPath string) (allAppRegistrations []EntraApplication, expiringCreds []EntraExpiringCredential)

func GetAzCliToken

func GetAzCliToken() lib.AzureMultiAuthToken

func GetAzureEnvVariables

func GetAzureEnvVariables(requiredEnvVars lib.AzureAuthRequirements) *lib.AzureAuthDetails

func GetAzureResourceSKUsForSubscription

func GetAzureResourceSKUsForSubscription(opts lib.GetAllResourcesForAllConfiguredTenantsOptions) (processedSkus []lib.AzureResourceSku)

func GetAzureVMStatus added in v0.1.15

func GetAzureVMStatus(resourceId string, mat *lib.AzureMultiAuthToken)

func GetAzureVm added in v0.1.15

func GetAzureVm(subscriptionId string, resourceGroupName string, vmName string, mat *lib.AzureMultiAuthToken)

func GetB2CUserByObjectId

func GetB2CUserByObjectId(objectId string, token *lib.AzureMultiAuthToken) (user interface{})

func GetB2CUserByUPN

func GetB2CUserByUPN(upn string, token *lib.AzureMultiAuthToken) (user interface{})

func GetCostExportCSVFileData

func GetCostExportCSVFileData(fileName string) (lib.CostExportData, error)

func GetCostExportJSONFileData

func GetCostExportJSONFileData(fileName string) (lib.CostExportData, error)

func GetGalleryImage

func GetGalleryImage(subscriptionId string, resourceGroup string, galleryName string, galleryImageName string, mat *lib.AzureMultiAuthToken) lib.GalleryImage

func GetGalleryImageVersions

func GetGalleryImageVersions(subscriptionId string, resourceGroup string, galleryName string, galleryImageName string, mat lib.AzureMultiAuthToken) (imageVersions lib.GalleryImageVersionList, imageVersionsDetailed []lib.GalleryImageVersionDetailed)

func GetLogAnalyticsToken

func GetLogAnalyticsToken() (*lib.TokenRequestResponse, error)

func GetMultipleAzureVMStatuses added in v0.1.15

func GetMultipleAzureVMStatuses(resourceIds []string, token *lib.AzureMultiAuthToken)

func GetServicePrincipalMultiAuthToken

func GetServicePrincipalMultiAuthToken(spDetails lib.AzureMultiAuthTokenRequestOptions) (*lib.AzureMultiAuthToken, error)

func GetServicePrincipalToken

func GetServicePrincipalToken(tenant string, servicePrincipalDetails lib.AzureMultiAuthTokenRequestOptions, cldConfigOpts *lib.CldConfigOptions, mut *sync.Mutex) (*lib.AzureTokenData, error)

func GetSkusWithVcpus

func GetSkusWithVcpus(resSkus []lib.AzureResourceSku) (vcpuSkus []lib.AzureVirtualMachineSku)

func GetTenantAzCred

func GetTenantAzCred(tenantName string, getWriteToken bool, cldConfOpts *lib.CldConfigOptions) (*azidentity.ClientSecretCredential, error)

func GetToken

func GetToken(tenantName string, cldConfigOpts *lib.CldConfigOptions) lib.AzureMultiAuthToken

func GetVcpuCountForAllConfiguredTenants

func GetVcpuCountForAllConfiguredTenants(
	allResources map[string]TenantResourceList,
	opts *lib.GetAllResourcesForAllConfiguredTenantsOptions,
	cfg lib.CldConfigTenants,
) (
	vmResources map[string][]lib.AzureResourceDetails,
	vmResByType map[string]map[string]lib.AzureResourceDetails,
	processedVms map[string][]lib.AzureResourceDetails,
	processedVmsSlice []lib.AzureResourceDetails,
	vCpuCountByTenant lib.VCpuCountByTenant,
	vCpuCountByTenantWithResources lib.VCpuCountByTenant,
)

func HttpGet

func HttpGet(urlString string, mat lib.AzureMultiAuthToken) ([]byte, error)

func HttpPatch

func HttpPatch(urlString string, body string, mat lib.AzureMultiAuthToken) ([]byte, []byte, error)

func HttpPost

func HttpPost(urlString string, body string, mat lib.AzureMultiAuthToken) ([]byte, []byte, error)

func HttpPut

func HttpPut(urlString string, mat lib.AzureMultiAuthToken) ([]byte, []byte, error)

func ListAllSubscriptionVnetsWithChan

func ListAllSubscriptionVnetsWithChan(subscriptionId string, mat lib.AzureMultiAuthToken, out chan<- Vnet, wg *lib.WaitGroupCount)

func ListAllTenantPIMScheduleInstances

func ListAllTenantPIMScheduleInstances(token *lib.AzureMultiAuthToken) (assignmentsSlice []RoleAssignmentScheduleInstance, eligibilitiesSlice []RoleEligibilityScheduleInstance)

func ListAllTenantPIMScheduleInstancesForAllTenants

func ListAllTenantPIMScheduleInstancesForAllTenants() (processedAssignments []RoleAssignmentScheduleInstance, processedEligibilities []RoleEligibilityScheduleInstance)

func ListAllVnetIPAddressesWithChan

func ListAllVnetIPAddressesWithChan(mat lib.AzureMultiAuthToken, vnet Vnet, publicIps chan<- IPAddressItem, privateIps chan<- IPAddressItem, wg *lib.WaitGroupCount)

func ListStorageContainerBlobs

func ListStorageContainerBlobs(options lib.StorageAccountRequestOptions, cldConfigOpts *lib.CldConfigOptions) lib.BlobList

func ListSubscriptions

func ListSubscriptions(token lib.AzureMultiAuthToken) ([]lib.FetchedSubscription, error)

Lists Azure subscriptions availabe to a given auth token

func MapVmSizeDetails

func MapVmSizeDetails(vmSize string, resourcesSkus []lib.AzureVirtualMachineSku) (mappedSku lib.AzureVirtualMachineSku)

func ProcessCostData

func ProcessCostData(data lib.AggregatedCostData) (costDataByMeterIdentifer map[string]lib.AggregatedCostItem, costDataSlice []lib.AggregatedCostItem)

func SortCostPerDay

func SortCostPerDay(costPerDay lib.CostPerDay) lib.CostPerDay

func StartAzureVm added in v0.1.15

func StartAzureVm(resourceId string, mat *lib.AzureMultiAuthToken)

func StartMultipleAzureVms added in v0.1.15

func StartMultipleAzureVms(resourceIds []string, token *lib.AzureMultiAuthToken)

func StopAzureVm added in v0.1.15

func StopAzureVm(resourceId string, mat *lib.AzureMultiAuthToken)

func StopAzureVms added in v0.1.15

func StopAzureVms(resourceIds []string, mat *lib.AzureMultiAuthToken)

func StopMultipleAzureVms added in v0.1.15

func StopMultipleAzureVms(resourceIds []string, token *lib.AzureMultiAuthToken)

func StorageBlobHttpGet

func StorageBlobHttpGet(urlString string, mat lib.AzureMultiAuthToken) ([]byte, error)

func TenantMapByDomain

func TenantMapByDomain() map[string]string

func TransformCostDataNew

func TransformCostDataNew(data lib.CostExportData, progBarNum int, progBarTotal int) lib.AggregatedCostData

func UnmarshalCostExportCSV

func UnmarshalCostExportCSV(reader *csv.Reader, v *lib.RowData, fileName string) error

Types

type AllTenantIPs

type AllTenantIPs map[string]IPAddressList

type AzureAsyncOpUpdateResponse added in v0.1.15

type AzureAsyncOpUpdateResponse struct {
	EndTime   time.Time `json:"endTime"`
	Name      string    `json:"name"`
	StartTime time.Time `json:"startTime"`
	Status    string    `json:"status"`
}

type AzureAsyncRequestResponse added in v0.1.15

type AzureAsyncRequestResponse struct {
	AzureAsyncnotification                        []string `json:"Azure-Asyncnotification"`
	AzureAsyncoperation                           []string `json:"Azure-Asyncoperation"`
	CacheControl                                  []string `json:"Cache-Control"`
	ContentLength                                 []string `json:"Content-Length"`
	Date                                          []string `json:"Date"`
	Expires                                       []string `json:"Expires"`
	Location                                      []string `json:"Location"`
	Pragma                                        []string `json:"Pragma"`
	StrictTransportSecurity                       []string `json:"Strict-Transport-Security"`
	XCache                                        []string `json:"X-Cache"`
	XContentTypeOptions                           []string `json:"X-Content-Type-Options"`
	XMsCorrelationRequestID                       []string `json:"X-Ms-Correlation-Request-Id"`
	XMsRatelimitRemainingResource                 []string `json:"X-Ms-Ratelimit-Remaining-Resource"`
	XMsRatelimitRemainingSubscriptionGlobalWrites []string `json:"X-Ms-Ratelimit-Remaining-Subscription-Global-Writes"`
	XMsRatelimitRemainingSubscriptionWrites       []string `json:"X-Ms-Ratelimit-Remaining-Subscription-Writes"`
	XMsRequestID                                  []string `json:"X-Ms-Request-Id"`
	XMsRoutingRequestID                           []string `json:"X-Ms-Routing-Request-Id"`
	XMsedgeRef                                    []string `json:"X-Msedge-Ref"`
}

type AzureB2CUser

type AzureB2CUser struct {
	AccountEnabled                                           bool      `json:"accountEnabled"`
	CreatedDateTime                                          time.Time `json:"createdDateTime"`
	CreationType                                             string    `json:"creationType"`
	DisplayName                                              string    `json:"displayName"`
	Extension4e4fa41c1d3246639764b37ff949534dLastLogonTime   time.Time `json:"extension_4e4fa41c1d3246639764b37ff949534d_lastLogonTime"`
	Extension4e4fa41c1d3246639764b37ff949534dPasswordResetOn time.Time `json:"extension_4e4fa41c1d3246639764b37ff949534d_passwordResetOn"`
	ID                                                       string    `json:"id"`
	UserPrincipalName                                        string    `json:"userPrincipalName"`
}

type AzureCostData

type AzureCostData map[string]AzureTenantCostData

type AzureCostDataMeter

type AzureCostDataMeter map[string]lib.AggregatedCostItem

type AzureProfile

type AzureProfile struct {
	InstallationID string                     `json:"installationId"`
	Subscriptions  []AzureProfileSubscription `json:"subscriptions"`
}

func GetCliSubs

func GetCliSubs() (AzureProfile, []byte)

func (*AzureProfile) PrintSubs

func (s *AzureProfile) PrintSubs()

func (*AzureProfile) Sort

func (s *AzureProfile) Sort()

type AzureProfileSubscription

type AzureProfileSubscription struct {
	EnvironmentName  string `json:"environmentName"`
	HomeTenantID     string `json:"homeTenantId,omitempty"`
	ID               string `json:"id"`
	IsDefault        bool   `json:"isDefault"`
	ManagedByTenants []struct {
		TenantID string `json:"tenantId"`
	} `json:"managedByTenants"`
	Name                string `json:"name"`
	State               string `json:"state"`
	TenantDefaultDomain string `json:"tenantDefaultDomain,omitempty"`
	TenantDisplayName   string `json:"tenantDisplayName,omitempty"`
	TenantMappedName    string `json:"tenantMappedName,omitempty"`
	TenantID            string `json:"tenantId"`
	User                struct {
		Name string `json:"name"`
		Type string `json:"type"`
	} `json:"user"`
}

func GetActiveCliSub

func GetActiveCliSub() (*AzureProfileSubscription, error)

type AzureProfileTenant

type AzureProfileTenant struct {
	TenantDefaultDomain string `json:"tenantDefaultDomain,omitempty"`
	TenantDisplayName   string `json:"tenantDisplayName,omitempty"`
	TenantID            string `json:"tenantId"`
	TenantMappedName    string `json:"tenantMappedName,omitempty"`
}

type AzureRequestOptions

type AzureRequestOptions struct {
	SubscriptionId    string
	ResourceId        string
	ResourceGroupName string
	ResourceName      string
	TenantId          string
	TenantName        string

	ConfigFilePath string
}

type AzureResourceIPConfig added in v0.1.17

type AzureResourceIPConfig struct {
	ID               string    `json:"id,omitempty" bson:"id,omitempty"`
	Name             string    `json:"name,omitempty" bson:"name,omitempty"`
	Type             string    `json:"type,omitempty" bson:"type,omitempty"`
	TenantName       string    `json:"tenantName,omitempty" bson:"tenantName,omitempty"`
	TenantId         string    `json:"tenantId,omitempty" bson:"tenantId,omitempty"`
	SubscriptionName string    `json:"subscriptionName,omitempty" bson:"subscriptionName,omitempty"`
	SubscriptionId   string    `json:"subscriptionId,omitempty" bson:"subscriptionId,omitempty"`
	PrivateIPs       []string  `json:"privateIps,omitempty" bson:"privateIps,omitempty"`
	PublicIPs        []string  `json:"publicIps,omitempty" bson:"publicIps,omitempty"`
	AttachedVmId     string    `json:"attachedVmId,omitempty" bson:"attachedVmId,omitempty"`
	AttachedVmName   string    `json:"attachedVmName,omitempty" bson:"attachedVmName,omitempty"`
	LastAzureSync    time.Time `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty"`
	LastDBSync       time.Time `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty"`
}

func GetAllIpAddrForAllConfiguredTenants added in v0.1.17

func GetAllIpAddrForAllConfiguredTenants(opts *lib.GetAllResourcesForAllConfiguredTenantsOptions, tokens lib.AllTenantTokens) (allResourceIPs []AzureResourceIPConfig)

func GetAllTenantIpAddresses added in v0.1.17

func GetAllTenantIpAddresses(outputFile string, token *lib.AzureMultiAuthToken) []AzureResourceIPConfig

type AzureTenantCostData

type AzureTenantCostData map[string]AzureCostDataMeter

type CombinedFlowLogs

type CombinedFlowLogs struct {
	NsgFlowLogs []NsgFlowLogRecord
	FileCount   int
}

func CombineLogFileRecords

func CombineLogFileRecords(dataPath string) CombinedFlowLogs

func (*CombinedFlowLogs) FilterIp

func (r *CombinedFlowLogs) FilterIp(filter string, filterDirection string)

type ContainerRegisryResponse

type ContainerRegisryResponse struct {
	Value []ContainerRegistry
}

type ContainerRegistriesPerSub

type ContainerRegistriesPerSub struct {
	SubscriptionName    string
	SubscriptionID      string
	TenantName          string
	TenantID            string
	NumACRs             int
	ContainerRegistries []ContainerRegistry
}

type ContainerRegistry

type ContainerRegistry struct {
	ID         string `json:"id"`
	Location   string `json:"location"`
	Name       string `json:"name"`
	Properties struct {
		AdminUserEnabled      bool      `json:"adminUserEnabled"`
		AnonymousPullEnabled  bool      `json:"anonymousPullEnabled"`
		CreationDate          time.Time `json:"creationDate"`
		DataEndpointEnabled   bool      `json:"dataEndpointEnabled"`
		DataEndpointHostNames []string  `json:"dataEndpointHostNames"`
		Encryption            struct {
			Status string `json:"status"`
		} `json:"encryption"`
		LoginServer              string `json:"loginServer"`
		NetworkRuleBypassOptions string `json:"networkRuleBypassOptions"`
		NetworkRuleSet           struct {
			DefaultAction string `json:"defaultAction"`
			IpRules       []any  `json:"ipRules"`
		} `json:"networkRuleSet"`
		Policies struct {
			AzureAdAuthenticationAsArmPolicy struct {
				Status string `json:"status"`
			} `json:"azureADAuthenticationAsArmPolicy"`
			ExportPolicy struct {
				Status string `json:"status"`
			} `json:"exportPolicy"`
			QuarantinePolicy struct {
				Status string `json:"status"`
			} `json:"quarantinePolicy"`
			RetentionPolicy struct {
				Days            int       `json:"days"`
				LastUpdatedTime time.Time `json:"lastUpdatedTime"`
				Status          string    `json:"status"`
			} `json:"retentionPolicy"`
			SoftDeletePolicy struct {
				LastUpdatedTime time.Time `json:"lastUpdatedTime"`
				RetentionDays   int       `json:"retentionDays"`
				Status          string    `json:"status"`
			} `json:"softDeletePolicy"`
			TrustPolicy struct {
				Status string `json:"status"`
				Type   string `json:"type"`
			} `json:"trustPolicy"`
		} `json:"policies"`
		PrivateEndpointConnections []struct {
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				PrivateEndpoint struct {
					ID string `json:"id"`
				} `json:"privateEndpoint"`
				PrivateLinkServiceConnectionState struct {
					Description string `json:"description"`
					Status      string `json:"status"`
				} `json:"privateLinkServiceConnectionState"`
				ProvisioningState string `json:"provisioningState"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"privateEndpointConnections"`
		ProvisioningState   string `json:"provisioningState"`
		PublicNetworkAccess string `json:"publicNetworkAccess"`
		ZoneRedundancy      string `json:"zoneRedundancy"`
	} `json:"properties"`
	Sku struct {
		Name string `json:"name"`
		Tier string `json:"tier"`
	} `json:"sku"`
	SystemData struct {
		CreatedAt          time.Time `json:"createdAt"`
		CreatedBy          string    `json:"createdBy"`
		CreatedByType      string    `json:"createdByType"`
		LastModifiedAt     time.Time `json:"lastModifiedAt"`
		LastModifiedBy     string    `json:"lastModifiedBy"`
		LastModifiedByType string    `json:"lastModifiedByType"`
	} `json:"systemData"`
	Tags struct{} `json:"tags"`
	Type string   `json:"type"`
}

type EntraApplication

type EntraApplication struct {
	AddIns *[]struct {
		ID         string `json:"id,omitempty" bson:"id,omitempty"`
		Properties []struct {
			Key   string `json:"key,omitempty" bson:"key,omitempty"`
			Value string `json:"value,omitempty" bson:"value,omitempty"`
		} `json:"properties,omitempty" bson:"properties,omitempty"`
		Type string `json:"type,omitempty" bson:"type,omitempty"`
	} `json:"addIns,omitempty" bson:"addIns,omitempty"`
	API *struct {
		AcceptMappedClaims      *bool     `json:"acceptMappedClaims,omitempty" bson:"acceptMappedClaims,omitempty"`
		KnownClientApplications *[]string `json:"knownClientApplications,omitempty" bson:"knownClientApplications,omitempty"`
		Oauth2PermissionScopes  *[]struct {
			AdminConsentDescription string `json:"adminConsentDescription,omitempty" bson:"adminConsentDescription,omitempty"`
			AdminConsentDisplayName string `json:"adminConsentDisplayName,omitempty" bson:"adminConsentDisplayName,omitempty"`
			ID                      string `json:"id,omitempty" bson:"id,omitempty"`
			IsEnabled               bool   `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
			IsPrivate               bool   `json:"isPrivate,omitempty" bson:"isPrivate,omitempty"`
			Type                    string `json:"type,omitempty" bson:"type,omitempty"`
			UserConsentDescription  string `json:"userConsentDescription,omitempty" bson:"userConsentDescription,omitempty"`
			UserConsentDisplayName  string `json:"userConsentDisplayName,omitempty" bson:"userConsentDisplayName,omitempty"`
			Value                   string `json:"value,omitempty" bson:"value,omitempty"`
		} `json:"oauth2PermissionScopes,omitempty" bson:"oauth2PermissionScopes,omitempty"`
		PreAuthorizedApplications *[]struct {
			AppID         string    `json:"appId,omitempty" bson:"appId,omitempty"`
			PermissionIds *[]string `json:"permissionIds,omitempty" bson:"permissionIds,omitempty"`
		} `json:"preAuthorizedApplications,omitempty" bson:"preAuthorizedApplications,omitempty"`
		RequestedAccessTokenVersion *float64 `json:"requestedAccessTokenVersion,omitempty" bson:"requestedAccessTokenVersion,omitempty"`
		TokenEncryptionSetting      *struct {
			Audience              any `json:"audience,omitempty" bson:"audience,omitempty"`
			AutomatedTokenVersion *struct {
				Available []any `json:"available,omitempty" bson:"available,omitempty"`
				Current   any   `json:"current,omitempty" bson:"current,omitempty"`
			} `json:"automatedTokenVersion,omitempty" bson:"automatedTokenVersion,omitempty"`
			Scheme any `json:"scheme,omitempty" bson:"scheme,omitempty"`
		} `json:"tokenEncryptionSetting,omitempty" bson:"tokenEncryptionSetting,omitempty"`
	} `json:"api,omitempty" bson:"api,omitempty"`
	AppCapabilities []any  `json:"appCapabilities,omitempty" bson:"appCapabilities,omitempty"`
	AppID           string `json:"appId,omitempty" bson:"appId,omitempty"`
	AppRoles        *[]struct {
		AllowedMemberTypes         []string `json:"allowedMemberTypes,omitempty" bson:"allowedMemberTypes,omitempty"`
		Description                string   `json:"description,omitempty" bson:"description,omitempty"`
		DisplayName                string   `json:"displayName,omitempty" bson:"displayName,omitempty"`
		ID                         string   `json:"id,omitempty" bson:"id,omitempty"`
		IsEnabled                  bool     `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
		IsPreAuthorizationRequired bool     `json:"isPreAuthorizationRequired,omitempty" bson:"isPreAuthorizationRequired,omitempty"`
		IsPrivate                  bool     `json:"isPrivate,omitempty" bson:"isPrivate,omitempty"`
		Origin                     string   `json:"origin,omitempty" bson:"origin,omitempty"`
		Value                      *string  `json:"value,omitempty" bson:"value,omitempty"`
	} `json:"appRoles,omitempty" bson:"appRoles,omitempty"`
	ApplicationTemplateID     *string   `json:"applicationTemplateId,omitempty" bson:"applicationTemplateId,omitempty"`
	BillingInformation        any       `json:"billingInformation,omitempty" bson:"billingInformation,omitempty"`
	Certification             any       `json:"certification,omitempty" bson:"certification,omitempty"`
	CreatedDateTime           time.Time `json:"createdDateTime,omitempty" bson:"createdDateTime,omitempty"`
	DefaultRedirectURI        *string   `json:"defaultRedirectUri,omitempty" bson:"defaultRedirectUri,omitempty"`
	DeletedDateTime           any       `json:"deletedDateTime,omitempty" bson:"deletedDateTime,omitempty"`
	Description               string    `json:"description,omitempty" bson:"description,omitempty"`
	DisabledByMicrosoftStatus any       `json:"disabledByMicrosoftStatus,omitempty" bson:"disabledByMicrosoftStatus,omitempty"`
	DisplayName               string    `json:"displayName,omitempty" bson:"displayName,omitempty"`
	GroupMembershipClaims     *string   `json:"groupMembershipClaims,omitempty" bson:"groupMembershipClaims,omitempty"`
	ID                        string    `json:"id,omitempty" bson:"objectId,omitempty"`
	IdentifierUris            []string  `json:"identifierUris,omitempty" bson:"identifierUris,omitempty"`
	Info                      *struct {
		LogoURL             any `json:"logoUrl,omitempty" bson:"logoUrl,omitempty"`
		MarketingURL        any `json:"marketingUrl,omitempty" bson:"marketingUrl,omitempty"`
		PrivacyStatementURL any `json:"privacyStatementUrl,omitempty" bson:"privacyStatementUrl,omitempty"`
		SupportURL          any `json:"supportUrl,omitempty" bson:"supportUrl,omitempty"`
		TermsOfServiceURL   any `json:"termsOfServiceUrl,omitempty" bson:"termsOfServiceUrl,omitempty"`
	} `json:"info,omitempty" bson:"info,omitempty"`
	IsAuthorizationServiceEnabled bool  `json:"isAuthorizationServiceEnabled,omitempty" bson:"isAuthorizationServiceEnabled,omitempty"`
	IsDeviceOnlyAuthSupported     *bool `json:"isDeviceOnlyAuthSupported,omitempty" bson:"isDeviceOnlyAuthSupported,omitempty"`
	IsDisabled                    any   `json:"isDisabled,omitempty" bson:"isDisabled,omitempty"`
	IsFallbackPublicClient        *bool `json:"isFallbackPublicClient,omitempty" bson:"isFallbackPublicClient,omitempty"`
	IsManagementRestricted        any   `json:"isManagementRestricted,omitempty" bson:"isManagementRestricted,omitempty"`
	KeyCredentials                *[]struct {
		CustomKeyIdentifier string    `json:"customKeyIdentifier,omitempty" bson:"customKeyIdentifier,omitempty"`
		DisplayName         string    `json:"displayName,omitempty" bson:"displayName,omitempty"`
		EndDateTime         time.Time `json:"endDateTime,omitempty" bson:"endDateTime,omitempty"`
		HasExtendedValue    any       `json:"hasExtendedValue,omitempty" bson:"hasExtendedValue,omitempty"`
		Key                 any       `json:"key,omitempty" bson:"key,omitempty"`
		KeyID               string    `json:"keyId,omitempty" bson:"keyId,omitempty"`
		StartDateTime       time.Time `json:"startDateTime,omitempty" bson:"startDateTime,omitempty"`
		Type                string    `json:"type,omitempty" bson:"type,omitempty"`
		Usage               string    `json:"usage,omitempty" bson:"usage,omitempty"`
	} `json:"keyCredentials,omitempty" bson:"keyCredentials,omitempty"`
	MigrationStatus                 any  `json:"migrationStatus,omitempty" bson:"migrationStatus,omitempty"`
	NativeAuthenticationApisEnabled any  `json:"nativeAuthenticationApisEnabled,omitempty" bson:"nativeAuthenticationApisEnabled,omitempty"`
	Notes                           any  `json:"notes,omitempty" bson:"notes,omitempty"`
	Oauth2RequirePostResponse       bool `json:"oauth2RequirePostResponse,omitempty" bson:"oauth2RequirePostResponse,omitempty"`
	OptionalClaims                  *struct {
		AccessToken []any `json:"accessToken,omitempty" bson:"accessToken,omitempty"`
		IDToken     []any `json:"idToken,omitempty" bson:"idToken,omitempty"`
		Saml2Token  []struct {
			AdditionalProperties []any  `json:"additionalProperties,omitempty" bson:"additionalProperties,omitempty"`
			Essential            bool   `json:"essential,omitempty" bson:"essential,omitempty"`
			Name                 string `json:"name,omitempty" bson:"name,omitempty"`
			Source               any    `json:"source,omitempty" bson:"source,omitempty"`
		} `json:"saml2Token,omitempty" bson:"saml2Token,omitempty"`
	} `json:"optionalClaims,omitempty" bson:"optionalClaims,omitempty"`
	OrgRestrictions         []any `json:"orgRestrictions,omitempty" bson:"orgRestrictions,omitempty"`
	ParentalControlSettings *struct {
		CountriesBlockedForMinors []any  `json:"countriesBlockedForMinors,omitempty" bson:"countriesBlockedForMinors,omitempty"`
		LegalAgeGroupRule         string `json:"legalAgeGroupRule,omitempty" bson:"legalAgeGroupRule,omitempty"`
	} `json:"parentalControlSettings,omitempty" bson:"parentalControlSettings,omitempty"`
	PasswordCredentials *[]struct {
		CustomKeyIdentifier string    `json:"customKeyIdentifier,omitempty" bson:"customKeyIdentifier,omitempty"`
		DisplayName         string    `json:"displayName,omitempty" bson:"displayName,omitempty"`
		EndDateTime         time.Time `json:"endDateTime,omitempty" bson:"endDateTime,omitempty"`
		Hint                string    `json:"hint,omitempty" bson:"hint,omitempty"`
		KeyID               string    `json:"keyId,omitempty" bson:"keyId,omitempty"`
		SecretText          any       `json:"secretText,omitempty" bson:"secretText,omitempty"`
		StartDateTime       time.Time `json:"startDateTime,omitempty" bson:"startDateTime,omitempty"`
	} `json:"passwordCredentials,omitempty" bson:"passwordCredentials,omitempty"`
	PublicClient *struct {
		RedirectUris []any `json:"redirectUris,omitempty" bson:"redirectUris,omitempty"`
	} `json:"publicClient,omitempty" bson:"publicClient,omitempty"`
	PublisherDomain              string `json:"publisherDomain,omitempty" bson:"publisherDomain,omitempty"`
	RequestSignatureVerification *struct {
		AllowedWeakAlgorithms   any  `json:"allowedWeakAlgorithms,omitempty" bson:"allowedWeakAlgorithms,omitempty"`
		IsSignedRequestRequired bool `json:"isSignedRequestRequired,omitempty" bson:"isSignedRequestRequired,omitempty"`
	} `json:"requestSignatureVerification,omitempty" bson:"requestSignatureVerification,omitempty"`
	RequiredResourceAccess *[]struct {
		ResourceAccess *[]struct {
			ID   string `json:"id,omitempty" bson:"id,omitempty"`
			Type string `json:"type,omitempty" bson:"type,omitempty"`
		} `json:"resourceAccess,omitempty" bson:"resourceAccess,omitempty"`
		ResourceAppID string `json:"resourceAppId,omitempty" bson:"resourceAppId,omitempty"`
	} `json:"requiredResourceAccess,omitempty" bson:"requiredResourceAccess,omitempty"`
	SamlMetadataURL                   any `json:"samlMetadataUrl,omitempty" bson:"samlMetadataUrl,omitempty"`
	ServiceManagementReference        any `json:"serviceManagementReference,omitempty" bson:"serviceManagementReference,omitempty"`
	ServicePrincipalLockConfiguration *struct {
		AllProperties              bool `json:"allProperties,omitempty" bson:"allProperties,omitempty"`
		CredentialsWithUsageSign   bool `json:"credentialsWithUsageSign,omitempty" bson:"credentialsWithUsageSign,omitempty"`
		CredentialsWithUsageVerify bool `json:"credentialsWithUsageVerify,omitempty" bson:"credentialsWithUsageVerify,omitempty"`
		IdentifierUris             bool `json:"identifierUris,omitempty" bson:"identifierUris,omitempty"`
		IsEnabled                  bool `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
		TokenEncryptionKeyID       bool `json:"tokenEncryptionKeyId,omitempty" bson:"tokenEncryptionKeyId,omitempty"`
	} `json:"servicePrincipalLockConfiguration,omitempty" bson:"servicePrincipalLockConfiguration,omitempty"`
	SignInAudience string `json:"signInAudience,omitempty" bson:"signInAudience,omitempty"`
	Spa            *struct {
		RedirectUris *[]string `json:"redirectUris,omitempty" bson:"redirectUris,omitempty"`
	} `json:"spa,omitempty" bson:"spa,omitempty"`
	Tags                 *[]string `json:"tags,omitempty" bson:"tags,omitempty"`
	TenantName           string    `json:"tenantName,omitempty" bson:"tenantName,omitempty"`
	TokenEncryptionKeyID *string   `json:"tokenEncryptionKeyId,omitempty" bson:"tokenEncryptionKeyId,omitempty"`
	UniqueName           any       `json:"uniqueName,omitempty" bson:"uniqueName,omitempty"`
	VerifiedPublisher    *struct {
		AddedDateTime       any `json:"addedDateTime,omitempty" bson:"addedDateTime,omitempty"`
		DisplayName         any `json:"displayName,omitempty" bson:"displayName,omitempty"`
		VerifiedPublisherID any `json:"verifiedPublisherId,omitempty" bson:"verifiedPublisherId,omitempty"`
	} `json:"verifiedPublisher,omitempty" bson:"verifiedPublisher,omitempty"`
	Web *struct {
		HomePageURL           *string `json:"homePageUrl,omitempty" bson:"homePageUrl,omitempty"`
		ImplicitGrantSettings struct {
			EnableAccessTokenIssuance bool `json:"enableAccessTokenIssuance,omitempty" bson:"enableAccessTokenIssuance,omitempty"`
			EnableIDTokenIssuance     bool `json:"enableIdTokenIssuance,omitempty" bson:"enableIdTokenIssuance,omitempty"`
		} `json:"implicitGrantSettings,omitempty" bson:"implicitGrantSettings,omitempty"`
		LogoutURL           any `json:"logoutUrl,omitempty" bson:"logoutUrl,omitempty"`
		RedirectURISettings *[]struct {
			Index any    `json:"index,omitempty" bson:"index,omitempty"`
			URI   string `json:"uri,omitempty" bson:"uri,omitempty"`
		} `json:"redirectUriSettings,omitempty" bson:"redirectUriSettings,omitempty"`
		RedirectUris []string `json:"redirectUris,omitempty" bson:"redirectUris,omitempty"`
	} `json:"web,omitempty" bson:"web,omitempty"`
	Windows       any       `json:"windows,omitempty" bson:"windows,omitempty"`
	MongoDbId     string    `json:"_id,omitempty" bson:"_id,omitempty"`
	LastAzureSync time.Time `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty" fake:"-"`
	LastDBSync    time.Time `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty" fake:"-"`
}

func ListEntraAppRegistrations

func ListEntraAppRegistrations(token *lib.AzureMultiAuthToken) []EntraApplication

type EntraExpiringCredential

type EntraExpiringCredential struct {
	AppRegAppID             string    `json:"appId,omitempty" bson:"appId,omitempty"`
	AppRegDescription       string    `json:"description,omitempty" bson:"description,omitempty"`
	AppRegDisplayName       string    `json:"appRegDisplayName,omitempty" bson:"appRegDisplayName,omitempty"`
	AppRegCreatedDateTime   time.Time `json:"appRegCreatedDateTime,omitempty" bson:"appRegCreatedDateTime,omitempty"`
	AppRegObjectID          string    `json:"appRegObjectId,omitempty" bson:"appRegObjectId,omitempty"`
	CredCustomKeyIdentifier string    `json:"credCustomKeyIdentifier,omitempty" bson:"credCustomKeyIdentifier,omitempty"`
	CredDisplayName         string    `json:"credDisplayName,omitempty" bson:"credDisplayName,omitempty"`
	CredEndDateTime         time.Time `json:"credEndDateTime,omitempty" bson:"credEndDateTime,omitempty"`
	CredID                  string    `json:"credId,omitempty" bson:"credId,omitempty"`
	CredKeyType             string    `json:"credKeyType,omitempty" bson:"credKeyType,omitempty"`
	CredKeyUsage            string    `json:"credKeyUsage,omitempty" bson:"credKeyUsage,omitempty"`
	CredStartDateTime       time.Time `json:"credStartDateTime,omitempty" bson:"credStartDateTime,omitempty"`
	CredType                string    `json:"credType,omitempty" bson:"credType,omitempty"`
	MongoDbId               string    `json:"_id,omitempty" bson:"_id,omitempty"`
	TenantName              string    `json:"tenantName,omitempty" bson:"tenantName,omitempty"`
	LastAzureSync           time.Time `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty" fake:"-"`
	LastDBSync              time.Time `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty" fake:"-"`
}

func GetAppRegExpiringCredData

func GetAppRegExpiringCredData(apps []EntraApplication, daysUntilExpired int) (expiringCredentials []EntraExpiringCredential)

type EntraListApplicationsResponse

type EntraListApplicationsResponse struct {
	OdataContext string             `json:"@odata.context,omitempty" bson:"@odata.context,omitempty"`
	NextLink     string             `json:"@odata.nextLink,omitempty" bson:"@odata.nextLink,omitempty"`
	Value        []EntraApplication `json:"value,omitempty" bson:"value,omitempty"`
}

type EntraRoleDefinition

type EntraRoleDefinition struct {
	Description     string `json:"description,omitempty" bson:"description,omitempty"`
	DisplayName     string `json:"displayName,omitempty" bson:"displayName,omitempty"`
	ID              string `json:"id,omitempty" bson:"id,omitempty"`
	IsBuiltIn       bool   `json:"isBuiltIn,omitempty" bson:"isBuiltIn,omitempty"`
	IsEnabled       bool   `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
	RolePermissions []struct {
		AllowedResourceActions []string `json:"allowedResourceActions,omitempty" bson:"allowedResourceActions,omitempty"`
		Condition              *string  `json:"condition,omitempty" bson:"condition,omitempty"`
	} `json:"rolePermissions,omitempty" bson:"rolePermissions,omitempty"`
}

func ListEntraRoleDefinitions

func ListEntraRoleDefinitions(mat lib.AzureMultiAuthToken) ([]EntraRoleDefinition, error)

type GetAllImageGalleriesForSubscriptionResponse

type GetAllImageGalleriesForSubscriptionResponse struct {
	Value []ImageGallery `json:"value"`
}

type GetAzureDevOpsPipelineTokensOptionsTenantConfig

type GetAzureDevOpsPipelineTokensOptionsTenantConfig struct {
	TenantName          string
	TenantID            string
	ClientID            string
	ServiceConnectionID string
}

type IPAddressItem

type IPAddressItem struct {
	ResourceName string `json:"name"`
	ResourceID   string `json:"id"`
	ResourceType string `json:"type"`
	IpAddress    string
	Vnet         string
	Subnet       string
	Tags         map[string]string
}

type IPAddressList

type IPAddressList struct {
	PrivateAddresses []IPAddressItem
	PublicAddresses  []IPAddressItem
}

func ListAllTenantIpAddresses

func ListAllTenantIpAddresses(token lib.AzureMultiAuthToken) IPAddressList

func ListAllVnetIPAddresses

func ListAllVnetIPAddresses(mat lib.AzureMultiAuthToken, vnet Vnet) IPAddressList

type ImageGallery

type ImageGallery struct {
	ID             string `json:"id"`
	Location       string `json:"location"`
	Name           string `json:"name"`
	SubscriptionId string `json:"subscriptionId"`
	ResourceGroup  string `json:"resourceGroup"`
	TenantName     string `json:"tenantName"`
	Properties     struct {
		Description string `json:"description,omitempty"`
		Identifier  struct {
			UniqueName string `json:"uniqueName"`
		} `json:"identifier"`
		ProvisioningState string `json:"provisioningState"`
		SoftDeletePolicy  *struct {
			IsSoftDeleteEnabled bool `json:"isSoftDeleteEnabled"`
		} `json:"softDeletePolicy,omitempty"`
	} `json:"properties"`
	Tags *struct {
		CitrixCustomerID           string `json:"CitrixCustomerId"`
		CitrixProvisioningSchemeID string `json:"CitrixProvisioningSchemeId"`
		CitrixResource             string `json:"CitrixResource"`
		CitrixVirtualSiteID        string `json:"CitrixVirtualSiteId"`
	} `json:"tags,omitempty"`
	Type string `json:"type"`
}

func GetAllImageGalleriesForAllConfiguredTenants

func GetAllImageGalleriesForAllConfiguredTenants(tokens lib.AllTenantTokens) (imageGalleries []ImageGallery)

func GetAllImageGalleriesForSubscription

func GetAllImageGalleriesForSubscription(subscriptionId string, mat *lib.AzureMultiAuthToken) (imageGalleries []ImageGallery)

func GetAllImageGalleriesForTenant

func GetAllImageGalleriesForTenant(mat *lib.AzureMultiAuthToken) (imageGalleries []ImageGallery)

type IpList

type IpList struct {
	SourceIps []string
	DestIps   []string
}

func GetUniqueIpAddresses

func GetUniqueIpAddresses(dataset []NsgFlowLogRecord) IpList

func (*IpList) FilterSourceIp

func (m *IpList) FilterSourceIp(filter string)

func (*IpList) PrintCount

func (m *IpList) PrintCount()

func (*IpList) PrintTable

func (m *IpList) PrintTable()

type ListAllResourceGroupsResponse

type ListAllResourceGroupsResponse struct {
	Count           float64         `json:"count"`
	Data            []ResourceGroup `json:"data"`
	Facets          []any           `json:"facets"`
	ResultTruncated string          `json:"resultTruncated"`
	TotalRecords    float64         `json:"totalRecords"`
	SkipToken       string          `json:"$skipToken"`
}

type ListAllResourcesResponse

type ListAllResourcesResponse struct {
	Value    []ListRspResource `json:"value"`
	NextLink string            `json:"nextLink"`
}

type ListEntraRoleDefinitionsResponse

type ListEntraRoleDefinitionsResponse struct {
	Odata_Context string                `json:"@odata.context,omitempty" bson:"@odata.context,omitempty"`
	Value         []EntraRoleDefinition `json:"value,omitempty" bson:"value,omitempty"`
}

type ListManagementGroupsResponse

type ListManagementGroupsResponse struct {
	Value []ManagementGroup `json:"value"`
}

type ListResourceRoleDefinitionsResponse

type ListResourceRoleDefinitionsResponse struct {
	Value []ResourceRoleDefinition `json:"value"`
}

type ListRoleAssignmentScheduleInstancesResponse

type ListRoleAssignmentScheduleInstancesResponse struct {
	Value []RoleAssignmentScheduleInstance `json:"value,omitempty" bson:"value,omitempty"`
}

type ListRoleAssignmentSchedulesResponse

type ListRoleAssignmentSchedulesResponse struct {
	Odata_Context  string                   `json:"@odata.context,omitempty" bson:"@odata.context,omitempty"`
	Odata_NextLink string                   `json:"@odata.nextLink,omitempty" bson:"@odata.nextLink,omitempty"`
	Value          []RoleAssignmentSchedule `json:"value,omitempty" bson:"value,omitempty"`
}

type ListRoleEligibilityScheduleInstancesResponse

type ListRoleEligibilityScheduleInstancesResponse struct {
	Value []RoleEligibilityScheduleInstance `json:"value,omitempty" bson:"value,omitempty"`
}

type ListRspResource

type ListRspResource struct {
	ID       string `json:"id"`
	Identity *struct {
		PrincipalID string `json:"principalId"`
		TenantID    string `json:"tenantId"`
		Type        string `json:"type"`
	} `json:"identity,omitempty"`
	Location  string `json:"location"`
	ManagedBy string `json:"managedBy,omitempty"`
	Name      string `json:"name"`
	Sku       *struct {
		Name string `json:"name"`
		Tier string `json:"tier"`
	} `json:"sku,omitempty"`
	Tags  map[string]string `json:"tags,omitempty"`
	Type  string            `json:"type"`
	Zones []string          `json:"zones,omitempty"`
}

type ListSubnetsResponse

type ListSubnetsResponse struct {
	Value []SubnetResponse `json:"value"`
}

type LogAnalyticsTables

type LogAnalyticsTables []struct {
	ID         string `json:"id"`
	Name       string `json:"name"`
	Properties struct {
		ArchiveRetentionInDays   int    `json:"archiveRetentionInDays"`
		Plan                     string `json:"plan"`
		ProvisioningState        string `json:"provisioningState"`
		RetentionInDays          int    `json:"retentionInDays"`
		RetentionInDaysAsDefault bool   `json:"retentionInDaysAsDefault"`
		Schema                   struct {
			Columns []struct {
				IsDefaultDisplay bool   `json:"isDefaultDisplay"`
				IsHidden         bool   `json:"isHidden"`
				Name             string `json:"name"`
				Type             string `json:"type"`
			} `json:"columns,omitempty"`
			IsTroubleshootingAllowed bool     `json:"isTroubleshootingAllowed"`
			Name                     string   `json:"name"`
			Solutions                []string `json:"solutions"`
			StandardColumns          []struct {
				Description      string `json:"description"`
				IsDefaultDisplay bool   `json:"isDefaultDisplay"`
				IsHidden         bool   `json:"isHidden"`
				Name             string `json:"name"`
				Type             string `json:"type"`
			} `json:"standardColumns"`
			TableSubType string `json:"tableSubType"`
			TableType    string `json:"tableType"`
		} `json:"schema"`
		TotalRetentionInDays          int  `json:"totalRetentionInDays"`
		TotalRetentionInDaysAsDefault bool `json:"totalRetentionInDaysAsDefault"`
	} `json:"properties"`
}

type ManagementGroup

type ManagementGroup struct {
	ID         string `json:"id"`
	Name       string `json:"name"`
	Properties struct {
		DisplayName string `json:"displayName"`
		TenantID    string `json:"tenantId"`
	} `json:"properties"`
	Type string `json:"type"`
}

func ListManagementGroups

func ListManagementGroups(token *lib.AzureMultiAuthToken) ([]ManagementGroup, error)

type NsgFlowLog

type NsgFlowLog struct {
	Records []NsgFlowLogRecord
}

func GetFlowLogData

func GetFlowLogData(path string) NsgFlowLog

type NsgFlowLogRecord

type NsgFlowLogRecord struct {
	Category      string `json:"category"`
	MacAddress    string `json:"macAddress"`
	OperationName string `json:"operationName"`
	Properties    struct {
		Version int `json:"Version"`
		Flows   []struct {
			Flows []struct {
				FlowTuples []string `json:"flowTuples"`
				Mac        string   `json:"mac"`
			} `json:"flows"`
			Rule string `json:"rule"`
		} `json:"flows"`
	} `json:"properties"`
	ResourceID string    `json:"resourceId"`
	SystemID   string    `json:"systemId"`
	Time       time.Time `json:"time"`
}

func (*NsgFlowLogRecord) PrintJSON

func (r *NsgFlowLogRecord) PrintJSON()

type ProcessedSubnet

type ProcessedSubnet struct {
	ID         string `json:"id"`
	Name       string `json:"name"`
	VnetName   string `json:"vnetName"`
	Properties struct {
		AddressPrefix string `json:"addressPrefix"`
		Delegations   []struct {
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				Actions           []string `json:"actions"`
				ProvisioningState string   `json:"provisioningState"`
				ServiceName       string   `json:"serviceName"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"delegations"`
		IpConfigurations []struct {
			ID string `json:"id"`
		} `json:"ipConfigurations"`
		NetworkSecurityGroup struct {
			ID string `json:"id"`
		} `json:"networkSecurityGroup"`
		PrivateEndpointNetworkPolicies    string `json:"privateEndpointNetworkPolicies"`
		PrivateLinkServiceNetworkPolicies string `json:"privateLinkServiceNetworkPolicies"`
		ProvisioningState                 string `json:"provisioningState"`
		Purpose                           string `json:"purpose"`
		ServiceEndpoints                  []any  `json:"serviceEndpoints"`
	} `json:"properties"`
	Type string `json:"type"`
}

type ProcessedVnetPeering

type ProcessedVnetPeering struct {
	Name                      string   `json:"name"`
	RemoteAddressSpace        []string `json:"remoteAddressSpace"`
	RemoteGateways            []string `json:"remoteGateways"`
	RemoteVirtualNetwork      string   `json:"remoteVirtualNetwork"`
	UseRemoteGateways         bool     `json:"useRemoteGateways"`
	AllowForwardedTraffic     bool     `json:"allowForwardedTraffic"`
	AllowGatewayTransit       bool     `json:"allowGatewayTransit"`
	AllowVirtualNetworkAccess bool     `json:"allowVirtualNetworkAccess"`
	PeeringState              string   `json:"peeringState"`
	ProvisioningState         string   `json:"provisioningState"`
	PeeringSyncLevel          string   `json:"peeringSyncLevel"`
}

type PublicIpAddress

type PublicIpAddress struct {
	Etag       string `json:"etag"`
	ID         string `json:"id"`
	Location   string `json:"location"`
	Name       string `json:"name"`
	Properties struct {
		DdosSettings struct {
			ProtectionMode string `json:"protectionMode"`
		} `json:"ddosSettings"`
		IdleTimeoutInMinutes int    `json:"idleTimeoutInMinutes"`
		IpAddress            string `json:"ipAddress"`
		IpConfiguration      struct {
			ID string `json:"id"`
		} `json:"ipConfiguration"`
		IpTags                   []any  `json:"ipTags"`
		ProvisioningState        string `json:"provisioningState"`
		PublicIpAddressVersion   string `json:"publicIPAddressVersion"`
		PublicIpAllocationMethod string `json:"publicIPAllocationMethod"`
		ResourceGuid             string `json:"resourceGuid"`
	} `json:"properties"`
	Sku struct {
		Name string `json:"name"`
		Tier string `json:"tier"`
	} `json:"sku"`
	Tags map[string]string `json:"tags"`
	Type string            `json:"type"`
}

type ResourceGraphGetIpsResponse added in v0.1.17

type ResourceGraphGetIpsResponse struct {
	Count           float64                 `json:"count"`
	Data            []AzureResourceIPConfig `json:"data"`
	Facets          []interface{}           `json:"facets"`
	ResultTruncated string                  `json:"resultTruncated"`
	SkipToken       string                  `json:"$skipToken"`
	TotalRecords    float64                 `json:"totalRecords"`
}

type ResourceGraphResponse

type ResourceGraphResponse struct {
	Count           float64                    `json:"count"`
	Data            []lib.AzureResourceDetails `json:"data"`
	Facets          []interface{}              `json:"facets"`
	ResultTruncated string                     `json:"resultTruncated"`
	SkipToken       string                     `json:"$skipToken"`
	TotalRecords    float64                    `json:"totalRecords"`
}

type ResourceGroup

type ResourceGroup struct {
	ExtendedLocation any    `json:"extendedLocation"`
	ID               string `json:"id"`
	Identity         any    `json:"identity"`
	Kind             string `json:"kind"`
	Location         string `json:"location"`
	ManagedBy        string `json:"managedBy"`
	Name             string `json:"name"`
	Plan             any    `json:"plan"`
	Properties       struct {
		ProvisioningState string `json:"provisioningState"`
	} `json:"properties"`
	ResourceGroup  string            `json:"resourceGroup"`
	Sku            any               `json:"sku"`
	SubscriptionID string            `json:"subscriptionId"`
	Tags           map[string]string `json:"tags"`
	TenantID       string            `json:"tenantId"`
	Type           string            `json:"type"`
	Zones          any               `json:"zones"`
	TenantName     string            `json:"tenantName"`
	LastAzureSync  time.Time         `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty"`
	LastDBSync     time.Time         `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty"`
}

func GetAllResGrpsForAllConfiguredTenants

func GetAllResGrpsForAllConfiguredTenants(opts *lib.GetAllResourcesForAllConfiguredTenantsOptions, tokens lib.AllTenantTokens) (allResGrps []ResourceGroup)

func GetAllTenantResourceGroups

func GetAllTenantResourceGroups(outputFile string, token *lib.AzureMultiAuthToken) (allResGrps []ResourceGroup)

type ResourceRoleDefinition

type ResourceRoleDefinition struct {
	ID         string `json:"id"`
	Name       string `json:"name"`
	Properties struct {
		AssignableScopes []string  `json:"assignableScopes"`
		CreatedBy        any       `json:"createdBy"`
		CreatedOn        time.Time `json:"createdOn"`
		Description      string    `json:"description"`
		Permissions      []struct {
			Actions        []string `json:"actions"`
			DataActions    []any    `json:"dataActions"`
			NotActions     []any    `json:"notActions"`
			NotDataActions []any    `json:"notDataActions"`
		} `json:"permissions"`
		RoleName  string    `json:"roleName"`
		Type      string    `json:"type"`
		UpdatedBy any       `json:"updatedBy"`
		UpdatedOn time.Time `json:"updatedOn"`
	} `json:"properties"`
	Type string `json:"type"`
}

type ResponseBody

type ResponseBody struct {
	Value LogAnalyticsTables `json:"value"`
}

type RoleAssignmentSchedule

type RoleAssignmentSchedule struct {
	ActivatedUsing   any           `json:"activatedUsing,omitempty" bson:"activatedUsing,omitempty"`
	AppScopeID       any           `json:"appScopeId,omitempty" bson:"appScopeId,omitempty"`
	AssignmentType   string        `json:"assignmentType,omitempty" bson:"assignmentType,omitempty"`
	CreatedDateTime  *time.Time    `json:"createdDateTime,omitempty" bson:"createdDateTime,omitempty"`
	CreatedUsing     *string       `json:"createdUsing,omitempty" bson:"createdUsing,omitempty"`
	DirectoryScopeID string        `json:"directoryScopeId,omitempty" bson:"directoryScopeId,omitempty"`
	ID               string        `json:"id,omitempty" bson:"id,omitempty"`
	MemberType       string        `json:"memberType,omitempty" bson:"memberType,omitempty"`
	ModifiedDateTime any           `json:"modifiedDateTime,omitempty" bson:"modifiedDateTime,omitempty"`
	Principal        RolePrinciple `json:"principal,omitempty" bson:"principal,omitempty"`
	PrincipalID      string        `json:"principalId,omitempty" bson:"principalId,omitempty"`
	RoleDefinition   struct {
		Description     string `json:"description,omitempty" bson:"description,omitempty"`
		DisplayName     string `json:"displayName,omitempty" bson:"displayName,omitempty"`
		ID              string `json:"id,omitempty" bson:"id,omitempty"`
		IsBuiltIn       bool   `json:"isBuiltIn,omitempty" bson:"isBuiltIn,omitempty"`
		IsEnabled       bool   `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
		ResourceScopes  []any  `json:"resourceScopes,omitempty" bson:"resourceScopes,omitempty"`
		RolePermissions []any  `json:"rolePermissions,omitempty" bson:"rolePermissions,omitempty"`
		TemplateID      string `json:"templateId,omitempty" bson:"templateId,omitempty"`
		Version         any    `json:"version,omitempty" bson:"version,omitempty"`
	} `json:"roleDefinition,omitempty" bson:"roleDefinition,omitempty"`
	RoleDefinitionID string `json:"roleDefinitionId,omitempty" bson:"roleDefinitionId,omitempty"`
	ScheduleInfo     struct {
		Expiration struct {
			Duration    any        `json:"duration,omitempty" bson:"duration,omitempty"`
			EndDateTime *time.Time `json:"endDateTime,omitempty" bson:"endDateTime,omitempty"`
			Type        string     `json:"type,omitempty" bson:"type,omitempty"`
		} `json:"expiration,omitempty" bson:"expiration,omitempty"`
		Recurrence    any       `json:"recurrence,omitempty" bson:"recurrence,omitempty"`
		StartDateTime time.Time `json:"startDateTime,omitempty" bson:"startDateTime,omitempty"`
	} `json:"scheduleInfo,omitempty" bson:"scheduleInfo,omitempty"`
	Status string `json:"status,omitempty" bson:"status,omitempty"`
}

type RoleAssignmentScheduleInstance

type RoleAssignmentScheduleInstance struct {
	ID         string `json:"id,omitempty" bson:"_id,omitempty"`
	Name       string `json:"name,omitempty" bson:"name,omitempty"`
	Properties struct {
		AssignmentType     string    `json:"assignmentType,omitempty" bson:"assignmentType,omitempty"`
		CreatedOn          time.Time `json:"createdOn,omitempty" bson:"createdOn,omitempty"`
		EndDateTime        time.Time `json:"endDateTime,omitempty" bson:"endDateTime,omitempty"`
		ExpandedProperties struct {
			Principal struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"principal,omitempty" bson:"principal,omitempty"`
			RoleDefinition struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"roleDefinition,omitempty" bson:"roleDefinition,omitempty"`
			Scope struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"scope,omitempty" bson:"scope,omitempty"`
		} `json:"expandedProperties,omitempty" bson:"expandedProperties,omitempty"`
		LinkedRoleEligibilityScheduleID         string    `json:"linkedRoleEligibilityScheduleId,omitempty" bson:"linkedRoleEligibilityScheduleId,omitempty"`
		LinkedRoleEligibilityScheduleInstanceID string    `json:"linkedRoleEligibilityScheduleInstanceId,omitempty" bson:"linkedRoleEligibilityScheduleInstanceId,omitempty"`
		MemberType                              string    `json:"memberType,omitempty" bson:"memberType,omitempty"`
		OriginRoleAssignmentID                  string    `json:"originRoleAssignmentId,omitempty" bson:"originRoleAssignmentId,omitempty"`
		PrincipalID                             string    `json:"principalId,omitempty" bson:"principalId,omitempty"`
		PrincipalType                           string    `json:"principalType,omitempty" bson:"principalType,omitempty"`
		RoleAssignmentScheduleID                string    `json:"roleAssignmentScheduleId,omitempty" bson:"roleAssignmentScheduleId,omitempty"`
		RoleDefinitionID                        string    `json:"roleDefinitionId,omitempty" bson:"roleDefinitionId,omitempty"`
		Scope                                   string    `json:"scope,omitempty" bson:"scope,omitempty"`
		StartDateTime                           time.Time `json:"startDateTime,omitempty" bson:"startDateTime,omitempty"`
		Status                                  string    `json:"status,omitempty" bson:"status,omitempty"`
	} `json:"properties,omitempty" bson:"properties,omitempty"`
	Type          string    `json:"type,omitempty" bson:"type,omitempty"`
	ScopeType     string    `json:"scopeType,omitempty" bson:"scopeType,omitempty"`
	LastAzureSync time.Time `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty" fake:"-"`
	LastDBSync    time.Time `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty" fake:"-"`
	TenantName    string    `json:"tenantName,omitempty" bson:"tenantName,omitempty" fake:"-"`
}

func ListRoleAssignmentScheduleInstances

func ListRoleAssignmentScheduleInstances(scope string, token *lib.AzureMultiAuthToken) ([]RoleAssignmentScheduleInstance, error)

type RoleAssignmentScheduleProcessed

type RoleAssignmentScheduleProcessed struct {
	ActivatedUsing any `json:"activatedUsing,omitempty" bson:"activatedUsing,omitempty"`
	Principal      struct {
		Odata_Type                string   `json:"@odata.type,omitempty" bson:"@odata.type,omitempty"`
		AccountEnabled            bool     `json:"accountEnabled,omitempty" bson:"accountEnabled,omitempty"`
		AppDescription            any      `json:"appDescription,omitempty" bson:"appDescription,omitempty"`
		AppDisplayName            string   `json:"appDisplayName,omitempty" bson:"appDisplayName,omitempty"`
		AppID                     string   `json:"appId,omitempty" bson:"appId,omitempty"`
		Description               *string  `json:"description,omitempty" bson:"description,omitempty"`
		DisplayName               string   `json:"displayName,omitempty" bson:"displayName,omitempty"`
		ID                        string   `json:"id,omitempty" bson:"id,omitempty"`
		ManagedIdentityResourceID any      `json:"managedIdentityResourceId,omitempty" bson:"managedIdentityResourceId,omitempty"`
		ServicePrincipalNames     []string `json:"servicePrincipalNames,omitempty" bson:"servicePrincipalNames,omitempty"`
		ServicePrincipalType      string   `json:"servicePrincipalType,omitempty" bson:"servicePrincipalType,omitempty"`
		Tags                      []string `json:"tags,omitempty" bson:"tags,omitempty"`
		UserPrincipalName         string   `json:"userPrincipalName,omitempty" bson:"userPrincipalName,omitempty"`
		UserType                  string   `json:"userType,omitempty" bson:"userType,omitempty"`
	} `json:"principal,omitempty" bson:"principal,omitempty"`
	PrincipalID    string `json:"principalId,omitempty" bson:"principalId,omitempty"`
	RoleDefinition struct {
		Description     string `json:"description,omitempty" bson:"description,omitempty"`
		DisplayName     string `json:"displayName,omitempty" bson:"displayName,omitempty"`
		ID              string `json:"id,omitempty" bson:"id,omitempty"`
		IsBuiltIn       bool   `json:"isBuiltIn,omitempty" bson:"isBuiltIn,omitempty"`
		IsEnabled       bool   `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
		ResourceScopes  []any  `json:"resourceScopes,omitempty" bson:"resourceScopes,omitempty"`
		RolePermissions []any  `json:"rolePermissions,omitempty" bson:"rolePermissions,omitempty"`
	} `json:"roleDefinition,omitempty" bson:"roleDefinition,omitempty"`
	RoleDefinitionID string `json:"roleDefinitionId,omitempty" bson:"roleDefinitionId,omitempty"`
}

type RoleEligibilityScheduleInstance

type RoleEligibilityScheduleInstance struct {
	ID         string `json:"id,omitempty" bson:"id,omitempty"`
	Name       string `json:"name,omitempty" bson:"name,omitempty"`
	Properties struct {
		CreatedOn          time.Time `json:"createdOn,omitempty" bson:"createdOn,omitempty"`
		EndDateTime        time.Time `json:"endDateTime,omitempty" bson:"endDateTime,omitempty"`
		ExpandedProperties struct {
			Principal struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"principal,omitempty" bson:"principal,omitempty"`
			RoleDefinition struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"roleDefinition,omitempty" bson:"roleDefinition,omitempty"`
			Scope struct {
				DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
				ID          string `json:"id,omitempty" bson:"id,omitempty"`
				Type        string `json:"type,omitempty" bson:"type,omitempty"`
			} `json:"scope,omitempty" bson:"scope,omitempty"`
		} `json:"expandedProperties,omitempty" bson:"expandedProperties,omitempty"`
		MemberType                string    `json:"memberType,omitempty" bson:"memberType,omitempty"`
		PrincipalID               string    `json:"principalId,omitempty" bson:"principalId,omitempty"`
		PrincipalType             string    `json:"principalType,omitempty" bson:"principalType,omitempty"`
		RoleDefinitionID          string    `json:"roleDefinitionId,omitempty" bson:"roleDefinitionId,omitempty"`
		RoleEligibilityScheduleID string    `json:"roleEligibilityScheduleId,omitempty" bson:"roleEligibilityScheduleId,omitempty"`
		Scope                     string    `json:"scope,omitempty" bson:"scope,omitempty"`
		StartDateTime             time.Time `json:"startDateTime,omitempty" bson:"startDateTime,omitempty"`
		Status                    string    `json:"status,omitempty" bson:"status,omitempty"`
	} `json:"properties,omitempty" bson:"properties,omitempty"`
	Type          string    `json:"type,omitempty" bson:"type,omitempty"`
	ScopeType     string    `json:"scopeType,omitempty" bson:"scopeType,omitempty"`
	LastAzureSync time.Time `json:"lastAzureSync,omitempty" bson:"lastAzureSync,omitempty" fake:"-"`
	LastDBSync    time.Time `json:"lastDatabaseSync,omitempty" bson:"lastDatabaseSync,omitempty" fake:"-"`
	TenantName    string    `json:"tenantName,omitempty" bson:"tenantName,omitempty" fake:"-"`
}

func ListRoleEligibilityScheduleInstances

func ListRoleEligibilityScheduleInstances(scope string, token *lib.AzureMultiAuthToken) ([]RoleEligibilityScheduleInstance, error)

type RolePrinciple

type RolePrinciple struct {
	Odata_Type     string `json:"@odata.type,omitempty" bson:"@odata.type,omitempty"`
	AccountEnabled bool   `json:"accountEnabled,omitempty" bson:"accountEnabled,omitempty"`
	// AddIns                 []any  `json:"addIns,omitempty" bson:"addIns,omitempty"`
	// AgeGroup               any    `json:"ageGroup,omitempty" bson:"ageGroup,omitempty"`
	// AlternativeNames       []any  `json:"alternativeNames,omitempty" bson:"alternativeNames,omitempty"`
	// AlternativeSecurityIds []any  `json:"alternativeSecurityIds,omitempty" bson:"alternativeSecurityIds,omitempty"`
	// API                    *struct {
	// 	ResourceSpecificApplicationPermissions []any `json:"resourceSpecificApplicationPermissions,omitempty" bson:"resourceSpecificApplicationPermissions,omitempty"`
	// } `json:"api,omitempty" bson:"api,omitempty"`
	// AppData                   any    `json:"appData,omitempty" bson:"appData,omitempty"`
	AppDescription any    `json:"appDescription,omitempty" bson:"appDescription,omitempty"`
	AppDisplayName string `json:"appDisplayName,omitempty" bson:"appDisplayName,omitempty"`
	AppID          string `json:"appId,omitempty" bson:"appId,omitempty"`
	// AppMetadata               any    `json:"appMetadata,omitempty" bson:"appMetadata,omitempty"`
	// AppOwnerOrganizationID    string `json:"appOwnerOrganizationId,omitempty" bson:"appOwnerOrganizationId,omitempty"`
	// AppRoleAssignmentRequired bool   `json:"appRoleAssignmentRequired,omitempty" bson:"appRoleAssignmentRequired,omitempty"`
	// AppRoles                  []any  `json:"appRoles,omitempty" bson:"appRoles,omitempty"`
	// ApplicationTemplateID     any    `json:"applicationTemplateId,omitempty" bson:"applicationTemplateId,omitempty"`
	// AssignedLicenses          []struct {
	// 	DisabledPlans []string `json:"disabledPlans,omitempty" bson:"disabledPlans,omitempty"`
	// 	SkuID         string   `json:"skuId,omitempty" bson:"skuId,omitempty"`
	// } `json:"assignedLicenses,omitempty" bson:"assignedLicenses,omitempty"`
	// AssignedPlans []struct {
	// 	AssignedDateTime time.Time `json:"assignedDateTime,omitempty" bson:"assignedDateTime,omitempty"`
	// 	CapabilityStatus string    `json:"capabilityStatus,omitempty" bson:"capabilityStatus,omitempty"`
	// 	Service          string    `json:"service,omitempty" bson:"service,omitempty"`
	// 	ServicePlanID    string    `json:"servicePlanId,omitempty" bson:"servicePlanId,omitempty"`
	// } `json:"assignedPlans,omitempty" bson:"assignedPlans,omitempty"`
	// AuthorizationInfo *struct {
	// 	CertificateUserIds []any `json:"certificateUserIds,omitempty" bson:"certificateUserIds,omitempty"`
	// } `json:"authorizationInfo,omitempty" bson:"authorizationInfo,omitempty"`
	// BusinessPhones                 []any `json:"businessPhones,omitempty" bson:"businessPhones,omitempty"`
	// Certification                  any   `json:"certification,omitempty" bson:"certification,omitempty"`
	// City                           any   `json:"city,omitempty" bson:"city,omitempty"`
	// Classification                 any   `json:"classification,omitempty" bson:"classification,omitempty"`
	// CloudRealtimeCommunicationInfo *struct {
	// 	CloudMsRtcOwnerUrn          any      `json:"cloudMSRtcOwnerUrn,omitempty" bson:"cloudMSRtcOwnerUrn,omitempty"`
	// 	CloudMsRtcPolicyAssignments []string `json:"cloudMSRtcPolicyAssignments,omitempty" bson:"cloudMSRtcPolicyAssignments,omitempty"`
	// 	CloudMsRtcPool              *string  `json:"cloudMSRtcPool,omitempty" bson:"cloudMSRtcPool,omitempty"`
	// 	CloudMsRtcServiceAttributes *struct {
	// 		ApplicationOption   any     `json:"applicationOption,omitempty" bson:"applicationOption,omitempty"`
	// 		DeploymentLocator   string  `json:"deploymentLocator,omitempty" bson:"deploymentLocator,omitempty"`
	// 		HideFromAddressList any     `json:"hideFromAddressList,omitempty" bson:"hideFromAddressList,omitempty"`
	// 		OptionFlag          float64 `json:"optionFlag,omitempty" bson:"optionFlag,omitempty"`
	// 	} `json:"cloudMSRtcServiceAttributes,omitempty" bson:"cloudMSRtcServiceAttributes,omitempty"`
	// 	CloudSipLine         any     `json:"cloudSipLine,omitempty" bson:"cloudSipLine,omitempty"`
	// 	CloudSipProxyAddress *string `json:"cloudSipProxyAddress,omitempty" bson:"cloudSipProxyAddress,omitempty"`
	// 	IsSipEnabled         *bool   `json:"isSipEnabled,omitempty" bson:"isSipEnabled,omitempty"`
	// } `json:"cloudRealtimeCommunicationInfo,omitempty" bson:"cloudRealtimeCommunicationInfo,omitempty"`
	// CompanyName               any       `json:"companyName,omitempty" bson:"companyName,omitempty"`
	// ConsentProvidedForMinor   any       `json:"consentProvidedForMinor,omitempty" bson:"consentProvidedForMinor,omitempty"`
	// Country                   any       `json:"country,omitempty" bson:"country,omitempty"`
	// CreatedByAppID            string    `json:"createdByAppId,omitempty" bson:"createdByAppId,omitempty"`
	// CreatedDateTime           time.Time `json:"createdDateTime,omitempty" bson:"createdDateTime,omitempty"`
	// CreationType              any       `json:"creationType,omitempty" bson:"creationType,omitempty"`
	// DeletedDateTime           any       `json:"deletedDateTime,omitempty" bson:"deletedDateTime,omitempty"`
	// Department                *string   `json:"department,omitempty" bson:"department,omitempty"`
	Description *string `json:"description,omitempty" bson:"description,omitempty"`
	// DeviceKeys                []any     `json:"deviceKeys,omitempty" bson:"deviceKeys,omitempty"`
	// DeviceManagementAppType   any       `json:"deviceManagementAppType,omitempty" bson:"deviceManagementAppType,omitempty"`
	// DisabledByMicrosoftStatus any       `json:"disabledByMicrosoftStatus,omitempty" bson:"disabledByMicrosoftStatus,omitempty"`
	DisplayName string `json:"displayName,omitempty" bson:"displayName,omitempty"`
	// EmployeeHireDate          any       `json:"employeeHireDate,omitempty" bson:"employeeHireDate,omitempty"`
	// EmployeeID                any       `json:"employeeId,omitempty" bson:"employeeId,omitempty"`
	// EmployeeLeaveDateTime     any       `json:"employeeLeaveDateTime,omitempty" bson:"employeeLeaveDateTime,omitempty"`
	// EmployeeOrgData           any       `json:"employeeOrgData,omitempty" bson:"employeeOrgData,omitempty"`
	// EmployeeType              any       `json:"employeeType,omitempty" bson:"employeeType,omitempty"`
	// ErrorURL                  any       `json:"errorUrl,omitempty" bson:"errorUrl,omitempty"`
	// ExpirationDateTime        any       `json:"expirationDateTime,omitempty" bson:"expirationDateTime,omitempty"`
	// ExternalUserConvertedOn   any       `json:"externalUserConvertedOn,omitempty" bson:"externalUserConvertedOn,omitempty"`
	// ExternalUserInformation   *struct {
	// 	AcceptedAsMail   any       `json:"acceptedAsMail,omitempty" bson:"acceptedAsMail,omitempty"`
	// 	AcceptedDateTime any       `json:"acceptedDateTime,omitempty" bson:"acceptedDateTime,omitempty"`
	// 	InviteReplyUrls  []any     `json:"inviteReplyUrls,omitempty" bson:"inviteReplyUrls,omitempty"`
	// 	InviteResources  []any     `json:"inviteResources,omitempty" bson:"inviteResources,omitempty"`
	// 	InvitedAsMail    any       `json:"invitedAsMail,omitempty" bson:"invitedAsMail,omitempty"`
	// 	InvitedDateTime  time.Time `json:"invitedDateTime,omitempty" bson:"invitedDateTime,omitempty"`
	// 	SignInNames      []string  `json:"signInNames,omitempty" bson:"signInNames,omitempty"`
	// } `json:"externalUserInformation,omitempty" bson:"externalUserInformation,omitempty"`
	// ExternalUserState               any     `json:"externalUserState,omitempty" bson:"externalUserState,omitempty"`
	// ExternalUserStateChangeDateTime any     `json:"externalUserStateChangeDateTime,omitempty" bson:"externalUserStateChangeDateTime,omitempty"`
	// FaxNumber                       any     `json:"faxNumber,omitempty" bson:"faxNumber,omitempty"`
	// GivenName                       *string `json:"givenName,omitempty" bson:"givenName,omitempty"`
	// GroupTypes                      []any   `json:"groupTypes,omitempty" bson:"groupTypes,omitempty"`
	// Homepage                        *string `json:"homepage,omitempty" bson:"homepage,omitempty"`
	ID string `json:"id,omitempty" bson:"id,omitempty"`
	// Identities                      []struct {
	// 	Issuer           string `json:"issuer,omitempty" bson:"issuer,omitempty"`
	// 	IssuerAssignedID string `json:"issuerAssignedId,omitempty" bson:"issuerAssignedId,omitempty"`
	// 	SignInType       string `json:"signInType,omitempty" bson:"signInType,omitempty"`
	// } `json:"identities,omitempty" bson:"identities,omitempty"`
	// ImAddresses []string `json:"imAddresses,omitempty" bson:"imAddresses,omitempty"`
	// Info        *struct {
	// 	LogoURL             any `json:"logoUrl,omitempty" bson:"logoUrl,omitempty"`
	// 	MarketingURL        any `json:"marketingUrl,omitempty" bson:"marketingUrl,omitempty"`
	// 	PrivacyStatementURL any `json:"privacyStatementUrl,omitempty" bson:"privacyStatementUrl,omitempty"`
	// 	SupportURL          any `json:"supportUrl,omitempty" bson:"supportUrl,omitempty"`
	// 	TermsOfServiceURL   any `json:"termsOfServiceUrl,omitempty" bson:"termsOfServiceUrl,omitempty"`
	// } `json:"info,omitempty" bson:"info,omitempty"`
	// InfoCatalogs                  []any   `json:"infoCatalogs,omitempty" bson:"infoCatalogs,omitempty"`
	// IsAssignableToRole            bool    `json:"isAssignableToRole,omitempty" bson:"isAssignableToRole,omitempty"`
	// IsAuthorizationServiceEnabled bool    `json:"isAuthorizationServiceEnabled,omitempty" bson:"isAuthorizationServiceEnabled,omitempty"`
	// IsLicenseReconciliationNeeded bool    `json:"isLicenseReconciliationNeeded,omitempty" bson:"isLicenseReconciliationNeeded,omitempty"`
	// IsManagementRestricted        any     `json:"isManagementRestricted,omitempty" bson:"isManagementRestricted,omitempty"`
	IsResourceAccount any `json:"isResourceAccount,omitempty" bson:"isResourceAccount,omitempty"`
	// JobTitle                      any     `json:"jobTitle,omitempty" bson:"jobTitle,omitempty"`
	// KeyCredentials                []any   `json:"keyCredentials,omitempty" bson:"keyCredentials,omitempty"`
	// LegalAgeGroupClassification   any     `json:"legalAgeGroupClassification,omitempty" bson:"legalAgeGroupClassification,omitempty"`
	// LoginURL                      any     `json:"loginUrl,omitempty" bson:"loginUrl,omitempty"`
	// LogoutURL                     any     `json:"logoutUrl,omitempty" bson:"logoutUrl,omitempty"`
	// Mail                          *string `json:"mail,omitempty" bson:"mail,omitempty"`
	// MailEnabled                   bool    `json:"mailEnabled,omitempty" bson:"mailEnabled,omitempty"`
	// MailNickname                  string  `json:"mailNickname,omitempty" bson:"mailNickname,omitempty"`
	ManagedIdentityResourceID any `json:"managedIdentityResourceId,omitempty" bson:"managedIdentityResourceId,omitempty"`
	// MembershipRule                any     `json:"membershipRule,omitempty" bson:"membershipRule,omitempty"`
	// MembershipRuleProcessingState any     `json:"membershipRuleProcessingState,omitempty" bson:"membershipRuleProcessingState,omitempty"`
	// MicrosoftPolicyGroup          any     `json:"microsoftPolicyGroup,omitempty" bson:"microsoftPolicyGroup,omitempty"`
	// MobilePhone                   any     `json:"mobilePhone,omitempty" bson:"mobilePhone,omitempty"`
	// NetID                         string  `json:"netId,omitempty" bson:"netId,omitempty"`
	// Notes                         any     `json:"notes,omitempty" bson:"notes,omitempty"`
	// NotificationEmailAddresses    []any   `json:"notificationEmailAddresses,omitempty" bson:"notificationEmailAddresses,omitempty"`
	// OfficeLocation                any     `json:"officeLocation,omitempty" bson:"officeLocation,omitempty"`
	// OnPremisesDistinguishedName   *string `json:"onPremisesDistinguishedName,omitempty" bson:"onPremisesDistinguishedName,omitempty"`
	// OnPremisesDomainName          *string `json:"onPremisesDomainName,omitempty" bson:"onPremisesDomainName,omitempty"`
	// OnPremisesExtensionAttributes *struct {
	// 	ExtensionAttribute1  any `json:"extensionAttribute1,omitempty" bson:"extensionAttribute1,omitempty"`
	// 	ExtensionAttribute10 any `json:"extensionAttribute10,omitempty" bson:"extensionAttribute10,omitempty"`
	// 	ExtensionAttribute11 any `json:"extensionAttribute11,omitempty" bson:"extensionAttribute11,omitempty"`
	// 	ExtensionAttribute12 any `json:"extensionAttribute12,omitempty" bson:"extensionAttribute12,omitempty"`
	// 	ExtensionAttribute13 any `json:"extensionAttribute13,omitempty" bson:"extensionAttribute13,omitempty"`
	// 	ExtensionAttribute14 any `json:"extensionAttribute14,omitempty" bson:"extensionAttribute14,omitempty"`
	// 	ExtensionAttribute15 any `json:"extensionAttribute15,omitempty" bson:"extensionAttribute15,omitempty"`
	// 	ExtensionAttribute2  any `json:"extensionAttribute2,omitempty" bson:"extensionAttribute2,omitempty"`
	// 	ExtensionAttribute3  any `json:"extensionAttribute3,omitempty" bson:"extensionAttribute3,omitempty"`
	// 	ExtensionAttribute4  any `json:"extensionAttribute4,omitempty" bson:"extensionAttribute4,omitempty"`
	// 	ExtensionAttribute5  any `json:"extensionAttribute5,omitempty" bson:"extensionAttribute5,omitempty"`
	// 	ExtensionAttribute6  any `json:"extensionAttribute6,omitempty" bson:"extensionAttribute6,omitempty"`
	// 	ExtensionAttribute7  any `json:"extensionAttribute7,omitempty" bson:"extensionAttribute7,omitempty"`
	// 	ExtensionAttribute8  any `json:"extensionAttribute8,omitempty" bson:"extensionAttribute8,omitempty"`
	// 	ExtensionAttribute9  any `json:"extensionAttribute9,omitempty" bson:"extensionAttribute9,omitempty"`
	// } `json:"onPremisesExtensionAttributes,omitempty" bson:"onPremisesExtensionAttributes,omitempty"`
	// OnPremisesImmutableID        *string    `json:"onPremisesImmutableId,omitempty" bson:"onPremisesImmutableId,omitempty"`
	// OnPremisesLastSyncDateTime   *time.Time `json:"onPremisesLastSyncDateTime,omitempty" bson:"onPremisesLastSyncDateTime,omitempty"`
	// OnPremisesNetBiosName        any        `json:"onPremisesNetBiosName,omitempty" bson:"onPremisesNetBiosName,omitempty"`
	// OnPremisesObjectIdentifier   *string    `json:"onPremisesObjectIdentifier,omitempty" bson:"onPremisesObjectIdentifier,omitempty"`
	// OnPremisesProvisioningErrors []any      `json:"onPremisesProvisioningErrors,omitempty" bson:"onPremisesProvisioningErrors,omitempty"`
	// OnPremisesSamAccountName     *string    `json:"onPremisesSamAccountName,omitempty" bson:"onPremisesSamAccountName,omitempty"`
	// OnPremisesSecurityIdentifier *string    `json:"onPremisesSecurityIdentifier,omitempty" bson:"onPremisesSecurityIdentifier,omitempty"`
	// OnPremisesSipInfo            *struct {
	// 	IsSipEnabled          bool `json:"isSipEnabled,omitempty" bson:"isSipEnabled,omitempty"`
	// 	SipDeploymentLocation any  `json:"sipDeploymentLocation,omitempty" bson:"sipDeploymentLocation,omitempty"`
	// 	SipPrimaryAddress     any  `json:"sipPrimaryAddress,omitempty" bson:"sipPrimaryAddress,omitempty"`
	// } `json:"onPremisesSipInfo,omitempty" bson:"onPremisesSipInfo,omitempty"`
	// OnPremisesSyncEnabled       *bool   `json:"onPremisesSyncEnabled,omitempty" bson:"onPremisesSyncEnabled,omitempty"`
	// OnPremisesUserPrincipalName *string `json:"onPremisesUserPrincipalName,omitempty" bson:"onPremisesUserPrincipalName,omitempty"`
	// OrganizationID              string  `json:"organizationId,omitempty" bson:"organizationId,omitempty"`
	// OtherMails                  []any   `json:"otherMails,omitempty" bson:"otherMails,omitempty"`
	// PasswordCredentials         []any   `json:"passwordCredentials,omitempty" bson:"passwordCredentials,omitempty"`
	// PasswordPolicies            *string `json:"passwordPolicies,omitempty" bson:"passwordPolicies,omitempty"`
	// PasswordProfile             *struct {
	// 	ForceChangePasswordNextSignIn        bool `json:"forceChangePasswordNextSignIn,omitempty" bson:"forceChangePasswordNextSignIn,omitempty"`
	// 	ForceChangePasswordNextSignInWithMfa bool `json:"forceChangePasswordNextSignInWithMfa,omitempty" bson:"forceChangePasswordNextSignInWithMfa,omitempty"`
	// 	Password                             any  `json:"password,omitempty" bson:"password,omitempty"`
	// } `json:"passwordProfile,omitempty" bson:"passwordProfile,omitempty"`
	// PortalSetting                       any `json:"portalSetting,omitempty" bson:"portalSetting,omitempty"`
	// PostalCode                          any `json:"postalCode,omitempty" bson:"postalCode,omitempty"`
	// PreferredDataLocation               any `json:"preferredDataLocation,omitempty" bson:"preferredDataLocation,omitempty"`
	// PreferredLanguage                   any `json:"preferredLanguage,omitempty" bson:"preferredLanguage,omitempty"`
	// PreferredSingleSignOnMode           any `json:"preferredSingleSignOnMode,omitempty" bson:"preferredSingleSignOnMode,omitempty"`
	// PreferredTokenSigningKeyEndDateTime any `json:"preferredTokenSigningKeyEndDateTime,omitempty" bson:"preferredTokenSigningKeyEndDateTime,omitempty"`
	// PreferredTokenSigningKeyThumbprint  any `json:"preferredTokenSigningKeyThumbprint,omitempty" bson:"preferredTokenSigningKeyThumbprint,omitempty"`
	// ProvisionedPlans                    []struct {
	// 	CapabilityStatus   string `json:"capabilityStatus,omitempty" bson:"capabilityStatus,omitempty"`
	// 	ProvisioningStatus string `json:"provisioningStatus,omitempty" bson:"provisioningStatus,omitempty"`
	// 	Service            string `json:"service,omitempty" bson:"service,omitempty"`
	// } `json:"provisionedPlans,omitempty" bson:"provisionedPlans,omitempty"`
	// ProxyAddresses            []string `json:"proxyAddresses,omitempty" bson:"proxyAddresses,omitempty"`
	// PublishedPermissionScopes []struct {
	// 	AdminConsentDescription string `json:"adminConsentDescription,omitempty" bson:"adminConsentDescription,omitempty"`
	// 	AdminConsentDisplayName string `json:"adminConsentDisplayName,omitempty" bson:"adminConsentDisplayName,omitempty"`
	// 	ID                      string `json:"id,omitempty" bson:"id,omitempty"`
	// 	IsEnabled               bool   `json:"isEnabled,omitempty" bson:"isEnabled,omitempty"`
	// 	IsPrivate               bool   `json:"isPrivate,omitempty" bson:"isPrivate,omitempty"`
	// 	Type                    string `json:"type,omitempty" bson:"type,omitempty"`
	// 	UserConsentDescription  string `json:"userConsentDescription,omitempty" bson:"userConsentDescription,omitempty"`
	// 	UserConsentDisplayName  string `json:"userConsentDisplayName,omitempty" bson:"userConsentDisplayName,omitempty"`
	// 	Value                   string `json:"value,omitempty" bson:"value,omitempty"`
	// } `json:"publishedPermissionScopes,omitempty" bson:"publishedPermissionScopes,omitempty"`
	// PublisherName                          string    `json:"publisherName,omitempty" bson:"publisherName,omitempty"`
	// RefreshTokensValidFromDateTime         time.Time `json:"refreshTokensValidFromDateTime,omitempty" bson:"refreshTokensValidFromDateTime,omitempty"`
	// ReleaseTrack                           any       `json:"releaseTrack,omitempty" bson:"releaseTrack,omitempty"`
	// RenewedDateTime                        time.Time `json:"renewedDateTime,omitempty" bson:"renewedDateTime,omitempty"`
	// ReplyUrls                              []string  `json:"replyUrls,omitempty" bson:"replyUrls,omitempty"`
	// ResourceBehaviorOptions                []any     `json:"resourceBehaviorOptions,omitempty" bson:"resourceBehaviorOptions,omitempty"`
	// ResourceProvisioningOptions            []any     `json:"resourceProvisioningOptions,omitempty" bson:"resourceProvisioningOptions,omitempty"`
	// ResourceSpecificApplicationPermissions []any     `json:"resourceSpecificApplicationPermissions,omitempty" bson:"resourceSpecificApplicationPermissions,omitempty"`
	// SamlMetadataURL                        any       `json:"samlMetadataUrl,omitempty" bson:"samlMetadataUrl,omitempty"`
	// SamlSloBindingType                     string    `json:"samlSLOBindingType,omitempty" bson:"samlSLOBindingType,omitempty"`
	// SamlSingleSignOnSettings               any       `json:"samlSingleSignOnSettings,omitempty" bson:"samlSingleSignOnSettings,omitempty"`
	// SecurityEnabled                        bool      `json:"securityEnabled,omitempty" bson:"securityEnabled,omitempty"`
	// SecurityIdentifier    string   `json:"securityIdentifier,omitempty" bson:"securityIdentifier,omitempty"`
	ServicePrincipalNames []string `json:"servicePrincipalNames,omitempty" bson:"servicePrincipalNames,omitempty"`
	ServicePrincipalType  string   `json:"servicePrincipalType,omitempty" bson:"servicePrincipalType,omitempty"`
	// ServiceProvisioningErrors              []any     `json:"serviceProvisioningErrors,omitempty" bson:"serviceProvisioningErrors,omitempty"`
	// ShowInAddressList                      any       `json:"showInAddressList,omitempty" bson:"showInAddressList,omitempty"`
	// SignInAudience                         string    `json:"signInAudience,omitempty" bson:"signInAudience,omitempty"`
	// SignInSessionsValidFromDateTime        time.Time `json:"signInSessionsValidFromDateTime,omitempty" bson:"signInSessionsValidFromDateTime,omitempty"`
	// State                                  any       `json:"state,omitempty" bson:"state,omitempty"`
	// StreetAddress                          any       `json:"streetAddress,omitempty" bson:"streetAddress,omitempty"`
	// Surname                                *string   `json:"surname,omitempty" bson:"surname,omitempty"`
	Tags []string `json:"tags,omitempty" bson:"tags,omitempty"`
	// Theme                                  any       `json:"theme,omitempty" bson:"theme,omitempty"`
	// TokenEncryptionKeyID                   any       `json:"tokenEncryptionKeyId,omitempty" bson:"tokenEncryptionKeyId,omitempty"`
	// TokensRevocationDateTime               any       `json:"tokensRevocationDateTime,omitempty" bson:"tokensRevocationDateTime,omitempty"`
	// UniqueName                             any       `json:"uniqueName,omitempty" bson:"uniqueName,omitempty"`
	// UsageLocation                          *string   `json:"usageLocation,omitempty" bson:"usageLocation,omitempty"`
	UserPrincipalName string `json:"userPrincipalName,omitempty" bson:"userPrincipalName,omitempty"`
	UserType          string `json:"userType,omitempty" bson:"userType,omitempty"`
}

type SubnetIPConfigResponse

type SubnetIPConfigResponse struct {
	Etag       string `json:"etag"`
	ID         string `json:"id"`
	Location   string `json:"location"`
	Name       string `json:"name"`
	Properties struct {
		AddressSpace struct {
			AddressPrefixes []string `json:"addressPrefixes"`
		} `json:"addressSpace"`
		DhcpOptions struct {
			DnsServers []any `json:"dnsServers"`
		} `json:"dhcpOptions"`
		EnableDdosProtection bool   `json:"enableDdosProtection"`
		ProvisioningState    string `json:"provisioningState"`
		ResourceGuid         string `json:"resourceGuid"`
		Subnets              []struct {
			Etag       string `json:"etag"`
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				AddressPrefix    string `json:"addressPrefix"`
				Delegations      []any  `json:"delegations"`
				IpConfigurations []struct {
					Etag       string `json:"etag"`
					ID         string `json:"id"`
					Name       string `json:"name"`
					Resource   IPAddressItem
					Properties struct {
						Primary                         bool   `json:"primary,omitempty"`
						PrivateIpAddress                string `json:"privateIPAddress,omitempty"`
						PrivateIpAddressVersion         string `json:"privateIPAddressVersion,omitempty"`
						PrivateIpAllocationMethod       string `json:"privateIPAllocationMethod"`
						PrivateLinkConnectionProperties *struct {
							Fqdns              []string `json:"fqdns"`
							GroupID            string   `json:"groupId"`
							RequiredMemberName string   `json:"requiredMemberName"`
						} `json:"privateLinkConnectionProperties,omitempty"`
						ProvisioningState string `json:"provisioningState"`
						PublicIpAddress   *struct {
							ID string `json:"id"`
						} `json:"publicIPAddress,omitempty"`
						Subnet struct {
							ID string `json:"id"`
						} `json:"subnet"`
					} `json:"properties"`
					Type string `json:"type"`
				} `json:"ipConfigurations"`
				NetworkSecurityGroup *struct {
					ID string `json:"id"`
				} `json:"networkSecurityGroup,omitempty"`
				PrivateEndpointNetworkPolicies string `json:"privateEndpointNetworkPolicies"`
				PrivateEndpoints               []struct {
					ID string `json:"id"`
				} `json:"privateEndpoints,omitempty"`
				PrivateLinkServiceNetworkPolicies string `json:"privateLinkServiceNetworkPolicies"`
				ProvisioningState                 string `json:"provisioningState"`
				Purpose                           string `json:"purpose,omitempty"`
				RouteTable                        *struct {
					ID string `json:"id"`
				} `json:"routeTable,omitempty"`
				ServiceEndpoints []struct {
					Locations         []string `json:"locations"`
					ProvisioningState string   `json:"provisioningState"`
					Service           string   `json:"service"`
				} `json:"serviceEndpoints"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"subnets"`
		VirtualNetworkPeerings []struct {
			Etag       string `json:"etag"`
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				AllowForwardedTraffic     bool   `json:"allowForwardedTraffic"`
				AllowGatewayTransit       bool   `json:"allowGatewayTransit"`
				AllowVirtualNetworkAccess bool   `json:"allowVirtualNetworkAccess"`
				DoNotVerifyRemoteGateways bool   `json:"doNotVerifyRemoteGateways"`
				PeerCompleteVnets         bool   `json:"peerCompleteVnets"`
				PeeringState              string `json:"peeringState"`
				PeeringSyncLevel          string `json:"peeringSyncLevel"`
				ProvisioningState         string `json:"provisioningState"`
				RemoteAddressSpace        struct {
					AddressPrefixes []string `json:"addressPrefixes"`
				} `json:"remoteAddressSpace"`
				RemoteGateways []struct {
					ID string `json:"id"`
				} `json:"remoteGateways,omitempty"`
				RemoteVirtualNetwork struct {
					ID string `json:"id"`
				} `json:"remoteVirtualNetwork"`
				RemoteVirtualNetworkAddressSpace struct {
					AddressPrefixes []string `json:"addressPrefixes"`
				} `json:"remoteVirtualNetworkAddressSpace"`
				ResourceGuid     string `json:"resourceGuid"`
				RouteServiceVips struct {
					Af36ba888c9943f4A5e38fa90652cc96 string `json:"af36ba88-8c99-43f4-a5e3-8fa90652cc96,omitempty"`
				} `json:"routeServiceVips"`
				UseRemoteGateways bool `json:"useRemoteGateways"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"virtualNetworkPeerings"`
	} `json:"properties"`
	Tags map[string]string `json:"tags"`
	Type string            `json:"type"`
}

type SubnetResponse

type SubnetResponse struct {
	Etag       string `json:"etag"`
	ID         string `json:"id"`
	Name       string `json:"name"`
	Properties struct {
		AddressPrefix string `json:"addressPrefix"`
		Delegations   []struct {
			Etag       string `json:"etag"`
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				Actions           []string `json:"actions"`
				ProvisioningState string   `json:"provisioningState"`
				ServiceName       string   `json:"serviceName"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"delegations"`
		IpConfigurations []struct {
			ID string `json:"id"`
		} `json:"ipConfigurations"`
		NetworkSecurityGroup struct {
			ID string `json:"id"`
		} `json:"networkSecurityGroup"`
		PrivateEndpointNetworkPolicies    string `json:"privateEndpointNetworkPolicies"`
		PrivateLinkServiceNetworkPolicies string `json:"privateLinkServiceNetworkPolicies"`
		ProvisioningState                 string `json:"provisioningState"`
		Purpose                           string `json:"purpose"`
		ServiceEndpoints                  []any  `json:"serviceEndpoints"`
	} `json:"properties"`
	Type string `json:"type"`
}

func ListVnetSubnets

func ListVnetSubnets(subscriptionId string, resourceGroupName string, virtualNetworkName string, mat lib.AzureMultiAuthToken) []SubnetResponse

type SubscriptionResGrpList

type SubscriptionResGrpList []ResourceGroup

type SubscriptionResourceList

type SubscriptionResourceList struct {
	ResourceCount int
	Resources     []lib.AzureResourceDetails
}

type TenantDetails

type TenantDetails struct {
	TenantId      string            `json:"id" bson:"_id`
	TenantName    string            `json:"tenantName" bson:"tenantName`
	Subscriptions map[string]string `json:"subscriptions" bson:"subscriptions`
}

type TenantList

type TenantList []TenantDetails

func ListAllAuthenticatedSubscriptions

func ListAllAuthenticatedSubscriptions(tokens *lib.AllTenantTokens) TenantList

type TenantResGrpList

type TenantResGrpList map[string]SubscriptionResGrpList

type TenantResourceList

type TenantResourceList struct {
	ResourceCount int
	Subscriptions map[string]SubscriptionResourceList
}

func GetAllTenantResources

func GetAllTenantResources(outputFile string, token *lib.AzureMultiAuthToken) TenantResourceList

type VirtualMachine added in v0.1.15

type VirtualMachine struct {
	ID         string `json:"id"`
	Location   string `json:"location"`
	Name       string `json:"name"`
	Properties struct {
		AdditionalCapabilities struct {
			HibernationEnabled bool `json:"hibernationEnabled"`
		} `json:"additionalCapabilities"`
		DiagnosticsProfile struct {
			BootDiagnostics struct {
				Enabled bool `json:"enabled"`
			} `json:"bootDiagnostics"`
		} `json:"diagnosticsProfile"`
		HardwareProfile struct {
			VmSize string `json:"vmSize"`
		} `json:"hardwareProfile"`
		NetworkProfile struct {
			NetworkInterfaces []struct {
				ID         string `json:"id"`
				Properties struct {
					DeleteOption string `json:"deleteOption"`
				} `json:"properties"`
			} `json:"networkInterfaces"`
		} `json:"networkProfile"`
		OSProfile struct {
			AdminUsername            string `json:"adminUsername"`
			AllowExtensionOperations bool   `json:"allowExtensionOperations"`
			ComputerName             string `json:"computerName"`
			LinuxConfiguration       struct {
				DisablePasswordAuthentication bool `json:"disablePasswordAuthentication"`
				EnableVmAgentPlatformUpdates  bool `json:"enableVMAgentPlatformUpdates"`
				PatchSettings                 struct {
					AssessmentMode              string `json:"assessmentMode"`
					AutomaticByPlatformSettings struct {
						BypassPlatformSafetyChecksOnUserSchedule bool   `json:"bypassPlatformSafetyChecksOnUserSchedule"`
						RebootSetting                            string `json:"rebootSetting"`
					} `json:"automaticByPlatformSettings"`
					PatchMode string `json:"patchMode"`
				} `json:"patchSettings"`
				ProvisionVmAgent bool `json:"provisionVMAgent"`
				SSH              struct {
					PublicKeys []struct {
						KeyData string `json:"keyData"`
						Path    string `json:"path"`
					} `json:"publicKeys"`
				} `json:"ssh"`
			} `json:"linuxConfiguration"`
			RequireGuestProvisionSignal bool  `json:"requireGuestProvisionSignal"`
			Secrets                     []any `json:"secrets"`
		} `json:"osProfile"`
		ProvisioningState string `json:"provisioningState"`
		SecurityProfile   struct {
			SecurityType string `json:"securityType"`
			UefiSettings struct {
				SecureBootEnabled bool `json:"secureBootEnabled"`
				VTpmEnabled       bool `json:"vTpmEnabled"`
			} `json:"uefiSettings"`
		} `json:"securityProfile"`
		StorageProfile struct {
			DataDisks          []any  `json:"dataDisks"`
			DiskControllerType string `json:"diskControllerType"`
			ImageReference     struct {
				ExactVersion string `json:"exactVersion"`
				Offer        string `json:"offer"`
				Publisher    string `json:"publisher"`
				Sku          string `json:"sku"`
				Version      string `json:"version"`
			} `json:"imageReference"`
			OSDisk struct {
				Caching      string  `json:"caching"`
				CreateOption string  `json:"createOption"`
				DeleteOption string  `json:"deleteOption"`
				DiskSizeGb   float64 `json:"diskSizeGB"`
				ManagedDisk  struct {
					StorageAccountType string `json:"storageAccountType"`
				} `json:"managedDisk"`
				OSType string `json:"osType"`
			} `json:"osDisk"`
		} `json:"storageProfile"`
		TimeCreated time.Time `json:"timeCreated"`
		VmID        string    `json:"vmId"`
	} `json:"properties"`
	Type  string   `json:"type"`
	Zones []string `json:"zones"`
}

type VirtualMachineInstanceView added in v0.1.15

type VirtualMachineInstanceView struct {
	BootDiagnostics struct{} `json:"bootDiagnostics"`
	ComputerName    string   `json:"computerName"`
	Disks           []struct {
		Name     string `json:"name"`
		Statuses []struct {
			Code          string    `json:"code"`
			DisplayStatus string    `json:"displayStatus"`
			Level         string    `json:"level"`
			Time          time.Time `json:"time"`
		} `json:"statuses"`
	} `json:"disks"`
	Extensions []struct {
		Name     string `json:"name"`
		Statuses []struct {
			Code          string `json:"code"`
			DisplayStatus string `json:"displayStatus"`
			Level         string `json:"level"`
			Message       string `json:"message"`
		} `json:"statuses"`
		Type               string `json:"type"`
		TypeHandlerVersion string `json:"typeHandlerVersion"`
	} `json:"extensions"`
	HyperVGeneration string `json:"hyperVGeneration"`
	OSName           string `json:"osName"`
	OSVersion        string `json:"osVersion"`
	PatchStatus      struct {
		AvailablePatchSummary struct {
			AssessmentActivityID          string  `json:"assessmentActivityId"`
			CriticalAndSecurityPatchCount float64 `json:"criticalAndSecurityPatchCount"`
			Error                         struct {
				Code    string `json:"code"`
				Details []struct {
					Code    string `json:"code"`
					Message string `json:"message"`
				} `json:"details"`
				Message string `json:"message"`
			} `json:"error"`
			LastModifiedTime time.Time `json:"lastModifiedTime"`
			OtherPatchCount  float64   `json:"otherPatchCount"`
			RebootPending    bool      `json:"rebootPending"`
			StartTime        time.Time `json:"startTime"`
			Status           string    `json:"status"`
		} `json:"availablePatchSummary"`
		ConfigurationStatuses []struct {
			Code          string    `json:"code"`
			DisplayStatus string    `json:"displayStatus"`
			Level         string    `json:"level"`
			Time          time.Time `json:"time"`
		} `json:"configurationStatuses"`
	} `json:"patchStatus"`
	Statuses []struct {
		Code          string    `json:"code"`
		DisplayStatus string    `json:"displayStatus"`
		Level         string    `json:"level"`
		Time          time.Time `json:"time,omitempty"`
	} `json:"statuses"`
	VmAgent struct {
		ExtensionHandlers []struct {
			Status struct {
				Code          string `json:"code"`
				DisplayStatus string `json:"displayStatus"`
				Level         string `json:"level"`
				Message       string `json:"message"`
			} `json:"status"`
			Type               string `json:"type"`
			TypeHandlerVersion string `json:"typeHandlerVersion"`
		} `json:"extensionHandlers"`
		Statuses []struct {
			Code          string    `json:"code"`
			DisplayStatus string    `json:"displayStatus"`
			Level         string    `json:"level"`
			Message       string    `json:"message"`
			Time          time.Time `json:"time"`
		} `json:"statuses"`
		VmAgentVersion string `json:"vmAgentVersion"`
	} `json:"vmAgent"`
}

type VirtualNetworkPeering

type VirtualNetworkPeering struct {
	Etag       string `json:"etag"`
	ID         string `json:"id"`
	Name       string `json:"name"`
	Properties struct {
		AllowForwardedTraffic     bool   `json:"allowForwardedTraffic"`
		AllowGatewayTransit       bool   `json:"allowGatewayTransit"`
		AllowVirtualNetworkAccess bool   `json:"allowVirtualNetworkAccess"`
		DoNotVerifyRemoteGateways bool   `json:"doNotVerifyRemoteGateways"`
		PeerCompleteVnets         bool   `json:"peerCompleteVnets"`
		PeeringState              string `json:"peeringState"`
		PeeringSyncLevel          string `json:"peeringSyncLevel"`
		ProvisioningState         string `json:"provisioningState"`
		RemoteAddressSpace        struct {
			AddressPrefixes []string `json:"addressPrefixes"`
		} `json:"remoteAddressSpace"`
		RemoteGateways []struct {
			ID string `json:"id"`
		} `json:"remoteGateways,omitempty"`
		RemoteVirtualNetwork struct {
			ID string `json:"id"`
		} `json:"remoteVirtualNetwork"`
		RemoteVirtualNetworkAddressSpace struct {
			AddressPrefixes []string `json:"addressPrefixes"`
		} `json:"remoteVirtualNetworkAddressSpace"`
		ResourceGuid     string `json:"resourceGuid"`
		RouteServiceVips struct {
			Af36ba888c9943f4A5e38fa90652cc96 string `json:"af36ba88-8c99-43f4-a5e3-8fa90652cc96,omitempty"`
		} `json:"routeServiceVips"`
		UseRemoteGateways bool `json:"useRemoteGateways"`
	} `json:"properties"`
	Type string `json:"type"`
}

type Vnet

type Vnet struct {
	ID                     string                 `json:"id"`
	Location               string                 `json:"location"`
	Name                   string                 `json:"name"`
	ResourceGroup          string                 `json:"resourceGroup"`
	SubscriptionID         string                 `json:"subscriptionId"`
	AddressSpace           []string               `json:"addressSpace"`
	Subnets                []SubnetResponse       `json:"subnets"`
	ProvisioningState      string                 `json:"provisioningState"`
	VirtualNetworkPeerings []ProcessedVnetPeering `json:"virtualNetworkPeerings"`
	Tags                   map[string]string      `json:"tags"`
	Type                   string                 `json:"type"`
}

func ListAllSubscriptionVnets

func ListAllSubscriptionVnets(subscriptionId string, mat lib.AzureMultiAuthToken) []Vnet

type VnetListResponse

type VnetListResponse struct {
	Value []VnetResponse
}

type VnetResponse

type VnetResponse struct {
	Etag       string `json:"etag"`
	ID         string `json:"id"`
	Location   string `json:"location"`
	Name       string `json:"name"`
	Properties struct {
		AddressSpace struct {
			AddressPrefixes []string `json:"addressPrefixes"`
		} `json:"addressSpace"`
		DhcpOptions struct {
			DnsServers []any `json:"dnsServers"`
		} `json:"dhcpOptions"`
		EnableDdosProtection bool   `json:"enableDdosProtection"`
		ProvisioningState    string `json:"provisioningState"`
		ResourceGuid         string `json:"resourceGuid"`
		Subnets              []struct {
			Etag       string `json:"etag"`
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				AddressPrefix    string `json:"addressPrefix"`
				Delegations      []any  `json:"delegations"`
				IpConfigurations []struct {
					ID string `json:"id"`
				} `json:"ipConfigurations"`
				NetworkSecurityGroup *struct {
					ID string `json:"id"`
				} `json:"networkSecurityGroup,omitempty"`
				PrivateEndpointNetworkPolicies string `json:"privateEndpointNetworkPolicies"`
				PrivateEndpoints               []struct {
					ID string `json:"id"`
				} `json:"privateEndpoints,omitempty"`
				PrivateLinkServiceNetworkPolicies string `json:"privateLinkServiceNetworkPolicies"`
				ProvisioningState                 string `json:"provisioningState"`
				Purpose                           string `json:"purpose,omitempty"`
				RouteTable                        *struct {
					ID string `json:"id"`
				} `json:"routeTable,omitempty"`
				ServiceEndpoints []struct {
					Locations         []string `json:"locations"`
					ProvisioningState string   `json:"provisioningState"`
					Service           string   `json:"service"`
				} `json:"serviceEndpoints"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"subnets"`
		VirtualNetworkPeerings []struct {
			Etag       string `json:"etag"`
			ID         string `json:"id"`
			Name       string `json:"name"`
			Properties struct {
				AllowForwardedTraffic     bool   `json:"allowForwardedTraffic"`
				AllowGatewayTransit       bool   `json:"allowGatewayTransit"`
				AllowVirtualNetworkAccess bool   `json:"allowVirtualNetworkAccess"`
				DoNotVerifyRemoteGateways bool   `json:"doNotVerifyRemoteGateways"`
				PeerCompleteVnets         bool   `json:"peerCompleteVnets"`
				PeeringState              string `json:"peeringState"`
				PeeringSyncLevel          string `json:"peeringSyncLevel"`
				ProvisioningState         string `json:"provisioningState"`
				RemoteAddressSpace        struct {
					AddressPrefixes []string `json:"addressPrefixes"`
				} `json:"remoteAddressSpace"`
				RemoteGateways []struct {
					ID string `json:"id"`
				} `json:"remoteGateways,omitempty"`
				RemoteVirtualNetwork struct {
					ID string `json:"id"`
				} `json:"remoteVirtualNetwork"`
				RemoteVirtualNetworkAddressSpace struct {
					AddressPrefixes []string `json:"addressPrefixes"`
				} `json:"remoteVirtualNetworkAddressSpace"`
				ResourceGuid     string `json:"resourceGuid"`
				RouteServiceVips struct {
					Af36ba888c9943f4A5e38fa90652cc96 string `json:"af36ba88-8c99-43f4-a5e3-8fa90652cc96,omitempty"`
				} `json:"routeServiceVips"`
				UseRemoteGateways bool `json:"useRemoteGateways"`
			} `json:"properties"`
			Type string `json:"type"`
		} `json:"virtualNetworkPeerings"`
	} `json:"properties"`
	Tags map[string]string `json:"tags"`
	Type string            `json:"type"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳