All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azure.media.kotlin.ContentKeyPolicyArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.14.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azure.media.kotlin

import com.pulumi.azure.media.ContentKeyPolicyArgs.builder
import com.pulumi.azure.media.kotlin.inputs.ContentKeyPolicyPolicyOptionArgs
import com.pulumi.azure.media.kotlin.inputs.ContentKeyPolicyPolicyOptionArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Manages a Content Key Policy.
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as azure from "@pulumi/azure";
 * const example = new azure.core.ResourceGroup("example", {
 *     name: "media-resources",
 *     location: "West Europe",
 * });
 * const exampleAccount = new azure.storage.Account("example", {
 *     name: "examplestoracc",
 *     resourceGroupName: example.name,
 *     location: example.location,
 *     accountTier: "Standard",
 *     accountReplicationType: "GRS",
 * });
 * const exampleServiceAccount = new azure.media.ServiceAccount("example", {
 *     name: "examplemediaacc",
 *     location: example.location,
 *     resourceGroupName: example.name,
 *     storageAccounts: [{
 *         id: exampleAccount.id,
 *         isPrimary: true,
 *     }],
 * });
 * const exampleContentKeyPolicy = new azure.media.ContentKeyPolicy("example", {
 *     name: "example",
 *     resourceGroupName: example.name,
 *     mediaServicesAccountName: exampleServiceAccount.name,
 *     policyOptions: [
 *         {
 *             name: "fairPlay",
 *             fairplayConfiguration: {
 *                 ask: "bb566284cc124a21c435a92cd3c108c4",
 *                 pfx: "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",
 *                 pfxPassword: "password",
 *                 rentalDurationSeconds: 2249,
 *                 rentalAndLeaseKeyType: "PersistentUnlimited",
 *             },
 *             openRestrictionEnabled: true,
 *         },
 *         {
 *             name: "playReady",
 *             playreadyConfigurationLicenses: [{
 *                 allowTestDevices: true,
 *                 beginDate: "2017-10-16T18:22:53Z",
 *                 securityLevel: "SL150",
 *                 playRight: {
 *                     scmsRestriction: 2,
 *                     digitalVideoOnlyContentRestriction: false,
 *                     imageConstraintForAnalogComponentVideoRestriction: false,
 *                     imageConstraintForAnalogComputerMonitorRestriction: false,
 *                     allowPassingVideoContentToUnknownOutput: "NotAllowed",
 *                     uncompressedDigitalVideoOpl: 100,
 *                     uncompressedDigitalAudioOpl: 100,
 *                     analogVideoOpl: 150,
 *                     compressedDigitalAudioOpl: 250,
 *                     compressedDigitalVideoOpl: 400,
 *                     explicitAnalogTelevisionOutputRestriction: {
 *                         bestEffortEnforced: true,
 *                         controlBits: 3,
 *                     },
 *                 },
 *                 licenseType: "Persistent",
 *                 contentType: "UltraVioletDownload",
 *                 contentKeyLocationFromHeaderEnabled: true,
 *             }],
 *             openRestrictionEnabled: true,
 *         },
 *         {
 *             name: "clearKey",
 *             clearKeyConfigurationEnabled: true,
 *             tokenRestriction: {
 *                 issuer: "urn:issuer",
 *                 audience: "urn:audience",
 *                 tokenType: "Swt",
 *                 primarySymmetricTokenKey: "AAAAAAAAAAAAAAAAAAAAAA==",
 *                 alternateKeys: [
 *                     {
 *                         rsaTokenKeyExponent: "AQAB",
 *                         rsaTokenKeyModulus: "AQAD",
 *                     },
 *                     {
 *                         symmetricTokenKey: "BBAAAAAAAAAAAAAAAAAAAA==",
 *                     },
 *                 ],
 *             },
 *         },
 *         {
 *             name: "widevine",
 *             widevineConfigurationTemplate: JSON.stringify({
 *                 allowed_track_types: "SD_HD",
 *                 content_key_specs: [{
 *                     track_type: "SD",
 *                     security_level: 1,
 *                     required_output_protection: {
 *                         hdcp: "HDCP_V2",
 *                     },
 *                 }],
 *                 policy_overrides: {
 *                     can_play: true,
 *                     can_persist: true,
 *                     can_renew: false,
 *                 },
 *             }),
 *             openRestrictionEnabled: true,
 *         },
 *     ],
 * });
 * ```
 * ```python
 * import pulumi
 * import json
 * import pulumi_azure as azure
 * example = azure.core.ResourceGroup("example",
 *     name="media-resources",
 *     location="West Europe")
 * example_account = azure.storage.Account("example",
 *     name="examplestoracc",
 *     resource_group_name=example.name,
 *     location=example.location,
 *     account_tier="Standard",
 *     account_replication_type="GRS")
 * example_service_account = azure.media.ServiceAccount("example",
 *     name="examplemediaacc",
 *     location=example.location,
 *     resource_group_name=example.name,
 *     storage_accounts=[azure.media.ServiceAccountStorageAccountArgs(
 *         id=example_account.id,
 *         is_primary=True,
 *     )])
 * example_content_key_policy = azure.media.ContentKeyPolicy("example",
 *     name="example",
 *     resource_group_name=example.name,
 *     media_services_account_name=example_service_account.name,
 *     policy_options=[
 *         azure.media.ContentKeyPolicyPolicyOptionArgs(
 *             name="fairPlay",
 *             fairplay_configuration=azure.media.ContentKeyPolicyPolicyOptionFairplayConfigurationArgs(
 *                 ask="bb566284cc124a21c435a92cd3c108c4",
 *                 pfx="MIIG7gIBAzCCBqoGCSqGSIb3DQEHAaCCBpsEggaXMIIGkzCCA7wGCSqGSIb3DQEHAaCCA60EggOpMIIDpTCCA6EGCyqGSIb3DQEMCgECoIICtjCCArIwHAYKKoZIhvcNAQwBAzAOBAiV65vFfxLDVgICB9AEggKQx2dxWefICYodVhRLSQVMJRYy5QkM1VySPAXGP744JHrb+s0Y8i/6a+a5itZGlXw3kvxyflHtSsuuBCaYJ1WOCp9jspixJEliFHXTcel96AgZlT5tB7vC6pdZnz8rb+lyxFs99x2CW52EsadoDlRsYrmkmKdnB0cx2JHJbLeXuKV/fjuRJSqCFcDa6Nre8AlBX0zKGIYGLJ1Cfpora4kNTXxu0AwEowzGmoCxqrpKbO1QDi1hZ1qHrtZ1ienAKfiTXaGH4AMQzyut0AaymxalrRbXibJYuefLRvXqx0oLZKVLAX8fR1gnac6Mrr7GkdHaKCsk4eOi98acR7bjiyRRVYYS4B6Y0tCeRJNe6zeYVmLdtatuOlOEVDT6AKrJJMFMyITVS+2D771ge6m37FbJ36K3/eT/HRq1YDsxfD/BY+X7eMIwQrVnD5nK7avXfbIni57n5oWLkE9Vco8uBlMdrx4xHt9vpe42Pz2Yh2O4WtvxcgxrAknvPpV1ZsAJCfvm9TTcg8qZpjyePn3B9TvFVSXMJHn/rzu6OJAgFgVFAe1tPGLh1XBxAvwpB8EqcycIIUUFUBy4HgYCicjI2jp6s8Kk293Uc/TA2623LrWgP/Xm5hVB7lP1k6W9LDivOlAA96D0Cbk08Yv6arkCYj7ONFO8VZbO0zKAAOLHMw/ZQRIutGLrDlqgTDeRXRuReX7TNjDBxp2rzJBY0uU5g9BMFxQrbQwEx9HsnO4dVFG4KLbHmYWhlwS2V2uZtY6D6elOXY3SX50RwhC4+0trUMi/ODtOxAc+lMQk2FNDcNeKIX5wHwFRS+sFBu5Um4Jfj6Ua4w1izmu2KiPfDd3vJsm5Dgcci3fPfdSfpIq4uR6d3JQxgdcwEwYJKoZIhvcNAQkVMQYEBAEAAAAwWwYJKoZIhvcNAQkUMU4eTAB7ADcAMQAxADAANABBADgARgAtADQAQgBFADAALQA0AEEAMgA4AC0AOAAyADIANQAtAEYANwBBADcAMwBGAEMAQQAwAEMARABEAH0wYwYJKwYBBAGCNxEBMVYeVABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByACAAdgAxAC4AMDCCAs8GCSqGSIb3DQEHBqCCAsAwggK8AgEAMIICtQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQISS7mG/riQJkCAgfQgIICiPSGg5axP4JM+GmiVEqOHTVAPw2AM8OPnn1q0mIw54oC2WOJw3FFThYHmxTQzQ1feVmnkVCv++eFp+BYTcWTa+ehl/3/Nvr5uLTzDxmCShacKwoWXOKtSLh6mmgydvMqSf6xv1bPsloodtrRxhprI2lBNBW2uw8az9eLdvURYmhjGPf9klEy/6OCA5jDT5XZMunwiQT5mYNMF7wAQ5PCz2dJQqm1n72A6nUHPkHEusN7iH/+mv5d3iaKxn7/ShxLKHfjMd+r/gv27ylshVHiN4mVStAg+MiLrVvr5VH46p6oosImvS3ZO4D5wTmh/6wtus803qN4QB/Y9n4rqEJ4Dn619h+6O7FChzWkx7kvYIzIxvfnj1PCFTEjUwc7jbuF013W/z9zQi2YEq9AzxMcGro0zjdt2sf30zXSfaRNt0UHHRDkLo7yFUJG5Ka1uWU8paLuXUUiiMUf24Bsfdg2A2n+3Qa7g25OvAM1QTpMwmMWL9sY2hxVUGIKVrnj8c4EKuGJjVDXrze5g9O/LfZr5VSjGu5KsN0eYI3mcePF7XM0azMtTNQYVRmeWxYW+XvK5MaoLEkrFG8C5+JccIlN588jowVIPqP321S/EyFiAmrRdAWkqrc9KH+/eINCFqjut2YPkCaTM9mnJAAqWgggUWkrOKT/ByS6IAQwyEBNFbY0TWyxKt6vZL1EW/6HgZCsxeYycNhnPr2qJNZZMNzmdMRp2GRLcfBH8KFw1rAyua0VJoTLHb23ZAsEY74BrEEiK9e/oOjXkHzQjlmrfQ9rSN2eQpRrn0W8I229WmBO2suG+AQ3aY8kDtBMkjmJno7txUh1K5D6tJTO7MQp343A2AhyJkhYA7NPnDA7MB8wBwYFKw4DAhoEFPO82HDlCzlshWlnMoQPStm62TMEBBQsPmvwbZ5OlwC9+NDF1AC+t67WTgICB9A=",
 *                 pfx_password="password",
 *                 rental_duration_seconds=2249,
 *                 rental_and_lease_key_type="PersistentUnlimited",
 *             ),
 *             open_restriction_enabled=True,
 *         ),
 *         azure.media.ContentKeyPolicyPolicyOptionArgs(
 *             name="playReady",
 *             playready_configuration_licenses=[azure.media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicenseArgs(
 *                 allow_test_devices=True,
 *                 begin_date="2017-10-16T18:22:53Z",
 *                 security_level="SL150",
 *                 play_right=azure.media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightArgs(
 *                     scms_restriction=2,
 *                     digital_video_only_content_restriction=False,
 *                     image_constraint_for_analog_component_video_restriction=False,
 *                     image_constraint_for_analog_computer_monitor_restriction=False,
 *                     allow_passing_video_content_to_unknown_output="NotAllowed",
 *                     uncompressed_digital_video_opl=100,
 *                     uncompressed_digital_audio_opl=100,
 *                     analog_video_opl=150,
 *                     compressed_digital_audio_opl=250,
 *                     compressed_digital_video_opl=400,
 *                     explicit_analog_television_output_restriction=azure.media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightExplicitAnalogTelevisionOutputRestrictionArgs(
 *                         best_effort_enforced=True,
 *                         control_bits=3,
 *                     ),
 *                 ),
 *                 license_type="Persistent",
 *                 content_type="UltraVioletDownload",
 *                 content_key_location_from_header_enabled=True,
 *             )],
 *             open_restriction_enabled=True,
 *         ),
 *         azure.media.ContentKeyPolicyPolicyOptionArgs(
 *             name="clearKey",
 *             clear_key_configuration_enabled=True,
 *             token_restriction=azure.media.ContentKeyPolicyPolicyOptionTokenRestrictionArgs(
 *                 issuer="urn:issuer",
 *                 audience="urn:audience",
 *                 token_type="Swt",
 *                 primary_symmetric_token_key="AAAAAAAAAAAAAAAAAAAAAA==",
 *                 alternate_keys=[
 *                     azure.media.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs(
 *                         rsa_token_key_exponent="AQAB",
 *                         rsa_token_key_modulus="AQAD",
 *                     ),
 *                     azure.media.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs(
 *                         symmetric_token_key="BBAAAAAAAAAAAAAAAAAAAA==",
 *                     ),
 *                 ],
 *             ),
 *         ),
 *         azure.media.ContentKeyPolicyPolicyOptionArgs(
 *             name="widevine",
 *             widevine_configuration_template=json.dumps({
 *                 "allowed_track_types": "SD_HD",
 *                 "content_key_specs": [{
 *                     "track_type": "SD",
 *                     "security_level": 1,
 *                     "required_output_protection": {
 *                         "hdcp": "HDCP_V2",
 *                     },
 *                 }],
 *                 "policy_overrides": {
 *                     "can_play": True,
 *                     "can_persist": True,
 *                     "can_renew": False,
 *                 },
 *             }),
 *             open_restriction_enabled=True,
 *         ),
 *     ])
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using System.Text.Json;
 * using Pulumi;
 * using Azure = Pulumi.Azure;
 * return await Deployment.RunAsync(() =>
 * {
 *     var example = new Azure.Core.ResourceGroup("example", new()
 *     {
 *         Name = "media-resources",
 *         Location = "West Europe",
 *     });
 *     var exampleAccount = new Azure.Storage.Account("example", new()
 *     {
 *         Name = "examplestoracc",
 *         ResourceGroupName = example.Name,
 *         Location = example.Location,
 *         AccountTier = "Standard",
 *         AccountReplicationType = "GRS",
 *     });
 *     var exampleServiceAccount = new Azure.Media.ServiceAccount("example", new()
 *     {
 *         Name = "examplemediaacc",
 *         Location = example.Location,
 *         ResourceGroupName = example.Name,
 *         StorageAccounts = new[]
 *         {
 *             new Azure.Media.Inputs.ServiceAccountStorageAccountArgs
 *             {
 *                 Id = exampleAccount.Id,
 *                 IsPrimary = true,
 *             },
 *         },
 *     });
 *     var exampleContentKeyPolicy = new Azure.Media.ContentKeyPolicy("example", new()
 *     {
 *         Name = "example",
 *         ResourceGroupName = example.Name,
 *         MediaServicesAccountName = exampleServiceAccount.Name,
 *         PolicyOptions = new[]
 *         {
 *             new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionArgs
 *             {
 *                 Name = "fairPlay",
 *                 FairplayConfiguration = new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionFairplayConfigurationArgs
 *                 {
 *                     Ask = "bb566284cc124a21c435a92cd3c108c4",
 *                     Pfx = "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",
 *                     PfxPassword = "password",
 *                     RentalDurationSeconds = 2249,
 *                     RentalAndLeaseKeyType = "PersistentUnlimited",
 *                 },
 *                 OpenRestrictionEnabled = true,
 *             },
 *             new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionArgs
 *             {
 *                 Name = "playReady",
 *                 PlayreadyConfigurationLicenses = new[]
 *                 {
 *                     new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicenseArgs
 *                     {
 *                         AllowTestDevices = true,
 *                         BeginDate = "2017-10-16T18:22:53Z",
 *                         SecurityLevel = "SL150",
 *                         PlayRight = new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightArgs
 *                         {
 *                             ScmsRestriction = 2,
 *                             DigitalVideoOnlyContentRestriction = false,
 *                             ImageConstraintForAnalogComponentVideoRestriction = false,
 *                             ImageConstraintForAnalogComputerMonitorRestriction = false,
 *                             AllowPassingVideoContentToUnknownOutput = "NotAllowed",
 *                             UncompressedDigitalVideoOpl = 100,
 *                             UncompressedDigitalAudioOpl = 100,
 *                             AnalogVideoOpl = 150,
 *                             CompressedDigitalAudioOpl = 250,
 *                             CompressedDigitalVideoOpl = 400,
 *                             ExplicitAnalogTelevisionOutputRestriction = new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightExplicitAnalogTelevisionOutputRestrictionArgs
 *                             {
 *                                 BestEffortEnforced = true,
 *                                 ControlBits = 3,
 *                             },
 *                         },
 *                         LicenseType = "Persistent",
 *                         ContentType = "UltraVioletDownload",
 *                         ContentKeyLocationFromHeaderEnabled = true,
 *                     },
 *                 },
 *                 OpenRestrictionEnabled = true,
 *             },
 *             new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionArgs
 *             {
 *                 Name = "clearKey",
 *                 ClearKeyConfigurationEnabled = true,
 *                 TokenRestriction = new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionTokenRestrictionArgs
 *                 {
 *                     Issuer = "urn:issuer",
 *                     Audience = "urn:audience",
 *                     TokenType = "Swt",
 *                     PrimarySymmetricTokenKey = "AAAAAAAAAAAAAAAAAAAAAA==",
 *                     AlternateKeys = new[]
 *                     {
 *                         new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs
 *                         {
 *                             RsaTokenKeyExponent = "AQAB",
 *                             RsaTokenKeyModulus = "AQAD",
 *                         },
 *                         new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs
 *                         {
 *                             SymmetricTokenKey = "BBAAAAAAAAAAAAAAAAAAAA==",
 *                         },
 *                     },
 *                 },
 *             },
 *             new Azure.Media.Inputs.ContentKeyPolicyPolicyOptionArgs
 *             {
 *                 Name = "widevine",
 *                 WidevineConfigurationTemplate = JsonSerializer.Serialize(new Dictionary
 *                 {
 *                     ["allowed_track_types"] = "SD_HD",
 *                     ["content_key_specs"] = new[]
 *                     {
 *                         new Dictionary
 *                         {
 *                             ["track_type"] = "SD",
 *                             ["security_level"] = 1,
 *                             ["required_output_protection"] = new Dictionary
 *                             {
 *                                 ["hdcp"] = "HDCP_V2",
 *                             },
 *                         },
 *                     },
 *                     ["policy_overrides"] = new Dictionary
 *                     {
 *                         ["can_play"] = true,
 *                         ["can_persist"] = true,
 *                         ["can_renew"] = false,
 *                     },
 *                 }),
 *                 OpenRestrictionEnabled = true,
 *             },
 *         },
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"encoding/json"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/core"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/media"
 * 	"github.com/pulumi/pulumi-azure/sdk/v5/go/azure/storage"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
 * 			Name:     pulumi.String("media-resources"),
 * 			Location: pulumi.String("West Europe"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleAccount, err := storage.NewAccount(ctx, "example", &storage.AccountArgs{
 * 			Name:                   pulumi.String("examplestoracc"),
 * 			ResourceGroupName:      example.Name,
 * 			Location:               example.Location,
 * 			AccountTier:            pulumi.String("Standard"),
 * 			AccountReplicationType: pulumi.String("GRS"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		exampleServiceAccount, err := media.NewServiceAccount(ctx, "example", &media.ServiceAccountArgs{
 * 			Name:              pulumi.String("examplemediaacc"),
 * 			Location:          example.Location,
 * 			ResourceGroupName: example.Name,
 * 			StorageAccounts: media.ServiceAccountStorageAccountArray{
 * 				&media.ServiceAccountStorageAccountArgs{
 * 					Id:        exampleAccount.ID(),
 * 					IsPrimary: pulumi.Bool(true),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		tmpJSON0, err := json.Marshal(map[string]interface{}{
 * 			"allowed_track_types": "SD_HD",
 * 			"content_key_specs": []map[string]interface{}{
 * 				map[string]interface{}{
 * 					"track_type":     "SD",
 * 					"security_level": 1,
 * 					"required_output_protection": map[string]interface{}{
 * 						"hdcp": "HDCP_V2",
 * 					},
 * 				},
 * 			},
 * 			"policy_overrides": map[string]interface{}{
 * 				"can_play":    true,
 * 				"can_persist": true,
 * 				"can_renew":   false,
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		json0 := string(tmpJSON0)
 * 		_, err = media.NewContentKeyPolicy(ctx, "example", &media.ContentKeyPolicyArgs{
 * 			Name:                     pulumi.String("example"),
 * 			ResourceGroupName:        example.Name,
 * 			MediaServicesAccountName: exampleServiceAccount.Name,
 * 			PolicyOptions: media.ContentKeyPolicyPolicyOptionArray{
 * 				&media.ContentKeyPolicyPolicyOptionArgs{
 * 					Name: pulumi.String("fairPlay"),
 * 					FairplayConfiguration: &media.ContentKeyPolicyPolicyOptionFairplayConfigurationArgs{
 * 						Ask:                   pulumi.String("bb566284cc124a21c435a92cd3c108c4"),
 * 						Pfx:                   pulumi.String("MIIG7gIBAzCCBqoGCSqGSIb3DQEHAaCCBpsEggaXMIIGkzCCA7wGCSqGSIb3DQEHAaCCA60EggOpMIIDpTCCA6EGCyqGSIb3DQEMCgECoIICtjCCArIwHAYKKoZIhvcNAQwBAzAOBAiV65vFfxLDVgICB9AEggKQx2dxWefICYodVhRLSQVMJRYy5QkM1VySPAXGP744JHrb+s0Y8i/6a+a5itZGlXw3kvxyflHtSsuuBCaYJ1WOCp9jspixJEliFHXTcel96AgZlT5tB7vC6pdZnz8rb+lyxFs99x2CW52EsadoDlRsYrmkmKdnB0cx2JHJbLeXuKV/fjuRJSqCFcDa6Nre8AlBX0zKGIYGLJ1Cfpora4kNTXxu0AwEowzGmoCxqrpKbO1QDi1hZ1qHrtZ1ienAKfiTXaGH4AMQzyut0AaymxalrRbXibJYuefLRvXqx0oLZKVLAX8fR1gnac6Mrr7GkdHaKCsk4eOi98acR7bjiyRRVYYS4B6Y0tCeRJNe6zeYVmLdtatuOlOEVDT6AKrJJMFMyITVS+2D771ge6m37FbJ36K3/eT/HRq1YDsxfD/BY+X7eMIwQrVnD5nK7avXfbIni57n5oWLkE9Vco8uBlMdrx4xHt9vpe42Pz2Yh2O4WtvxcgxrAknvPpV1ZsAJCfvm9TTcg8qZpjyePn3B9TvFVSXMJHn/rzu6OJAgFgVFAe1tPGLh1XBxAvwpB8EqcycIIUUFUBy4HgYCicjI2jp6s8Kk293Uc/TA2623LrWgP/Xm5hVB7lP1k6W9LDivOlAA96D0Cbk08Yv6arkCYj7ONFO8VZbO0zKAAOLHMw/ZQRIutGLrDlqgTDeRXRuReX7TNjDBxp2rzJBY0uU5g9BMFxQrbQwEx9HsnO4dVFG4KLbHmYWhlwS2V2uZtY6D6elOXY3SX50RwhC4+0trUMi/ODtOxAc+lMQk2FNDcNeKIX5wHwFRS+sFBu5Um4Jfj6Ua4w1izmu2KiPfDd3vJsm5Dgcci3fPfdSfpIq4uR6d3JQxgdcwEwYJKoZIhvcNAQkVMQYEBAEAAAAwWwYJKoZIhvcNAQkUMU4eTAB7ADcAMQAxADAANABBADgARgAtADQAQgBFADAALQA0AEEAMgA4AC0AOAAyADIANQAtAEYANwBBADcAMwBGAEMAQQAwAEMARABEAH0wYwYJKwYBBAGCNxEBMVYeVABNAGkAYwByAG8AcwBvAGYAdAAgAEIAYQBzAGUAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByACAAdgAxAC4AMDCCAs8GCSqGSIb3DQEHBqCCAsAwggK8AgEAMIICtQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQISS7mG/riQJkCAgfQgIICiPSGg5axP4JM+GmiVEqOHTVAPw2AM8OPnn1q0mIw54oC2WOJw3FFThYHmxTQzQ1feVmnkVCv++eFp+BYTcWTa+ehl/3/Nvr5uLTzDxmCShacKwoWXOKtSLh6mmgydvMqSf6xv1bPsloodtrRxhprI2lBNBW2uw8az9eLdvURYmhjGPf9klEy/6OCA5jDT5XZMunwiQT5mYNMF7wAQ5PCz2dJQqm1n72A6nUHPkHEusN7iH/+mv5d3iaKxn7/ShxLKHfjMd+r/gv27ylshVHiN4mVStAg+MiLrVvr5VH46p6oosImvS3ZO4D5wTmh/6wtus803qN4QB/Y9n4rqEJ4Dn619h+6O7FChzWkx7kvYIzIxvfnj1PCFTEjUwc7jbuF013W/z9zQi2YEq9AzxMcGro0zjdt2sf30zXSfaRNt0UHHRDkLo7yFUJG5Ka1uWU8paLuXUUiiMUf24Bsfdg2A2n+3Qa7g25OvAM1QTpMwmMWL9sY2hxVUGIKVrnj8c4EKuGJjVDXrze5g9O/LfZr5VSjGu5KsN0eYI3mcePF7XM0azMtTNQYVRmeWxYW+XvK5MaoLEkrFG8C5+JccIlN588jowVIPqP321S/EyFiAmrRdAWkqrc9KH+/eINCFqjut2YPkCaTM9mnJAAqWgggUWkrOKT/ByS6IAQwyEBNFbY0TWyxKt6vZL1EW/6HgZCsxeYycNhnPr2qJNZZMNzmdMRp2GRLcfBH8KFw1rAyua0VJoTLHb23ZAsEY74BrEEiK9e/oOjXkHzQjlmrfQ9rSN2eQpRrn0W8I229WmBO2suG+AQ3aY8kDtBMkjmJno7txUh1K5D6tJTO7MQp343A2AhyJkhYA7NPnDA7MB8wBwYFKw4DAhoEFPO82HDlCzlshWlnMoQPStm62TMEBBQsPmvwbZ5OlwC9+NDF1AC+t67WTgICB9A="),
 * 						PfxPassword:           pulumi.String("password"),
 * 						RentalDurationSeconds: pulumi.Int(2249),
 * 						RentalAndLeaseKeyType: pulumi.String("PersistentUnlimited"),
 * 					},
 * 					OpenRestrictionEnabled: pulumi.Bool(true),
 * 				},
 * 				&media.ContentKeyPolicyPolicyOptionArgs{
 * 					Name: pulumi.String("playReady"),
 * 					PlayreadyConfigurationLicenses: media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicenseArray{
 * 						&media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicenseArgs{
 * 							AllowTestDevices: pulumi.Bool(true),
 * 							BeginDate:        pulumi.String("2017-10-16T18:22:53Z"),
 * 							SecurityLevel:    pulumi.String("SL150"),
 * 							PlayRight: &media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightArgs{
 * 								ScmsRestriction:                                    pulumi.Int(2),
 * 								DigitalVideoOnlyContentRestriction:                 pulumi.Bool(false),
 * 								ImageConstraintForAnalogComponentVideoRestriction:  pulumi.Bool(false),
 * 								ImageConstraintForAnalogComputerMonitorRestriction: pulumi.Bool(false),
 * 								AllowPassingVideoContentToUnknownOutput:            pulumi.String("NotAllowed"),
 * 								UncompressedDigitalVideoOpl:                        pulumi.Int(100),
 * 								UncompressedDigitalAudioOpl:                        pulumi.Int(100),
 * 								AnalogVideoOpl:                                     pulumi.Int(150),
 * 								CompressedDigitalAudioOpl:                          pulumi.Int(250),
 * 								CompressedDigitalVideoOpl:                          pulumi.Int(400),
 * 								ExplicitAnalogTelevisionOutputRestriction: &media.ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightExplicitAnalogTelevisionOutputRestrictionArgs{
 * 									BestEffortEnforced: pulumi.Bool(true),
 * 									ControlBits:        pulumi.Int(3),
 * 								},
 * 							},
 * 							LicenseType:                         pulumi.String("Persistent"),
 * 							ContentType:                         pulumi.String("UltraVioletDownload"),
 * 							ContentKeyLocationFromHeaderEnabled: pulumi.Bool(true),
 * 						},
 * 					},
 * 					OpenRestrictionEnabled: pulumi.Bool(true),
 * 				},
 * 				&media.ContentKeyPolicyPolicyOptionArgs{
 * 					Name:                         pulumi.String("clearKey"),
 * 					ClearKeyConfigurationEnabled: pulumi.Bool(true),
 * 					TokenRestriction: &media.ContentKeyPolicyPolicyOptionTokenRestrictionArgs{
 * 						Issuer:                   pulumi.String("urn:issuer"),
 * 						Audience:                 pulumi.String("urn:audience"),
 * 						TokenType:                pulumi.String("Swt"),
 * 						PrimarySymmetricTokenKey: pulumi.String("AAAAAAAAAAAAAAAAAAAAAA=="),
 * 						AlternateKeys: media.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArray{
 * 							&media.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs{
 * 								RsaTokenKeyExponent: pulumi.String("AQAB"),
 * 								RsaTokenKeyModulus:  pulumi.String("AQAD"),
 * 							},
 * 							&media.ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs{
 * 								SymmetricTokenKey: pulumi.String("BBAAAAAAAAAAAAAAAAAAAA=="),
 * 							},
 * 						},
 * 					},
 * 				},
 * 				&media.ContentKeyPolicyPolicyOptionArgs{
 * 					Name:                          pulumi.String("widevine"),
 * 					WidevineConfigurationTemplate: pulumi.String(json0),
 * 					OpenRestrictionEnabled:        pulumi.Bool(true),
 * 				},
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azure.core.ResourceGroup;
 * import com.pulumi.azure.core.ResourceGroupArgs;
 * import com.pulumi.azure.storage.Account;
 * import com.pulumi.azure.storage.AccountArgs;
 * import com.pulumi.azure.media.ServiceAccount;
 * import com.pulumi.azure.media.ServiceAccountArgs;
 * import com.pulumi.azure.media.inputs.ServiceAccountStorageAccountArgs;
 * import com.pulumi.azure.media.ContentKeyPolicy;
 * import com.pulumi.azure.media.ContentKeyPolicyArgs;
 * import com.pulumi.azure.media.inputs.ContentKeyPolicyPolicyOptionArgs;
 * import com.pulumi.azure.media.inputs.ContentKeyPolicyPolicyOptionFairplayConfigurationArgs;
 * import com.pulumi.azure.media.inputs.ContentKeyPolicyPolicyOptionTokenRestrictionArgs;
 * import static com.pulumi.codegen.internal.Serialization.*;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var example = new ResourceGroup("example", ResourceGroupArgs.builder()
 *             .name("media-resources")
 *             .location("West Europe")
 *             .build());
 *         var exampleAccount = new Account("exampleAccount", AccountArgs.builder()
 *             .name("examplestoracc")
 *             .resourceGroupName(example.name())
 *             .location(example.location())
 *             .accountTier("Standard")
 *             .accountReplicationType("GRS")
 *             .build());
 *         var exampleServiceAccount = new ServiceAccount("exampleServiceAccount", ServiceAccountArgs.builder()
 *             .name("examplemediaacc")
 *             .location(example.location())
 *             .resourceGroupName(example.name())
 *             .storageAccounts(ServiceAccountStorageAccountArgs.builder()
 *                 .id(exampleAccount.id())
 *                 .isPrimary(true)
 *                 .build())
 *             .build());
 *         var exampleContentKeyPolicy = new ContentKeyPolicy("exampleContentKeyPolicy", ContentKeyPolicyArgs.builder()
 *             .name("example")
 *             .resourceGroupName(example.name())
 *             .mediaServicesAccountName(exampleServiceAccount.name())
 *             .policyOptions(
 *                 ContentKeyPolicyPolicyOptionArgs.builder()
 *                     .name("fairPlay")
 *                     .fairplayConfiguration(ContentKeyPolicyPolicyOptionFairplayConfigurationArgs.builder()
 *                         .ask("bb566284cc124a21c435a92cd3c108c4")
 *                         .pfx("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")
 *                         .pfxPassword("password")
 *                         .rentalDurationSeconds(2249)
 *                         .rentalAndLeaseKeyType("PersistentUnlimited")
 *                         .build())
 *                     .openRestrictionEnabled(true)
 *                     .build(),
 *                 ContentKeyPolicyPolicyOptionArgs.builder()
 *                     .name("playReady")
 *                     .playreadyConfigurationLicenses(ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicenseArgs.builder()
 *                         .allowTestDevices(true)
 *                         .beginDate("2017-10-16T18:22:53Z")
 *                         .securityLevel("SL150")
 *                         .playRight(ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightArgs.builder()
 *                             .scmsRestriction(2)
 *                             .digitalVideoOnlyContentRestriction(false)
 *                             .imageConstraintForAnalogComponentVideoRestriction(false)
 *                             .imageConstraintForAnalogComputerMonitorRestriction(false)
 *                             .allowPassingVideoContentToUnknownOutput("NotAllowed")
 *                             .uncompressedDigitalVideoOpl(100)
 *                             .uncompressedDigitalAudioOpl(100)
 *                             .analogVideoOpl(150)
 *                             .compressedDigitalAudioOpl(250)
 *                             .compressedDigitalVideoOpl(400)
 *                             .explicitAnalogTelevisionOutputRestriction(ContentKeyPolicyPolicyOptionPlayreadyConfigurationLicensePlayRightExplicitAnalogTelevisionOutputRestrictionArgs.builder()
 *                                 .bestEffortEnforced(true)
 *                                 .controlBits(3)
 *                                 .build())
 *                             .build())
 *                         .licenseType("Persistent")
 *                         .contentType("UltraVioletDownload")
 *                         .contentKeyLocationFromHeaderEnabled(true)
 *                         .build())
 *                     .openRestrictionEnabled(true)
 *                     .build(),
 *                 ContentKeyPolicyPolicyOptionArgs.builder()
 *                     .name("clearKey")
 *                     .clearKeyConfigurationEnabled(true)
 *                     .tokenRestriction(ContentKeyPolicyPolicyOptionTokenRestrictionArgs.builder()
 *                         .issuer("urn:issuer")
 *                         .audience("urn:audience")
 *                         .tokenType("Swt")
 *                         .primarySymmetricTokenKey("AAAAAAAAAAAAAAAAAAAAAA==")
 *                         .alternateKeys(
 *                             ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs.builder()
 *                                 .rsaTokenKeyExponent("AQAB")
 *                                 .rsaTokenKeyModulus("AQAD")
 *                                 .build(),
 *                             ContentKeyPolicyPolicyOptionTokenRestrictionAlternateKeyArgs.builder()
 *                                 .symmetricTokenKey("BBAAAAAAAAAAAAAAAAAAAA==")
 *                                 .build())
 *                         .build())
 *                     .build(),
 *                 ContentKeyPolicyPolicyOptionArgs.builder()
 *                     .name("widevine")
 *                     .widevineConfigurationTemplate(serializeJson(
 *                         jsonObject(
 *                             jsonProperty("allowed_track_types", "SD_HD"),
 *                             jsonProperty("content_key_specs", jsonArray(jsonObject(
 *                                 jsonProperty("track_type", "SD"),
 *                                 jsonProperty("security_level", 1),
 *                                 jsonProperty("required_output_protection", jsonObject(
 *                                     jsonProperty("hdcp", "HDCP_V2")
 *                                 ))
 *                             ))),
 *                             jsonProperty("policy_overrides", jsonObject(
 *                                 jsonProperty("can_play", true),
 *                                 jsonProperty("can_persist", true),
 *                                 jsonProperty("can_renew", false)
 *                             ))
 *                         )))
 *                     .openRestrictionEnabled(true)
 *                     .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: azure:core:ResourceGroup
 *     properties:
 *       name: media-resources
 *       location: West Europe
 *   exampleAccount:
 *     type: azure:storage:Account
 *     name: example
 *     properties:
 *       name: examplestoracc
 *       resourceGroupName: ${example.name}
 *       location: ${example.location}
 *       accountTier: Standard
 *       accountReplicationType: GRS
 *   exampleServiceAccount:
 *     type: azure:media:ServiceAccount
 *     name: example
 *     properties:
 *       name: examplemediaacc
 *       location: ${example.location}
 *       resourceGroupName: ${example.name}
 *       storageAccounts:
 *         - id: ${exampleAccount.id}
 *           isPrimary: true
 *   exampleContentKeyPolicy:
 *     type: azure:media:ContentKeyPolicy
 *     name: example
 *     properties:
 *       name: example
 *       resourceGroupName: ${example.name}
 *       mediaServicesAccountName: ${exampleServiceAccount.name}
 *       policyOptions:
 *         - name: fairPlay
 *           fairplayConfiguration:
 *             ask: bb566284cc124a21c435a92cd3c108c4
 *             pfx: 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
 *             pfxPassword: password
 *             rentalDurationSeconds: 2249
 *             rentalAndLeaseKeyType: PersistentUnlimited
 *           openRestrictionEnabled: true
 *         - name: playReady
 *           playreadyConfigurationLicenses:
 *             - allowTestDevices: true
 *               beginDate: 2017-10-16T18:22:53Z
 *               securityLevel: SL150
 *               playRight:
 *                 scmsRestriction: 2
 *                 digitalVideoOnlyContentRestriction: false
 *                 imageConstraintForAnalogComponentVideoRestriction: false
 *                 imageConstraintForAnalogComputerMonitorRestriction: false
 *                 allowPassingVideoContentToUnknownOutput: NotAllowed
 *                 uncompressedDigitalVideoOpl: 100
 *                 uncompressedDigitalAudioOpl: 100
 *                 analogVideoOpl: 150
 *                 compressedDigitalAudioOpl: 250
 *                 compressedDigitalVideoOpl: 400
 *                 explicitAnalogTelevisionOutputRestriction:
 *                   bestEffortEnforced: true
 *                   controlBits: 3
 *               licenseType: Persistent
 *               contentType: UltraVioletDownload
 *               contentKeyLocationFromHeaderEnabled: true
 *           openRestrictionEnabled: true
 *         - name: clearKey
 *           clearKeyConfigurationEnabled: true
 *           tokenRestriction:
 *             issuer: urn:issuer
 *             audience: urn:audience
 *             tokenType: Swt
 *             primarySymmetricTokenKey: AAAAAAAAAAAAAAAAAAAAAA==
 *             alternateKeys:
 *               - rsaTokenKeyExponent: AQAB
 *                 rsaTokenKeyModulus: AQAD
 *               - symmetricTokenKey: BBAAAAAAAAAAAAAAAAAAAA==
 *         - name: widevine
 *           widevineConfigurationTemplate:
 *             fn::toJSON:
 *               allowed_track_types: SD_HD
 *               content_key_specs:
 *                 - track_type: SD
 *                   security_level: 1
 *                   required_output_protection:
 *                     hdcp: HDCP_V2
 *               policy_overrides:
 *                 can_play: true
 *                 can_persist: true
 *                 can_renew: false
 *           openRestrictionEnabled: true
 * ```
 * 
 * ## Import
 * Content Key Policy can be imported using the `resource id`, e.g.
 * ```sh
 * $ pulumi import azure:media/contentKeyPolicy:ContentKeyPolicy example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.Media/mediaServices/account1/contentKeyPolicies/policy1
 * ```
 * @property description A description for the Policy.
 * @property mediaServicesAccountName The Media Services account name. Changing this forces a new Content Key Policy to be created.
 * @property name The name which should be used for this Content Key Policy. Changing this forces a new Content Key Policy to be created.
 * @property policyOptions One or more `policy_option` blocks as defined below.
 * @property resourceGroupName The name of the Resource Group where the Content Key Policy should exist. Changing this forces a new Content Key Policy to be created.
 */
public data class ContentKeyPolicyArgs(
    public val description: Output? = null,
    public val mediaServicesAccountName: Output? = null,
    public val name: Output? = null,
    public val policyOptions: Output>? = null,
    public val resourceGroupName: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.azure.media.ContentKeyPolicyArgs =
        com.pulumi.azure.media.ContentKeyPolicyArgs.builder()
            .description(description?.applyValue({ args0 -> args0 }))
            .mediaServicesAccountName(mediaServicesAccountName?.applyValue({ args0 -> args0 }))
            .name(name?.applyValue({ args0 -> args0 }))
            .policyOptions(
                policyOptions?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .resourceGroupName(resourceGroupName?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [ContentKeyPolicyArgs].
 */
@PulumiTagMarker
public class ContentKeyPolicyArgsBuilder internal constructor() {
    private var description: Output? = null

    private var mediaServicesAccountName: Output? = null

    private var name: Output? = null

    private var policyOptions: Output>? = null

    private var resourceGroupName: Output? = null

    /**
     * @param value A description for the Policy.
     */
    @JvmName("qfliguirehmujwcd")
    public suspend fun description(`value`: Output) {
        this.description = value
    }

    /**
     * @param value The Media Services account name. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("hwokjjhlphhawyfb")
    public suspend fun mediaServicesAccountName(`value`: Output) {
        this.mediaServicesAccountName = value
    }

    /**
     * @param value The name which should be used for this Content Key Policy. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("lltxfsjaceaxwhdv")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value One or more `policy_option` blocks as defined below.
     */
    @JvmName("frosmpyngbmnymxo")
    public suspend fun policyOptions(`value`: Output>) {
        this.policyOptions = value
    }

    @JvmName("rdgsubgfjtyumyyc")
    public suspend fun policyOptions(vararg values: Output) {
        this.policyOptions = Output.all(values.asList())
    }

    /**
     * @param values One or more `policy_option` blocks as defined below.
     */
    @JvmName("upeegtdrsjuhlryb")
    public suspend fun policyOptions(values: List>) {
        this.policyOptions = Output.all(values)
    }

    /**
     * @param value The name of the Resource Group where the Content Key Policy should exist. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("exmbiatrbrsymiab")
    public suspend fun resourceGroupName(`value`: Output) {
        this.resourceGroupName = value
    }

    /**
     * @param value A description for the Policy.
     */
    @JvmName("bepfbgrsrfxqtblf")
    public suspend fun description(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.description = mapped
    }

    /**
     * @param value The Media Services account name. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("jecsgsdcasnsvwtt")
    public suspend fun mediaServicesAccountName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mediaServicesAccountName = mapped
    }

    /**
     * @param value The name which should be used for this Content Key Policy. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("iwylvsscdnpdkyxs")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value One or more `policy_option` blocks as defined below.
     */
    @JvmName("mbgvhmyjjoikfxgx")
    public suspend fun policyOptions(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policyOptions = mapped
    }

    /**
     * @param argument One or more `policy_option` blocks as defined below.
     */
    @JvmName("xtlgmdtsfjdkcrak")
    public suspend
    fun policyOptions(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            ContentKeyPolicyPolicyOptionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.policyOptions = mapped
    }

    /**
     * @param argument One or more `policy_option` blocks as defined below.
     */
    @JvmName("fsfufthmumnafstt")
    public suspend fun policyOptions(
        vararg
        argument: suspend ContentKeyPolicyPolicyOptionArgsBuilder.() -> Unit,
    ) {
        val toBeMapped = argument.toList().map {
            ContentKeyPolicyPolicyOptionArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.policyOptions = mapped
    }

    /**
     * @param argument One or more `policy_option` blocks as defined below.
     */
    @JvmName("kstspvkjjsarnijj")
    public suspend
    fun policyOptions(argument: suspend ContentKeyPolicyPolicyOptionArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(
            ContentKeyPolicyPolicyOptionArgsBuilder().applySuspend {
                argument()
            }.build(),
        )
        val mapped = of(toBeMapped)
        this.policyOptions = mapped
    }

    /**
     * @param values One or more `policy_option` blocks as defined below.
     */
    @JvmName("jknqgahmwkpwrtaa")
    public suspend fun policyOptions(vararg values: ContentKeyPolicyPolicyOptionArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.policyOptions = mapped
    }

    /**
     * @param value The name of the Resource Group where the Content Key Policy should exist. Changing this forces a new Content Key Policy to be created.
     */
    @JvmName("peumogkoapiambhc")
    public suspend fun resourceGroupName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourceGroupName = mapped
    }

    internal fun build(): ContentKeyPolicyArgs = ContentKeyPolicyArgs(
        description = description,
        mediaServicesAccountName = mediaServicesAccountName,
        name = name,
        policyOptions = policyOptions,
        resourceGroupName = resourceGroupName,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy