Help us shape the future of Go! Take the 2026 Go Developer Survey

client

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Oct 7, 2026 License: Apache-2.0 Imports: 19 Imported by: 1

Documentation

Index

Constants

View Source
const (
	MESH_BUILDING_BLOCK_IO_TYPE_STRING        = "STRING"
	MESH_BUILDING_BLOCK_IO_TYPE_INTEGER       = "INTEGER"
	MESH_BUILDING_BLOCK_IO_TYPE_BOOLEAN       = "BOOLEAN"
	MESH_BUILDING_BLOCK_IO_TYPE_SINGLE_SELECT = "SINGLE_SELECT"
	MESH_BUILDING_BLOCK_IO_TYPE_MULTI_SELECT  = "MULTI_SELECT"
	MESH_BUILDING_BLOCK_IO_TYPE_FILE          = "FILE"
	MESH_BUILDING_BLOCK_IO_TYPE_LIST          = "LIST"
	MESH_BUILDING_BLOCK_IO_TYPE_CODE          = "CODE"
)
View Source
const TagInputTargetSeparator = "."

TagInputTargetSeparator splits the target from the tag key. Only the first one separates them, because a tag key may contain a dot itself.

Variables

View Source
var (
	MeshBuildingBlockTypes              = enum.Enum[MeshBuildingBlockType]{}
	MeshBuildingBlockTypeTenantLevel    = MeshBuildingBlockTypes.Entry("TENANT_LEVEL")
	MeshBuildingBlockTypeWorkspaceLevel = MeshBuildingBlockTypes.Entry("WORKSPACE_LEVEL")
)
View Source
var (
	MeshBuildingBlockScheduleModes                   = enum.Enum[MeshBuildingBlockScheduleMode]{}
	MeshBuildingBlockScheduleModeDisabled            = MeshBuildingBlockScheduleModes.Entry("DISABLED")
	MeshBuildingBlockScheduleModeDriftDetection      = MeshBuildingBlockScheduleModes.Entry("DRIFT_DETECTION")
	MeshBuildingBlockScheduleModeDriftReconciliation = MeshBuildingBlockScheduleModes.Entry("DRIFT_RECONCILIATION")
)
View Source
var (
	MeshBuildingBlockScheduleFrequencies     = enum.Enum[MeshBuildingBlockScheduleFrequency]{}
	MeshBuildingBlockScheduleFrequencyNone   = MeshBuildingBlockScheduleFrequencies.Entry("NONE")
	MeshBuildingBlockScheduleFrequencyDaily  = MeshBuildingBlockScheduleFrequencies.Entry("DAILY")
	MeshBuildingBlockScheduleFrequencyWeekly = MeshBuildingBlockScheduleFrequencies.Entry("WEEKLY")
)
View Source
var (
	MeshBuildingBlockDefinitionVersionStates        = enum.Enum[MeshBuildingBlockDefinitionVersionState]{}
	MeshBuildingBlockDefinitionVersionStateDraft    = MeshBuildingBlockDefinitionVersionStates.Entry("DRAFT")
	MeshBuildingBlockDefinitionVersionStateReleased = MeshBuildingBlockDefinitionVersionStates.Entry("RELEASED")
)
View Source
var (
	BuildingBlockDeletionModes      = enum.Enum[BuildingBlockDeletionMode]{}
	BuildingBlockDeletionModeDelete = BuildingBlockDeletionModes.Entry("DELETE")
	BuildingBlockDeletionModePurge  = BuildingBlockDeletionModes.Entry("PURGE")
)
View Source
var (
	MeshBuildingBlockIOTypes            = enum.Enum[MeshBuildingBlockIOType]{}
	MeshBuildingBlockIOTypeString       = MeshBuildingBlockIOTypes.Entry("STRING")
	MeshBuildingBlockIOTypeCode         = MeshBuildingBlockIOTypes.Entry("CODE")
	MeshBuildingBlockIOTypeInteger      = MeshBuildingBlockIOTypes.Entry("INTEGER")
	MeshBuildingBlockIOTypeBoolean      = MeshBuildingBlockIOTypes.Entry("BOOLEAN")
	MeshBuildingBlockIOTypeFile         = MeshBuildingBlockIOTypes.Entry("FILE")
	MeshBuildingBlockIOTypeList         = MeshBuildingBlockIOTypes.Entry("LIST")
	MeshBuildingBlockIOTypeSingleSelect = MeshBuildingBlockIOTypes.Entry("SINGLE_SELECT")
	MeshBuildingBlockIOTypeMultiSelect  = MeshBuildingBlockIOTypes.Entry("MULTI_SELECT")

	// MeshBuildingBlockIOTypeJson is deliberately not an entry of MeshBuildingBlockIOTypes: a
	// definition input declaring it describes a form of its own, through the accompanying JsonSchema.
	// What that form produces is JSON text, which a building block's own inputs report as CODE.
	MeshBuildingBlockIOTypeJson = enum.Entry[MeshBuildingBlockIOType]("JSON")
)
View Source
var (
	MeshBuildingBlockInputAssignmentTypes                           = enum.Enum[MeshBuildingBlockInputAssignmentType]{}
	MeshBuildingBlockInputAssignmentTypeAuthor                      = MeshBuildingBlockInputAssignmentTypes.Entry("AUTHOR")
	MeshBuildingBlockInputAssignmentTypeUserInput                   = MeshBuildingBlockInputAssignmentTypes.Entry("USER_INPUT")
	MeshBuildingBlockInputAssignmentTypePlatformOperatorManualInput = MeshBuildingBlockInputAssignmentTypes.Entry("PLATFORM_OPERATOR_MANUAL_INPUT")
	MeshBuildingBlockInputAssignmentTypeBuildingBlockOutput         = MeshBuildingBlockInputAssignmentTypes.Entry("BUILDING_BLOCK_OUTPUT")
	MeshBuildingBlockInputAssignmentTypePlatformTenantID            = MeshBuildingBlockInputAssignmentTypes.Entry("PLATFORM_TENANT_ID")
	MeshBuildingBlockInputAssignmentTypeMeshstackTenantUuid         = MeshBuildingBlockInputAssignmentTypes.Entry("MESHSTACK_TENANT_UUID")
	MeshBuildingBlockInputAssignmentTypeWorkspaceIdentifier         = MeshBuildingBlockInputAssignmentTypes.Entry("WORKSPACE_IDENTIFIER")
	MeshBuildingBlockInputAssignmentTypeProjectIdentifier           = MeshBuildingBlockInputAssignmentTypes.Entry("PROJECT_IDENTIFIER")
	MeshBuildingBlockInputAssignmentTypeFullPlatformIdentifier      = MeshBuildingBlockInputAssignmentTypes.Entry("FULL_PLATFORM_IDENTIFIER")
	MeshBuildingBlockInputAssignmentTypeTenantBuildingBlockUuid     = MeshBuildingBlockInputAssignmentTypes.Entry("TENANT_BUILDING_BLOCK_UUID")
	MeshBuildingBlockInputAssignmentTypeStatic                      = MeshBuildingBlockInputAssignmentTypes.Entry("STATIC")
	MeshBuildingBlockInputAssignmentTypeUserPermissions             = MeshBuildingBlockInputAssignmentTypes.Entry("USER_PERMISSIONS")
	MeshBuildingBlockInputAssignmentTypeTag                         = MeshBuildingBlockInputAssignmentTypes.Entry("TAG")
	MeshBuildingBlockInputAssignmentTypePaymentMethod               = MeshBuildingBlockInputAssignmentTypes.Entry("PAYMENT_METHOD")
)
View Source
var (
	MeshBuildingBlockTagInputTargets             = enum.Enum[MeshBuildingBlockTagInputTarget]{}
	MeshBuildingBlockTagInputTargetWorkspace     = MeshBuildingBlockTagInputTargets.Entry("WORKSPACE")
	MeshBuildingBlockTagInputTargetProject       = MeshBuildingBlockTagInputTargets.Entry("PROJECT")
	MeshBuildingBlockTagInputTargetPaymentMethod = MeshBuildingBlockTagInputTargets.Entry("PAYMENT_METHOD")
	MeshBuildingBlockTagInputTargetLandingZone   = MeshBuildingBlockTagInputTargets.Entry("LANDING_ZONE")
)
View Source
var (
	MeshBuildingBlockDefinitionOutputAssignmentTypes                = enum.Enum[MeshBuildingBlockDefinitionOutputAssignmentType]{}
	MeshBuildingBlockDefinitionOutputAssignmentTypeNone             = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("NONE")
	MeshBuildingBlockDefinitionOutputAssignmentTypePlatformTenantID = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("PLATFORM_TENANT_ID")
	MeshBuildingBlockDefinitionOutputAssignmentTypeSignInURL        = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("SIGN_IN_URL")
	MeshBuildingBlockDefinitionOutputAssignmentTypeResourceURL      = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("RESOURCE_URL")
	MeshBuildingBlockDefinitionOutputAssignmentTypeSummary          = MeshBuildingBlockDefinitionOutputAssignmentTypes.Entry("SUMMARY")
)
View Source
var (
	MeshBuildingBlockImplementationTypes                   = enum.Enum[MeshBuildingBlockImplementationType]{}
	MeshBuildingBlockImplementationTypeManual              = MeshBuildingBlockImplementationTypes.Entry("manual")
	MeshBuildingBlockImplementationTypeTerraform           = MeshBuildingBlockImplementationTypes.Entry("terraform")
	MeshBuildingBlockImplementationTypeGithubWorkflows     = MeshBuildingBlockImplementationTypes.Entry("githubWorkflows")
	MeshBuildingBlockImplementationTypeGitlabPipeline      = MeshBuildingBlockImplementationTypes.Entry("gitlabPipeline")
	MeshBuildingBlockImplementationTypeAzureDevOpsPipeline = MeshBuildingBlockImplementationTypes.Entry("azureDevOpsPipeline")
)
View Source
var (
	BuildingBlockLifecycleStates                 = enum.Enum[BuildingBlockLifecycleState]{}
	BuildingBlockLifecycleStateActive            = BuildingBlockLifecycleStates.Entry("ACTIVE")
	BuildingBlockLifecycleStateMarkedForDeletion = BuildingBlockLifecycleStates.Entry("MARKED_FOR_DELETION")
	BuildingBlockLifecycleStateDeleted           = BuildingBlockLifecycleStates.Entry("DELETED")
)
View Source
var (
	BuildingBlockStatuses                       = enum.Enum[BuildingBlockStatus]{}
	BuildingBlockStatusWaitingForDependentInput = BuildingBlockStatuses.Entry("WAITING_FOR_DEPENDENT_INPUT")
	BuildingBlockStatusWaitingForOperatorInput  = BuildingBlockStatuses.Entry("WAITING_FOR_OPERATOR_INPUT")
	BuildingBlockStatusWaitingForUserInput      = BuildingBlockStatuses.Entry("WAITING_FOR_USER_INPUT")
	BuildingBlockStatusWaitingForApproval       = BuildingBlockStatuses.Entry("WAITING_FOR_APPROVAL")
	BuildingBlockStatusPending                  = BuildingBlockStatuses.Entry("PENDING")
	BuildingBlockStatusInProgress               = BuildingBlockStatuses.Entry("IN_PROGRESS")
	BuildingBlockStatusSucceeded                = BuildingBlockStatuses.Entry("SUCCEEDED")
	BuildingBlockStatusFailed                   = BuildingBlockStatuses.Entry("FAILED")
	BuildingBlockStatusAborted                  = BuildingBlockStatuses.Entry("ABORTED")
)
View Source
var (
	MeshIntegrationConfigTypes           = enum.Enum[MeshIntegrationConfigType]{}
	MeshIntegrationConfigTypeGithub      = MeshIntegrationConfigTypes.Entry("github")
	MeshIntegrationConfigTypeGitlab      = MeshIntegrationConfigTypes.Entry("gitlab")
	MeshIntegrationConfigTypeAzureDevops = MeshIntegrationConfigTypes.Entry("azuredevops")
	MeshIntegrationConfigTypeEntraId     = MeshIntegrationConfigTypes.Entry("entraid")
)
View Source
var (
	MeshFeatureFlags                    = enum.Enum[MeshFeatureFlag]{}
	MeshFeatureFlagFourEyesRoleApproval = MeshFeatureFlags.Entry("four_eyes_role_approval")
)
View Source
var (
	TenantLifecycleStates                 = enum.Enum[TenantLifecycleState]{}
	TenantLifecycleStateActive            = TenantLifecycleStates.Entry("ACTIVE")
	TenantLifecycleStateMarkedForDeletion = TenantLifecycleStates.Entry("MARKED_FOR_DELETION")
	TenantLifecycleStateDeleted           = TenantLifecycleStates.Entry("DELETED")
)
View Source
var MeshBuildingBlockDefinitionInputTypes = MeshBuildingBlockIOTypes.With(MeshBuildingBlockIOTypeJson)
View Source
var MeshObjectKind = meshObjectKind{
	ApiKey:                         "meshApiKey",
	BuildingBlock:                  "meshBuildingBlock",
	BuildingBlockRun:               "meshBuildingBlockRun",
	BuildingBlockDefinition:        "meshBuildingBlockDefinition",
	BuildingBlockDefinitionVersion: "meshBuildingBlockDefinitionVersion",
	BuildingBlockRunner:            "meshBuildingBlockRunner",
	EventLog:                       "meshEventLog",
	Integration:                    "meshIntegration",
	LandingZone:                    "meshLandingZone",
	Location:                       "meshLocation",
	PaymentMethod:                  "meshPaymentMethod",
	Platform:                       "meshPlatform",
	PlatformType:                   "meshPlatformType",
	Project:                        "meshProject",
	ProjectGroupBinding:            "meshProjectGroupBinding",
	ProjectRole:                    "meshProjectRole",
	ProjectUserBinding:             "meshProjectUserBinding",
	ServiceInstance:                "meshServiceInstance",
	TagDefinition:                  "meshTagDefinition",
	Tenant:                         "meshTenant",
	Workspace:                      "meshWorkspace",
	WorkspaceGroupBinding:          "meshWorkspaceGroupBinding",
	WorkspaceUserBinding:           "meshWorkspaceUserBinding",
}
View Source
var MinMeshStackVersion = version.MustParse("2026.36.0")
View Source
var Permissions = ApiKeyPermissions{
	{Name: "API Keys", Actions: [][]ApiPermission{
		{"APIKEY_DELETE", "ADM_APIKEY_DELETE"},
		{"APIKEY_LIST", "ADM_APIKEY_LIST"},
		{"APIKEY_SAVE", "ADM_APIKEY_SAVE"},
	}},
	{Name: "Building Blocks", Actions: [][]ApiPermission{
		{"BUILDINGBLOCK_DELETE", "ADM_BUILDINGBLOCK_DELETE"},
		{"BUILDINGBLOCK_LIST", "ADM_BUILDINGBLOCK_LIST", "MANAGED_BUILDINGBLOCK_LIST"},
		{"BUILDINGBLOCK_SAVE", "ADM_BUILDINGBLOCK_SAVE", "MANAGED_BUILDINGBLOCK_SAVE"},
	}},
	{Name: "Building Block Definitions", Actions: [][]ApiPermission{
		{"BUILDINGBLOCKDEFINITION_DELETE", "ADM_BUILDINGBLOCKDEFINITION_DELETE"},
		{"BUILDINGBLOCKDEFINITION_LIST", "ADM_BUILDINGBLOCKDEFINITION_LIST"},
		{"BUILDINGBLOCKDEFINITION_SAVE", "ADM_BUILDINGBLOCKDEFINITION_SAVE"},
		{"ADM_REVIEW_PUBLICATION"},
	}},
	{Name: "Building Block Runs", Actions: [][]ApiPermission{
		{"MANAGED_BUILDINGBLOCKRUN_LIST", "ADM_BUILDINGBLOCKRUN_LIST"},
		{"MANAGED_BUILDINGBLOCKRUN_SAVE", "ADM_BUILDINGBLOCKRUN_SAVE"},
		{"MANAGED_BUILDINGBLOCKRUNSOURCE_SAVE", "ADM_BUILDINGBLOCKRUNSOURCE_SAVE"},
		{"MANAGED_BUILDINGBLOCKRUNARTIFACT_LIST", "ADM_BUILDINGBLOCKRUNARTIFACT_LIST"},
		{"MANAGED_BUILDINGBLOCKRUNARTIFACT_SAVE", "ADM_BUILDINGBLOCKRUNARTIFACT_SAVE"},
	}},
	{Name: "Building Block Runners", Actions: [][]ApiPermission{
		{"BUILDINGBLOCKRUNNER_DELETE", "ADM_BUILDINGBLOCKRUNNER_DELETE"},
		{"BUILDINGBLOCKRUNNER_LIST", "ADM_BUILDINGBLOCKRUNNER_LIST"},
		{"BUILDINGBLOCKRUNNER_SAVE", "ADM_BUILDINGBLOCKRUNNER_SAVE"},
	}},
	{Name: "Communication Definitions", Actions: [][]ApiPermission{
		{"COMMUNICATIONDEFINITION_DELETE", "ADM_COMMUNICATIONDEFINITION_DELETE"},
		{"COMMUNICATIONDEFINITION_LIST", "ADM_COMMUNICATIONDEFINITION_LIST"},
		{"COMMUNICATIONDEFINITION_SAVE", "ADM_COMMUNICATIONDEFINITION_SAVE"},
	}},
	{Name: "Communications", Actions: [][]ApiPermission{
		{"COMMUNICATION_DELETE", "ADM_COMMUNICATION_DELETE"},
		{"COMMUNICATION_LIST", "ADM_COMMUNICATION_LIST"},
		{"COMMUNICATION_SAVE", "ADM_COMMUNICATION_SAVE"},
	}},
	{Name: "Event Logs", Actions: [][]ApiPermission{
		{"EVENTLOG_LIST", "ADM_EVENTLOG_LIST"},
	}},
	{Name: "Integrations", Actions: [][]ApiPermission{
		{"INTEGRATION_DELETE", "ADM_INTEGRATION_DELETE"},
		{"INTEGRATION_LIST", "ADM_INTEGRATION_LIST"},
		{"INTEGRATION_SAVE", "ADM_INTEGRATION_SAVE"},
	}},
	{Name: "Landing Zones", Actions: [][]ApiPermission{
		{"LANDINGZONE_DELETE", "ADM_LANDINGZONE_DELETE"},
		{"LANDINGZONE_LIST", "ADM_LANDINGZONE_LIST"},
		{"LANDINGZONE_SAVE", "ADM_LANDINGZONE_SAVE"},
	}},
	{Name: "Payment Methods", Actions: [][]ApiPermission{
		{"ADM_PAYMENTMETHOD_DELETE"},
		{"PAYMENTMETHOD_LIST", "ADM_PAYMENTMETHOD_LIST"},
		{"ADM_PAYMENTMETHOD_SAVE"},
	}},
	{Name: "Platform Instances, Platform Types, Locations", Actions: [][]ApiPermission{
		{"PLATFORMINSTANCE_DELETE", "ADM_PLATFORMINSTANCE_DELETE"},
		{"PLATFORMINSTANCE_LIST", "ADM_PLATFORMINSTANCE_LIST"},
		{"PLATFORMINSTANCE_SAVE", "ADM_PLATFORMINSTANCE_SAVE"},
	}},
	{Name: "Project Role Bindings", Actions: [][]ApiPermission{
		{"PROJECTPRINCIPALROLE_DELETE", "ADM_PROJECTPRINCIPALROLE_DELETE"},
		{"PROJECTPRINCIPALROLE_LIST", "ADM_PROJECTPRINCIPALROLE_LIST"},
		{"PROJECTPRINCIPALROLE_SAVE", "ADM_PROJECTPRINCIPALROLE_SAVE"},
	}},
	{Name: "Project Roles", Actions: [][]ApiPermission{
		{"ADM_PROJECTROLE_DELETE"},
		{"ADM_PROJECTROLE_SAVE"},
	}},
	{Name: "Projects", Actions: [][]ApiPermission{
		{"PROJECT_DELETE", "ADM_PROJECT_DELETE"},
		{"PROJECT_LIST", "ADM_PROJECT_LIST"},
		{"PROJECT_SAVE", "ADM_PROJECT_SAVE"},
	}},
	{Name: "Service Instances", Actions: [][]ApiPermission{
		{"SERVICEINSTANCE_DELETE", "ADM_SERVICEINSTANCE_DELETE"},
		{"SERVICEINSTANCE_LIST", "ADM_SERVICEINSTANCE_LIST"},
		{"SERVICEINSTANCE_SAVE", "ADM_SERVICEINSTANCE_SAVE"},
	}},
	{Name: "Tag Definitions", Actions: [][]ApiPermission{
		{"ADM_TAGDEFINITION_DELETE"},
		{"ADM_TAGDEFINITION_LIST"},
		{"ADM_TAGDEFINITION_SAVE"},
	}},
	{Name: "Tenant Usage Reports", Actions: [][]ApiPermission{
		{"TENANTUSAGEREPORT_LIST", "ADM_TENANTUSAGEREPORT_LIST"},
	}},
	{Name: "Tenants", Actions: [][]ApiPermission{
		{"TENANT_DELETE", "ADM_TENANT_DELETE"},
		{"MANAGED_TENANT_IMPORT", "ADM_TENANT_IMPORT"},
		{"TENANT_LIST", "ADM_TENANT_LIST"},
		{"TENANT_SAVE", "ADM_TENANT_SAVE"},
		{"MANAGED_TENANTDELETION_APPROVE", "ADM_TENANTDELETION_APPROVE"},
	}},
	{Name: "Terraform States", Actions: [][]ApiPermission{
		{"TFSTATE_DELETE", "ADM_TFSTATE_DELETE", "MANAGED_TFSTATE_DELETE"},
		{"TFSTATE_LIST", "ADM_TFSTATE_LIST", "MANAGED_TFSTATE_LIST"},
		{"TFSTATE_SAVE", "ADM_TFSTATE_SAVE", "MANAGED_TFSTATE_SAVE"},
	}},
	{Name: "Users", Actions: [][]ApiPermission{
		{"ADM_USER_DELETE"},
		{"ADM_USER_LIST"},
		{"ADM_USER_SAVE"},
	}},
	{Name: "Workspace Role Bindings", Actions: [][]ApiPermission{
		{"WORKSPACEPRINCIPALBINDING_DELETE", "ADM_WORKSPACEPRINCIPALBINDING_DELETE"},
		{"WORKSPACEPRINCIPALBINDING_LIST", "ADM_WORKSPACEPRINCIPALBINDING_LIST"},
		{"WORKSPACEPRINCIPALBINDING_SAVE", "ADM_WORKSPACEPRINCIPALBINDING_SAVE"},
	}},
	{Name: "Workspace User Groups", Actions: [][]ApiPermission{
		{"ADM_WORKSPACEUSERGROUP_DELETE"},
		{"WORKSPACEUSERGROUP_LIST", "ADM_WORKSPACEUSERGROUP_LIST"},
		{"ADM_WORKSPACEUSERGROUP_SAVE"},
	}},
	{Name: "Workspaces", Actions: [][]ApiPermission{
		{"WORKSPACE_DELETE", "ADM_WORKSPACE_DELETE"},
		{"WORKSPACE_LIST", "ADM_WORKSPACE_LIST"},
		{"WORKSPACE_SAVE", "ADM_WORKSPACE_SAVE"},
	}},
}

Permissions must stay in step with ApiKeyRightMetadataRegistry in the meshStack backend, which https://docs.meshcloud.io/api/authentication/api-permissions/ documents.

Functions

func AllApiKeyPermissions

func AllApiKeyPermissions() []string

func WorkspacePermissionCodes

func WorkspacePermissionCodes() []string

Types

type AksMeteringConfig

type AksMeteringConfig struct {
	ClientConfig KubernetesClientConfig               `json:"clientConfig" tfsdk:"client_config"`
	Processing   MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type AksPlatformConfig

type AksPlatformConfig struct {
	BaseUrl              string                `json:"baseUrl" tfsdk:"base_url"`
	DisableSslValidation bool                  `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
	Replication          *AksReplicationConfig `json:"replication" tfsdk:"replication"`
	Metering             *AksMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type AksPlatformProperties

type AksPlatformProperties struct {
	KubernetesRoleMappings []KubernetesRoleMapping `json:"kubernetesRoleMappings" tfsdk:"kubernetes_role_mappings"`
}

type AksReplicationConfig

type AksReplicationConfig struct {
	AccessToken             types.Secret              `json:"accessToken" tfsdk:"access_token"`
	NamespaceNamePattern    string                    `json:"namespaceNamePattern" tfsdk:"namespace_name_pattern"`
	GroupNamePattern        string                    `json:"groupNamePattern" tfsdk:"group_name_pattern"`
	ServicePrincipal        AksServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
	AksSubscriptionId       string                    `json:"aksSubscriptionId" tfsdk:"aks_subscription_id"`
	AksClusterName          string                    `json:"aksClusterName" tfsdk:"aks_cluster_name"`
	AksResourceGroup        string                    `json:"aksResourceGroup" tfsdk:"aks_resource_group"`
	RedirectUrl             *string                   `json:"redirectUrl,omitzero" tfsdk:"redirect_url"`
	SendAzureInvitationMail bool                      `json:"sendAzureInvitationMail" tfsdk:"send_azure_invitation_mail"`
	UserLookupStrategy      string                    `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
	AdministrativeUnitId    *string                   `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
}

type AksServicePrincipalConfig

type AksServicePrincipalConfig struct {
	EntraTenant string          `json:"entraTenant" tfsdk:"entra_tenant"`
	ObjectId    string          `json:"objectId" tfsdk:"object_id"`
	ClientId    string          `json:"clientId" tfsdk:"client_id"`
	Auth        AzureAuthConfig `json:"auth" tfsdk:"auth"`
}

type ApiKeyPermissionGroup added in v0.3.0

type ApiKeyPermissionGroup struct {
	Name    string
	Actions [][]ApiPermission
}

ApiKeyPermissionGroup holds the permissions of one resource: one entry per action, and in that the scope variants of the action, such as TENANT_DELETE and ADM_TENANT_DELETE.

func (ApiKeyPermissionGroup) Patterns added in v0.3.0

func (g ApiKeyPermissionGroup) Patterns() []string

Patterns merges the codes of g into patterns: `[ADM_]TENANT_(DELETE|LIST)` stands for TENANT_DELETE, TENANT_LIST, ADM_TENANT_DELETE and ADM_TENANT_LIST, and `(MANAGED_|ADM_)TENANT_IMPORT` for MANAGED_TENANT_IMPORT and ADM_TENANT_IMPORT. A pattern never stands for a code that is not in g.

type ApiKeyPermissions

type ApiKeyPermissions []ApiKeyPermissionGroup

func (ApiKeyPermissions) AllCodes

func (p ApiKeyPermissions) AllCodes() []string

func (ApiKeyPermissions) MarkdownString

func (p ApiKeyPermissions) MarkdownString() string

func (ApiKeyPermissions) Only added in v0.3.0

Only keeps the codes of p that are among codes, in the order of p, and puts the codes p does not know into a last group named Other.

func (ApiKeyPermissions) WorkspaceCodes

func (p ApiKeyPermissions) WorkspaceCodes() []string

WorkspaceCodes leaves out only the ADM_ codes, so the MANAGED_ codes are part of it.

type ApiPermission

type ApiPermission string

type AppliedQuotaValue

type AppliedQuotaValue struct {
	Value int64 `json:"value" tfsdk:"value"`
}

AppliedQuotaValue is not merged with RequestQuotaValue; see there for why.

type Authorization

type Authorization = http.Authorization

type AwsAccessConfig

type AwsAccessConfig struct {
	OrganizationRootAccountRole       string  `json:"organizationRootAccountRole" tfsdk:"organization_root_account_role"`
	OrganizationRootAccountExternalId *string `json:"organizationRootAccountExternalId,omitzero" tfsdk:"organization_root_account_external_id"`
	Auth                              AwsAuth `json:"auth" tfsdk:"auth"`
}

type AwsAuth

type AwsAuth struct {
	Type             string                         `json:"type" tfsdk:"type"`
	Credential       *AwsServiceUserCredential      `json:"credential,omitzero" tfsdk:"credential"`
	WorkloadIdentity *AwsWorkloadIdentityCredential `json:"workloadIdentity,omitzero" tfsdk:"workload_identity"`
}

type AwsEnrollmentConfiguration

type AwsEnrollmentConfiguration struct {
	ManagementAccountId     string `json:"managementAccountId" tfsdk:"management_account_id"`
	AccountFactoryProductId string `json:"accountFactoryProductId" tfsdk:"account_factory_product_id"`
}

type AwsIdentityStoreConfig

type AwsIdentityStoreConfig struct {
	IdentityStoreId  string                                 `json:"identityStoreId" tfsdk:"identity_store_id"`
	Arn              string                                 `json:"arn" tfsdk:"arn"`
	GroupNamePattern string                                 `json:"groupNamePattern" tfsdk:"group_name_pattern"`
	AwsRoleMappings  types.Set[AwsIdentityStoreRoleMapping] `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
	SignInUrl        string                                 `json:"signInUrl" tfsdk:"sign_in_url"`
}

type AwsIdentityStoreRoleMapping

type AwsIdentityStoreRoleMapping struct {
	ProjectRoleRef    NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	AwsRole           string   `json:"awsRole" tfsdk:"aws_role"`
	PermissionSetArns []string `json:"permissionSetArns" tfsdk:"permission_set_arns"`
}

type AwsMeteringConfig

type AwsMeteringConfig struct {
	AccessConfig                   AwsAccessConfig                      `json:"accessConfig" tfsdk:"access_config"`
	Filter                         string                               `json:"filter" tfsdk:"filter"`
	ReservedInstanceFairChargeback bool                                 `json:"reservedInstanceFairChargeback" tfsdk:"reserved_instance_fair_chargeback"`
	SavingsPlanFairChargeback      bool                                 `json:"savingsPlanFairChargeback" tfsdk:"savings_plan_fair_chargeback"`
	Processing                     MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type AwsPlatformConfig

type AwsPlatformConfig struct {
	Region      string                `json:"region,omitempty" tfsdk:"region"`
	Replication *AwsReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
	Metering    *AwsMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type AwsPlatformProperties

type AwsPlatformProperties struct {
	AwsTargetOrgUnitId string           `json:"awsTargetOrgUnitId" tfsdk:"aws_target_org_unit_id"`
	AwsEnrollAccount   bool             `json:"awsEnrollAccount" tfsdk:"aws_enroll_account"`
	AwsLambdaArn       *string          `json:"awsLambdaArn" tfsdk:"aws_lambda_arn"`
	AwsRoleMappings    []AwsRoleMapping `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
}

type AwsReplicationConfig

type AwsReplicationConfig struct {
	AccessConfig                                  AwsAccessConfig             `json:"accessConfig" tfsdk:"access_config"`
	WaitForExternalAvm                            bool                        `json:"waitForExternalAvm" tfsdk:"wait_for_external_avm"`
	AutomationAccountRole                         string                      `json:"automationAccountRole" tfsdk:"automation_account_role"`
	AutomationAccountExternalId                   *string                     `json:"automationAccountExternalId,omitzero" tfsdk:"automation_account_external_id"`
	AccountAccessRole                             string                      `json:"accountAccessRole" tfsdk:"account_access_role"`
	AccountAliasPattern                           string                      `json:"accountAliasPattern" tfsdk:"account_alias_pattern"`
	EnforceAccountAlias                           bool                        `json:"enforceAccountAlias" tfsdk:"enforce_account_alias"`
	AccountEmailPattern                           string                      `json:"accountEmailPattern" tfsdk:"account_email_pattern"`
	TenantTags                                    *MeshTenantTags             `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
	AwsSso                                        *AwsSsoConfig               `json:"awsSso,omitzero" tfsdk:"aws_sso"`
	AwsIdentityStore                              *AwsIdentityStoreConfig     `json:"awsIdentityStore,omitzero" tfsdk:"aws_identity_store"`
	EnrollmentConfiguration                       *AwsEnrollmentConfiguration `json:"enrollmentConfiguration,omitzero" tfsdk:"enrollment_configuration"`
	SelfDowngradeAccessRole                       bool                        `json:"selfDowngradeAccessRole" tfsdk:"self_downgrade_access_role"`
	SkipUserGroupPermissionCleanup                bool                        `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
	AllowHierarchicalOrganizationalUnitAssignment bool                        `json:"allowHierarchicalOrganizationalUnitAssignment" tfsdk:"allow_hierarchical_organizational_unit_assignment"`
}

type AwsRoleMapping

type AwsRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	PlatformRole       string   `json:"platformRole" tfsdk:"platform_role"`
	Policies           []string `json:"policies" tfsdk:"policies"`
}

type AwsServiceUserCredential

type AwsServiceUserCredential struct {
	AccessKey string       `json:"accessKey" tfsdk:"access_key"`
	SecretKey types.Secret `json:"secretKey" tfsdk:"secret_key"`
}

type AwsSsoConfig

type AwsSsoConfig struct {
	ScimEndpoint     string                       `json:"scimEndpoint" tfsdk:"scim_endpoint"`
	Arn              string                       `json:"arn" tfsdk:"arn"`
	GroupNamePattern string                       `json:"groupNamePattern" tfsdk:"group_name_pattern"`
	SsoAccessToken   types.Secret                 `json:"ssoAccessToken" tfsdk:"sso_access_token"`
	AwsRoleMappings  types.Set[AwsSsoRoleMapping] `json:"awsRoleMappings" tfsdk:"aws_role_mappings"`
	SignInUrl        string                       `json:"signInUrl" tfsdk:"sign_in_url"`
}

type AwsSsoRoleMapping

type AwsSsoRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	AwsRole            string   `json:"awsRole" tfsdk:"aws_role"`
	PermissionSetArns  []string `json:"permissionSetArns" tfsdk:"permission_set_arns"`
}

type AwsWorkloadIdentityCredential

type AwsWorkloadIdentityCredential struct {
	RoleArn string `json:"roleArn" tfsdk:"role_arn"`
}

type AzureAuthConfig

type AzureAuthConfig struct {
	Type       string        `json:"type" tfsdk:"type"`
	Credential *types.Secret `json:"credential,omitzero" tfsdk:"credential"`
}

type AzureCustomerAgreementConfig

type AzureCustomerAgreementConfig struct {
	SourceServicePrincipal               AzureGraphApiCredentials `json:"sourceServicePrincipal" tfsdk:"source_service_principal"`
	DestinationEntraId                   string                   `json:"destinationEntraId" tfsdk:"destination_entra_id"`
	SourceEntraTenant                    string                   `json:"sourceEntraTenant" tfsdk:"source_entra_tenant"`
	BillingScope                         string                   `json:"billingScope" tfsdk:"billing_scope"`
	SubscriptionCreationErrorCooldownSec *int64                   `json:"subscriptionCreationErrorCooldownSec,omitzero" tfsdk:"subscription_creation_error_cooldown_sec"`
}

type AzureEnterpriseEnrollmentConfig

type AzureEnterpriseEnrollmentConfig struct {
	EnrollmentAccountId                  string `json:"enrollmentAccountId" tfsdk:"enrollment_account_id"`
	SubscriptionOfferType                string `json:"subscriptionOfferType" tfsdk:"subscription_offer_type"`
	UseLegacySubscriptionEnrollment      bool   `json:"useLegacySubscriptionEnrollment" tfsdk:"use_legacy_subscription_enrollment"`
	SubscriptionCreationErrorCooldownSec *int64 `json:"subscriptionCreationErrorCooldownSec,omitzero" tfsdk:"subscription_creation_error_cooldown_sec"`
}

type AzureFunction

type AzureFunction struct {
	AzureFunctionUrl   string `json:"azureFunctionUrl" tfsdk:"azure_function_url"`
	AzureFunctionScope string `json:"azureFunctionScope" tfsdk:"azure_function_scope"`
}

type AzureGraphApiCredentials

type AzureGraphApiCredentials struct {
	ClientId string          `json:"clientId" tfsdk:"client_id"`
	Auth     AzureAuthConfig `json:"auth" tfsdk:"auth"`
}

type AzureInviteB2BUserConfig

type AzureInviteB2BUserConfig struct {
	RedirectUrl             string `json:"redirectUrl" tfsdk:"redirect_url"`
	SendAzureInvitationMail bool   `json:"sendAzureInvitationMail" tfsdk:"send_azure_invitation_mail"`
}

type AzureMeteringConfig

type AzureMeteringConfig struct {
	ServicePrincipal AzureServicePrincipalConfig          `json:"servicePrincipal" tfsdk:"service_principal"`
	Processing       MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type AzurePlatformConfig

type AzurePlatformConfig struct {
	EntraTenant string                  `json:"entraTenant" tfsdk:"entra_tenant"`
	Replication *AzureReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
	Metering    *AzureMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type AzurePlatformProperties

type AzurePlatformProperties struct {
	AzureRoleMappings      []AzureRoleMappingProperty `json:"azureRoleMappings" tfsdk:"azure_role_mappings"`
	AzureManagementGroupId string                     `json:"azureManagementGroupId" tfsdk:"azure_management_group_id"`
}

type AzurePreProvisionedSubscriptionConfig

type AzurePreProvisionedSubscriptionConfig struct {
	UnusedSubscriptionNamePrefix string `json:"unusedSubscriptionNamePrefix" tfsdk:"unused_subscription_name_prefix"`
}

type AzureReplicationConfig

type AzureReplicationConfig struct {
	ServicePrincipal                           AzureServicePrincipalConfig          `json:"servicePrincipal" tfsdk:"service_principal"`
	UpdateSubscriptionName                     bool                                 `json:"updateSubscriptionName" tfsdk:"update_subscription_name"`
	Provisioning                               *AzureSubscriptionProvisioningConfig `json:"provisioning,omitzero" tfsdk:"provisioning"`
	B2bUserInvitation                          *AzureInviteB2BUserConfig            `json:"b2bUserInvitation,omitzero" tfsdk:"b2b_user_invitation"`
	SubscriptionNamePattern                    string                               `json:"subscriptionNamePattern" tfsdk:"subscription_name_pattern"`
	GroupNamePattern                           string                               `json:"groupNamePattern" tfsdk:"group_name_pattern"`
	AzureRoleMappings                          types.Set[AzureRoleMapping]          `json:"azureRoleMappings" tfsdk:"azure_role_mappings"`
	TenantTags                                 *MeshTenantTags                      `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
	UserLookUpStrategy                         string                               `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
	SkipUserGroupPermissionCleanup             bool                                 `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
	AdministrativeUnitId                       *string                              `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
	AllowHierarchicalManagementGroupAssignment bool                                 `json:"allowHierarchicalManagementGroupAssignment" tfsdk:"allow_hierarchical_management_group_assignment"`
}

type AzureRgPlatformConfig

type AzureRgPlatformConfig struct {
	EntraTenant string                    `json:"entraTenant" tfsdk:"entra_tenant"`
	Replication *AzureRgReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
}

type AzureRgPlatformProperties

type AzureRgPlatformProperties struct {
	AzureRgLocation     string               `json:"azureRgLocation" tfsdk:"azure_rg_location"`
	AzureRgRoleMappings []AzureRgRoleMapping `json:"azureRgRoleMappings" tfsdk:"azure_rg_role_mappings"`
	AzureFunction       *AzureFunction       `json:"azureFunction,omitzero" tfsdk:"azure_function"`
}

type AzureRgReplicationConfig

type AzureRgReplicationConfig struct {
	ServicePrincipal               AzureServicePrincipalConfig `json:"servicePrincipal" tfsdk:"service_principal"`
	Subscription                   string                      `json:"subscription" tfsdk:"subscription"`
	ResourceGroupNamePattern       string                      `json:"resourceGroupNamePattern" tfsdk:"resource_group_name_pattern"`
	UserGroupNamePattern           string                      `json:"userGroupNamePattern" tfsdk:"user_group_name_pattern"`
	B2bUserInvitation              *AzureInviteB2BUserConfig   `json:"b2bUserInvitation,omitzero" tfsdk:"b2b_user_invitation"`
	UserLookUpStrategy             string                      `json:"userLookUpStrategy" tfsdk:"user_lookup_strategy"`
	TenantTags                     *MeshTenantTags             `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
	SkipUserGroupPermissionCleanup bool                        `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
	AdministrativeUnitId           *string                     `json:"administrativeUnitId,omitzero" tfsdk:"administrative_unit_id"`
}

type AzureRgRoleMapping

type AzureRgRoleMapping struct {
	MeshProjectRoleRef     NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	AzureGroupSuffix       string   `json:"azureGroupSuffix" tfsdk:"azure_group_suffix"`
	AzureRoleDefinitionIds []string `json:"azureRoleDefinitionIds" tfsdk:"azure_role_definition_ids"`
}

type AzureRole

type AzureRole struct {
	Alias string `json:"alias" tfsdk:"alias"`
	Id    string `json:"id" tfsdk:"id"`
}

type AzureRoleDefinition

type AzureRoleDefinition struct {
	AzureRoleDefinitionId string  `json:"azureRoleDefinitionId" tfsdk:"azure_role_definition_id"`
	AbacCondition         *string `json:"abacCondition" tfsdk:"abac_condition"`
}

type AzureRoleMapping

type AzureRoleMapping struct {
	MeshProjectRoleRef NamedRef  `json:"projectRoleRef" tfsdk:"project_role_ref"`
	AzureRole          AzureRole `json:"azureRole" tfsdk:"azure_role"`
}

type AzureRoleMappingProperty

type AzureRoleMappingProperty struct {
	MeshProjectRoleRef   NamedRef              `json:"projectRoleRef" tfsdk:"project_role_ref"`
	AzureGroupSuffix     string                `json:"azureGroupSuffix" tfsdk:"azure_group_suffix"`
	AzureRoleDefinitions []AzureRoleDefinition `json:"azureRoleDefinitions" tfsdk:"azure_role_definitions"`
}

type AzureServicePrincipalConfig

type AzureServicePrincipalConfig struct {
	ClientId string          `json:"clientId" tfsdk:"client_id"`
	ObjectId string          `json:"objectId" tfsdk:"object_id"`
	Auth     AzureAuthConfig `json:"auth" tfsdk:"auth"`
}

type AzureSubscriptionProvisioningConfig

type AzureSubscriptionProvisioningConfig struct {
	SubscriptionOwnerObjectIds types.Set[string]                      `json:"subscriptionOwnerObjectIds" tfsdk:"subscription_owner_object_ids"`
	EnterpriseEnrollment       *AzureEnterpriseEnrollmentConfig       `json:"enterpriseEnrollment,omitzero" tfsdk:"enterprise_enrollment"`
	CustomerAgreement          *AzureCustomerAgreementConfig          `json:"customerAgreement,omitzero" tfsdk:"customer_agreement"`
	PreProvisioned             *AzurePreProvisionedSubscriptionConfig `json:"preProvisioned,omitzero" tfsdk:"pre_provisioned"`
}

type BuildingBlockDeletionMode

type BuildingBlockDeletionMode string

type BuildingBlockLifecycleState

type BuildingBlockLifecycleState string

type BuildingBlockStatus

type BuildingBlockStatus string

type Client

type Client struct {
	ApiKey                         MeshApiKeyClient
	BuildingBlock                  MeshBuildingBlockClient
	BuildingBlockV2                MeshBuildingBlockV2Client
	BuildingBlockRun               MeshBuildingBlockRunClient
	BuildingBlockDefinition        MeshBuildingBlockDefinitionClient
	BuildingBlockDefinitionVersion MeshBuildingBlockDefinitionVersionClient
	BuildingBlockRunner            MeshBuildingBlockRunnerClient
	Integration                    MeshIntegrationClient
	LandingZone                    MeshLandingZoneClient
	Location                       MeshLocationClient
	MeshInfo                       MeshInfoClient
	PaymentMethod                  MeshPaymentMethodClient
	Platform                       MeshPlatformClient
	PlatformType                   MeshPlatformTypeClient
	Project                        MeshProjectClient
	ProjectGroupBinding            MeshProjectGroupBindingClient
	ProjectUserBinding             MeshProjectUserBindingClient
	ServiceInstance                MeshServiceInstanceClient
	TagDefinition                  MeshTagDefinitionClient
	Tenant                         MeshTenantClient
	Workspace                      MeshWorkspaceClient
	WorkspaceGroupBinding          MeshWorkspaceGroupBindingClient
	WorkspaceUserBinding           MeshWorkspaceUserBindingClient
	Raw                            *RawClient

	// Endpoint is read by the Terraform provider's meshstack_instance data source.
	Endpoint xurl.URL
}

func New

func New(ctx context.Context, endpoint xurl.URL, client http.Client, auth Authorization) Client

type CustomMeteringConfig

type CustomMeteringConfig struct {
	Processing *MeshPlatformMeteringProcessingConfig `json:"processing,omitzero" tfsdk:"processing"`
}

type CustomPlatformConfig

type CustomPlatformConfig struct {
	PlatformTypeRef NamedRef              `json:"platformTypeRef" tfsdk:"platform_type_ref"`
	Metering        *CustomMeteringConfig `json:"metering,omitzero" tfsdk:"metering"`
}

type CustomPlatformProperties

type CustomPlatformProperties struct{}

type GcpMeteringConfig

type GcpMeteringConfig struct {
	ServiceAccount                          GcpServiceAccountConfig              `json:"serviceAccount" tfsdk:"service_account"`
	BigqueryTable                           string                               `json:"bigqueryTable" tfsdk:"bigquery_table"`
	BigqueryTableForCarbonFootprint         *string                              `json:"bigqueryTableForCarbonFootprint,omitzero" tfsdk:"bigquery_table_for_carbon_footprint"`
	CarbonFootprintDataCollectionStartMonth *string                              `json:"carbonFootprintDataCollectionStartMonth,omitzero" tfsdk:"carbon_footprint_data_collection_start_month"`
	PartitionTimeColumn                     string                               `json:"partitionTimeColumn" tfsdk:"partition_time_column"`
	AdditionalFilter                        *string                              `json:"additionalFilter,omitzero" tfsdk:"additional_filter"`
	Processing                              MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type GcpPlatformConfig

type GcpPlatformConfig struct {
	Replication *GcpReplicationConfig `json:"replication,omitzero" tfsdk:"replication"`
	Metering    *GcpMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type GcpPlatformProperties

type GcpPlatformProperties struct {
	GcpCloudFunctionUrl *string          `json:"gcpCloudFunctionUrl,omitzero" tfsdk:"gcp_cloud_function_url"`
	GcpFolderId         *string          `json:"gcpFolderId,omitzero" tfsdk:"gcp_folder_id"`
	GcpRoleMappings     []GcpRoleMapping `json:"gcpRoleMappings" tfsdk:"gcp_role_mappings"`
}

type GcpPlatformRoleMapping

type GcpPlatformRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	GcpRole            string   `json:"gcpRole" tfsdk:"gcp_role"`
}

type GcpReplicationConfig

type GcpReplicationConfig struct {
	ServiceAccount                    GcpServiceAccountConfig           `json:"serviceAccount" tfsdk:"service_account"`
	Domain                            string                            `json:"domain" tfsdk:"domain"`
	CustomerId                        string                            `json:"customerId" tfsdk:"customer_id"`
	GroupNamePattern                  string                            `json:"groupNamePattern" tfsdk:"group_name_pattern"`
	ProjectNamePattern                string                            `json:"projectNamePattern" tfsdk:"project_name_pattern"`
	ProjectIdPattern                  string                            `json:"projectIdPattern" tfsdk:"project_id_pattern"`
	BillingAccountId                  string                            `json:"billingAccountId" tfsdk:"billing_account_id"`
	UserLookupStrategy                string                            `json:"userLookupStrategy" tfsdk:"user_lookup_strategy"`
	UsedExternalIdType                *string                           `json:"usedExternalIdType,omitzero" tfsdk:"used_external_id_type"`
	GcpRoleMappings                   types.Set[GcpPlatformRoleMapping] `json:"gcpRoleMappings" tfsdk:"gcp_role_mappings"`
	AllowHierarchicalFolderAssignment bool                              `json:"allowHierarchicalFolderAssignment" tfsdk:"allow_hierarchical_folder_assignment"`
	TenantTags                        *MeshTenantTags                   `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
	SkipUserGroupPermissionCleanup    bool                              `json:"skipUserGroupPermissionCleanup" tfsdk:"skip_user_group_permission_cleanup"`
}

type GcpRoleMapping

type GcpRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	PlatformRoles      []string `json:"platformRoles" tfsdk:"platform_roles"`
}

type GcpServiceAccountConfig

type GcpServiceAccountConfig struct {
	Type             string                                   `json:"type" tfsdk:"type"`
	Credential       *types.Secret                            `json:"credential,omitzero" tfsdk:"credential"`
	WorkloadIdentity *GcpServiceAccountWorkloadIdentityConfig `json:"workloadIdentity,omitzero" tfsdk:"workload_identity"`
}

type GcpServiceAccountWorkloadIdentityConfig

type GcpServiceAccountWorkloadIdentityConfig struct {
	Audience            string `json:"audience" tfsdk:"audience"`
	ServiceAccountEmail string `json:"serviceAccountEmail" tfsdk:"service_account_email"`
}

type HttpError

type HttpError = http.Error

type KubernetesClientConfig

type KubernetesClientConfig struct {
	AccessToken types.Secret `json:"accessToken" tfsdk:"access_token"`
}

type KubernetesMeteringConfig

type KubernetesMeteringConfig struct {
	ClientConfig KubernetesClientConfig               `json:"clientConfig" tfsdk:"client_config"`
	Processing   MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type KubernetesPlatformConfig

type KubernetesPlatformConfig struct {
	BaseUrl              string                       `json:"baseUrl" tfsdk:"base_url"`
	DisableSslValidation bool                         `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
	Replication          *KubernetesReplicationConfig `json:"replication" tfsdk:"replication"`
	Metering             *KubernetesMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type KubernetesPlatformProperties

type KubernetesPlatformProperties struct {
	KubernetesRoleMappings []KubernetesRoleMapping `json:"kubernetesRoleMappings" tfsdk:"kubernetes_role_mappings"`
}

type KubernetesReplicationConfig

type KubernetesReplicationConfig struct {
	ClientConfig         KubernetesClientConfig `json:"clientConfig" tfsdk:"client_config"`
	NamespaceNamePattern string                 `json:"namespaceNamePattern" tfsdk:"namespace_name_pattern"`
}

type KubernetesRoleMapping

type KubernetesRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	PlatformRoles      []string `json:"platformRoles" tfsdk:"platform_roles"`
}

type ListOptions added in v0.2.0

type ListOptions = internal.ListOptions

type MeshApiKey

type MeshApiKey struct {
	Metadata MeshApiKeyMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshApiKeySpec     `json:"spec" tfsdk:"spec"`
	Status   *MeshApiKeyStatus  `json:"status,omitzero" tfsdk:"status"`
}

type MeshApiKeyClient

type MeshApiKeyClient interface {
	Create(ctx context.Context, apiKey *MeshApiKey) (*MeshApiKey, error)
	Read(ctx context.Context, uuid string) (*MeshApiKey, error)
	// ReadSelf returns the key the request authenticates with. Unlike Read, it needs no APIKEY_LIST
	// and also finds a hidden key, such as one bootstrapped from the meshStack configuration.
	ReadSelf(ctx context.Context) (*MeshApiKey, error)
	Update(ctx context.Context, uuid string, apiKey *MeshApiKey) (*MeshApiKey, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshApiKeyMetadata

type MeshApiKeyMetadata struct {
	Uuid             *string `json:"uuid,omitzero" tfsdk:"uuid"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshApiKeySpec

type MeshApiKeySpec struct {
	DisplayName string                   `json:"displayName" tfsdk:"display_name"`
	Permissions types.Set[ApiPermission] `json:"permissions" tfsdk:"permissions"`
	ExpiresAt   *string                  `json:"expiresAt,omitzero" tfsdk:"expires_at"`
}

type MeshApiKeyStatus

type MeshApiKeyStatus struct {
	ClientId     string  `json:"clientId" tfsdk:"client_id"`
	ClientSecret *string `json:"clientSecret,omitzero" tfsdk:"client_secret"`
	// The Terraform provider's meshstack_api_key schema has no attribute for ExpiresAt, and its
	// conversion fails on a tfsdk tag the schema does not have.
	ExpiresAt time.Time `json:"expiresAt,omitzero" tfsdk:"-"`
}

type MeshAwsWifProvider

type MeshAwsWifProvider struct {
	Audience   string `json:"audience" tfsdk:"audience"`
	Thumbprint string `json:"thumbprint" tfsdk:"thumbprint"`
}

type MeshBuildingBlock

type MeshBuildingBlock struct {
	Metadata MeshBuildingBlockMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshBuildingBlockSpec     `json:"spec" tfsdk:"spec"`
	Status   MeshBuildingBlockStatus   `json:"status" tfsdk:"status"`
}

type MeshBuildingBlockClient

type MeshBuildingBlockClient interface {
	Read(ctx context.Context, uuid string) (*MeshBuildingBlock, error)
	Create(ctx context.Context, bb *MeshBuildingBlockCreate) (*MeshBuildingBlock, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshBuildingBlockCreate

type MeshBuildingBlockCreate struct {
	Metadata MeshBuildingBlockCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshBuildingBlockSpec           `json:"spec" tfsdk:"spec"`
}

type MeshBuildingBlockCreateMetadata

type MeshBuildingBlockCreateMetadata struct {
	DefinitionUuid    string `json:"definitionUuid" tfsdk:"definition_uuid"`
	DefinitionVersion int64  `json:"definitionVersion" tfsdk:"definition_version"`
	TenantIdentifier  string `json:"tenantIdentifier" tfsdk:"tenant_identifier"`
}

type MeshBuildingBlockDefinition

type MeshBuildingBlockDefinition struct {
	Metadata MeshBuildingBlockDefinitionMetadata `json:"metadata"`
	Spec     MeshBuildingBlockDefinitionSpec     `json:"spec"`
	Status   *MeshBuildingBlockDefinitionStatus  `json:"status,omitzero"`
}

type MeshBuildingBlockDefinitionApprovalPolicies

type MeshBuildingBlockDefinitionApprovalPolicies struct {
	VersionUpgrade        bool `json:"versionUpgrade" tfsdk:"version_upgrade"`
	UserInputChanges      bool `json:"userInputChanges" tfsdk:"user_input_changes"`
	ManualTriggers        bool `json:"manualTriggers" tfsdk:"manual_triggers"`
	BuildingBlockCreation bool `json:"buildingBlockCreation" tfsdk:"building_block_creation"`
	AnyInputChanges       bool `json:"anyInputChanges" tfsdk:"any_input_changes"`
}

func (MeshBuildingBlockDefinitionApprovalPolicies) NothingRequiresApproval

func (a MeshBuildingBlockDefinitionApprovalPolicies) NothingRequiresApproval() bool

type MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation

type MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation struct {
	Project        string  `json:"project" tfsdk:"project"`
	PipelineID     string  `json:"pipelineId" tfsdk:"pipeline_id"`
	RefName        *string `json:"refName,omitzero" tfsdk:"ref_name"`
	Async          bool    `json:"async" tfsdk:"async"`
	IntegrationRef UuidRef `json:"integrationRef" tfsdk:"integration_ref"`
}

type MeshBuildingBlockDefinitionClient

type MeshBuildingBlockDefinitionClient interface {
	List(ctx context.Context, workspaceIdentifier *string) ([]MeshBuildingBlockDefinition, error)
	Read(ctx context.Context, uuid string) (*MeshBuildingBlockDefinition, error)
	Create(ctx context.Context, definition MeshBuildingBlockDefinition) (*MeshBuildingBlockDefinition, error)
	Update(ctx context.Context, uuid string, definition MeshBuildingBlockDefinition) (*MeshBuildingBlockDefinition, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshBuildingBlockDefinitionCloudWif added in v0.2.0

type MeshBuildingBlockDefinitionCloudWif struct {
	Audience  string `json:"audience" tfsdk:"audience"`
	TokenPath string `json:"tokenPath" tfsdk:"token_path"`
}

type MeshBuildingBlockDefinitionGitHubWorkflowsImplementation

type MeshBuildingBlockDefinitionGitHubWorkflowsImplementation struct {
	Repository         string  `json:"repository" tfsdk:"repository"`
	Branch             string  `json:"branch" tfsdk:"branch"`
	ApplyWorkflow      string  `json:"applyWorkflow" tfsdk:"apply_workflow"`
	DestroyWorkflow    *string `json:"destroyWorkflow" tfsdk:"destroy_workflow"`
	Async              bool    `json:"async" tfsdk:"async"`
	OmitRunObjectInput bool    `json:"omitRunObjectInput" tfsdk:"omit_run_object_input"`
	IntegrationRef     UuidRef `json:"integrationRef" tfsdk:"integration_ref"`
}

type MeshBuildingBlockDefinitionGitLabPipelineImplementation

type MeshBuildingBlockDefinitionGitLabPipelineImplementation struct {
	ProjectID            string       `json:"projectId" tfsdk:"project_id"`
	RefName              string       `json:"refName" tfsdk:"ref_name"`
	IntegrationRef       UuidRef      `json:"integrationRef" tfsdk:"integration_ref"`
	PipelineTriggerToken types.Secret `json:"pipelineTriggerToken" tfsdk:"pipeline_trigger_token"`
}

type MeshBuildingBlockDefinitionImplementation

type MeshBuildingBlockDefinitionImplementation struct {
	Type                enum.Entry[MeshBuildingBlockImplementationType]               `json:"type" tfsdk:"-"`
	Manual              *MeshBuildingBlockDefinitionManualImplementation              `json:"manual,omitzero" tfsdk:"manual"`
	GithubWorkflows     *MeshBuildingBlockDefinitionGitHubWorkflowsImplementation     `json:"githubWorkflows,omitzero" tfsdk:"github_workflows"`
	AzureDevOpsPipeline *MeshBuildingBlockDefinitionAzureDevOpsPipelineImplementation `json:"azureDevOpsPipeline,omitzero" tfsdk:"azure_devops_pipeline"`
	GitlabPipeline      *MeshBuildingBlockDefinitionGitLabPipelineImplementation      `json:"gitlabPipeline,omitzero" tfsdk:"gitlab_pipeline"`
	Terraform           *MeshBuildingBlockDefinitionTerraformImplementation           `json:"terraform,omitzero" tfsdk:"terraform"`
}

func (MeshBuildingBlockDefinitionImplementation) InferType added in v0.2.0

InferType accepts a version without any variant: meshStack answers that way to a workspace that may only consume the definition.

func (MeshBuildingBlockDefinitionImplementation) MarshalJSON

func (*MeshBuildingBlockDefinitionImplementation) UnmarshalJSON

func (m *MeshBuildingBlockDefinitionImplementation) UnmarshalJSON(bytes []byte) error

type MeshBuildingBlockDefinitionInput

type MeshBuildingBlockDefinitionInput struct {
	DisplayName    string                               `json:"displayName" tfsdk:"display_name"`
	Type           MeshBuildingBlockIOType              `json:"type" tfsdk:"type"`
	AssignmentType MeshBuildingBlockInputAssignmentType `json:"assignmentType" tfsdk:"assignment_type"`
	IsEnvironment  bool                                 `json:"isEnvironment" tfsdk:"is_environment"`
	IsSensitive    bool                                 `json:"isSensitive" tfsdk:"-"`
	// Argument and DefaultValue hold a [types.Secret] when IsSensitive is true and a [types.Any]
	// otherwise. [types.Variant] decodes into X first, so UnmarshalJSON moves a non-sensitive value
	// that also decodes as a Secret over to Y.
	Argument                    types.SecretOrAny `json:"argument" tfsdk:"argument"`
	DefaultValue                types.SecretOrAny `json:"defaultValue" tfsdk:"default_value"`
	UpdateableByConsumer        bool              `json:"updateableByConsumer" tfsdk:"updateable_by_consumer"`
	IsOptional                  bool              `json:"isOptional,omitzero" tfsdk:"is_optional"`
	SelectableValues            types.Set[string] `json:"selectableValues,omitempty" tfsdk:"selectable_values"`
	Description                 *string           `json:"description,omitzero" tfsdk:"description"`
	ValueValidationRegex        *string           `json:"valueValidationRegex,omitzero" tfsdk:"value_validation_regex"`
	ValidationRegexErrorMessage *string           `json:"validationRegexErrorMessage,omitzero" tfsdk:"validation_regex_error_message"`
	// JsonSchema describes the form of an input of type MeshBuildingBlockIOTypeJson, and is set only
	// for that type.
	JsonSchema *string `json:"jsonSchema,omitzero" tfsdk:"json_schema"`
	Condition  *string `json:"condition,omitzero" tfsdk:"condition"`
	// No omitempty: a 0 (the schema default, and what an unknown plan value collapses to) must be sent so
	// the backend stores it verbatim. With omitempty the 0 would be dropped and the backend would assign
	// a position itself, making the applied value differ from the plan.
	DisplayOrder int64 `json:"displayOrder" tfsdk:"display_order"`
}

func (*MeshBuildingBlockDefinitionInput) UnmarshalJSON

func (m *MeshBuildingBlockDefinitionInput) UnmarshalJSON(bytes []byte) error

type MeshBuildingBlockDefinitionListFilter added in v0.3.0

type MeshBuildingBlockDefinitionListFilter struct {
	OwnedByWorkspace *string `json:"ownedByWorkspace"`
	// IncludeAllPublished adds the definitions published to the whole platform to the workspace's own.
	IncludeAllPublished bool         `json:"includeAllPublished"`
	Sort                SortCriteria `json:"sort"`
}

type MeshBuildingBlockDefinitionManualImplementation

type MeshBuildingBlockDefinitionManualImplementation struct{}

type MeshBuildingBlockDefinitionMetadata

type MeshBuildingBlockDefinitionMetadata struct {
	Uuid             *string             `json:"uuid,omitzero" tfsdk:"uuid"`
	OwnedByWorkspace string              `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	Tags             map[string][]string `json:"tags" tfsdk:"tags"`
}

type MeshBuildingBlockDefinitionOutput

type MeshBuildingBlockDefinitionOutput struct {
	DisplayName    string                                          `json:"displayName" tfsdk:"display_name"`
	Type           MeshBuildingBlockIOType                         `json:"type" tfsdk:"type"`
	AssignmentType MeshBuildingBlockDefinitionOutputAssignmentType `json:"assignmentType" tfsdk:"assignment_type"`
	// No omitempty so a 0 is sent, not dropped (see MeshBuildingBlockDefinitionInput.DisplayOrder).
	DisplayOrder int64 `json:"displayOrder" tfsdk:"display_order"`
}

type MeshBuildingBlockDefinitionOutputAssignmentType

type MeshBuildingBlockDefinitionOutputAssignmentType string

type MeshBuildingBlockDefinitionSchedule

type MeshBuildingBlockDefinitionSchedule struct {
	Mode              MeshBuildingBlockScheduleMode      `json:"mode" tfsdk:"mode"`
	Frequency         MeshBuildingBlockScheduleFrequency `json:"frequency" tfsdk:"frequency"`
	AutomaticApproval bool                               `json:"automaticApproval" tfsdk:"automatic_approval"`
}

func DisabledSchedule

func DisabledSchedule() MeshBuildingBlockDefinitionSchedule

DisabledSchedule is the only schedule meshStack accepts for every implementation.

func (MeshBuildingBlockDefinitionSchedule) IsDisabled

type MeshBuildingBlockDefinitionSpec

type MeshBuildingBlockDefinitionSpec struct {
	DisplayName           string                                      `json:"displayName" tfsdk:"display_name"`
	DisplayNameTemplate   *string                                     `json:"displayNameTemplate,omitzero" tfsdk:"display_name_template"`
	TargetType            MeshBuildingBlockType                       `json:"targetType" tfsdk:"target_type"`
	Description           string                                      `json:"description" tfsdk:"description"`
	Readme                *string                                     `json:"readme,omitzero" tfsdk:"readme"`
	RunTransparency       bool                                        `json:"runTransparency" tfsdk:"run_transparency"`
	ApprovalPolicies      MeshBuildingBlockDefinitionApprovalPolicies `json:"approvalPolicies" tfsdk:"approval_policies"`
	Schedule              MeshBuildingBlockDefinitionSchedule         `json:"schedule" tfsdk:"schedule"`
	UseInLandingZonesOnly bool                                        `json:"useInLandingZonesOnly" tfsdk:"use_in_landing_zones_only"`
	SupportURL            *string                                     `json:"supportUrl,omitzero" tfsdk:"support_url"`
	DocumentationURL      *string                                     `json:"documentationUrl,omitzero" tfsdk:"documentation_url"`
	// NotificationSubscribers also takes an email address as `email:<address>`, despite the JSON name.
	NotificationSubscribers types.Set[string]               `json:"notificationSubscriberUsernames,omitempty" tfsdk:"notification_subscribers"`
	Symbol                  *string                         `json:"symbol,omitzero" tfsdk:"symbol"`
	SupportedPlatforms      types.Set[SupportedPlatformRef] `json:"supportedPlatforms" tfsdk:"supported_platforms"`
}

func (MeshBuildingBlockDefinitionSpec) HasNeutralPolicies

func (s MeshBuildingBlockDefinitionSpec) HasNeutralPolicies() bool

func (MeshBuildingBlockDefinitionSpec) WithNeutralPolicies

type MeshBuildingBlockDefinitionSshKnownHost

type MeshBuildingBlockDefinitionSshKnownHost struct {
	Host     string `json:"host" tfsdk:"host"`
	KeyType  string `json:"keyType" tfsdk:"key_type"`
	KeyValue string `json:"keyValue" tfsdk:"key_value"`
}

type MeshBuildingBlockDefinitionStatus

type MeshBuildingBlockDefinitionStatus struct {
	UsageCount                *int64                                     `json:"usageCount"`
	Versions                  []MeshBuildingBlockDefinitionStatusVersion `json:"versions"`
	LatestVersion             int64                                      `json:"latestVersion"`
	LatestVersionUuid         string                                     `json:"latestVersionUuid"`
	LatestReleasedVersion     *int64                                     `json:"latestReleasedVersion"`
	LatestReleasedVersionUuid *string                                    `json:"latestReleasedVersionUuid"`
	RedactedForNonOwnerAccess bool                                       `json:"redactedForNonOwnerAccess"`
}

type MeshBuildingBlockDefinitionStatusVersion

type MeshBuildingBlockDefinitionStatusVersion struct {
	VersionUuid   string                                  `json:"versionUuid"`
	VersionNumber int64                                   `json:"versionNumber"`
	State         MeshBuildingBlockDefinitionVersionState `json:"state"`
	// WorkloadIdentityFederation is rendered from the runner's template, and is nil when the runner
	// declares none.
	WorkloadIdentityFederation *MeshBuildingBlockDefinitionWif `json:"workloadIdentityFederation,omitzero"`
}

type MeshBuildingBlockDefinitionTerraformImplementation

type MeshBuildingBlockDefinitionTerraformImplementation struct {
	TerraformVersion           string                                   `json:"terraformVersion" tfsdk:"terraform_version"`
	RepositoryURL              string                                   `json:"repositoryUrl" tfsdk:"repository_url"`
	Async                      bool                                     `json:"async" tfsdk:"async"`
	RepositoryPath             *string                                  `json:"repositoryPath,omitzero" tfsdk:"repository_path"`
	RefName                    *string                                  `json:"refName,omitzero" tfsdk:"ref_name"`
	SSHKnownHost               *MeshBuildingBlockDefinitionSshKnownHost `json:"sshKnownHost,omitzero" tfsdk:"ssh_known_host"`
	UseMeshHTTPBackendFallback bool                                     `json:"useMeshHttpBackendFallback" tfsdk:"use_mesh_http_backend_fallback"`
	SSHPrivateKey              *types.Secret                            `json:"sshPrivateKey,omitzero" tfsdk:"ssh_private_key"`
	PreRunScript               *string                                  `json:"preRunScript,omitzero" tfsdk:"pre_run_script"`
}

type MeshBuildingBlockDefinitionVersion

type MeshBuildingBlockDefinitionVersion struct {
	Metadata MeshBuildingBlockDefinitionVersionMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshBuildingBlockDefinitionVersionSpec     `json:"spec" tfsdk:"spec"`
	Status   *MeshBuildingBlockDefinitionVersionStatus  `json:"status,omitzero" tfsdk:"status"`
}

type MeshBuildingBlockDefinitionVersionClient

type MeshBuildingBlockDefinitionVersionClient interface {
	List(ctx context.Context, buildingBlockDefinitionUuid string) ([]MeshBuildingBlockDefinitionVersion, error)
	Create(ctx context.Context, ownedByWorkspace string, versionSpec MeshBuildingBlockDefinitionVersionSpec) (*MeshBuildingBlockDefinitionVersion, error)
	Update(ctx context.Context, uuid, ownedByWorkspace string, versionSpec MeshBuildingBlockDefinitionVersionSpec) (*MeshBuildingBlockDefinitionVersion, error)
}

MeshBuildingBlockDefinitionVersionClient has no Get and no Delete: a caller always reads all versions of a definition with List, and the versions are deleted together with their definition.

type MeshBuildingBlockDefinitionVersionListFilter added in v0.3.0

type MeshBuildingBlockDefinitionVersionListFilter struct {
	BuildingBlockDefinitionUuid uuid.UUID `json:"buildingBlockDefinitionUuid,omitzero"`
}

type MeshBuildingBlockDefinitionVersionMetadata

type MeshBuildingBlockDefinitionVersionMetadata struct {
	Uuid             string `json:"uuid"`
	OwnedByWorkspace string `json:"ownedByWorkspace"`
	CreatedOn        string `json:"createdOn"`
}

type MeshBuildingBlockDefinitionVersionSpec

type MeshBuildingBlockDefinitionVersionSpec struct {
	BuildingBlockDefinitionRef *UuidRef                                     `json:"buildingBlockDefinitionRef" tfsdk:"-"`
	OnlyApplyOncePerTenant     bool                                         `json:"onlyApplyOncePerTenant" tfsdk:"only_apply_once_per_tenant"`
	DeletionMode               BuildingBlockDeletionMode                    `json:"deletionMode" tfsdk:"deletion_mode"`
	Permissions                types.Set[ApiPermission]                     `json:"permissions,omitempty" tfsdk:"permissions"`
	Outputs                    map[string]MeshBuildingBlockDefinitionOutput `json:"outputs" tfsdk:"outputs"`
	VersionNumber              *int64                                       `json:"versionNumber,omitzero" tfsdk:"version_number"`
	State                      *MeshBuildingBlockDefinitionVersionState     `json:"state,omitzero" tfsdk:"state"`
	RunnerRef                  *UuidRef                                     `json:"runnerRef" tfsdk:"runner_ref"`
	// Replaces the deprecated bare-UUID dependencyDefinitionUuids; requires a backend serving it.
	DependencyDefinitionRefs types.Set[UuidRef]                           `json:"dependencyDefinitionRefs,omitempty" tfsdk:"dependency_refs"`
	Implementation           MeshBuildingBlockDefinitionImplementation    `json:"implementation" tfsdk:"implementation"`
	Inputs                   map[string]*MeshBuildingBlockDefinitionInput `json:"inputs" tfsdk:"inputs"`
}

type MeshBuildingBlockDefinitionVersionState

type MeshBuildingBlockDefinitionVersionState string

type MeshBuildingBlockDefinitionVersionStatus

type MeshBuildingBlockDefinitionVersionStatus struct {
	State      MeshBuildingBlockDefinitionVersionState `json:"state" tfsdk:"state"`
	UsageCount *int64                                  `json:"usageCount,omitzero" tfsdk:"usage_count"`
}

type MeshBuildingBlockDefinitionWif added in v0.2.0

type MeshBuildingBlockDefinitionWif struct {
	Issuer  string                               `json:"issuer" tfsdk:"issuer"`
	Subject string                               `json:"subject" tfsdk:"subject"`
	Gcp     *MeshBuildingBlockDefinitionCloudWif `json:"gcp,omitzero" tfsdk:"gcp"`
	Aws     *MeshBuildingBlockDefinitionCloudWif `json:"aws,omitzero" tfsdk:"aws"`
	Azure   *MeshBuildingBlockDefinitionCloudWif `json:"azure,omitzero" tfsdk:"azure"`
}

type MeshBuildingBlockIO

type MeshBuildingBlockIO struct {
	Key       string `json:"key" tfsdk:"key"`
	Value     any    `json:"value" tfsdk:"value"`
	ValueType string `json:"valueType" tfsdk:"value_type"`
}

type MeshBuildingBlockIOType

type MeshBuildingBlockIOType string

type MeshBuildingBlockImplementationType

type MeshBuildingBlockImplementationType string

type MeshBuildingBlockInput

type MeshBuildingBlockInput struct {
	Value          types.SecretOrAny                                `json:"value" tfsdk:"value"`
	ValueType      *enum.Entry[MeshBuildingBlockIOType]             `json:"valueType,omitzero" tfsdk:"-"`
	AssignmentType enum.Entry[MeshBuildingBlockInputAssignmentType] `json:"assignmentType,omitempty" tfsdk:"-"`

	// IsSensitive decides the case of Value: [types.Secret] when true, [types.Any] otherwise.
	// [types.Variant] decodes into X first, so UnmarshalJSON moves a non-sensitive value that also
	// decodes as a Secret over to Y.
	IsSensitive bool `json:"isSensitive" tfsdk:"-"`
}

func (*MeshBuildingBlockInput) UnmarshalJSON

func (m *MeshBuildingBlockInput) UnmarshalJSON(bytes []byte) error

type MeshBuildingBlockInputAssignmentType

type MeshBuildingBlockInputAssignmentType string

type MeshBuildingBlockMetadata

type MeshBuildingBlockMetadata struct {
	Uuid                string  `json:"uuid" tfsdk:"uuid"`
	DefinitionUuid      string  `json:"definitionUuid" tfsdk:"definition_uuid"`
	DefinitionVersion   int64   `json:"definitionVersion" tfsdk:"definition_version"`
	TenantIdentifier    string  `json:"tenantIdentifier" tfsdk:"tenant_identifier"`
	ForcePurge          bool    `json:"forcePurge" tfsdk:"force_purge"`
	CreatedOn           string  `json:"createdOn" tfsdk:"created_on"`
	MarkedForDeletionOn *string `json:"markedForDeletionOn" tfsdk:"marked_for_deletion_on"`
	MarkedForDeletionBy *string `json:"markedForDeletionBy" tfsdk:"marked_for_deletion_by"`
}

type MeshBuildingBlockOutput

type MeshBuildingBlockOutput struct {
	Value          types.Any                                                   `json:"value" tfsdk:"value"`
	ValueType      enum.Entry[MeshBuildingBlockIOType]                         `json:"valueType" tfsdk:"value_type"`
	AssignmentType enum.Entry[MeshBuildingBlockDefinitionOutputAssignmentType] `json:"assignmentType" tfsdk:"assignment_type"`
}

type MeshBuildingBlockParent

type MeshBuildingBlockParent struct {
	BuildingBlockUuid string `json:"buildingBlockUuid" tfsdk:"buildingblock_uuid"`
	DefinitionUuid    string `json:"definitionUuid" tfsdk:"definition_uuid"`
}

type MeshBuildingBlockRun

type MeshBuildingBlockRun struct {
	Metadata MeshBuildingBlockRunMetadata `json:"metadata"`
	Spec     MeshBuildingBlockRunSpec     `json:"spec"`
	Status   string                       `json:"status"`
}

type MeshBuildingBlockRunBuildingBlock added in v0.2.0

type MeshBuildingBlockRunBuildingBlock struct {
	Uuid string                                `json:"uuid"`
	Spec MeshBuildingBlockRunBuildingBlockSpec `json:"spec"`
}

MeshBuildingBlockRunBuildingBlock is spec.buildingBlock of a meshBuildingBlockRun. The wire also carries spec.buildingBlock.spec.inputs, which holds the run's input values and is left out here because a sensitive one goes out encrypted for the runner alone.

type MeshBuildingBlockRunBuildingBlockSpec added in v0.2.0

type MeshBuildingBlockRunBuildingBlockSpec struct {
	DisplayName            string                       `json:"displayName"`
	TargetRef              MeshBuildingBlockV2TargetRef `json:"targetRef"`
	WorkspaceIdentifier    string                       `json:"workspaceIdentifier"`
	ProjectIdentifier      *string                      `json:"projectIdentifier"`
	FullPlatformIdentifier *string                      `json:"fullPlatformIdentifier"`
}

type MeshBuildingBlockRunClient

type MeshBuildingBlockRunClient interface {
	GetLogs(ctx context.Context, runUuid string) (MeshBuildingBlockRunLogs, error)
}

type MeshBuildingBlockRunListFilter added in v0.2.0

type MeshBuildingBlockRunListFilter struct {
	BuildingBlockUuid uuid.UUID    `json:"buildingBlockUuid,omitzero"`
	Sort              SortCriteria `json:"sort"`
}

type MeshBuildingBlockRunLogs

type MeshBuildingBlockRunLogs struct {
	Steps []MeshBuildingBlockRunStepLog `json:"steps"`
}

type MeshBuildingBlockRunMetadata

type MeshBuildingBlockRunMetadata struct {
	Uuid      string    `json:"uuid"`
	CreatedAt time.Time `json:"createdAt"`
}

type MeshBuildingBlockRunSpec

type MeshBuildingBlockRunSpec struct {
	RunNumber     int64                             `json:"runNumber"`
	Behavior      string                            `json:"behavior"`
	BuildingBlock MeshBuildingBlockRunBuildingBlock `json:"buildingBlock"`
}

type MeshBuildingBlockRunStepLog

type MeshBuildingBlockRunStepLog struct {
	DisplayName   string  `json:"displayName"`
	Status        string  `json:"status"`
	UserMessage   *string `json:"userMessage"`
	SystemMessage *string `json:"systemMessage"`
}

type MeshBuildingBlockRunner

type MeshBuildingBlockRunner struct {
	Metadata MeshBuildingBlockRunnerMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshBuildingBlockRunnerSpec     `json:"spec" tfsdk:"spec"`
}

type MeshBuildingBlockRunnerClient

type MeshBuildingBlockRunnerClient interface {
	Create(ctx context.Context, runner MeshBuildingBlockRunner) (*MeshBuildingBlockRunner, error)
	Read(ctx context.Context, uuid string) (*MeshBuildingBlockRunner, error)
	Update(ctx context.Context, runner MeshBuildingBlockRunner) (*MeshBuildingBlockRunner, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshBuildingBlockRunnerImplementationType

type MeshBuildingBlockRunnerImplementationType string
const (
	MeshBuildingBlockRunnerImplementationTypeTerraform           MeshBuildingBlockRunnerImplementationType = "TERRAFORM"
	MeshBuildingBlockRunnerImplementationTypeGithubWorkflow      MeshBuildingBlockRunnerImplementationType = "GITHUB_WORKFLOW"
	MeshBuildingBlockRunnerImplementationTypeGitlabPipeline      MeshBuildingBlockRunnerImplementationType = "GITLAB_PIPELINE"
	MeshBuildingBlockRunnerImplementationTypeAzureDevopsPipeline MeshBuildingBlockRunnerImplementationType = "AZURE_DEVOPS_PIPELINE"
	MeshBuildingBlockRunnerImplementationTypeManual              MeshBuildingBlockRunnerImplementationType = "MANUAL"
	MeshBuildingBlockRunnerImplementationTypeAll                 MeshBuildingBlockRunnerImplementationType = "ALL"
)

TODO Turn this into enum!

type MeshBuildingBlockRunnerMetadata

type MeshBuildingBlockRunnerMetadata struct {
	Uuid             *string `json:"uuid,omitzero" tfsdk:"uuid"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	CreatedOn        *string `json:"createdOn,omitzero" tfsdk:"created_on"`
	LastSeen         *string `json:"lastSeen,omitzero" tfsdk:"last_seen"`
}

type MeshBuildingBlockRunnerSpec

type MeshBuildingBlockRunnerSpec struct {
	DisplayName                string                         `json:"displayName" tfsdk:"display_name"`
	PublicKey                  string                         `json:"publicKey" tfsdk:"public_key"`
	ImplementationType         string                         `json:"implementationType" tfsdk:"implementation_type"`
	Restriction                *string                        `json:"restriction,omitzero" tfsdk:"restriction"`
	IsSelfHosted               *bool                          `json:"isSelfHosted,omitzero" tfsdk:"is_self_hosted"`
	WorkloadIdentityFederation *MeshRunnerWorkloadIdentityFed `json:"workloadIdentityFederation,omitzero" tfsdk:"workload_identity_federation"`
}

type MeshBuildingBlockScheduleFrequency

type MeshBuildingBlockScheduleFrequency string

type MeshBuildingBlockScheduleMode

type MeshBuildingBlockScheduleMode string

type MeshBuildingBlockSpec

type MeshBuildingBlockSpec struct {
	DisplayName          string                    `json:"displayName" tfsdk:"display_name"`
	Inputs               []MeshBuildingBlockIO     `json:"inputs" tfsdk:"inputs"`
	ParentBuildingBlocks []MeshBuildingBlockParent `json:"parentBuildingBlocks" tfsdk:"parent_building_blocks"`
}

type MeshBuildingBlockStatus

type MeshBuildingBlockStatus struct {
	Status  string                `json:"status" tfsdk:"status"`
	Outputs []MeshBuildingBlockIO `json:"outputs" tfsdk:"outputs"`
}

type MeshBuildingBlockTagInputTarget

type MeshBuildingBlockTagInputTarget string

MeshBuildingBlockTagInputTarget names the meshObject a tag input reads its tag from. It is the first half of the input's argument, `<target>.<tag key>`.

type MeshBuildingBlockType

type MeshBuildingBlockType string

func (MeshBuildingBlockType) TagInputTargets added in v0.3.0

TagInputTargets follows what a building block sees: a workspace building block runs in the context of its workspace only, while a tenant building block also sees its project, and that project's payment method and landing zone.

type MeshBuildingBlockV2

type MeshBuildingBlockV2 struct {
	Metadata MeshBuildingBlockV2Metadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshBuildingBlockV2Spec     `json:"spec" tfsdk:"spec"`
	Status   *MeshBuildingBlockV2Status  `json:"status" tfsdk:"status"`
}

func (*MeshBuildingBlockV2) CreateSuccessful

func (bb *MeshBuildingBlockV2) CreateSuccessful() (done bool, err error)

func (*MeshBuildingBlockV2) DeletionSuccessful

func (bb *MeshBuildingBlockV2) DeletionSuccessful() (done bool, err error)

func (*MeshBuildingBlockV2) IsWaitingForInput

func (bb *MeshBuildingBlockV2) IsWaitingForInput() bool

type MeshBuildingBlockV2Client

type MeshBuildingBlockV2Client interface {
	Read(ctx context.Context, uuid string) (*MeshBuildingBlockV2, error)
	ReadFunc(uuid string) func(ctx context.Context) (*MeshBuildingBlockV2, error)
	List(ctx context.Context, filter MeshBuildingBlockV2ListFilter) ([]MeshBuildingBlockV2, error)
	Create(ctx context.Context, bb *MeshBuildingBlockV2) (*MeshBuildingBlockV2, error)
	Update(ctx context.Context, bb *MeshBuildingBlockV2) (*MeshBuildingBlockV2, error)
	Delete(ctx context.Context, uuid string, purge bool) error
	TriggerRun(ctx context.Context, uuid string) (*MeshBuildingBlockV2, error)
}

type MeshBuildingBlockV2DefinitionVersionRef

type MeshBuildingBlockV2DefinitionVersionRef struct {
	UuidRef

	// ContentHash never reaches the backend. A Terraform config changes it to ask for a rerun when
	// the content of the referenced version changed but its uuid did not; see rerunNeeded in
	// terraform-provider-meshstack.
	ContentHash *string `json:"-" tfsdk:"content_hash"`
}

type MeshBuildingBlockV2Lifecycle

type MeshBuildingBlockV2Lifecycle struct {
	State enum.Entry[BuildingBlockLifecycleState] `json:"state" tfsdk:"state"`
}

type MeshBuildingBlockV2ListFilter

type MeshBuildingBlockV2ListFilter struct {
	WorkspaceIdentifier *string `json:"workspaceIdentifier"`
	ProjectIdentifier   *string `json:"projectIdentifier"`
	PlatformIdentifier  *string `json:"platformIdentifier"`
	Name                *string `json:"name"`
	DefinitionName      *string `json:"definitionName"`
	DefinitionUuid      *string `json:"definitionUuid"`
	VersionUuid         *string `json:"versionUuid"`
	// VersionNumber matches version 1 for both "v1" and "1".
	VersionNumber *string `json:"versionNumber"`
	TenantUuid    *string `json:"tenantUuid"`
	// TargetKind is meshTenant or meshWorkspace.
	TargetKind *string `json:"targetRefKind"`
	Status     *string `json:"status"`
	// HealthStatus and Action match a building block that has any one of the values.
	HealthStatus []string `json:"healthStatus"`
	Action       []string `json:"action"`
	// ManagedByWorkspaceIdentifier and ManagedByDefinitionUuid list the building blocks of the
	// definitions a platform operator owns, and need the MANAGED_BUILDINGBLOCK_LIST permission.
	ManagedByWorkspaceIdentifier *string      `json:"managedByWorkspaceIdentifier"`
	ManagedByDefinitionUuid      *string      `json:"managedByDefinitionUuid"`
	Sort                         SortCriteria `json:"sort"`
}

MeshBuildingBlockV2ListFilter never matches a soft-deleted building block: the endpoint lists only active ones. The json tags are the query parameter names and must match the @RequestParam names of fetchBuildingBlocksV2 in the meshStack backend, which ignores an unknown parameter, so a typo turns the filter off without an error.

type MeshBuildingBlockV2Metadata

type MeshBuildingBlockV2Metadata struct {
	Uuid             *string `json:"uuid" tfsdk:"uuid"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshBuildingBlockV2Parent

type MeshBuildingBlockV2Parent struct {
	UuidRef

	// BuildingBlockUuid always holds the same value as Uuid.
	BuildingBlockUuid string `json:"buildingBlockUuid"`
	// DefinitionUuid is the parent's building block definition. The backend derives it from the
	// referenced block, so every response carries it and a request never does.
	DefinitionUuid string `json:"definitionUuid,omitempty"`
}

MeshBuildingBlockV2Parent is an entry of the deprecated parentBuildingBlocks field.

func (*MeshBuildingBlockV2Parent) UnmarshalJSON

func (p *MeshBuildingBlockV2Parent) UnmarshalJSON(data []byte) error

UnmarshalJSON fills Uuid from the deprecated buildingBlockUuid, which is where a response carries the parent's identity.

type MeshBuildingBlockV2Spec

type MeshBuildingBlockV2Spec struct {
	BuildingBlockDefinitionVersionRef MeshBuildingBlockV2DefinitionVersionRef `json:"buildingBlockDefinitionVersionRef" tfsdk:"building_block_definition_version_ref"`
	TargetRef                         MeshBuildingBlockV2TargetRef            `json:"targetRef" tfsdk:"target_ref"`
	DisplayName                       string                                  `json:"displayName" tfsdk:"display_name"`

	// Inputs as pointer MeshBuildingBlockInput to support mocking secret responses.
	Inputs                  map[string]*MeshBuildingBlockInput `json:"inputs" tfsdk:"inputs"`
	ParentBuildingBlockRefs types.Set[UuidRef]                 `json:"parentBuildingBlockRefs" tfsdk:"parent_building_block_refs"`

	// ParentBuildingBlocks is the deprecated parentBuildingBlocks field, which MarshalJSON and
	// UnmarshalJSON carry. The deprecated meshstack_building_block_v2 surfaces of the Terraform
	// provider read the definition uuid they report from it.
	ParentBuildingBlocks types.Set[MeshBuildingBlockV2Parent] `json:"-" tfsdk:"-"`
}

func (MeshBuildingBlockV2Spec) MarshalJSON

func (s MeshBuildingBlockV2Spec) MarshalJSON() ([]byte, error)

MarshalJSON sends the parents under both field names: parentBuildingBlockRefs, and the deprecated parentBuildingBlocks for a backend that does not know the new field yet. A newer backend accepts both as long as they name the same building blocks, and an older one ignores the field it does not know, because the meshObject API does not reject unknown properties.

Together with UnmarshalJSON this is the whole compatibility window. Once every backend still in use knows parentBuildingBlockRefs, both methods can go.

func (*MeshBuildingBlockV2Spec) UnmarshalJSON

func (s *MeshBuildingBlockV2Spec) UnmarshalJSON(data []byte) error

UnmarshalJSON reads the parents from parentBuildingBlockRefs, or from the deprecated parentBuildingBlocks when a backend does not serve the new field yet. Terraform then sees the same elements against either backend and set hashing stays stable.

type MeshBuildingBlockV2Status

type MeshBuildingBlockV2Status struct {
	Status     enum.Entry[BuildingBlockStatus]    `json:"status" tfsdk:"status"`
	Outputs    map[string]MeshBuildingBlockOutput `json:"outputs" tfsdk:"outputs"`
	ForcePurge bool                               `json:"forcePurge" tfsdk:"force_purge"`
	Lifecycle  MeshBuildingBlockV2Lifecycle       `json:"lifecycle" tfsdk:"-"`
	// LatestRunUuid tracks the latest *modifying* (apply/destroy) run and excludes dry runs. It is nil
	// only when no such run exists: run_transparency gates reading the run and its system messages, not
	// this identifier (MeshBuildingBlockV2RepresentationModelAssembler.resolveLatestRunUuid).
	LatestRunUuid *string `json:"latestRunUuid" tfsdk:"latest_run_uuid"`
	// LatestDryRunUuid is the latest dry (DETECT) run, but only when it is the newest run; nil otherwise.
	// Ungated like LatestRunUuid.
	LatestDryRunUuid *string `json:"latestDryRunUuid" tfsdk:"latest_dry_run_uuid"`
	// RunStartFailure says why meshStack could not start the run it was last asked for, phrased for the
	// user, and is nil while nothing stands in the way of a run. meshStack records it, and stamps
	// RunStartFailedOn anew, each time a request for a run fails to start one.
	RunStartFailure  *string `json:"runStartFailure" tfsdk:"-"`
	RunStartFailedOn *string `json:"runStartFailedOn" tfsdk:"-"`
}

type MeshBuildingBlockV2TargetRef

type MeshBuildingBlockV2TargetRef struct {
	Kind string  `json:"kind" tfsdk:"kind"`
	Uuid *string `json:"uuid" tfsdk:"uuid"`
	Name *string `json:"name" tfsdk:"name"`
}

type MeshEventLog added in v0.3.0

type MeshEventLog struct {
	Metadata MeshEventLogMetadata `json:"metadata"`
	Spec     MeshEventLogSpec     `json:"spec"`
	Status   MeshEventLogStatus   `json:"status"`
}

type MeshEventLogAuthor added in v0.3.0

type MeshEventLogAuthor struct {
	// Type is one of ApiKey, ApiUser, System and User, and decides what Identifier is: the uuid of
	// the meshApiKey, the name of the API user, "system", or the uuid of the meshUser.
	Type        string  `json:"type"`
	Identifier  string  `json:"identifier"`
	DisplayName *string `json:"displayName"`
	Username    *string `json:"username"`
	Email       *string `json:"email"`
	Euid        *string `json:"euid"`
}

type MeshEventLogCreated added in v0.3.0

type MeshEventLogCreated struct {
	Timestamp time.Time           `json:"timestamp"`
	Author    *MeshEventLogAuthor `json:"author"`
}

type MeshEventLogListFilter added in v0.3.0

type MeshEventLogListFilter struct {
	From  time.Time `json:"from,omitzero"`
	Until time.Time `json:"until,omitzero"`
	Title string    `json:"title"`
	// ExcludeTitle leaves out the event logs of each title exactly, for an event type of high volume.
	ExcludeTitle     []string `json:"excludeTitle"`
	Description      string   `json:"description"`
	EventType        string   `json:"eventType"`
	AuthorType       string   `json:"authorType"`
	AuthorIdentifier string   `json:"authorIdentifier"`
	// WorkspaceIdentifier and WorkspaceName, which matches part of the display name, exclude
	// each other.
	WorkspaceIdentifier string       `json:"workspaceIdentifier"`
	WorkspaceName       string       `json:"workspaceName"`
	Sort                SortCriteria `json:"sort"`
}

type MeshEventLogMetadata added in v0.3.0

type MeshEventLogMetadata struct {
	Uuid string `json:"uuid"`
}

type MeshEventLogSpec added in v0.3.0

type MeshEventLogSpec struct {
	Title       string `json:"title"`
	Description string `json:"description"`
	// EventType is one of Added, Approved, Cancelled, Changed, Created, Deleted, Rejected, Removed
	// and Requested.
	EventType string `json:"eventType"`
	// WorkspaceRef is nil for an event of the whole platform.
	WorkspaceRef *MeshEventLogWorkspaceRef `json:"workspaceRef"`
	// Content is an object of no fixed shape. PreviousContent is null but for a Changed event.
	Content         jsontext.Value `json:"content"`
	PreviousContent jsontext.Value `json:"previousContent"`
}

type MeshEventLogStatus added in v0.3.0

type MeshEventLogStatus struct {
	Created MeshEventLogCreated `json:"created"`
}

type MeshEventLogWorkspaceRef added in v0.3.0

type MeshEventLogWorkspaceRef struct {
	Kind string `json:"kind"`
	// Name is the workspace identifier.
	Name string `json:"name"`
}

type MeshFeatureFlag

type MeshFeatureFlag string

MeshFeatureFlag names an optional meshStack capability. /mesh/info reports each one as a bool of its own, so a consumer that wants a list of names maps them itself.

type MeshInfo

type MeshInfo struct {
	Version string `json:"version" tfsdk:"version"`
	// Is4EPEnabled means "Is four-eyes principle enabled"
	Is4EPEnabled             bool              `json:"is4EPEnabled" tfsdk:"-"`
	Metadata                 map[string]string `json:"metadata" tfsdk:"metadata"`
	AdminWorkspaceIdentifier string            `json:"adminWorkspaceIdentifier" tfsdk:"admin_workspace_identifier"`
	Issuer                   xurl.URL          `json:"issuer" tfsdk:"-"`
	CliClientId              string            `json:"cliClientId" tfsdk:"-"`
}

MeshInfo is the /mesh/info document, which meshStack serves without authentication.

func (MeshInfo) CheckVersion

func (info MeshInfo) CheckVersion() error

type MeshInfoClient

type MeshInfoClient interface {
	Read(ctx context.Context) (MeshInfo, error)
}

func NewMeshInfoClient

func NewMeshInfoClient(client http.Client, endpoint xurl.URL) MeshInfoClient

type MeshIntegration

type MeshIntegration struct {
	Metadata MeshIntegrationMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshIntegrationSpec     `json:"spec" tfsdk:"spec"`
	Status   *MeshIntegrationStatus  `json:"status" tfsdk:"status"`
}

type MeshIntegrationAzureDevopsConfig

type MeshIntegrationAzureDevopsConfig struct {
	BaseUrl             string       `json:"baseUrl" tfsdk:"base_url"`
	Organization        string       `json:"organization" tfsdk:"organization"`
	PersonalAccessToken types.Secret `json:"personalAccessToken" tfsdk:"personal_access_token"`
	RunnerRef           *UuidRef     `json:"runnerRef" tfsdk:"runner_ref"`
}

type MeshIntegrationClient

type MeshIntegrationClient interface {
	Create(ctx context.Context, integration MeshIntegration) (*MeshIntegration, error)
	Read(ctx context.Context, uuid string) (*MeshIntegration, error)
	Update(ctx context.Context, integration MeshIntegration) (*MeshIntegration, error)
	Delete(ctx context.Context, uuid string) error
	List(ctx context.Context) ([]MeshIntegration, error)
}

type MeshIntegrationConfig

type MeshIntegrationConfig struct {
	Type        enum.Entry[MeshIntegrationConfigType] `json:"type" tfsdk:"-"`
	Github      *MeshIntegrationGithubConfig          `json:"github,omitzero" tfsdk:"github"`
	Gitlab      *MeshIntegrationGitlabConfig          `json:"gitlab,omitzero" tfsdk:"gitlab"`
	AzureDevops *MeshIntegrationAzureDevopsConfig     `json:"azuredevops,omitzero" tfsdk:"azuredevops"`
	EntraId     *MeshIntegrationEntraIdConfig         `json:"entraid,omitzero" tfsdk:"entraid"`
}

func (MeshIntegrationConfig) InferType added in v0.2.0

func (MeshIntegrationConfig) MarshalJSON

func (m MeshIntegrationConfig) MarshalJSON() ([]byte, error)

func (*MeshIntegrationConfig) UnmarshalJSON

func (m *MeshIntegrationConfig) UnmarshalJSON(bytes []byte) error

type MeshIntegrationConfigType

type MeshIntegrationConfigType string

type MeshIntegrationEntraIdConfig

type MeshIntegrationEntraIdConfig struct {
	TenantId     string       `json:"tenantId" tfsdk:"tenant_id"`
	ClientId     string       `json:"clientId" tfsdk:"client_id"`
	ClientSecret types.Secret `json:"clientSecret" tfsdk:"client_secret"`
	IdpAlias     *string      `json:"idpAlias,omitzero" tfsdk:"idp_alias"`
	// meshStack derives this and returns it inside spec, which configuration writes. A computed value
	// there is unreachable under provider mocks (issue #272), so Terraform reads it from status instead.
	RedirectUrl *string `json:"redirectUrl,omitzero" tfsdk:"-"`
}

type MeshIntegrationGithubConfig

type MeshIntegrationGithubConfig struct {
	Owner         string       `json:"owner" tfsdk:"owner"`
	BaseUrl       string       `json:"baseUrl" tfsdk:"base_url"`
	AppId         string       `json:"appId" tfsdk:"app_id"`
	AppPrivateKey types.Secret `json:"appPrivateKey" tfsdk:"app_private_key"`
	RunnerRef     *UuidRef     `json:"runnerRef" tfsdk:"runner_ref"`
}

type MeshIntegrationGitlabConfig

type MeshIntegrationGitlabConfig struct {
	BaseUrl   string   `json:"baseUrl" tfsdk:"base_url"`
	RunnerRef *UuidRef `json:"runnerRef" tfsdk:"runner_ref"`
}

type MeshIntegrationMetadata

type MeshIntegrationMetadata struct {
	Uuid             *string `json:"uuid,omitzero" tfsdk:"uuid"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshIntegrationSpec

type MeshIntegrationSpec struct {
	DisplayName string                `json:"displayName" tfsdk:"display_name"`
	Config      MeshIntegrationConfig `json:"config" tfsdk:"config"`
}

type MeshIntegrationStatus

type MeshIntegrationStatus struct {
	IsBuiltIn                  bool                            `json:"isBuiltIn" tfsdk:"is_built_in"`
	WorkloadIdentityFederation *MeshWorkloadIdentityFederation `json:"workloadIdentityFederation" tfsdk:"workload_identity_federation"`
}

type MeshLandingZone

type MeshLandingZone struct {
	Metadata MeshLandingZoneMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshLandingZoneSpec     `json:"spec" tfsdk:"spec"`
	Status   MeshLandingZoneStatus   `json:"status" tfsdk:"status"`
}

type MeshLandingZoneClient

type MeshLandingZoneClient interface {
	Read(ctx context.Context, name string) (*MeshLandingZone, error)
	List(ctx context.Context, query MeshLandingZoneListQuery) ([]MeshLandingZone, error)
	Create(ctx context.Context, landingZone *MeshLandingZoneCreate) (*MeshLandingZone, error)
	Update(ctx context.Context, name string, landingZone *MeshLandingZoneCreate) (*MeshLandingZone, error)
	Delete(ctx context.Context, name string) error
}

type MeshLandingZoneCreate

type MeshLandingZoneCreate struct {
	Metadata MeshLandingZoneMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshLandingZoneSpec     `json:"spec" tfsdk:"spec"`
}

type MeshLandingZoneListQuery

type MeshLandingZoneListQuery struct {
	PlatformUuid     *string `json:"platformUuid"`
	Identifier       *string `json:"identifier"`
	DisplayName      *string `json:"displayName"`
	Restricted       *bool   `json:"restricted"`
	OwnedByWorkspace *string `json:"ownedByWorkspace"`
}

type MeshLandingZoneMetadata

type MeshLandingZoneMetadata struct {
	Name             string              `json:"name" tfsdk:"name"`
	OwnedByWorkspace string              `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	Tags             map[string][]string `json:"tags" tfsdk:"tags"`
}

type MeshLandingZonePlatformProperties

type MeshLandingZonePlatformProperties struct {
	Type       string                        `json:"type" tfsdk:"type"`
	Aws        *AwsPlatformProperties        `json:"aws" tfsdk:"aws"`
	Aks        *AksPlatformProperties        `json:"aks" tfsdk:"aks"`
	Azure      *AzurePlatformProperties      `json:"azure" tfsdk:"azure"`
	AzureRg    *AzureRgPlatformProperties    `json:"azurerg" tfsdk:"azurerg"`
	Custom     *CustomPlatformProperties     `json:"custom" tfsdk:"custom"`
	Gcp        *GcpPlatformProperties        `json:"gcp" tfsdk:"gcp"`
	Kubernetes *KubernetesPlatformProperties `json:"kubernetes" tfsdk:"kubernetes"`
	OpenShift  *OpenShiftPlatformProperties  `json:"openshift" tfsdk:"openshift"`
}

type MeshLandingZoneQuota

type MeshLandingZoneQuota struct {
	Key   string `json:"key" tfsdk:"key"`
	Value int64  `json:"value" tfsdk:"value"`
}

type MeshLandingZoneSpec

type MeshLandingZoneSpec struct {
	DisplayName                 string `json:"displayName" tfsdk:"display_name"`
	Description                 string `json:"description" tfsdk:"description"`
	AutomateDeletionApproval    bool   `json:"automateDeletionApproval" tfsdk:"automate_deletion_approval"`
	AutomateDeletionReplication bool   `json:"automateDeletionReplication" tfsdk:"automate_deletion_replication"`
	// Nullable in the API, where absent means "keep the stored value" — hence no `,omitempty`: the
	// schema defaults this to false, so the provider always states the value it wants and never
	// asks the backend to keep whatever is stored.
	Restricted                   bool                               `json:"restricted" tfsdk:"restricted"`
	InfoLink                     *string                            `json:"infoLink,omitzero" tfsdk:"info_link"`
	PlatformRef                  UuidRef                            `json:"platformRef" tfsdk:"platform_ref"`
	PlatformProperties           *MeshLandingZonePlatformProperties `json:"platformProperties,omitzero" tfsdk:"platform_properties"`
	Quotas                       []MeshLandingZoneQuota             `json:"quotas" tfsdk:"quotas"`
	MandatoryBuildingBlockRefs   []UuidRef                          `json:"mandatoryBuildingBlockRefs" tfsdk:"mandatory_building_block_refs"`
	RecommendedBuildingBlockRefs []UuidRef                          `json:"recommendedBuildingBlockRefs" tfsdk:"recommended_building_block_refs"`
}

type MeshLandingZoneStatus

type MeshLandingZoneStatus struct {
	Disabled   bool `json:"disabled" tfsdk:"disabled"`
	Restricted bool `json:"restricted" tfsdk:"restricted"`
}

type MeshLocation

type MeshLocation struct {
	Metadata MeshLocationMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshLocationSpec     `json:"spec" tfsdk:"spec"`
	Status   MeshLocationStatus   `json:"status" tfsdk:"status"`
}

type MeshLocationClient

type MeshLocationClient interface {
	Read(ctx context.Context, name string) (*MeshLocation, error)
	Create(ctx context.Context, location *MeshLocationCreate) (*MeshLocation, error)
	Update(ctx context.Context, name string, location *MeshLocationCreate) (*MeshLocation, error)
	Delete(ctx context.Context, name string) error
}

type MeshLocationCreate

type MeshLocationCreate struct {
	Metadata MeshLocationCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshLocationSpec           `json:"spec" tfsdk:"spec"`
}

type MeshLocationCreateMetadata

type MeshLocationCreateMetadata struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshLocationMetadata

type MeshLocationMetadata struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	Uuid             string `json:"uuid" tfsdk:"uuid"`
}

type MeshLocationSpec

type MeshLocationSpec struct {
	DisplayName string `json:"displayName" tfsdk:"display_name"`
	Description string `json:"description" tfsdk:"description"`
}

type MeshLocationStatus

type MeshLocationStatus struct {
	IsPublic bool `json:"isPublic" tfsdk:"is_public"`
}

type MeshPaymentMethod

type MeshPaymentMethod struct {
	Metadata MeshPaymentMethodMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshPaymentMethodSpec     `json:"spec" tfsdk:"spec"`
}

type MeshPaymentMethodClient

type MeshPaymentMethodClient interface {
	Read(ctx context.Context, identifier string) (*MeshPaymentMethod, error)
	Create(ctx context.Context, paymentMethod *MeshPaymentMethodCreate) (*MeshPaymentMethod, error)
	Update(ctx context.Context, identifier string, paymentMethod *MeshPaymentMethodCreate) (*MeshPaymentMethod, error)
	Delete(ctx context.Context, identifier string) error
}

type MeshPaymentMethodCreate

type MeshPaymentMethodCreate struct {
	Metadata MeshPaymentMethodCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshPaymentMethodSpec           `json:"spec" tfsdk:"spec"`
}

type MeshPaymentMethodCreateMetadata

type MeshPaymentMethodCreateMetadata struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshPaymentMethodMetadata

type MeshPaymentMethodMetadata struct {
	Name             string  `json:"name" tfsdk:"name"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	CreatedOn        string  `json:"createdOn" tfsdk:"created_on"`
	DeletedOn        *string `json:"deletedOn" tfsdk:"deleted_on"`
}

type MeshPaymentMethodSpec

type MeshPaymentMethodSpec struct {
	DisplayName    string              `json:"displayName" tfsdk:"display_name"`
	ExpirationDate *string             `json:"expirationDate,omitzero" tfsdk:"expiration_date"`
	Amount         *int64              `json:"amount,omitzero" tfsdk:"amount"`
	Tags           map[string][]string `json:"tags,omitempty" tfsdk:"tags"`
}

type MeshPlatform

type MeshPlatform struct {
	Metadata MeshPlatformMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshPlatformSpec     `json:"spec" tfsdk:"spec"`
}

type MeshPlatformClient

type MeshPlatformClient interface {
	Read(ctx context.Context, uuid string) (*MeshPlatform, error)
	List(ctx context.Context, query MeshPlatformListQuery) ([]MeshPlatform, error)
	Create(ctx context.Context, platform MeshPlatform) (*MeshPlatform, error)
	Update(ctx context.Context, uuid string, platform MeshPlatform) (*MeshPlatform, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshPlatformListQuery

type MeshPlatformListQuery struct {
	OwnedByWorkspace      *string `json:"ownedByWorkspace"`
	Identifier            *string `json:"identifier"`
	LocationIdentifier    *string `json:"locationIdentifier"`
	DisplayName           *string `json:"displayName"`
	Restriction           *string `json:"restriction"`
	PublicationState      *string `json:"publicationState"`
	ContributingWorkspace *string `json:"contributingWorkspace"`
	// PlatformTypeIdentifier can only be filtered by the backend: a response does not carry the type,
	// and spec.config is redacted for marketplace consumers.
	PlatformTypeIdentifier *string `json:"platformTypeIdentifier"`
}

type MeshPlatformMetadata

type MeshPlatformMetadata struct {
	Name             string  `json:"name" tfsdk:"name"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	Uuid             *string `json:"uuid,omitzero" tfsdk:"uuid"`
}

type MeshPlatformMeteringProcessingConfig

type MeshPlatformMeteringProcessingConfig struct {
	CompactTimelinesAfterDays int64 `json:"compactTimelinesAfterDays" tfsdk:"compact_timelines_after_days"`
	DeleteRawDataAfterDays    int64 `json:"deleteRawDataAfterDays" tfsdk:"delete_raw_data_after_days"`
}

type MeshPlatformSpec

type MeshPlatformSpec struct {
	DisplayName            string               `json:"displayName" tfsdk:"display_name"`
	Description            string               `json:"description" tfsdk:"description"`
	Endpoint               string               `json:"endpoint" tfsdk:"endpoint"`
	SupportUrl             *string              `json:"supportUrl,omitzero" tfsdk:"support_url"`
	DocumentationUrl       *string              `json:"documentationUrl,omitzero" tfsdk:"documentation_url"`
	AccessInformation      *string              `json:"accessInformation,omitzero" tfsdk:"access_information"`
	LocationRef            NamedRef             `json:"locationRef" tfsdk:"location_ref"`
	ContributingWorkspaces types.Set[string]    `json:"contributingWorkspaces" tfsdk:"contributing_workspaces"`
	Availability           PlatformAvailability `json:"availability" tfsdk:"availability"`
	// Config is nullable in responses: redacted (omitted) for marketplace-consumer callers. Required on write.
	Config           *PlatformConfig            `json:"config,omitzero" tfsdk:"config"`
	QuotaDefinitions types.Set[QuotaDefinition] `json:"quotaDefinitions" tfsdk:"quota_definitions"`
}

type MeshPlatformType

type MeshPlatformType struct {
	Metadata MeshPlatformTypeMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshPlatformTypeSpec     `json:"spec" tfsdk:"spec"`
	Status   MeshPlatformTypeStatus   `json:"status" tfsdk:"status"`
}

type MeshPlatformTypeClient

type MeshPlatformTypeClient interface {
	Create(ctx context.Context, platformType *MeshPlatformTypeCreate) (*MeshPlatformType, error)
	Read(ctx context.Context, identifier string) (*MeshPlatformType, error)
	Update(ctx context.Context, name string, platformType *MeshPlatformTypeCreate) (*MeshPlatformType, error)
	Delete(ctx context.Context, name string) error
	List(ctx context.Context, category *string, lifecycleStatus *string) ([]MeshPlatformType, error)
}

type MeshPlatformTypeCreate

type MeshPlatformTypeCreate struct {
	Metadata MeshPlatformTypeCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshPlatformTypeSpec           `json:"spec" tfsdk:"spec"`
}

type MeshPlatformTypeCreateMetadata

type MeshPlatformTypeCreateMetadata struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshPlatformTypeLifecycle

type MeshPlatformTypeLifecycle struct {
	State string `json:"state" tfsdk:"state"`
}

type MeshPlatformTypeMetadata

type MeshPlatformTypeMetadata struct {
	Name             string  `json:"name" tfsdk:"name"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	Uuid             *string `json:"uuid,omitzero" tfsdk:"uuid"`
}

type MeshPlatformTypeSpec

type MeshPlatformTypeSpec struct {
	DisplayName     string  `json:"displayName" tfsdk:"display_name"`
	Category        string  `json:"category" tfsdk:"category"`
	DefaultEndpoint *string `json:"defaultEndpoint,omitzero" tfsdk:"default_endpoint"`
	Icon            string  `json:"icon" tfsdk:"icon"`
}

type MeshPlatformTypeStatus

type MeshPlatformTypeStatus struct {
	Lifecycle MeshPlatformTypeLifecycle `json:"lifecycle" tfsdk:"lifecycle"`
}

type MeshProject

type MeshProject struct {
	Metadata MeshProjectMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshProjectSpec     `json:"spec" tfsdk:"spec"`
}

type MeshProjectBinding

type MeshProjectBinding struct {
	Metadata  MeshProjectBindingMetadata `json:"metadata" tfsdk:"metadata"`
	RoleRef   MeshProjectRoleRef         `json:"roleRef" tfsdk:"role_ref"`
	TargetRef MeshProjectTargetRef       `json:"targetRef" tfsdk:"target_ref"`
	Subject   MeshSubject                `json:"subject" tfsdk:"subject"`
}

type MeshProjectBindingMetadata

type MeshProjectBindingMetadata struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshProjectClient

type MeshProjectClient interface {
	Read(ctx context.Context, workspace string, name string) (*MeshProject, error)
	List(ctx context.Context, workspaceIdentifier string, paymentMethodIdentifier *string) ([]MeshProject, error)
	Create(ctx context.Context, project *MeshProjectCreate) (*MeshProject, error)
	Update(ctx context.Context, project *MeshProjectCreate) (*MeshProject, error)
	Delete(ctx context.Context, workspace string, name string) error
}

type MeshProjectCreate

type MeshProjectCreate struct {
	Metadata MeshProjectCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshProjectSpec           `json:"spec" tfsdk:"spec"`
}

type MeshProjectCreateMetadata

type MeshProjectCreateMetadata struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshProjectGroupBinding

type MeshProjectGroupBinding struct {
	MeshProjectBinding
}

type MeshProjectGroupBindingClient

type MeshProjectGroupBindingClient interface {
	Read(ctx context.Context, name string) (*MeshProjectGroupBinding, error)
	Create(ctx context.Context, binding *MeshProjectGroupBinding) (*MeshProjectGroupBinding, error)
	Delete(ctx context.Context, name string) error
}

type MeshProjectMetadata

type MeshProjectMetadata struct {
	Name             string  `json:"name" tfsdk:"name"`
	OwnedByWorkspace string  `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	CreatedOn        string  `json:"createdOn" tfsdk:"created_on"`
	DeletedOn        *string `json:"deletedOn" tfsdk:"deleted_on"`
}

type MeshProjectRoleRef deprecated

type MeshProjectRoleRef struct {
	Name string `json:"name" tfsdk:"name"`
}

MeshProjectRoleRef names a role by its name alone.

Deprecated: use NamedRef, which also carries the kind. MeshProjectRoleRef is only for a meshObject whose API leaves the kind out.

type MeshProjectSpec

type MeshProjectSpec struct {
	DisplayName                       string              `json:"displayName" tfsdk:"display_name"`
	Tags                              map[string][]string `json:"tags" tfsdk:"tags"`
	PaymentMethodIdentifier           *string             `json:"paymentMethodIdentifier" tfsdk:"payment_method_identifier"`
	SubstitutePaymentMethodIdentifier *string             `json:"substitutePaymentMethodIdentifier" tfsdk:"substitute_payment_method_identifier"`
}

type MeshProjectTargetRef

type MeshProjectTargetRef struct {
	Name             string `json:"name" tfsdk:"name"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshProjectUserBinding

type MeshProjectUserBinding struct {
	MeshProjectBinding
}

type MeshProjectUserBindingClient

type MeshProjectUserBindingClient interface {
	Read(ctx context.Context, name string) (*MeshProjectUserBinding, error)
	Create(ctx context.Context, binding *MeshProjectUserBinding) (*MeshProjectUserBinding, error)
	Delete(ctx context.Context, name string) error
}

type MeshRunnerWifProviderConfig

type MeshRunnerWifProviderConfig struct {
	Audience  string `json:"audience" tfsdk:"audience"`
	TokenPath string `json:"tokenPath" tfsdk:"token_path"`
}

type MeshRunnerWorkloadIdentityFed

type MeshRunnerWorkloadIdentityFed struct {
	// SubjectTemplate holds {{ workspaceIdentifier }} and {{ buildingBlockDefinitionUuid }}, which meshStack renders per building block definition version.
	SubjectTemplate *string                      `json:"subjectTemplate,omitzero" tfsdk:"subject_template"`
	Issuer          *string                      `json:"issuer,omitzero" tfsdk:"issuer"`
	Gcp             *MeshRunnerWifProviderConfig `json:"gcp,omitzero" tfsdk:"gcp"`
	Aws             *MeshRunnerWifProviderConfig `json:"aws,omitzero" tfsdk:"aws"`
	Azure           *MeshRunnerWifProviderConfig `json:"azure,omitzero" tfsdk:"azure"`
}

type MeshServiceInstance

type MeshServiceInstance struct {
	Metadata MeshServiceInstanceMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshServiceInstanceSpec     `json:"spec" tfsdk:"spec"`
}

type MeshServiceInstanceClient

type MeshServiceInstanceClient interface {
	Read(ctx context.Context, instanceId string) (*MeshServiceInstance, error)
	List(ctx context.Context, filter MeshServiceInstanceFilter) ([]MeshServiceInstance, error)
}

type MeshServiceInstanceFilter

type MeshServiceInstanceFilter struct {
	WorkspaceIdentifier   *string `json:"workspaceIdentifier"`
	ProjectIdentifier     *string `json:"projectIdentifier"`
	MarketplaceIdentifier *string `json:"marketplaceIdentifier"`
	ServiceIdentifier     *string `json:"serviceIdentifier"`
	PlanIdentifier        *string `json:"planIdentifier"`
}

type MeshServiceInstanceMetadata

type MeshServiceInstanceMetadata struct {
	OwnedByProject        string `json:"ownedByProject" tfsdk:"owned_by_project"`
	OwnedByWorkspace      string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
	MarketplaceIdentifier string `json:"marketplaceIdentifier" tfsdk:"marketplace_identifier"`
	InstanceId            string `json:"instanceId" tfsdk:"instance_id"`
}

type MeshServiceInstanceSpec

type MeshServiceInstanceSpec struct {
	Creator     string               `json:"creator" tfsdk:"creator"`
	DisplayName string               `json:"displayName" tfsdk:"display_name"`
	PlanId      string               `json:"planId" tfsdk:"plan_id"`
	ServiceId   string               `json:"serviceId" tfsdk:"service_id"`
	Parameters  map[string]types.Any `json:"parameters" tfsdk:"parameters"`
}

type MeshSubject

type MeshSubject struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshTagDefinition

type MeshTagDefinition struct {
	Metadata MeshTagDefinitionMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshTagDefinitionSpec     `json:"spec" tfsdk:"spec"`
}

type MeshTagDefinitionClient

type MeshTagDefinitionClient interface {
	List(ctx context.Context) ([]MeshTagDefinition, error)
	Read(ctx context.Context, name string) (*MeshTagDefinition, error)
	Create(ctx context.Context, tagDefinition *MeshTagDefinition) (*MeshTagDefinition, error)
	Update(ctx context.Context, tagDefinition *MeshTagDefinition) (*MeshTagDefinition, error)
	Delete(ctx context.Context, name string) error
}

type MeshTagDefinitionMetadata

type MeshTagDefinitionMetadata struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshTagDefinitionSpec

type MeshTagDefinitionSpec struct {
	TargetKind     string                     `json:"targetKind" tfsdk:"target_kind"`
	Key            string                     `json:"key" tfsdk:"key"`
	ValueType      MeshTagDefinitionValueType `json:"valueType" tfsdk:"value_type"`
	Description    string                     `json:"description" tfsdk:"description"`
	DisplayName    string                     `json:"displayName" tfsdk:"display_name"`
	SortOrder      int64                      `json:"sortOrder" tfsdk:"sort_order"`
	Mandatory      bool                       `json:"mandatory" tfsdk:"mandatory"`
	Immutable      bool                       `json:"immutable" tfsdk:"immutable"`
	Restricted     bool                       `json:"restricted" tfsdk:"restricted"`
	ReplicationKey *string                    `json:"replicationKey,omitzero" tfsdk:"replication_key"`
}

type MeshTagDefinitionValueType

type MeshTagDefinitionValueType struct {
	String       *TagValueString       `json:"string,omitzero" tfsdk:"string"`
	Email        *TagValueEmail        `json:"email,omitzero" tfsdk:"email"`
	Integer      *TagValueInteger      `json:"integer,omitzero" tfsdk:"integer"`
	Number       *TagValueNumber       `json:"number,omitzero" tfsdk:"number"`
	SingleSelect *TagValueSingleSelect `json:"singleSelect,omitzero" tfsdk:"single_select"`
	MultiSelect  *TagValueMultiSelect  `json:"multiSelect,omitzero" tfsdk:"multi_select"`
}

type MeshTenant

type MeshTenant struct {
	Metadata MeshTenantMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshTenantSpec     `json:"spec" tfsdk:"spec"`
	Status   MeshTenantStatus   `json:"status" tfsdk:"status"`
}

func (*MeshTenant) CreationSuccessful

func (tenant *MeshTenant) CreationSuccessful() (done bool, err error)

func (*MeshTenant) DeletionState

func (tenant *MeshTenant) DeletionState() string

func (*MeshTenant) DeletionSuccessful

func (tenant *MeshTenant) DeletionSuccessful() (done bool, err error)

type MeshTenantClient

type MeshTenantClient interface {
	Read(ctx context.Context, uuid string) (*MeshTenant, error)
	ReadFunc(uuid string) func(ctx context.Context) (*MeshTenant, error)
	List(ctx context.Context, query MeshTenantQuery) ([]MeshTenant, error)
	Create(ctx context.Context, tenant *MeshTenantCreate) (*MeshTenant, error)
	Delete(ctx context.Context, uuid string) error
}

type MeshTenantCreate

type MeshTenantCreate struct {
	Metadata MeshTenantCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshTenantCreateSpec     `json:"spec" tfsdk:"spec"`
}

type MeshTenantCreateMetadata

type MeshTenantCreateMetadata struct {
	OwnedByProject   string `json:"ownedByProject" tfsdk:"owned_by_project"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshTenantCreateSpec

type MeshTenantCreateSpec struct {
	PlatformRef      UuidRef                      `json:"platformRef" tfsdk:"platform_ref"`
	LandingZoneRef   *NamedRef                    `json:"landingZoneRef" tfsdk:"landing_zone_ref"`
	PlatformTenantId *string                      `json:"platformTenantId" tfsdk:"platform_tenant_id"`
	RequestedQuotas  map[string]RequestQuotaValue `json:"requestedQuotas,omitempty" tfsdk:"requested_quotas"`
}

type MeshTenantLifecycle

type MeshTenantLifecycle struct {
	State             enum.Entry[TenantLifecycleState] `json:"state" tfsdk:"-"`
	MarkedForDeletion *MeshTenantLifecycleAction       `json:"markedForDeletion" tfsdk:"-"`
}

type MeshTenantLifecycleAction

type MeshTenantLifecycleAction struct {
	Timestamp string `json:"timestamp" tfsdk:"-"`
}

type MeshTenantMetadata

type MeshTenantMetadata struct {
	Uuid             string `json:"uuid" tfsdk:"uuid"`
	OwnedByProject   string `json:"ownedByProject" tfsdk:"owned_by_project"`
	OwnedByWorkspace string `json:"ownedByWorkspace" tfsdk:"owned_by_workspace"`
}

type MeshTenantQuery

type MeshTenantQuery struct {
	Workspace      string  `json:"workspaceIdentifier"`
	Project        *string `json:"projectIdentifier"`
	Platform       *string `json:"platformIdentifier"`
	PlatformType   *string `json:"platformTypeIdentifier"`
	LandingZone    *string `json:"landingZoneIdentifier"`
	PlatformTenant *string `json:"platformTenantId"`
}

type MeshTenantQuota

type MeshTenantQuota struct {
	Key   string `json:"key" tfsdk:"key"`
	Value int64  `json:"value" tfsdk:"value"`
}

MeshTenantQuota is the {key, value} element of the removed list-form spec.quotas. The schema version 1 prior state still declares that attribute, so the state upgrader needs this shape to read it.

type MeshTenantSpec

type MeshTenantSpec struct {
	PlatformRef      UuidRef   `json:"platformRef" tfsdk:"platform_ref"`
	PlatformTenantId *string   `json:"platformTenantId" tfsdk:"platform_tenant_id"`
	LandingZoneRef   *NamedRef `json:"landingZoneRef" tfsdk:"landing_zone_ref"`
	// RequestedQuotas is an input at creation only: the backend does not return it on read, so the
	// Terraform resource keeps the configured value from its state.
	RequestedQuotas map[string]RequestQuotaValue `json:"requestedQuotas" tfsdk:"requested_quotas"`
}

type MeshTenantStatus

type MeshTenantStatus struct {
	TenantName             string              `json:"tenantName" tfsdk:"tenant_name"`
	PlatformTypeIdentifier string              `json:"platformTypeIdentifier" tfsdk:"platform_type_identifier"`
	PlatformWorkspaceId    *string             `json:"platformWorkspaceId" tfsdk:"platform_workspace_id"`
	Tags                   map[string][]string `json:"tags" tfsdk:"tags"`
	// AppliedQuotas can differ from the requested quotas once the landing zone defaults are merged in
	// or an operator changes them, so drift is tracked against these.
	AppliedQuotas map[string]AppliedQuotaValue `json:"appliedQuotas" tfsdk:"applied_quotas"`
	Lifecycle     MeshTenantLifecycle          `json:"lifecycle" tfsdk:"-"`
}

type MeshTenantTags

type MeshTenantTags struct {
	NamespacePrefix string               `json:"namespacePrefix" tfsdk:"namespace_prefix"`
	TagMappers      types.Set[TagMapper] `json:"tagMappers" tfsdk:"tag_mappers"`
}

type MeshWifProvider

type MeshWifProvider struct {
	Audience string `json:"audience" tfsdk:"audience"`
}

type MeshWorkloadIdentityFederation

type MeshWorkloadIdentityFederation struct {
	Issuer  string              `json:"issuer" tfsdk:"issuer"`
	Subject string              `json:"subject" tfsdk:"subject"`
	Gcp     *MeshWifProvider    `json:"gcp" tfsdk:"gcp"`
	Aws     *MeshAwsWifProvider `json:"aws" tfsdk:"aws"`
	Azure   *MeshWifProvider    `json:"azure" tfsdk:"azure"`
}

type MeshWorkspace

type MeshWorkspace struct {
	Metadata MeshWorkspaceMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshWorkspaceSpec     `json:"spec" tfsdk:"spec"`
}

type MeshWorkspaceBinding

type MeshWorkspaceBinding struct {
	Metadata   MeshWorkspaceBindingMetadata `json:"metadata" tfsdk:"metadata"`
	RoleRef    MeshWorkspaceRoleRef         `json:"roleRef" tfsdk:"role_ref"`
	TargetRef  MeshWorkspaceTargetRef       `json:"targetRef" tfsdk:"target_ref"`
	Subject    MeshWorkspaceSubject         `json:"subject" tfsdk:"subject"`
	ExpiryDate *string                      `json:"expiryDate,omitzero" tfsdk:"expiry_date"`
}

type MeshWorkspaceBindingMetadata

type MeshWorkspaceBindingMetadata struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshWorkspaceClient

type MeshWorkspaceClient interface {
	// List returns every workspace the credential can see. An unscoped user token reaches this and
	// almost nothing else, which is why `meshstack login` prompts for a workspace from it.
	List(ctx context.Context) ([]MeshWorkspace, error)
	Read(ctx context.Context, name string) (*MeshWorkspace, error)
	Create(ctx context.Context, workspace *MeshWorkspaceCreate) (*MeshWorkspace, error)
	Update(ctx context.Context, name string, workspace *MeshWorkspaceCreate) (*MeshWorkspace, error)
	Delete(ctx context.Context, name string) error
}

type MeshWorkspaceCreate

type MeshWorkspaceCreate struct {
	Metadata MeshWorkspaceCreateMetadata `json:"metadata" tfsdk:"metadata"`
	Spec     MeshWorkspaceSpec           `json:"spec" tfsdk:"spec"`
}

type MeshWorkspaceCreateMetadata

type MeshWorkspaceCreateMetadata struct {
	Name string              `json:"name" tfsdk:"name"`
	Tags map[string][]string `json:"tags" tfsdk:"tags"`
}

type MeshWorkspaceGroupBinding

type MeshWorkspaceGroupBinding struct {
	MeshWorkspaceBinding
}

type MeshWorkspaceGroupBindingClient

type MeshWorkspaceGroupBindingClient interface {
	Read(ctx context.Context, name string) (*MeshWorkspaceGroupBinding, error)
	Create(ctx context.Context, binding *MeshWorkspaceGroupBinding) (*MeshWorkspaceGroupBinding, error)
	Delete(ctx context.Context, name string) error
}

type MeshWorkspaceListFilter added in v0.3.0

type MeshWorkspaceListFilter struct {
	Sort SortCriteria `json:"sort"`
}

type MeshWorkspaceMetadata

type MeshWorkspaceMetadata struct {
	Name      string              `json:"name" tfsdk:"name"`
	CreatedOn string              `json:"createdOn" tfsdk:"created_on"`
	DeletedOn *string             `json:"deletedOn" tfsdk:"deleted_on"`
	Tags      map[string][]string `json:"tags" tfsdk:"tags"`
}

type MeshWorkspaceRoleRef

type MeshWorkspaceRoleRef struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshWorkspaceSpec

type MeshWorkspaceSpec struct {
	DisplayName                  string `json:"displayName" tfsdk:"display_name"`
	PlatformBuilderAccessEnabled *bool  `json:"platformBuilderAccessEnabled,omitzero" tfsdk:"platform_builder_access_enabled"`
}

type MeshWorkspaceSubject

type MeshWorkspaceSubject struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshWorkspaceTargetRef

type MeshWorkspaceTargetRef struct {
	Name string `json:"name" tfsdk:"name"`
}

type MeshWorkspaceUserBinding

type MeshWorkspaceUserBinding struct {
	MeshWorkspaceBinding
}

type MeshWorkspaceUserBindingClient

type MeshWorkspaceUserBindingClient interface {
	Read(ctx context.Context, name string) (*MeshWorkspaceUserBinding, error)
	Create(ctx context.Context, binding *MeshWorkspaceUserBinding) (*MeshWorkspaceUserBinding, error)
	Delete(ctx context.Context, name string) error
}

type NamedRef

type NamedRef struct {
	Name string `json:"name" tfsdk:"name"`
	Kind string `json:"kind" tfsdk:"kind"`
}

NamedRef is every {name, kind} reference on the wire, and a ref with more fields embeds it. Keep it in step with meshRefByName in internal/provider/schema_utils.go of terraform-provider-meshstack.

type OpenShiftMeteringConfig

type OpenShiftMeteringConfig struct {
	ClientConfig KubernetesClientConfig               `json:"clientConfig" tfsdk:"client_config"`
	Processing   MeshPlatformMeteringProcessingConfig `json:"processing" tfsdk:"processing"`
}

type OpenShiftPlatformConfig

type OpenShiftPlatformConfig struct {
	BaseUrl              string                      `json:"baseUrl" tfsdk:"base_url"`
	DisableSslValidation bool                        `json:"disableSslValidation" tfsdk:"disable_ssl_validation"`
	Replication          *OpenShiftReplicationConfig `json:"replication" tfsdk:"replication"`
	Metering             *OpenShiftMeteringConfig    `json:"metering,omitzero" tfsdk:"metering"`
}

type OpenShiftPlatformProperties

type OpenShiftPlatformProperties struct {
}

type OpenShiftPlatformRoleMapping

type OpenShiftPlatformRoleMapping struct {
	MeshProjectRoleRef NamedRef `json:"projectRoleRef" tfsdk:"project_role_ref"`
	OpenshiftRole      string   `json:"openshiftRole" tfsdk:"openshift_role"`
}

type OpenShiftReplicationConfig

type OpenShiftReplicationConfig struct {
	ClientConfig          KubernetesClientConfig                  `json:"clientConfig" tfsdk:"client_config"`
	WebConsoleUrl         *string                                 `json:"webConsoleUrl,omitzero" tfsdk:"web_console_url"`
	ProjectNamePattern    string                                  `json:"projectNamePattern" tfsdk:"project_name_pattern"`
	OpenshiftRoleMappings types.Set[OpenShiftPlatformRoleMapping] `json:"openshiftRoleMappings" tfsdk:"openshift_role_mappings"`
	IdentityProviderName  string                                  `json:"identityProviderName" tfsdk:"identity_provider_name"`
	TenantTags            *MeshTenantTags                         `json:"tenantTags,omitzero" tfsdk:"tenant_tags"`
}

type Page added in v0.2.0

type Page = internal.Page

type PlatformAvailability

type PlatformAvailability struct {
	Restriction            string            `json:"restriction" tfsdk:"restriction"`
	PublicationState       string            `json:"publicationState" tfsdk:"publication_state"`
	RestrictedToWorkspaces types.Set[string] `json:"restrictedToWorkspaces,omitempty" tfsdk:"restricted_to_workspaces"`
}

type PlatformConfig

type PlatformConfig struct {
	Type       string                    `json:"type" tfsdk:"type"`
	Custom     *CustomPlatformConfig     `json:"custom,omitzero" tfsdk:"custom"`
	Aws        *AwsPlatformConfig        `json:"aws,omitzero" tfsdk:"aws"`
	Aks        *AksPlatformConfig        `json:"aks,omitzero" tfsdk:"aks"`
	Azure      *AzurePlatformConfig      `json:"azure,omitzero" tfsdk:"azure"`
	AzureRg    *AzureRgPlatformConfig    `json:"azurerg,omitzero" tfsdk:"azurerg"`
	Gcp        *GcpPlatformConfig        `json:"gcp,omitzero" tfsdk:"gcp"`
	Kubernetes *KubernetesPlatformConfig `json:"kubernetes,omitzero" tfsdk:"kubernetes"`
	OpenShift  *OpenShiftPlatformConfig  `json:"openshift,omitzero" tfsdk:"openshift"`
}

type QuotaDefinition

type QuotaDefinition struct {
	QuotaKey              string `json:"quotaKey" tfsdk:"quota_key"`
	MinValue              int64  `json:"minValue" tfsdk:"min_value"`
	MaxValue              int64  `json:"maxValue" tfsdk:"max_value"`
	Unit                  string `json:"unit" tfsdk:"unit"`
	AutoApprovalThreshold int64  `json:"autoApprovalThreshold" tfsdk:"auto_approval_threshold"`
	Description           string `json:"description" tfsdk:"description"`
	Label                 string `json:"label" tfsdk:"label"`
}

type RawClient added in v0.3.0

type RawClient struct {
	// contains filtered or unexported fields
}

RawClient answers with the JSON meshStack sent, for the CLI, which writes it out as it came. It is the CLI's alone: DoRequest takes the options of internal/http, which Go's internal rule closes to the Terraform provider.

func (*RawClient) DoRequest added in v0.3.0

func (r *RawClient) DoRequest(ctx context.Context, method, path string, opts ...http.RequestOption) ([]byte, error)

DoRequest joins path onto the endpoint, even one that names a host, so that the bearer token never leaves for another host. The answer is of any content type, such as a plan artifact's application/octet-stream, so it is returned unparsed.

func (*RawClient) Get added in v0.3.0

func (r *RawClient) Get[M any](ctx context.Context, uuid uuid.UUID, pathElems ...string) (jsontext.Value, error)

Get reads the object of M with the uuid, or the sub-resource that pathElems name below it.

func (*RawClient) List added in v0.3.0

func (r *RawClient) List[M any](ctx context.Context, filter any, options ListOptions) iter.Seq2[jsontext.Value, error]

List pages through the objects of M, narrowed by filter, a struct whose fields are the query parameters of the listing.

type RequestQuotaValue

type RequestQuotaValue struct {
	Value int64 `json:"value" tfsdk:"value"`
}

RequestQuotaValue wraps the number in an object so that the v4 API can add a field to a quota, such as a unit, without a breaking change to the map.

It has the same shape as AppliedQuotaValue on purpose: the Terraform resource echoes the requested value in spec and reads the applied one from status, and two types make mixing them up a compile error.

type SortCriteria added in v0.3.0

type SortCriteria []string

SortCriteria holds one `property,(asc|desc)` criterion per element, such as createdAt,desc.

type SupportedPlatformRef added in v0.3.0

type SupportedPlatformRef struct {
	Kind string  `json:"kind" tfsdk:"kind"`
	Name *string `json:"name,omitzero" tfsdk:"name"`
	Uuid *string `json:"uuid,omitzero" tfsdk:"uuid"`
}

type TagMapper

type TagMapper struct {
	Key          string `json:"key" tfsdk:"key"`
	ValuePattern string `json:"valuePattern" tfsdk:"value_pattern"`
}

type TagValueEmail

type TagValueEmail struct {
	DefaultValue    *string `json:"defaultValue,omitzero" tfsdk:"default_value"`
	ValidationRegex *string `json:"validationRegex,omitzero" tfsdk:"validation_regex"`
}

type TagValueInteger

type TagValueInteger struct {
	DefaultValue *int64 `json:"defaultValue,omitzero" tfsdk:"default_value"`
}

type TagValueMultiSelect

type TagValueMultiSelect struct {
	Options      []string  `json:"options,omitempty" tfsdk:"options"`
	DefaultValue *[]string `json:"defaultValue,omitzero" tfsdk:"default_value"`
}

type TagValueNumber

type TagValueNumber struct {
	DefaultValue *float64 `json:"defaultValue,omitzero" tfsdk:"default_value"`
}

type TagValueSingleSelect

type TagValueSingleSelect struct {
	Options      []string `json:"options,omitempty" tfsdk:"options"`
	DefaultValue *string  `json:"defaultValue,omitzero" tfsdk:"default_value"`
}

type TagValueString

type TagValueString struct {
	DefaultValue    *string `json:"defaultValue,omitzero" tfsdk:"default_value"`
	ValidationRegex *string `json:"validationRegex,omitzero" tfsdk:"validation_regex"`
}

type TenantLifecycleState

type TenantLifecycleState string

type UuidRef

type UuidRef struct {
	Uuid string `json:"uuid" tfsdk:"uuid"`
	Kind string `json:"kind" tfsdk:"kind"`
}

UuidRef is every {uuid, kind} reference on the wire, and a ref with more fields embeds it. Keep it in step with meshRefByUuid in internal/provider/schema_utils.go of terraform-provider-meshstack.

type Version

type Version = version.Version

Version is re-exported because MinMeshStackVersion is one and internal/version is closed to another module.

Directories

Path Synopsis
Package openapi reads the OpenAPI document meshStack publishes, and picks the operations of a request path, a method and a version out of it.
Package openapi reads the OpenAPI document meshStack publishes, and picks the operations of a request path, a method and a version out of it.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL