diff --git a/provider/cmd/pulumi-resource-azuread/schema.json b/provider/cmd/pulumi-resource-azuread/schema.json
index 038325021..2087ce0d2 100644
--- a/provider/cmd/pulumi-resource-azuread/schema.json
+++ b/provider/cmd/pulumi-resource-azuread/schema.json
@@ -149,6 +149,568 @@
]
},
"types": {
+ "azuread:index/AccessPackageAssignmentPolicyApprovalSettings:AccessPackageAssignmentPolicyApprovalSettings": {
+ "properties": {
+ "approvalRequired": {
+ "type": "boolean",
+ "description": "Whether an approval is required.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "approvalRequiredForExtension": {
+ "type": "boolean",
+ "description": "Whether an approval is required to grant extension. Same approval settings used to approve initial access will apply.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "approvalStages": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStage:AccessPackageAssignmentPolicyApprovalSettingsApprovalStage"
+ },
+ "description": "An `approval_stage` block specifying the process to obtain an approval, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "requestorJustificationRequired": {
+ "type": "boolean",
+ "description": "Whether a requestor is required to provide a justification to request an access package. Justification is visible to approvers and the requestor.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object"
+ },
+ "azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStage:AccessPackageAssignmentPolicyApprovalSettingsApprovalStage": {
+ "properties": {
+ "alternativeApprovalEnabled": {
+ "type": "boolean",
+ "description": "Whether alternative approvers are enabled.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "alternativeApprovers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApprover:AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApprover"
+ },
+ "description": "A block specifying alternative approvers when escalation is enabled and the primary approvers do not respond before the escalation time, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "approvalTimeoutInDays": {
+ "type": "integer",
+ "description": "Maximum number of days within which a request must be approved. If a request is not approved within this time period after it is made, it will be automatically rejected.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "approverJustificationRequired": {
+ "type": "boolean",
+ "description": "Whether an approver must provide a justification for their decision. Justification is visible to other approvers and the requestor.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "enableAlternativeApprovalInDays": {
+ "type": "integer",
+ "description": "Number of days before the request is forwarded to alternative approvers.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "primaryApprovers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApprover:AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApprover"
+ },
+ "description": "A block specifying the users who will be asked to approve requests, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "approvalTimeoutInDays"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApprover:AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApprover": {
+ "properties": {
+ "backup": {
+ "type": "boolean",
+ "description": "For a user in an approval stage, this property indicates whether the user is a backup fallback approver.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of the subject.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "subjectType": {
+ "type": "string",
+ "description": "Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "subjectType"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApprover:AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApprover": {
+ "properties": {
+ "backup": {
+ "type": "boolean",
+ "description": "For a user in an approval stage, this property indicates whether the user is a backup fallback approver.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of the subject.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "subjectType": {
+ "type": "string",
+ "description": "Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "subjectType"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettings:AccessPackageAssignmentPolicyAssignmentReviewSettings": {
+ "properties": {
+ "accessRecommendationEnabled": {
+ "type": "boolean",
+ "description": "Whether to show the reviewer decision helpers. If enabled, system recommendations based on users' access information will be shown to the reviewers. The reviewer will be recommended to approve the review if the user has signed-in at least once during the last 30 days. The reviewer will be recommended to deny the review if the user has not signed-in during the last 30 days.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "accessReviewTimeoutBehavior": {
+ "type": "string",
+ "description": "Specifies the actions the system takes if reviewers don't respond in time. Valid values are `keepAccess`, `removeAccess`, or `acceptAccessRecommendation`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "approverJustificationRequired": {
+ "type": "boolean",
+ "description": "Whether a reviewer needs to provide a justification for their decision. Justification is visible to other reviewers and the requestor.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "durationInDays": {
+ "type": "integer",
+ "description": "How many days each occurrence of the access review series will run.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "enabled": {
+ "type": "boolean",
+ "description": "Whether to enable assignment review.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "reviewFrequency": {
+ "type": "string",
+ "description": "This will determine how often the access review campaign runs, valid values are `weekly`, `monthly`, `quarterly`, `halfyearly`, or `annual`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "reviewType": {
+ "type": "string",
+ "description": "Self review or specific reviewers. Valid values are `Self`, or `Reviewers`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "reviewers": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewer:AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewer"
+ },
+ "description": "One or more `reviewer` blocks to specify the users who will be reviewers (when `review_type` is `Reviewers`), as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "startingOn": {
+ "type": "string",
+ "description": "This is the date the access review campaign will start on, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z), default is now. Once an access review has been created, you cannot update its start date\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object"
+ },
+ "azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewer:AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewer": {
+ "properties": {
+ "backup": {
+ "type": "boolean",
+ "description": "For a user in an approval stage, this property indicates whether the user is a backup fallback approver.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of the subject.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "subjectType": {
+ "type": "string",
+ "description": "Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "subjectType"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestion:AccessPackageAssignmentPolicyQuestion": {
+ "properties": {
+ "choices": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestionChoice:AccessPackageAssignmentPolicyQuestionChoice"
+ },
+ "description": "One or more blocks configuring a choice to the question, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "required": {
+ "type": "boolean",
+ "description": "Whether this question is required.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "sequence": {
+ "type": "integer",
+ "description": "The sequence number of this question.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "text": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestionText:AccessPackageAssignmentPolicyQuestionText",
+ "description": "A block describing the content of this question, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "text"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestionChoice:AccessPackageAssignmentPolicyQuestionChoice": {
+ "properties": {
+ "actualValue": {
+ "type": "string",
+ "description": "The actual value of this choice.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "displayValue": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestionChoiceDisplayValue:AccessPackageAssignmentPolicyQuestionChoiceDisplayValue",
+ "description": "A block describing the display text of this choice, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "actualValue",
+ "displayValue"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestionChoiceDisplayValue:AccessPackageAssignmentPolicyQuestionChoiceDisplayValue": {
+ "properties": {
+ "defaultText": {
+ "type": "string",
+ "description": "The default text of this question.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "localizedTexts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedText:AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedText"
+ },
+ "description": "One or more blocks describing localized text of this question, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "defaultText"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedText:AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedText": {
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The localized content of this question.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "languageCode": {
+ "type": "string",
+ "description": "The ISO 639 language code for this question content.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "content",
+ "languageCode"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestionText:AccessPackageAssignmentPolicyQuestionText": {
+ "properties": {
+ "defaultText": {
+ "type": "string",
+ "description": "The default text of this question.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "localizedTexts": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestionTextLocalizedText:AccessPackageAssignmentPolicyQuestionTextLocalizedText"
+ },
+ "description": "One or more blocks describing localized text of this question, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "defaultText"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyQuestionTextLocalizedText:AccessPackageAssignmentPolicyQuestionTextLocalizedText": {
+ "properties": {
+ "content": {
+ "type": "string",
+ "description": "The localized content of this question.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "languageCode": {
+ "type": "string",
+ "description": "The ISO 639 language code for this question content.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "content",
+ "languageCode"
+ ]
+ },
+ "azuread:index/AccessPackageAssignmentPolicyRequestorSettings:AccessPackageAssignmentPolicyRequestorSettings": {
+ "properties": {
+ "requestors": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyRequestorSettingsRequestor:AccessPackageAssignmentPolicyRequestorSettingsRequestor"
+ },
+ "description": "A block specifying the users who are allowed to request on this policy, as documented below.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "requestsAccepted": {
+ "type": "boolean",
+ "description": "Whether to accept requests using this policy. When `false`, no new requests can be made using this policy.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "scopeType": {
+ "type": "string",
+ "description": "Specifies the scopes of the requestors. Valid values are `AllConfiguredConnectedOrganizationSubjects`, `AllExistingConnectedOrganizationSubjects`, `AllExistingDirectoryMemberUsers`, `AllExistingDirectorySubjects`, `AllExternalSubjects`, `NoSubjects`, `SpecificConnectedOrganizationSubjects`, or `SpecificDirectorySubjects`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object"
+ },
+ "azuread:index/AccessPackageAssignmentPolicyRequestorSettingsRequestor:AccessPackageAssignmentPolicyRequestorSettingsRequestor": {
+ "properties": {
+ "backup": {
+ "type": "boolean",
+ "description": "For a user in an approval stage, this property indicates whether the user is a backup fallback approver.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of the subject.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ },
+ "subjectType": {
+ "type": "string",
+ "description": "Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.\n",
+ "language": {
+ "python": {
+ "mapCase": false
+ }
+ }
+ }
+ },
+ "type": "object",
+ "required": [
+ "subjectType"
+ ]
+ },
"azuread:index/ApplicationApi:ApplicationApi": {
"properties": {
"knownClientApplications": {
@@ -3150,26 +3712,448 @@
"type": "boolean",
"description": "Allow Azure CLI to be used for Authentication\n"
},
- "useMsi": {
- "type": "boolean",
- "description": "Allow Managed Identity to be used for Authentication\n",
- "default": false,
- "defaultInfo": {
- "environment": [
- "ARM_USE_MSI"
- ]
+ "useMsi": {
+ "type": "boolean",
+ "description": "Allow Managed Identity to be used for Authentication\n",
+ "default": false,
+ "defaultInfo": {
+ "environment": [
+ "ARM_USE_MSI"
+ ]
+ }
+ },
+ "useOidc": {
+ "type": "boolean",
+ "description": "Allow OpenID Connect to be used for authentication\n"
+ }
+ },
+ "requiredInputs": [
+ "metadataHost"
+ ]
+ },
+ "resources": {
+ "azuread:index/accessPackage:AccessPackage": {
+ "description": "Manages an Access Package within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Access package manager` or `Global Administrator`\n\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleAccessPackageCatalog = new azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\", {\n displayName: \"example-catalog\",\n description: \"Example catalog\",\n});\nconst exampleAccessPackage = new azuread.AccessPackage(\"exampleAccessPackage\", {\n catalogId: exampleAccessPackageCatalog.id,\n displayName: \"access-package\",\n description: \"Access Package\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_access_package_catalog = azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\",\n display_name=\"example-catalog\",\n description=\"Example catalog\")\nexample_access_package = azuread.AccessPackage(\"exampleAccessPackage\",\n catalog_id=example_access_package_catalog.id,\n display_name=\"access-package\",\n description=\"Access Package\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog(\"exampleAccessPackageCatalog\", new()\n {\n DisplayName = \"example-catalog\",\n Description = \"Example catalog\",\n });\n\n var exampleAccessPackage = new AzureAD.AccessPackage(\"exampleAccessPackage\", new()\n {\n CatalogId = exampleAccessPackageCatalog.Id,\n DisplayName = \"access-package\",\n Description = \"Access Package\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleAccessPackageCatalog, err := azuread.NewAccessPackageCatalog(ctx, \"exampleAccessPackageCatalog\", \u0026azuread.AccessPackageCatalogArgs{\n\t\t\tDisplayName: pulumi.String(\"example-catalog\"),\n\t\t\tDescription: pulumi.String(\"Example catalog\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackage(ctx, \"exampleAccessPackage\", \u0026azuread.AccessPackageArgs{\n\t\t\tCatalogId: exampleAccessPackageCatalog.ID(),\n\t\t\tDisplayName: pulumi.String(\"access-package\"),\n\t\t\tDescription: pulumi.String(\"Access Package\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AccessPackageCatalog;\nimport com.pulumi.azuread.AccessPackageCatalogArgs;\nimport com.pulumi.azuread.AccessPackage;\nimport com.pulumi.azuread.AccessPackageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleAccessPackageCatalog = new AccessPackageCatalog(\"exampleAccessPackageCatalog\", AccessPackageCatalogArgs.builder() \n .displayName(\"example-catalog\")\n .description(\"Example catalog\")\n .build());\n\n var exampleAccessPackage = new AccessPackage(\"exampleAccessPackage\", AccessPackageArgs.builder() \n .catalogId(exampleAccessPackageCatalog.id())\n .displayName(\"access-package\")\n .description(\"Access Package\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleAccessPackageCatalog:\n type: azuread:AccessPackageCatalog\n properties:\n displayName: example-catalog\n description: Example catalog\n exampleAccessPackage:\n type: azuread:AccessPackage\n properties:\n catalogId: ${exampleAccessPackageCatalog.id}\n displayName: access-package\n description: Access Package\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAccess Packages can be imported using the `id`, e.g.\n\n```sh\n $ pulumi import azuread:index/accessPackage:AccessPackage example_package 00000000-0000-0000-0000-000000000000\n```\n\n ",
+ "properties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The ID of the Catalog this access package will be created in.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the access package.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package.\n"
+ },
+ "hidden": {
+ "type": "boolean",
+ "description": "Whether the access package is hidden from the requestor.\n"
+ }
+ },
+ "required": [
+ "catalogId",
+ "description",
+ "displayName"
+ ],
+ "inputProperties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The ID of the Catalog this access package will be created in.\n",
+ "willReplaceOnChanges": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the access package.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package.\n"
+ },
+ "hidden": {
+ "type": "boolean",
+ "description": "Whether the access package is hidden from the requestor.\n"
+ }
+ },
+ "requiredInputs": [
+ "catalogId",
+ "description",
+ "displayName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AccessPackage resources.\n",
+ "properties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The ID of the Catalog this access package will be created in.\n",
+ "willReplaceOnChanges": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the access package.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package.\n"
+ },
+ "hidden": {
+ "type": "boolean",
+ "description": "Whether the access package is hidden from the requestor.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy": {
+ "description": "Manages an assignment policy for an access package within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this resource requires `Global Administrator` directory role, or one of the `Catalog Owner` and `Access Package Manager` role in Idneity Governance.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"group-name\",\n securityEnabled: true,\n});\nconst exampleAccessPackageCatalog = new azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\", {\n displayName: \"example-catalog\",\n description: \"Example catalog\",\n});\nconst exampleAccessPackage = new azuread.AccessPackage(\"exampleAccessPackage\", {\n catalogId: exampleAccessPackageCatalog.id,\n displayName: \"access-package\",\n description: \"Access Package\",\n});\nconst test = new azuread.AccessPackageAssignmentPolicy(\"test\", {\n accessPackageId: azuread_access_package.test.id,\n displayName: \"assignment-policy\",\n description: \"My assignment policy\",\n durationInDays: 90,\n requestorSettings: {\n scopeType: \"AllExistingDirectoryMemberUsers\",\n },\n approvalSettings: {\n approvalRequired: true,\n approvalStages: [{\n approvalTimeoutInDays: 14,\n primaryApprovers: [{\n objectId: azuread_group.test.object_id,\n subjectType: \"groupMembers\",\n }],\n }],\n },\n assignmentReviewSettings: {\n enabled: true,\n reviewFrequency: \"weekly\",\n durationInDays: 3,\n reviewType: \"Self\",\n accessReviewTimeoutBehavior: \"keepAccess\",\n },\n questions: [{\n text: {\n defaultText: \"hello, how are you?\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"group-name\",\n security_enabled=True)\nexample_access_package_catalog = azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\",\n display_name=\"example-catalog\",\n description=\"Example catalog\")\nexample_access_package = azuread.AccessPackage(\"exampleAccessPackage\",\n catalog_id=example_access_package_catalog.id,\n display_name=\"access-package\",\n description=\"Access Package\")\ntest = azuread.AccessPackageAssignmentPolicy(\"test\",\n access_package_id=azuread_access_package[\"test\"][\"id\"],\n display_name=\"assignment-policy\",\n description=\"My assignment policy\",\n duration_in_days=90,\n requestor_settings=azuread.AccessPackageAssignmentPolicyRequestorSettingsArgs(\n scope_type=\"AllExistingDirectoryMemberUsers\",\n ),\n approval_settings=azuread.AccessPackageAssignmentPolicyApprovalSettingsArgs(\n approval_required=True,\n approval_stages=[azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs(\n approval_timeout_in_days=14,\n primary_approvers=[azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs(\n object_id=azuread_group[\"test\"][\"object_id\"],\n subject_type=\"groupMembers\",\n )],\n )],\n ),\n assignment_review_settings=azuread.AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs(\n enabled=True,\n review_frequency=\"weekly\",\n duration_in_days=3,\n review_type=\"Self\",\n access_review_timeout_behavior=\"keepAccess\",\n ),\n questions=[azuread.AccessPackageAssignmentPolicyQuestionArgs(\n text=azuread.AccessPackageAssignmentPolicyQuestionTextArgs(\n default_text=\"hello, how are you?\",\n ),\n )])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"group-name\",\n SecurityEnabled = true,\n });\n\n var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog(\"exampleAccessPackageCatalog\", new()\n {\n DisplayName = \"example-catalog\",\n Description = \"Example catalog\",\n });\n\n var exampleAccessPackage = new AzureAD.AccessPackage(\"exampleAccessPackage\", new()\n {\n CatalogId = exampleAccessPackageCatalog.Id,\n DisplayName = \"access-package\",\n Description = \"Access Package\",\n });\n\n var test = new AzureAD.AccessPackageAssignmentPolicy(\"test\", new()\n {\n AccessPackageId = azuread_access_package.Test.Id,\n DisplayName = \"assignment-policy\",\n Description = \"My assignment policy\",\n DurationInDays = 90,\n RequestorSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyRequestorSettingsArgs\n {\n ScopeType = \"AllExistingDirectoryMemberUsers\",\n },\n ApprovalSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsArgs\n {\n ApprovalRequired = true,\n ApprovalStages = new[]\n {\n new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs\n {\n ApprovalTimeoutInDays = 14,\n PrimaryApprovers = new[]\n {\n new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs\n {\n ObjectId = azuread_group.Test.Object_id,\n SubjectType = \"groupMembers\",\n },\n },\n },\n },\n },\n AssignmentReviewSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs\n {\n Enabled = true,\n ReviewFrequency = \"weekly\",\n DurationInDays = 3,\n ReviewType = \"Self\",\n AccessReviewTimeoutBehavior = \"keepAccess\",\n },\n Questions = new[]\n {\n new AzureAD.Inputs.AccessPackageAssignmentPolicyQuestionArgs\n {\n Text = new AzureAD.Inputs.AccessPackageAssignmentPolicyQuestionTextArgs\n {\n DefaultText = \"hello, how are you?\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"group-name\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPackageCatalog, err := azuread.NewAccessPackageCatalog(ctx, \"exampleAccessPackageCatalog\", \u0026azuread.AccessPackageCatalogArgs{\n\t\t\tDisplayName: pulumi.String(\"example-catalog\"),\n\t\t\tDescription: pulumi.String(\"Example catalog\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackage(ctx, \"exampleAccessPackage\", \u0026azuread.AccessPackageArgs{\n\t\t\tCatalogId: exampleAccessPackageCatalog.ID(),\n\t\t\tDisplayName: pulumi.String(\"access-package\"),\n\t\t\tDescription: pulumi.String(\"Access Package\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackageAssignmentPolicy(ctx, \"test\", \u0026azuread.AccessPackageAssignmentPolicyArgs{\n\t\t\tAccessPackageId: pulumi.Any(azuread_access_package.Test.Id),\n\t\t\tDisplayName: pulumi.String(\"assignment-policy\"),\n\t\t\tDescription: pulumi.String(\"My assignment policy\"),\n\t\t\tDurationInDays: pulumi.Int(90),\n\t\t\tRequestorSettings: \u0026azuread.AccessPackageAssignmentPolicyRequestorSettingsArgs{\n\t\t\t\tScopeType: pulumi.String(\"AllExistingDirectoryMemberUsers\"),\n\t\t\t},\n\t\t\tApprovalSettings: \u0026azuread.AccessPackageAssignmentPolicyApprovalSettingsArgs{\n\t\t\t\tApprovalRequired: pulumi.Bool(true),\n\t\t\t\tApprovalStages: azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArray{\n\t\t\t\t\t\u0026azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs{\n\t\t\t\t\t\tApprovalTimeoutInDays: pulumi.Int(14),\n\t\t\t\t\t\tPrimaryApprovers: azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArray{\n\t\t\t\t\t\t\t\u0026azuread.AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs{\n\t\t\t\t\t\t\t\tObjectId: pulumi.Any(azuread_group.Test.Object_id),\n\t\t\t\t\t\t\t\tSubjectType: pulumi.String(\"groupMembers\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAssignmentReviewSettings: \u0026azuread.AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tReviewFrequency: pulumi.String(\"weekly\"),\n\t\t\t\tDurationInDays: pulumi.Int(3),\n\t\t\t\tReviewType: pulumi.String(\"Self\"),\n\t\t\t\tAccessReviewTimeoutBehavior: pulumi.String(\"keepAccess\"),\n\t\t\t},\n\t\t\tQuestions: azuread.AccessPackageAssignmentPolicyQuestionArray{\n\t\t\t\t\u0026azuread.AccessPackageAssignmentPolicyQuestionArgs{\n\t\t\t\t\tText: \u0026azuread.AccessPackageAssignmentPolicyQuestionTextArgs{\n\t\t\t\t\t\tDefaultText: pulumi.String(\"hello, how are you?\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.AccessPackageCatalog;\nimport com.pulumi.azuread.AccessPackageCatalogArgs;\nimport com.pulumi.azuread.AccessPackage;\nimport com.pulumi.azuread.AccessPackageArgs;\nimport com.pulumi.azuread.AccessPackageAssignmentPolicy;\nimport com.pulumi.azuread.AccessPackageAssignmentPolicyArgs;\nimport com.pulumi.azuread.inputs.AccessPackageAssignmentPolicyRequestorSettingsArgs;\nimport com.pulumi.azuread.inputs.AccessPackageAssignmentPolicyApprovalSettingsArgs;\nimport com.pulumi.azuread.inputs.AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs;\nimport com.pulumi.azuread.inputs.AccessPackageAssignmentPolicyQuestionArgs;\nimport com.pulumi.azuread.inputs.AccessPackageAssignmentPolicyQuestionTextArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"group-name\")\n .securityEnabled(true)\n .build());\n\n var exampleAccessPackageCatalog = new AccessPackageCatalog(\"exampleAccessPackageCatalog\", AccessPackageCatalogArgs.builder() \n .displayName(\"example-catalog\")\n .description(\"Example catalog\")\n .build());\n\n var exampleAccessPackage = new AccessPackage(\"exampleAccessPackage\", AccessPackageArgs.builder() \n .catalogId(exampleAccessPackageCatalog.id())\n .displayName(\"access-package\")\n .description(\"Access Package\")\n .build());\n\n var test = new AccessPackageAssignmentPolicy(\"test\", AccessPackageAssignmentPolicyArgs.builder() \n .accessPackageId(azuread_access_package.test().id())\n .displayName(\"assignment-policy\")\n .description(\"My assignment policy\")\n .durationInDays(90)\n .requestorSettings(AccessPackageAssignmentPolicyRequestorSettingsArgs.builder()\n .scopeType(\"AllExistingDirectoryMemberUsers\")\n .build())\n .approvalSettings(AccessPackageAssignmentPolicyApprovalSettingsArgs.builder()\n .approvalRequired(true)\n .approvalStages(AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs.builder()\n .approvalTimeoutInDays(14)\n .primaryApprovers(AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs.builder()\n .objectId(azuread_group.test().object_id())\n .subjectType(\"groupMembers\")\n .build())\n .build())\n .build())\n .assignmentReviewSettings(AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs.builder()\n .enabled(true)\n .reviewFrequency(\"weekly\")\n .durationInDays(3)\n .reviewType(\"Self\")\n .accessReviewTimeoutBehavior(\"keepAccess\")\n .build())\n .questions(AccessPackageAssignmentPolicyQuestionArgs.builder()\n .text(AccessPackageAssignmentPolicyQuestionTextArgs.builder()\n .defaultText(\"hello, how are you?\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: group-name\n securityEnabled: true\n exampleAccessPackageCatalog:\n type: azuread:AccessPackageCatalog\n properties:\n displayName: example-catalog\n description: Example catalog\n exampleAccessPackage:\n type: azuread:AccessPackage\n properties:\n catalogId: ${exampleAccessPackageCatalog.id}\n displayName: access-package\n description: Access Package\n test:\n type: azuread:AccessPackageAssignmentPolicy\n properties:\n accessPackageId: ${azuread_access_package.test.id}\n displayName: assignment-policy\n description: My assignment policy\n durationInDays: 90\n requestorSettings:\n scopeType: AllExistingDirectoryMemberUsers\n approvalSettings:\n approvalRequired: true\n approvalStages:\n - approvalTimeoutInDays: 14\n primaryApprovers:\n - objectId: ${azuread_group.test.object_id}\n subjectType: groupMembers\n assignmentReviewSettings:\n enabled: true\n reviewFrequency: weekly\n durationInDays: 3\n reviewType: Self\n accessReviewTimeoutBehavior: keepAccess\n questions:\n - text:\n defaultText: hello, how are you?\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAn access package assignment policy can be imported using the ID, e.g.\n\n```sh\n $ pulumi import azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy example 00000000-0000-0000-0000-000000000000\n```\n\n ",
+ "properties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of the access package that will contain the policy.\n"
+ },
+ "approvalSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettings:AccessPackageAssignmentPolicyApprovalSettings",
+ "description": "An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.\n"
+ },
+ "assignmentReviewSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettings:AccessPackageAssignmentPolicyAssignmentReviewSettings",
+ "description": "An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the policy.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the policy.\n"
+ },
+ "durationInDays": {
+ "type": "integer",
+ "description": "How many days this assignment is valid for.\n"
+ },
+ "expirationDate": {
+ "type": "string",
+ "description": "The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).\n"
+ },
+ "extensionEnabled": {
+ "type": "boolean",
+ "description": "Whether users will be able to request extension of their access to this package before their access expires.\n"
+ },
+ "questions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestion:AccessPackageAssignmentPolicyQuestion"
+ },
+ "description": "One or more `question` blocks for the requestor, as documented below.\n"
+ },
+ "requestorSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyRequestorSettings:AccessPackageAssignmentPolicyRequestorSettings",
+ "description": "A `requestor_settings` block to configure the users who can request access, as documented below.\n"
+ }
+ },
+ "required": [
+ "accessPackageId",
+ "description",
+ "displayName"
+ ],
+ "inputProperties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of the access package that will contain the policy.\n"
+ },
+ "approvalSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettings:AccessPackageAssignmentPolicyApprovalSettings",
+ "description": "An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.\n"
+ },
+ "assignmentReviewSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettings:AccessPackageAssignmentPolicyAssignmentReviewSettings",
+ "description": "An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the policy.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the policy.\n"
+ },
+ "durationInDays": {
+ "type": "integer",
+ "description": "How many days this assignment is valid for.\n"
+ },
+ "expirationDate": {
+ "type": "string",
+ "description": "The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).\n"
+ },
+ "extensionEnabled": {
+ "type": "boolean",
+ "description": "Whether users will be able to request extension of their access to this package before their access expires.\n"
+ },
+ "questions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestion:AccessPackageAssignmentPolicyQuestion"
+ },
+ "description": "One or more `question` blocks for the requestor, as documented below.\n"
+ },
+ "requestorSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyRequestorSettings:AccessPackageAssignmentPolicyRequestorSettings",
+ "description": "A `requestor_settings` block to configure the users who can request access, as documented below.\n"
+ }
+ },
+ "requiredInputs": [
+ "accessPackageId",
+ "description",
+ "displayName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AccessPackageAssignmentPolicy resources.\n",
+ "properties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of the access package that will contain the policy.\n"
+ },
+ "approvalSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyApprovalSettings:AccessPackageAssignmentPolicyApprovalSettings",
+ "description": "An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.\n"
+ },
+ "assignmentReviewSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyAssignmentReviewSettings:AccessPackageAssignmentPolicyAssignmentReviewSettings",
+ "description": "An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the policy.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the policy.\n"
+ },
+ "durationInDays": {
+ "type": "integer",
+ "description": "How many days this assignment is valid for.\n"
+ },
+ "expirationDate": {
+ "type": "string",
+ "description": "The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).\n"
+ },
+ "extensionEnabled": {
+ "type": "boolean",
+ "description": "Whether users will be able to request extension of their access to this package before their access expires.\n"
+ },
+ "questions": {
+ "type": "array",
+ "items": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyQuestion:AccessPackageAssignmentPolicyQuestion"
+ },
+ "description": "One or more `question` blocks for the requestor, as documented below.\n"
+ },
+ "requestorSettings": {
+ "$ref": "#/types/azuread:index/AccessPackageAssignmentPolicyRequestorSettings:AccessPackageAssignmentPolicyRequestorSettings",
+ "description": "A `requestor_settings` block to configure the users who can request access, as documented below.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "azuread:index/accessPackageCatalog:AccessPackageCatalog": {
+ "description": "Manages an access package catalog within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Catalog creator` or `Global Administrator`\n\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = new azuread.AccessPackageCatalog(\"example\", {\n description: \"Example access package catalog\",\n displayName: \"example-access-package-catalog\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.AccessPackageCatalog(\"example\",\n description=\"Example access package catalog\",\n display_name=\"example-access-package-catalog\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new AzureAD.AccessPackageCatalog(\"example\", new()\n {\n Description = \"Example access package catalog\",\n DisplayName = \"example-access-package-catalog\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewAccessPackageCatalog(ctx, \"example\", \u0026azuread.AccessPackageCatalogArgs{\n\t\t\tDescription: pulumi.String(\"Example access package catalog\"),\n\t\t\tDisplayName: pulumi.String(\"example-access-package-catalog\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AccessPackageCatalog;\nimport com.pulumi.azuread.AccessPackageCatalogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AccessPackageCatalog(\"example\", AccessPackageCatalogArgs.builder() \n .description(\"Example access package catalog\")\n .displayName(\"example-access-package-catalog\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:AccessPackageCatalog\n properties:\n description: Example access package catalog\n displayName: example-access-package-catalog\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAn Access Package Catalog can be imported using the `id`, e.g.\n\n```sh\n $ pulumi import azuread:index/accessPackageCatalog:AccessPackageCatalog example 00000000-0000-0000-0000-000000000000\n```\n\n ",
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "The description of the access package catalog.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package catalog.\n"
+ },
+ "externallyVisible": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog can be requested by users outside the tenant.\n"
+ },
+ "published": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog are available for management.\n"
+ }
+ },
+ "required": [
+ "description",
+ "displayName"
+ ],
+ "inputProperties": {
+ "description": {
+ "type": "string",
+ "description": "The description of the access package catalog.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package catalog.\n"
+ },
+ "externallyVisible": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog can be requested by users outside the tenant.\n"
+ },
+ "published": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog are available for management.\n"
+ }
+ },
+ "requiredInputs": [
+ "description",
+ "displayName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AccessPackageCatalog resources.\n",
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "The description of the access package catalog.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package catalog.\n"
+ },
+ "externallyVisible": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog can be requested by users outside the tenant.\n"
+ },
+ "published": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog are available for management.\n"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation": {
+ "description": "Manages the resources added to access package catalogs within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner` or `Global Administrator`\n\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"example-group\",\n securityEnabled: true,\n});\nconst exampleAccessPackageCatalog = new azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\", {\n displayName: \"example-catalog\",\n description: \"Example catalog\",\n});\nconst exampleAccessPackageResourceCatalogAssociation = new azuread.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", {\n catalogId: azuread_access_package_catalog.example_catalog.id,\n resourceOriginId: azuread_group.example_group.object_id,\n resourceOriginSystem: \"AadGroup\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"example-group\",\n security_enabled=True)\nexample_access_package_catalog = azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\",\n display_name=\"example-catalog\",\n description=\"Example catalog\")\nexample_access_package_resource_catalog_association = azuread.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\",\n catalog_id=azuread_access_package_catalog[\"example_catalog\"][\"id\"],\n resource_origin_id=azuread_group[\"example_group\"][\"object_id\"],\n resource_origin_system=\"AadGroup\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"example-group\",\n SecurityEnabled = true,\n });\n\n var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog(\"exampleAccessPackageCatalog\", new()\n {\n DisplayName = \"example-catalog\",\n Description = \"Example catalog\",\n });\n\n var exampleAccessPackageResourceCatalogAssociation = new AzureAD.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", new()\n {\n CatalogId = azuread_access_package_catalog.Example_catalog.Id,\n ResourceOriginId = azuread_group.Example_group.Object_id,\n ResourceOriginSystem = \"AadGroup\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example-group\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackageCatalog(ctx, \"exampleAccessPackageCatalog\", \u0026azuread.AccessPackageCatalogArgs{\n\t\t\tDisplayName: pulumi.String(\"example-catalog\"),\n\t\t\tDescription: pulumi.String(\"Example catalog\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackageResourceCatalogAssociation(ctx, \"exampleAccessPackageResourceCatalogAssociation\", \u0026azuread.AccessPackageResourceCatalogAssociationArgs{\n\t\t\tCatalogId: pulumi.Any(azuread_access_package_catalog.Example_catalog.Id),\n\t\t\tResourceOriginId: pulumi.Any(azuread_group.Example_group.Object_id),\n\t\t\tResourceOriginSystem: pulumi.String(\"AadGroup\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.AccessPackageCatalog;\nimport com.pulumi.azuread.AccessPackageCatalogArgs;\nimport com.pulumi.azuread.AccessPackageResourceCatalogAssociation;\nimport com.pulumi.azuread.AccessPackageResourceCatalogAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"example-group\")\n .securityEnabled(true)\n .build());\n\n var exampleAccessPackageCatalog = new AccessPackageCatalog(\"exampleAccessPackageCatalog\", AccessPackageCatalogArgs.builder() \n .displayName(\"example-catalog\")\n .description(\"Example catalog\")\n .build());\n\n var exampleAccessPackageResourceCatalogAssociation = new AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", AccessPackageResourceCatalogAssociationArgs.builder() \n .catalogId(azuread_access_package_catalog.example_catalog().id())\n .resourceOriginId(azuread_group.example_group().object_id())\n .resourceOriginSystem(\"AadGroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: example-group\n securityEnabled: true\n exampleAccessPackageCatalog:\n type: azuread:AccessPackageCatalog\n properties:\n displayName: example-catalog\n description: Example catalog\n exampleAccessPackageResourceCatalogAssociation:\n type: azuread:AccessPackageResourceCatalogAssociation\n properties:\n catalogId: ${azuread_access_package_catalog.example_catalog.id}\n resourceOriginId: ${azuread_group.example_group.object_id}\n resourceOriginSystem: AadGroup\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThe resource and catalog association can be imported using the catalog ID and the resource origin ID, e.g.\n\n```sh\n $ pulumi import azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation example 00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Catalog ID and the Resource Origin ID in the format `{CatalogID}/{ResourceOriginID}`. ",
+ "properties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The unique ID of the access package catalog. Changing this forces a new resource to be created.\n"
+ },
+ "resourceOriginId": {
+ "type": "string",
+ "description": "The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.\n"
+ },
+ "resourceOriginSystem": {
+ "type": "string",
+ "description": "The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.\n"
+ }
+ },
+ "required": [
+ "catalogId",
+ "resourceOriginId",
+ "resourceOriginSystem"
+ ],
+ "inputProperties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The unique ID of the access package catalog. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "resourceOriginId": {
+ "type": "string",
+ "description": "The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "resourceOriginSystem": {
+ "type": "string",
+ "description": "The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "catalogId",
+ "resourceOriginId",
+ "resourceOriginSystem"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AccessPackageResourceCatalogAssociation resources.\n",
+ "properties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The unique ID of the access package catalog. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "resourceOriginId": {
+ "type": "string",
+ "description": "The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "resourceOriginSystem": {
+ "type": "string",
+ "description": "The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ }
+ },
+ "azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation": {
+ "description": "Manages the resources added to access packages within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Access package manager` or `Global Administrator`.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"example-group\",\n securityEnabled: true,\n});\nconst exampleAccessPackageCatalog = new azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\", {\n displayName: \"example-catalog\",\n description: \"Example catalog\",\n});\nconst exampleAccessPackageResourceCatalogAssociation = new azuread.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", {\n catalogId: azuread_access_package_catalog.example_catalog.id,\n resourceOriginId: azuread_group.example_group.object_id,\n resourceOriginSystem: \"AadGroup\",\n});\nconst exampleAccessPackage = new azuread.AccessPackage(\"exampleAccessPackage\", {\n displayName: \"example-package\",\n description: \"Example Package\",\n catalogId: azuread_access_package_catalog.example_catalog.id,\n});\nconst exampleAccessPackageResourcePackageAssociation = new azuread.AccessPackageResourcePackageAssociation(\"exampleAccessPackageResourcePackageAssociation\", {\n accessPackageId: exampleAccessPackage.id,\n catalogResourceAssociationId: exampleAccessPackageResourceCatalogAssociation.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"example-group\",\n security_enabled=True)\nexample_access_package_catalog = azuread.AccessPackageCatalog(\"exampleAccessPackageCatalog\",\n display_name=\"example-catalog\",\n description=\"Example catalog\")\nexample_access_package_resource_catalog_association = azuread.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\",\n catalog_id=azuread_access_package_catalog[\"example_catalog\"][\"id\"],\n resource_origin_id=azuread_group[\"example_group\"][\"object_id\"],\n resource_origin_system=\"AadGroup\")\nexample_access_package = azuread.AccessPackage(\"exampleAccessPackage\",\n display_name=\"example-package\",\n description=\"Example Package\",\n catalog_id=azuread_access_package_catalog[\"example_catalog\"][\"id\"])\nexample_access_package_resource_package_association = azuread.AccessPackageResourcePackageAssociation(\"exampleAccessPackageResourcePackageAssociation\",\n access_package_id=example_access_package.id,\n catalog_resource_association_id=example_access_package_resource_catalog_association.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"example-group\",\n SecurityEnabled = true,\n });\n\n var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog(\"exampleAccessPackageCatalog\", new()\n {\n DisplayName = \"example-catalog\",\n Description = \"Example catalog\",\n });\n\n var exampleAccessPackageResourceCatalogAssociation = new AzureAD.AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", new()\n {\n CatalogId = azuread_access_package_catalog.Example_catalog.Id,\n ResourceOriginId = azuread_group.Example_group.Object_id,\n ResourceOriginSystem = \"AadGroup\",\n });\n\n var exampleAccessPackage = new AzureAD.AccessPackage(\"exampleAccessPackage\", new()\n {\n DisplayName = \"example-package\",\n Description = \"Example Package\",\n CatalogId = azuread_access_package_catalog.Example_catalog.Id,\n });\n\n var exampleAccessPackageResourcePackageAssociation = new AzureAD.AccessPackageResourcePackageAssociation(\"exampleAccessPackageResourcePackageAssociation\", new()\n {\n AccessPackageId = exampleAccessPackage.Id,\n CatalogResourceAssociationId = exampleAccessPackageResourceCatalogAssociation.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example-group\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackageCatalog(ctx, \"exampleAccessPackageCatalog\", \u0026azuread.AccessPackageCatalogArgs{\n\t\t\tDisplayName: pulumi.String(\"example-catalog\"),\n\t\t\tDescription: pulumi.String(\"Example catalog\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPackageResourceCatalogAssociation, err := azuread.NewAccessPackageResourceCatalogAssociation(ctx, \"exampleAccessPackageResourceCatalogAssociation\", \u0026azuread.AccessPackageResourceCatalogAssociationArgs{\n\t\t\tCatalogId: pulumi.Any(azuread_access_package_catalog.Example_catalog.Id),\n\t\t\tResourceOriginId: pulumi.Any(azuread_group.Example_group.Object_id),\n\t\t\tResourceOriginSystem: pulumi.String(\"AadGroup\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAccessPackage, err := azuread.NewAccessPackage(ctx, \"exampleAccessPackage\", \u0026azuread.AccessPackageArgs{\n\t\t\tDisplayName: pulumi.String(\"example-package\"),\n\t\t\tDescription: pulumi.String(\"Example Package\"),\n\t\t\tCatalogId: pulumi.Any(azuread_access_package_catalog.Example_catalog.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAccessPackageResourcePackageAssociation(ctx, \"exampleAccessPackageResourcePackageAssociation\", \u0026azuread.AccessPackageResourcePackageAssociationArgs{\n\t\t\tAccessPackageId: exampleAccessPackage.ID(),\n\t\t\tCatalogResourceAssociationId: exampleAccessPackageResourceCatalogAssociation.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.AccessPackageCatalog;\nimport com.pulumi.azuread.AccessPackageCatalogArgs;\nimport com.pulumi.azuread.AccessPackageResourceCatalogAssociation;\nimport com.pulumi.azuread.AccessPackageResourceCatalogAssociationArgs;\nimport com.pulumi.azuread.AccessPackage;\nimport com.pulumi.azuread.AccessPackageArgs;\nimport com.pulumi.azuread.AccessPackageResourcePackageAssociation;\nimport com.pulumi.azuread.AccessPackageResourcePackageAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"example-group\")\n .securityEnabled(true)\n .build());\n\n var exampleAccessPackageCatalog = new AccessPackageCatalog(\"exampleAccessPackageCatalog\", AccessPackageCatalogArgs.builder() \n .displayName(\"example-catalog\")\n .description(\"Example catalog\")\n .build());\n\n var exampleAccessPackageResourceCatalogAssociation = new AccessPackageResourceCatalogAssociation(\"exampleAccessPackageResourceCatalogAssociation\", AccessPackageResourceCatalogAssociationArgs.builder() \n .catalogId(azuread_access_package_catalog.example_catalog().id())\n .resourceOriginId(azuread_group.example_group().object_id())\n .resourceOriginSystem(\"AadGroup\")\n .build());\n\n var exampleAccessPackage = new AccessPackage(\"exampleAccessPackage\", AccessPackageArgs.builder() \n .displayName(\"example-package\")\n .description(\"Example Package\")\n .catalogId(azuread_access_package_catalog.example_catalog().id())\n .build());\n\n var exampleAccessPackageResourcePackageAssociation = new AccessPackageResourcePackageAssociation(\"exampleAccessPackageResourcePackageAssociation\", AccessPackageResourcePackageAssociationArgs.builder() \n .accessPackageId(exampleAccessPackage.id())\n .catalogResourceAssociationId(exampleAccessPackageResourceCatalogAssociation.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: example-group\n securityEnabled: true\n exampleAccessPackageCatalog:\n type: azuread:AccessPackageCatalog\n properties:\n displayName: example-catalog\n description: Example catalog\n exampleAccessPackageResourceCatalogAssociation:\n type: azuread:AccessPackageResourceCatalogAssociation\n properties:\n catalogId: ${azuread_access_package_catalog.example_catalog.id}\n resourceOriginId: ${azuread_group.example_group.object_id}\n resourceOriginSystem: AadGroup\n exampleAccessPackage:\n type: azuread:AccessPackage\n properties:\n displayName: example-package\n description: Example Package\n catalogId: ${azuread_access_package_catalog.example_catalog.id}\n exampleAccessPackageResourcePackageAssociation:\n type: azuread:AccessPackageResourcePackageAssociation\n properties:\n accessPackageId: ${exampleAccessPackage.id}\n catalogResourceAssociationId: ${exampleAccessPackageResourceCatalogAssociation.id}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nThe resource and catalog association can be imported using the access package ID, the resource association ID, the resource origin ID, and the access type, e.g.\n\n```sh\n $ pulumi import azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation example 00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111_22222222-2222-2222-2222-22222222/33333333-3333-3333-3333-33333333/Member\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Access Package ID, the Resource Association ID, the Resource Origin ID, and the Access Type, in the format `{AccessPackageID}/{ResourceAssociationID}/{ResourceOriginID}/{AccessType}`. ",
+ "properties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of access package this resource association is configured to. Changing this forces a new resource to be created.\n"
+ },
+ "accessType": {
+ "type": "string",
+ "description": "The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.\n"
+ },
+ "catalogResourceAssociationId": {
+ "type": "string",
+ "description": "The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.\n"
+ }
+ },
+ "required": [
+ "accessPackageId",
+ "catalogResourceAssociationId"
+ ],
+ "inputProperties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of access package this resource association is configured to. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "accessType": {
+ "type": "string",
+ "description": "The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "catalogResourceAssociationId": {
+ "type": "string",
+ "description": "The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
}
},
- "useOidc": {
- "type": "boolean",
- "description": "Allow OpenID Connect to be used for authentication\n"
+ "requiredInputs": [
+ "accessPackageId",
+ "catalogResourceAssociationId"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AccessPackageResourcePackageAssociation resources.\n",
+ "properties": {
+ "accessPackageId": {
+ "type": "string",
+ "description": "The ID of access package this resource association is configured to. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "accessType": {
+ "type": "string",
+ "description": "The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "catalogResourceAssociationId": {
+ "type": "string",
+ "description": "The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
}
},
- "requiredInputs": [
- "metadataHost"
- ]
- },
- "resources": {
"azuread:index/administrativeUnit:AdministrativeUnit": {
"description": "Manages an Administrative Unit within Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `AdministrativeUnit.ReadWrite.All` or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Privileged Role Administrator` or `Global Administrator`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AdministrativeUnit;\nimport com.pulumi.azuread.AdministrativeUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new AdministrativeUnit(\"example\", AdministrativeUnitArgs.builder() \n .description(\"Just an example\")\n .displayName(\"Example-AU\")\n .visibility(\"Public\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:AdministrativeUnit\n properties:\n description: Just an example\n displayName: Example-AU\n visibility: Public\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAdministrative units can be imported using their object ID, e.g.\n\n```sh\n $ pulumi import azuread:index/administrativeUnit:AdministrativeUnit example 00000000-0000-0000-0000-000000000000\n```\n\n ",
"properties": {
@@ -3309,6 +4293,71 @@
"type": "object"
}
},
+ "azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember": {
+ "description": "Manages a single directory role assignment scoped to an administrative unit within Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `AdministrativeUnit.ReadWrite.All` and `RoleManagement.ReadWrite.Directory`, or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Privileged Role Administrator` or `Global Administrator`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleUser = azuread.getUser({\n userPrincipalName: \"jdoe@hashicorp.com\",\n});\nconst exampleAdministrativeUnit = new azuread.AdministrativeUnit(\"exampleAdministrativeUnit\", {displayName: \"Example-AU\"});\nconst exampleDirectoryRole = new azuread.DirectoryRole(\"exampleDirectoryRole\", {displayName: \"Security administrator\"});\nconst exampleAdministrativeUnitRoleMember = new azuread.AdministrativeUnitRoleMember(\"exampleAdministrativeUnitRoleMember\", {\n roleObjectId: exampleDirectoryRole.objectId,\n administrativeUnitObjectId: exampleAdministrativeUnit.id,\n memberObjectId: exampleUser.then(exampleUser =\u003e exampleUser.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_user = azuread.get_user(user_principal_name=\"jdoe@hashicorp.com\")\nexample_administrative_unit = azuread.AdministrativeUnit(\"exampleAdministrativeUnit\", display_name=\"Example-AU\")\nexample_directory_role = azuread.DirectoryRole(\"exampleDirectoryRole\", display_name=\"Security administrator\")\nexample_administrative_unit_role_member = azuread.AdministrativeUnitRoleMember(\"exampleAdministrativeUnitRoleMember\",\n role_object_id=example_directory_role.object_id,\n administrative_unit_object_id=example_administrative_unit.id,\n member_object_id=example_user.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleUser = AzureAD.GetUser.Invoke(new()\n {\n UserPrincipalName = \"jdoe@hashicorp.com\",\n });\n\n var exampleAdministrativeUnit = new AzureAD.AdministrativeUnit(\"exampleAdministrativeUnit\", new()\n {\n DisplayName = \"Example-AU\",\n });\n\n var exampleDirectoryRole = new AzureAD.DirectoryRole(\"exampleDirectoryRole\", new()\n {\n DisplayName = \"Security administrator\",\n });\n\n var exampleAdministrativeUnitRoleMember = new AzureAD.AdministrativeUnitRoleMember(\"exampleAdministrativeUnitRoleMember\", new()\n {\n RoleObjectId = exampleDirectoryRole.ObjectId,\n AdministrativeUnitObjectId = exampleAdministrativeUnit.Id,\n MemberObjectId = exampleUser.Apply(getUserResult =\u003e getUserResult.Id),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUser, err := azuread.LookupUser(ctx, \u0026azuread.LookupUserArgs{\n\t\t\tUserPrincipalName: pulumi.StringRef(\"jdoe@hashicorp.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleAdministrativeUnit, err := azuread.NewAdministrativeUnit(ctx, \"exampleAdministrativeUnit\", \u0026azuread.AdministrativeUnitArgs{\n\t\t\tDisplayName: pulumi.String(\"Example-AU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleDirectoryRole, err := azuread.NewDirectoryRole(ctx, \"exampleDirectoryRole\", \u0026azuread.DirectoryRoleArgs{\n\t\t\tDisplayName: pulumi.String(\"Security administrator\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAdministrativeUnitRoleMember(ctx, \"exampleAdministrativeUnitRoleMember\", \u0026azuread.AdministrativeUnitRoleMemberArgs{\n\t\t\tRoleObjectId: exampleDirectoryRole.ObjectId,\n\t\t\tAdministrativeUnitObjectId: exampleAdministrativeUnit.ID(),\n\t\t\tMemberObjectId: *pulumi.String(exampleUser.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetUserArgs;\nimport com.pulumi.azuread.AdministrativeUnit;\nimport com.pulumi.azuread.AdministrativeUnitArgs;\nimport com.pulumi.azuread.DirectoryRole;\nimport com.pulumi.azuread.DirectoryRoleArgs;\nimport com.pulumi.azuread.AdministrativeUnitRoleMember;\nimport com.pulumi.azuread.AdministrativeUnitRoleMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleUser = AzureadFunctions.getUser(GetUserArgs.builder()\n .userPrincipalName(\"jdoe@hashicorp.com\")\n .build());\n\n var exampleAdministrativeUnit = new AdministrativeUnit(\"exampleAdministrativeUnit\", AdministrativeUnitArgs.builder() \n .displayName(\"Example-AU\")\n .build());\n\n var exampleDirectoryRole = new DirectoryRole(\"exampleDirectoryRole\", DirectoryRoleArgs.builder() \n .displayName(\"Security administrator\")\n .build());\n\n var exampleAdministrativeUnitRoleMember = new AdministrativeUnitRoleMember(\"exampleAdministrativeUnitRoleMember\", AdministrativeUnitRoleMemberArgs.builder() \n .roleObjectId(exampleDirectoryRole.objectId())\n .administrativeUnitObjectId(exampleAdministrativeUnit.id())\n .memberObjectId(exampleUser.applyValue(getUserResult -\u003e getUserResult.id()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleAdministrativeUnit:\n type: azuread:AdministrativeUnit\n properties:\n displayName: Example-AU\n exampleDirectoryRole:\n type: azuread:DirectoryRole\n properties:\n displayName: Security administrator\n exampleAdministrativeUnitRoleMember:\n type: azuread:AdministrativeUnitRoleMember\n properties:\n roleObjectId: ${exampleDirectoryRole.objectId}\n administrativeUnitObjectId: ${exampleAdministrativeUnit.id}\n memberObjectId: ${exampleUser.id}\nvariables:\n exampleUser:\n fn::invoke:\n Function: azuread:getUser\n Arguments:\n userPrincipalName: jdoe@hashicorp.com\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nAdministrative unit role members can be imported using the object ID of the administrative unit and the unique ID of the role assignment, e.g.\n\n```sh\n $ pulumi import azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember test 00000000-0000-0000-0000-000000000000/roleMember/zX37MRLyF0uvE-xf2WH4B7x-6CPLfudNnxFGj800htpBXqkxW7bITqGb6Rj4kuTuS\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Administrative Unit Object ID and the role assignment ID in the format `{AdministrativeUnitObjectID}/roleMember/{RoleAssignmentID}`. ",
+ "properties": {
+ "administrativeUnitObjectId": {
+ "type": "string",
+ "description": "The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.\n"
+ },
+ "memberObjectId": {
+ "type": "string",
+ "description": "The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.\n"
+ },
+ "roleObjectId": {
+ "type": "string",
+ "description": "The object ID of the directory role you want to assign. Changing this forces a new resource to be created.\n"
+ }
+ },
+ "required": [
+ "administrativeUnitObjectId",
+ "memberObjectId",
+ "roleObjectId"
+ ],
+ "inputProperties": {
+ "administrativeUnitObjectId": {
+ "type": "string",
+ "description": "The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "memberObjectId": {
+ "type": "string",
+ "description": "The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "roleObjectId": {
+ "type": "string",
+ "description": "The object ID of the directory role you want to assign. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "administrativeUnitObjectId",
+ "memberObjectId",
+ "roleObjectId"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering AdministrativeUnitRoleMember resources.\n",
+ "properties": {
+ "administrativeUnitObjectId": {
+ "type": "string",
+ "description": "The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "memberObjectId": {
+ "type": "string",
+ "description": "The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "roleObjectId": {
+ "type": "string",
+ "description": "The object ID of the directory role you want to assign. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ }
+ },
"azuread:index/appRoleAssignment:AppRoleAssignment": {
"description": "Manages an app role assignment for a group, user or service principal. Can be used to grant admin consent for application permissions.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `AppRoleAssignment.ReadWrite.All` and `Application.Read.All`, or `AppRoleAssignment.ReadWrite.All` and `Directory.Read.All`, or `Application.ReadWrite.All`, or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Application Administrator` or `Global Administrator`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*App role assignment for accessing Microsoft Graph*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst wellKnown = azuread.getApplicationPublishedAppIds({});\nconst msgraph = new azuread.ServicePrincipal(\"msgraph\", {\n applicationId: wellKnown.then(wellKnown =\u003e wellKnown.result?.MicrosoftGraph),\n useExisting: true,\n});\nconst exampleApplication = new azuread.Application(\"exampleApplication\", {\n displayName: \"example\",\n requiredResourceAccesses: [{\n resourceAppId: wellKnown.then(wellKnown =\u003e wellKnown.result?.MicrosoftGraph),\n resourceAccesses: [\n {\n id: msgraph.appRoleIds[\"User.Read.All\"],\n type: \"Role\",\n },\n {\n id: msgraph.oauth2PermissionScopeIds[\"User.ReadWrite\"],\n type: \"Scope\",\n },\n ],\n }],\n});\nconst exampleServicePrincipal = new azuread.ServicePrincipal(\"exampleServicePrincipal\", {applicationId: exampleApplication.applicationId});\nconst exampleAppRoleAssignment = new azuread.AppRoleAssignment(\"exampleAppRoleAssignment\", {\n appRoleId: msgraph.appRoleIds[\"User.Read.All\"],\n principalObjectId: exampleServicePrincipal.objectId,\n resourceObjectId: msgraph.objectId,\n});\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var wellKnown = AzureAD.GetApplicationPublishedAppIds.Invoke();\n\n var msgraph = new AzureAD.ServicePrincipal(\"msgraph\", new()\n {\n ApplicationId = wellKnown.Apply(getApplicationPublishedAppIdsResult =\u003e getApplicationPublishedAppIdsResult.Result?.MicrosoftGraph),\n UseExisting = true,\n });\n\n var exampleApplication = new AzureAD.Application(\"exampleApplication\", new()\n {\n DisplayName = \"example\",\n RequiredResourceAccesses = new[]\n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAppId = wellKnown.Apply(getApplicationPublishedAppIdsResult =\u003e getApplicationPublishedAppIdsResult.Result?.MicrosoftGraph),\n ResourceAccesses = new[]\n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = msgraph.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.User_Read_All),\n Type = \"Role\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = msgraph.Oauth2PermissionScopeIds.Apply(oauth2PermissionScopeIds =\u003e oauth2PermissionScopeIds.User_ReadWrite),\n Type = \"Scope\",\n },\n },\n },\n },\n });\n\n var exampleServicePrincipal = new AzureAD.ServicePrincipal(\"exampleServicePrincipal\", new()\n {\n ApplicationId = exampleApplication.ApplicationId,\n });\n\n var exampleAppRoleAssignment = new AzureAD.AppRoleAssignment(\"exampleAppRoleAssignment\", new()\n {\n AppRoleId = msgraph.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.User_Read_All),\n PrincipalObjectId = exampleServicePrincipal.ObjectId,\n ResourceObjectId = msgraph.ObjectId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\twellKnown, err := azuread.GetApplicationPublishedAppIds(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmsgraph, err := azuread.NewServicePrincipal(ctx, \"msgraph\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: *pulumi.String(wellKnown.Result.MicrosoftGraph),\n\t\t\tUseExisting: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleApplication, err := azuread.NewApplication(ctx, \"exampleApplication\", \u0026azuread.ApplicationArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tRequiredResourceAccesses: azuread.ApplicationRequiredResourceAccessArray{\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\n\t\t\t\t\tResourceAppId: *pulumi.String(wellKnown.Result.MicrosoftGraph),\n\t\t\t\t\tResourceAccesses: azuread.ApplicationRequiredResourceAccessResourceAccessArray{\n\t\t\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessResourceAccessArgs{\n\t\t\t\t\t\t\tId: msgraph.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\t\t\t\t\treturn appRoleIds.User.Read.All, nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\tType: pulumi.String(\"Role\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessResourceAccessArgs{\n\t\t\t\t\t\t\tId: msgraph.Oauth2PermissionScopeIds.ApplyT(func(oauth2PermissionScopeIds map[string]string) (string, error) {\n\t\t\t\t\t\t\t\treturn oauth2PermissionScopeIds.User.ReadWrite, nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\tType: pulumi.String(\"Scope\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServicePrincipal, err := azuread.NewServicePrincipal(ctx, \"exampleServicePrincipal\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: exampleApplication.ApplicationId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAppRoleAssignment(ctx, \"exampleAppRoleAssignment\", \u0026azuread.AppRoleAssignmentArgs{\n\t\t\tAppRoleId: msgraph.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\treturn appRoleIds.User.Read.All, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPrincipalObjectId: exampleServicePrincipal.ObjectId,\n\t\t\tResourceObjectId: msgraph.ObjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport com.pulumi.azuread.Application;\nimport com.pulumi.azuread.ApplicationArgs;\nimport com.pulumi.azuread.inputs.ApplicationRequiredResourceAccessArgs;\nimport com.pulumi.azuread.AppRoleAssignment;\nimport com.pulumi.azuread.AppRoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var wellKnown = AzureadFunctions.getApplicationPublishedAppIds();\n\n var msgraph = new ServicePrincipal(\"msgraph\", ServicePrincipalArgs.builder() \n .applicationId(wellKnown.applyValue(getApplicationPublishedAppIdsResult -\u003e getApplicationPublishedAppIdsResult.result().MicrosoftGraph()))\n .useExisting(true)\n .build());\n\n var exampleApplication = new Application(\"exampleApplication\", ApplicationArgs.builder() \n .displayName(\"example\")\n .requiredResourceAccesses(ApplicationRequiredResourceAccessArgs.builder()\n .resourceAppId(wellKnown.applyValue(getApplicationPublishedAppIdsResult -\u003e getApplicationPublishedAppIdsResult.result().MicrosoftGraph()))\n .resourceAccesses( \n ApplicationRequiredResourceAccessResourceAccessArgs.builder()\n .id(msgraph.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.User.Read.All()))\n .type(\"Role\")\n .build(),\n ApplicationRequiredResourceAccessResourceAccessArgs.builder()\n .id(msgraph.oauth2PermissionScopeIds().applyValue(oauth2PermissionScopeIds -\u003e oauth2PermissionScopeIds.User.ReadWrite()))\n .type(\"Scope\")\n .build())\n .build())\n .build());\n\n var exampleServicePrincipal = new ServicePrincipal(\"exampleServicePrincipal\", ServicePrincipalArgs.builder() \n .applicationId(exampleApplication.applicationId())\n .build());\n\n var exampleAppRoleAssignment = new AppRoleAssignment(\"exampleAppRoleAssignment\", AppRoleAssignmentArgs.builder() \n .appRoleId(msgraph.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.User.Read.All()))\n .principalObjectId(exampleServicePrincipal.objectId())\n .resourceObjectId(msgraph.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n msgraph:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${wellKnown.result.MicrosoftGraph}\n useExisting: true\n exampleApplication:\n type: azuread:Application\n properties:\n displayName: example\n requiredResourceAccesses:\n - resourceAppId: ${wellKnown.result.MicrosoftGraph}\n resourceAccesses:\n - id: ${msgraph.appRoleIds\"User.Read.All\"[%!s(MISSING)]}\n type: Role\n - id: ${msgraph.oauth2PermissionScopeIds\"User.ReadWrite\"[%!s(MISSING)]}\n type: Scope\n exampleServicePrincipal:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${exampleApplication.applicationId}\n exampleAppRoleAssignment:\n type: azuread:AppRoleAssignment\n properties:\n appRoleId: ${msgraph.appRoleIds\"User.Read.All\"[%!s(MISSING)]}\n principalObjectId: ${exampleServicePrincipal.objectId}\n resourceObjectId: ${msgraph.objectId}\nvariables:\n wellKnown:\n fn::invoke:\n Function: azuread:getApplicationPublishedAppIds\n Arguments: {}\n```\n\n*App role assignment for internal application*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst internalApplication = new azuread.Application(\"internalApplication\", {\n displayName: \"internal\",\n appRoles: [{\n allowedMemberTypes: [\"Application\"],\n description: \"Apps can query the database\",\n displayName: \"Query\",\n enabled: true,\n id: \"00000000-0000-0000-0000-111111111111\",\n value: \"Query.All\",\n }],\n});\nconst internalServicePrincipal = new azuread.ServicePrincipal(\"internalServicePrincipal\", {applicationId: internalApplication.applicationId});\nconst exampleApplication = new azuread.Application(\"exampleApplication\", {\n displayName: \"example\",\n requiredResourceAccesses: [{\n resourceAppId: internalApplication.applicationId,\n resourceAccesses: [{\n id: internalServicePrincipal.appRoleIds[\"Query.All\"],\n type: \"Role\",\n }],\n }],\n});\nconst exampleServicePrincipal = new azuread.ServicePrincipal(\"exampleServicePrincipal\", {applicationId: exampleApplication.applicationId});\nconst exampleAppRoleAssignment = new azuread.AppRoleAssignment(\"exampleAppRoleAssignment\", {\n appRoleId: internalServicePrincipal.appRoleIds[\"Query.All\"],\n principalObjectId: exampleServicePrincipal.objectId,\n resourceObjectId: internalServicePrincipal.objectId,\n});\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var internalApplication = new AzureAD.Application(\"internalApplication\", new()\n {\n DisplayName = \"internal\",\n AppRoles = new[]\n {\n new AzureAD.Inputs.ApplicationAppRoleArgs\n {\n AllowedMemberTypes = new[]\n {\n \"Application\",\n },\n Description = \"Apps can query the database\",\n DisplayName = \"Query\",\n Enabled = true,\n Id = \"00000000-0000-0000-0000-111111111111\",\n Value = \"Query.All\",\n },\n },\n });\n\n var internalServicePrincipal = new AzureAD.ServicePrincipal(\"internalServicePrincipal\", new()\n {\n ApplicationId = internalApplication.ApplicationId,\n });\n\n var exampleApplication = new AzureAD.Application(\"exampleApplication\", new()\n {\n DisplayName = \"example\",\n RequiredResourceAccesses = new[]\n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAppId = internalApplication.ApplicationId,\n ResourceAccesses = new[]\n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = internalServicePrincipal.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.Query_All),\n Type = \"Role\",\n },\n },\n },\n },\n });\n\n var exampleServicePrincipal = new AzureAD.ServicePrincipal(\"exampleServicePrincipal\", new()\n {\n ApplicationId = exampleApplication.ApplicationId,\n });\n\n var exampleAppRoleAssignment = new AzureAD.AppRoleAssignment(\"exampleAppRoleAssignment\", new()\n {\n AppRoleId = internalServicePrincipal.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.Query_All),\n PrincipalObjectId = exampleServicePrincipal.ObjectId,\n ResourceObjectId = internalServicePrincipal.ObjectId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinternalApplication, err := azuread.NewApplication(ctx, \"internalApplication\", \u0026azuread.ApplicationArgs{\n\t\t\tDisplayName: pulumi.String(\"internal\"),\n\t\t\tAppRoles: azuread.ApplicationAppRoleArray{\n\t\t\t\t\u0026azuread.ApplicationAppRoleArgs{\n\t\t\t\t\tAllowedMemberTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Application\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Apps can query the database\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Query\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tId: pulumi.String(\"00000000-0000-0000-0000-111111111111\"),\n\t\t\t\t\tValue: pulumi.String(\"Query.All\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalServicePrincipal, err := azuread.NewServicePrincipal(ctx, \"internalServicePrincipal\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: internalApplication.ApplicationId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleApplication, err := azuread.NewApplication(ctx, \"exampleApplication\", \u0026azuread.ApplicationArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tRequiredResourceAccesses: azuread.ApplicationRequiredResourceAccessArray{\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\n\t\t\t\t\tResourceAppId: internalApplication.ApplicationId,\n\t\t\t\t\tResourceAccesses: azuread.ApplicationRequiredResourceAccessResourceAccessArray{\n\t\t\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessResourceAccessArgs{\n\t\t\t\t\t\t\tId: internalServicePrincipal.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\t\t\t\t\treturn appRoleIds.Query.All, nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t\tType: pulumi.String(\"Role\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleServicePrincipal, err := azuread.NewServicePrincipal(ctx, \"exampleServicePrincipal\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: exampleApplication.ApplicationId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAppRoleAssignment(ctx, \"exampleAppRoleAssignment\", \u0026azuread.AppRoleAssignmentArgs{\n\t\t\tAppRoleId: internalServicePrincipal.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\treturn appRoleIds.Query.All, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPrincipalObjectId: exampleServicePrincipal.ObjectId,\n\t\t\tResourceObjectId: internalServicePrincipal.ObjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.Application;\nimport com.pulumi.azuread.ApplicationArgs;\nimport com.pulumi.azuread.inputs.ApplicationAppRoleArgs;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport com.pulumi.azuread.inputs.ApplicationRequiredResourceAccessArgs;\nimport com.pulumi.azuread.AppRoleAssignment;\nimport com.pulumi.azuread.AppRoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var internalApplication = new Application(\"internalApplication\", ApplicationArgs.builder() \n .displayName(\"internal\")\n .appRoles(ApplicationAppRoleArgs.builder()\n .allowedMemberTypes(\"Application\")\n .description(\"Apps can query the database\")\n .displayName(\"Query\")\n .enabled(true)\n .id(\"00000000-0000-0000-0000-111111111111\")\n .value(\"Query.All\")\n .build())\n .build());\n\n var internalServicePrincipal = new ServicePrincipal(\"internalServicePrincipal\", ServicePrincipalArgs.builder() \n .applicationId(internalApplication.applicationId())\n .build());\n\n var exampleApplication = new Application(\"exampleApplication\", ApplicationArgs.builder() \n .displayName(\"example\")\n .requiredResourceAccesses(ApplicationRequiredResourceAccessArgs.builder()\n .resourceAppId(internalApplication.applicationId())\n .resourceAccesses(ApplicationRequiredResourceAccessResourceAccessArgs.builder()\n .id(internalServicePrincipal.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.Query.All()))\n .type(\"Role\")\n .build())\n .build())\n .build());\n\n var exampleServicePrincipal = new ServicePrincipal(\"exampleServicePrincipal\", ServicePrincipalArgs.builder() \n .applicationId(exampleApplication.applicationId())\n .build());\n\n var exampleAppRoleAssignment = new AppRoleAssignment(\"exampleAppRoleAssignment\", AppRoleAssignmentArgs.builder() \n .appRoleId(internalServicePrincipal.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.Query.All()))\n .principalObjectId(exampleServicePrincipal.objectId())\n .resourceObjectId(internalServicePrincipal.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalApplication:\n type: azuread:Application\n properties:\n displayName: internal\n appRoles:\n - allowedMemberTypes:\n - Application\n description: Apps can query the database\n displayName: Query\n enabled: true\n id: 00000000-0000-0000-0000-111111111111\n value: Query.All\n internalServicePrincipal:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${internalApplication.applicationId}\n exampleApplication:\n type: azuread:Application\n properties:\n displayName: example\n requiredResourceAccesses:\n - resourceAppId: ${internalApplication.applicationId}\n resourceAccesses:\n - id: ${internalServicePrincipal.appRoleIds\"Query.All\"[%!s(MISSING)]}\n type: Role\n exampleServicePrincipal:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${exampleApplication.applicationId}\n exampleAppRoleAssignment:\n type: azuread:AppRoleAssignment\n properties:\n appRoleId: ${internalServicePrincipal.appRoleIds\"Query.All\"[%!s(MISSING)]}\n principalObjectId: ${exampleServicePrincipal.objectId}\n resourceObjectId: ${internalServicePrincipal.objectId}\n```\n\n*Assign a user and group to an internal application*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleDomains = azuread.getDomains({\n onlyInitial: true,\n});\nconst internalApplication = new azuread.Application(\"internalApplication\", {\n displayName: \"internal\",\n appRoles: [{\n allowedMemberTypes: [\n \"Application\",\n \"User\",\n ],\n description: \"Admins can perform all task actions\",\n displayName: \"Admin\",\n enabled: true,\n id: \"00000000-0000-0000-0000-222222222222\",\n value: \"Admin.All\",\n }],\n});\nconst internalServicePrincipal = new azuread.ServicePrincipal(\"internalServicePrincipal\", {applicationId: internalApplication.applicationId});\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"example\",\n securityEnabled: true,\n});\nconst exampleAppRoleAssignment = new azuread.AppRoleAssignment(\"exampleAppRoleAssignment\", {\n appRoleId: internalServicePrincipal.appRoleIds[\"Admin.All\"],\n principalObjectId: exampleGroup.objectId,\n resourceObjectId: internalServicePrincipal.objectId,\n});\nconst exampleUser = new azuread.User(\"exampleUser\", {\n displayName: \"D. Duck\",\n password: \"SecretP@sswd99!\",\n userPrincipalName: exampleDomains.then(exampleDomains =\u003e `d.duck@${exampleDomains.domains?.[0]?.domainName}`),\n});\nconst exampleIndex_appRoleAssignmentAppRoleAssignment = new azuread.AppRoleAssignment(\"exampleIndex/appRoleAssignmentAppRoleAssignment\", {\n appRoleId: internalServicePrincipal.appRoleIds[\"Admin.All\"],\n principalObjectId: exampleUser.objectId,\n resourceObjectId: internalServicePrincipal.objectId,\n});\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleDomains = AzureAD.GetDomains.Invoke(new()\n {\n OnlyInitial = true,\n });\n\n var internalApplication = new AzureAD.Application(\"internalApplication\", new()\n {\n DisplayName = \"internal\",\n AppRoles = new[]\n {\n new AzureAD.Inputs.ApplicationAppRoleArgs\n {\n AllowedMemberTypes = new[]\n {\n \"Application\",\n \"User\",\n },\n Description = \"Admins can perform all task actions\",\n DisplayName = \"Admin\",\n Enabled = true,\n Id = \"00000000-0000-0000-0000-222222222222\",\n Value = \"Admin.All\",\n },\n },\n });\n\n var internalServicePrincipal = new AzureAD.ServicePrincipal(\"internalServicePrincipal\", new()\n {\n ApplicationId = internalApplication.ApplicationId,\n });\n\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"example\",\n SecurityEnabled = true,\n });\n\n var exampleAppRoleAssignment = new AzureAD.AppRoleAssignment(\"exampleAppRoleAssignment\", new()\n {\n AppRoleId = internalServicePrincipal.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.Admin_All),\n PrincipalObjectId = exampleGroup.ObjectId,\n ResourceObjectId = internalServicePrincipal.ObjectId,\n });\n\n var exampleUser = new AzureAD.User(\"exampleUser\", new()\n {\n DisplayName = \"D. Duck\",\n Password = \"SecretP@sswd99!\",\n UserPrincipalName = $\"d.duck@{exampleDomains.Apply(getDomainsResult =\u003e getDomainsResult.Domains[0]?.DomainName)}\",\n });\n\n var exampleIndex_appRoleAssignmentAppRoleAssignment = new AzureAD.AppRoleAssignment(\"exampleIndex/appRoleAssignmentAppRoleAssignment\", new()\n {\n AppRoleId = internalServicePrincipal.AppRoleIds.Apply(appRoleIds =\u003e appRoleIds.Admin_All),\n PrincipalObjectId = exampleUser.ObjectId,\n ResourceObjectId = internalServicePrincipal.ObjectId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleDomains, err := azuread.GetDomains(ctx, \u0026azuread.GetDomainsArgs{\n\t\t\tOnlyInitial: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalApplication, err := azuread.NewApplication(ctx, \"internalApplication\", \u0026azuread.ApplicationArgs{\n\t\t\tDisplayName: pulumi.String(\"internal\"),\n\t\t\tAppRoles: azuread.ApplicationAppRoleArray{\n\t\t\t\t\u0026azuread.ApplicationAppRoleArgs{\n\t\t\t\t\tAllowedMemberTypes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"Application\"),\n\t\t\t\t\t\tpulumi.String(\"User\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Admins can perform all task actions\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Admin\"),\n\t\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\t\tId: pulumi.String(\"00000000-0000-0000-0000-222222222222\"),\n\t\t\t\t\tValue: pulumi.String(\"Admin.All\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalServicePrincipal, err := azuread.NewServicePrincipal(ctx, \"internalServicePrincipal\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: internalApplication.ApplicationId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGroup, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAppRoleAssignment(ctx, \"exampleAppRoleAssignment\", \u0026azuread.AppRoleAssignmentArgs{\n\t\t\tAppRoleId: internalServicePrincipal.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\treturn appRoleIds.Admin.All, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPrincipalObjectId: exampleGroup.ObjectId,\n\t\t\tResourceObjectId: internalServicePrincipal.ObjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleUser, err := azuread.NewUser(ctx, \"exampleUser\", \u0026azuread.UserArgs{\n\t\t\tDisplayName: pulumi.String(\"D. Duck\"),\n\t\t\tPassword: pulumi.String(\"SecretP@sswd99!\"),\n\t\t\tUserPrincipalName: pulumi.String(fmt.Sprintf(\"d.duck@%v\", exampleDomains.Domains[0].DomainName)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAppRoleAssignment(ctx, \"exampleIndex/appRoleAssignmentAppRoleAssignment\", \u0026azuread.AppRoleAssignmentArgs{\n\t\t\tAppRoleId: internalServicePrincipal.AppRoleIds.ApplyT(func(appRoleIds map[string]string) (string, error) {\n\t\t\t\treturn appRoleIds.Admin.All, nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tPrincipalObjectId: exampleUser.ObjectId,\n\t\t\tResourceObjectId: internalServicePrincipal.ObjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetDomainsArgs;\nimport com.pulumi.azuread.Application;\nimport com.pulumi.azuread.ApplicationArgs;\nimport com.pulumi.azuread.inputs.ApplicationAppRoleArgs;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.AppRoleAssignment;\nimport com.pulumi.azuread.AppRoleAssignmentArgs;\nimport com.pulumi.azuread.User;\nimport com.pulumi.azuread.UserArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleDomains = AzureadFunctions.getDomains(GetDomainsArgs.builder()\n .onlyInitial(true)\n .build());\n\n var internalApplication = new Application(\"internalApplication\", ApplicationArgs.builder() \n .displayName(\"internal\")\n .appRoles(ApplicationAppRoleArgs.builder()\n .allowedMemberTypes( \n \"Application\",\n \"User\")\n .description(\"Admins can perform all task actions\")\n .displayName(\"Admin\")\n .enabled(true)\n .id(\"00000000-0000-0000-0000-222222222222\")\n .value(\"Admin.All\")\n .build())\n .build());\n\n var internalServicePrincipal = new ServicePrincipal(\"internalServicePrincipal\", ServicePrincipalArgs.builder() \n .applicationId(internalApplication.applicationId())\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"example\")\n .securityEnabled(true)\n .build());\n\n var exampleAppRoleAssignment = new AppRoleAssignment(\"exampleAppRoleAssignment\", AppRoleAssignmentArgs.builder() \n .appRoleId(internalServicePrincipal.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.Admin.All()))\n .principalObjectId(exampleGroup.objectId())\n .resourceObjectId(internalServicePrincipal.objectId())\n .build());\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder() \n .displayName(\"D. Duck\")\n .password(\"SecretP@sswd99!\")\n .userPrincipalName(String.format(\"d.duck@%s\", exampleDomains.applyValue(getDomainsResult -\u003e getDomainsResult.domains()[0].domainName())))\n .build());\n\n var exampleIndex_appRoleAssignmentAppRoleAssignment = new AppRoleAssignment(\"exampleIndex/appRoleAssignmentAppRoleAssignment\", AppRoleAssignmentArgs.builder() \n .appRoleId(internalServicePrincipal.appRoleIds().applyValue(appRoleIds -\u003e appRoleIds.Admin.All()))\n .principalObjectId(exampleUser.objectId())\n .resourceObjectId(internalServicePrincipal.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalApplication:\n type: azuread:Application\n properties:\n displayName: internal\n appRoles:\n - allowedMemberTypes:\n - Application\n - User\n description: Admins can perform all task actions\n displayName: Admin\n enabled: true\n id: 00000000-0000-0000-0000-222222222222\n value: Admin.All\n internalServicePrincipal:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${internalApplication.applicationId}\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: example\n securityEnabled: true\n exampleAppRoleAssignment:\n type: azuread:AppRoleAssignment\n properties:\n appRoleId: ${internalServicePrincipal.appRoleIds\"Admin.All\"[%!s(MISSING)]}\n principalObjectId: ${exampleGroup.objectId}\n resourceObjectId: ${internalServicePrincipal.objectId}\n exampleUser:\n type: azuread:User\n properties:\n displayName: D. Duck\n password: SecretP@sswd99!\n userPrincipalName: d.duck@${exampleDomains.domains[0].domainName}\n exampleIndex/appRoleAssignmentAppRoleAssignment:\n type: azuread:AppRoleAssignment\n properties:\n appRoleId: ${internalServicePrincipal.appRoleIds\"Admin.All\"[%!s(MISSING)]}\n principalObjectId: ${exampleUser.objectId}\n resourceObjectId: ${internalServicePrincipal.objectId}\nvariables:\n exampleDomains:\n fn::invoke:\n Function: azuread:getDomains\n Arguments:\n onlyInitial: true\n```\n\n*Assign a group to the default app role for an internal application*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst internalApplication = new azuread.Application(\"internalApplication\", {displayName: \"internal\"});\nconst internalServicePrincipal = new azuread.ServicePrincipal(\"internalServicePrincipal\", {applicationId: internalApplication.applicationId});\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"example\",\n securityEnabled: true,\n});\nconst exampleAppRoleAssignment = new azuread.AppRoleAssignment(\"exampleAppRoleAssignment\", {\n appRoleId: \"00000000-0000-0000-0000-000000000000\",\n principalObjectId: exampleGroup.objectId,\n resourceObjectId: internalServicePrincipal.objectId,\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ninternal_application = azuread.Application(\"internalApplication\", display_name=\"internal\")\ninternal_service_principal = azuread.ServicePrincipal(\"internalServicePrincipal\", application_id=internal_application.application_id)\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"example\",\n security_enabled=True)\nexample_app_role_assignment = azuread.AppRoleAssignment(\"exampleAppRoleAssignment\",\n app_role_id=\"00000000-0000-0000-0000-000000000000\",\n principal_object_id=example_group.object_id,\n resource_object_id=internal_service_principal.object_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var internalApplication = new AzureAD.Application(\"internalApplication\", new()\n {\n DisplayName = \"internal\",\n });\n\n var internalServicePrincipal = new AzureAD.ServicePrincipal(\"internalServicePrincipal\", new()\n {\n ApplicationId = internalApplication.ApplicationId,\n });\n\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"example\",\n SecurityEnabled = true,\n });\n\n var exampleAppRoleAssignment = new AzureAD.AppRoleAssignment(\"exampleAppRoleAssignment\", new()\n {\n AppRoleId = \"00000000-0000-0000-0000-000000000000\",\n PrincipalObjectId = exampleGroup.ObjectId,\n ResourceObjectId = internalServicePrincipal.ObjectId,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinternalApplication, err := azuread.NewApplication(ctx, \"internalApplication\", \u0026azuread.ApplicationArgs{\n\t\t\tDisplayName: pulumi.String(\"internal\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalServicePrincipal, err := azuread.NewServicePrincipal(ctx, \"internalServicePrincipal\", \u0026azuread.ServicePrincipalArgs{\n\t\t\tApplicationId: internalApplication.ApplicationId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGroup, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewAppRoleAssignment(ctx, \"exampleAppRoleAssignment\", \u0026azuread.AppRoleAssignmentArgs{\n\t\t\tAppRoleId: pulumi.String(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tPrincipalObjectId: exampleGroup.ObjectId,\n\t\t\tResourceObjectId: internalServicePrincipal.ObjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.Application;\nimport com.pulumi.azuread.ApplicationArgs;\nimport com.pulumi.azuread.ServicePrincipal;\nimport com.pulumi.azuread.ServicePrincipalArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.AppRoleAssignment;\nimport com.pulumi.azuread.AppRoleAssignmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var internalApplication = new Application(\"internalApplication\", ApplicationArgs.builder() \n .displayName(\"internal\")\n .build());\n\n var internalServicePrincipal = new ServicePrincipal(\"internalServicePrincipal\", ServicePrincipalArgs.builder() \n .applicationId(internalApplication.applicationId())\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"example\")\n .securityEnabled(true)\n .build());\n\n var exampleAppRoleAssignment = new AppRoleAssignment(\"exampleAppRoleAssignment\", AppRoleAssignmentArgs.builder() \n .appRoleId(\"00000000-0000-0000-0000-000000000000\")\n .principalObjectId(exampleGroup.objectId())\n .resourceObjectId(internalServicePrincipal.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalApplication:\n type: azuread:Application\n properties:\n displayName: internal\n internalServicePrincipal:\n type: azuread:ServicePrincipal\n properties:\n applicationId: ${internalApplication.applicationId}\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: example\n securityEnabled: true\n exampleAppRoleAssignment:\n type: azuread:AppRoleAssignment\n properties:\n appRoleId: 00000000-0000-0000-0000-000000000000\n principalObjectId: ${exampleGroup.objectId}\n resourceObjectId: ${internalServicePrincipal.objectId}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nApp role assignments can be imported using the object ID of the service principal representing the resource and the ID of the app role assignment (note_not_ the ID of the app role), e.g.\n\n```sh\n $ pulumi import azuread:index/appRoleAssignment:AppRoleAssignment example 00000000-0000-0000-0000-000000000000/appRoleAssignment/aaBBcDDeFG6h5JKLMN2PQrrssTTUUvWWxxxxxyyyzzz\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Resource Service Principal Object ID and the ID of the App Role Assignment in the format `{ResourcePrincipalID}/appRoleAssignment/{AppRoleAssignmentID}`. ",
"properties": {
@@ -3532,6 +4581,10 @@
},
"description": "A collection of `required_resource_access` blocks as documented below.\n"
},
+ "serviceManagementReference": {
+ "type": "string",
+ "description": "References application context information from a Service or Asset Management database.\n"
+ },
"signInAudience": {
"type": "string",
"description": "The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.\n"
@@ -3672,6 +4725,10 @@
},
"description": "A collection of `required_resource_access` blocks as documented below.\n"
},
+ "serviceManagementReference": {
+ "type": "string",
+ "description": "References application context information from a Service or Asset Management database.\n"
+ },
"signInAudience": {
"type": "string",
"description": "The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.\n"
@@ -3839,6 +4896,10 @@
},
"description": "A collection of `required_resource_access` blocks as documented below.\n"
},
+ "serviceManagementReference": {
+ "type": "string",
+ "description": "References application context information from a Service or Asset Management database.\n"
+ },
"signInAudience": {
"type": "string",
"description": "The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.\n"
@@ -4816,7 +5877,7 @@
}
},
"azuread:index/group:Group": {
- "description": "Manages a group within Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`\n\nIf using the `assignable_to_role` property, this resource additionally requires one of the following application roles: `RoleManagement.ReadWrite.Directory` or `Directory.ReadWrite.All`\n\nIf specifying owners for a group, which are user principals, this resource additionally requires one of the following application roles: `User.Read.All`, `User.ReadWrite.All`, `Directory.Read.All` or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Groups Administrator`, `User Administrator` or `Global Administrator`\n\nWhen creating this resource in administrative units exclusively, the role `Groups Administrator` is required to be scoped on any administrative unit used.\n\nThe `external_senders_allowed`, `auto_subscribe_new_members`, `hide_from_address_lists` and `hide_from_outlook_clients` properties can only be configured when authenticating as a user and cannot be configured when authenticating as a service principal. Additionally, the user being used for authentication must be a Member of the tenant where the group is being managed and _not_ a Guest. This is a known API issue; please see the [Microsoft Graph Known Issues](https://docs.microsoft.com/en-us/graph/known-issues#groups) official documentation.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*Basic example*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst example = new azuread.Group(\"example\", {\n displayName: \"example\",\n owners: [current.then(current =\u003e current.objectId)],\n securityEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\nexample = azuread.Group(\"example\",\n display_name=\"example\",\n owners=[current.object_id],\n security_enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"example\",\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n },\n SecurityEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t},\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"example\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:Group\n properties:\n displayName: example\n owners:\n - ${current.objectId}\n securityEnabled: true\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Microsoft 365 group*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst groupOwner = new azuread.User(\"groupOwner\", {\n userPrincipalName: \"example-group-owner@hashicorp.com\",\n displayName: \"Group Owner\",\n mailNickname: \"example-group-owner\",\n password: \"SecretP@sswd99!\",\n});\nconst example = new azuread.Group(\"example\", {\n displayName: \"example\",\n mailEnabled: true,\n mailNickname: \"ExampleGroup\",\n securityEnabled: true,\n types: [\"Unified\"],\n owners: [\n current.then(current =\u003e current.objectId),\n groupOwner.objectId,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\ngroup_owner = azuread.User(\"groupOwner\",\n user_principal_name=\"example-group-owner@hashicorp.com\",\n display_name=\"Group Owner\",\n mail_nickname=\"example-group-owner\",\n password=\"SecretP@sswd99!\")\nexample = azuread.Group(\"example\",\n display_name=\"example\",\n mail_enabled=True,\n mail_nickname=\"ExampleGroup\",\n security_enabled=True,\n types=[\"Unified\"],\n owners=[\n current.object_id,\n group_owner.object_id,\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var groupOwner = new AzureAD.User(\"groupOwner\", new()\n {\n UserPrincipalName = \"example-group-owner@hashicorp.com\",\n DisplayName = \"Group Owner\",\n MailNickname = \"example-group-owner\",\n Password = \"SecretP@sswd99!\",\n });\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"example\",\n MailEnabled = true,\n MailNickname = \"ExampleGroup\",\n SecurityEnabled = true,\n Types = new[]\n {\n \"Unified\",\n },\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n groupOwner.ObjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroupOwner, err := azuread.NewUser(ctx, \"groupOwner\", \u0026azuread.UserArgs{\n\t\t\tUserPrincipalName: pulumi.String(\"example-group-owner@hashicorp.com\"),\n\t\t\tDisplayName: pulumi.String(\"Group Owner\"),\n\t\t\tMailNickname: pulumi.String(\"example-group-owner\"),\n\t\t\tPassword: pulumi.String(\"SecretP@sswd99!\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tMailEnabled: pulumi.Bool(true),\n\t\t\tMailNickname: pulumi.String(\"ExampleGroup\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t\tTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Unified\"),\n\t\t\t},\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t\tgroupOwner.ObjectId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.User;\nimport com.pulumi.azuread.UserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var groupOwner = new User(\"groupOwner\", UserArgs.builder() \n .userPrincipalName(\"example-group-owner@hashicorp.com\")\n .displayName(\"Group Owner\")\n .mailNickname(\"example-group-owner\")\n .password(\"SecretP@sswd99!\")\n .build());\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"example\")\n .mailEnabled(true)\n .mailNickname(\"ExampleGroup\")\n .securityEnabled(true)\n .types(\"Unified\")\n .owners( \n current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()),\n groupOwner.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n groupOwner:\n type: azuread:User\n properties:\n userPrincipalName: example-group-owner@hashicorp.com\n displayName: Group Owner\n mailNickname: example-group-owner\n password: SecretP@sswd99!\n example:\n type: azuread:Group\n properties:\n displayName: example\n mailEnabled: true\n mailNickname: ExampleGroup\n securityEnabled: true\n types:\n - Unified\n owners:\n - ${current.objectId}\n - ${groupOwner.objectId}\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Group with members*\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.User;\nimport com.pulumi.azuread.UserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder() \n .displayName(\"J Doe\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .password(\"notSecure123\")\n .userPrincipalName(\"jdoe@hashicorp.com\")\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"MyGroup\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .members(exampleUser.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleUser:\n type: azuread:User\n properties:\n displayName: J Doe\n owners:\n - ${current.objectId}\n password: notSecure123\n userPrincipalName: jdoe@hashicorp.com\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: MyGroup\n owners:\n - ${current.objectId}\n securityEnabled: true\n members:\n - ${exampleUser.objectId}\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Group with dynamic membership*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst example = new azuread.Group(\"example\", {\n displayName: \"MyGroup\",\n owners: [current.then(current =\u003e current.objectId)],\n securityEnabled: true,\n types: [\"DynamicMembership\"],\n dynamicMembership: {\n enabled: true,\n rule: \"user.department -eq \\\"Sales\\\"\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\nexample = azuread.Group(\"example\",\n display_name=\"MyGroup\",\n owners=[current.object_id],\n security_enabled=True,\n types=[\"DynamicMembership\"],\n dynamic_membership=azuread.GroupDynamicMembershipArgs(\n enabled=True,\n rule=\"user.department -eq \\\"Sales\\\"\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"MyGroup\",\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n },\n SecurityEnabled = true,\n Types = new[]\n {\n \"DynamicMembership\",\n },\n DynamicMembership = new AzureAD.Inputs.GroupDynamicMembershipArgs\n {\n Enabled = true,\n Rule = \"user.department -eq \\\"Sales\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"MyGroup\"),\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t},\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t\tTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"DynamicMembership\"),\n\t\t\t},\n\t\t\tDynamicMembership: \u0026azuread.GroupDynamicMembershipArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRule: pulumi.String(\"user.department -eq \\\"Sales\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.inputs.GroupDynamicMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"MyGroup\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .types(\"DynamicMembership\")\n .dynamicMembership(GroupDynamicMembershipArgs.builder()\n .enabled(true)\n .rule(\"user.department -eq \\\"Sales\\\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:Group\n properties:\n displayName: MyGroup\n owners:\n - ${current.objectId}\n securityEnabled: true\n types:\n - DynamicMembership\n dynamicMembership:\n enabled: true\n rule: user.department -eq \"Sales\"\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGroups can be imported using their object ID, e.g.\n\n```sh\n $ pulumi import azuread:index/group:Group my_group 00000000-0000-0000-0000-000000000000\n```\n\n ",
+ "description": "Manages a group within Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`.\n\nAlternatively, if the authenticated service principal is also an owner of the group being managed, this resource can use the application role: `Group.Create`.\n\nIf using the `assignable_to_role` property, this resource additionally requires one of the following application roles: `RoleManagement.ReadWrite.Directory` or `Directory.ReadWrite.All`\n\nIf specifying owners for a group, which are user principals, this resource additionally requires one of the following application roles: `User.Read.All`, `User.ReadWrite.All`, `Directory.Read.All` or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Groups Administrator`, `User Administrator` or `Global Administrator`\n\nWhen creating this resource in administrative units exclusively, the role `Groups Administrator` is required to be scoped on any administrative unit used.\n\nThe `external_senders_allowed`, `auto_subscribe_new_members`, `hide_from_address_lists` and `hide_from_outlook_clients` properties can only be configured when authenticating as a user and cannot be configured when authenticating as a service principal. Additionally, the user being used for authentication must be a Member of the tenant where the group is being managed and _not_ a Guest. This is a known API issue; please see the [Microsoft Graph Known Issues](https://docs.microsoft.com/en-us/graph/known-issues#groups) official documentation.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*Basic example*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst example = new azuread.Group(\"example\", {\n displayName: \"example\",\n owners: [current.then(current =\u003e current.objectId)],\n securityEnabled: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\nexample = azuread.Group(\"example\",\n display_name=\"example\",\n owners=[current.object_id],\n security_enabled=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"example\",\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n },\n SecurityEnabled = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t},\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"example\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:Group\n properties:\n displayName: example\n owners:\n - ${current.objectId}\n securityEnabled: true\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Microsoft 365 group*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst groupOwner = new azuread.User(\"groupOwner\", {\n userPrincipalName: \"example-group-owner@hashicorp.com\",\n displayName: \"Group Owner\",\n mailNickname: \"example-group-owner\",\n password: \"SecretP@sswd99!\",\n});\nconst example = new azuread.Group(\"example\", {\n displayName: \"example\",\n mailEnabled: true,\n mailNickname: \"ExampleGroup\",\n securityEnabled: true,\n types: [\"Unified\"],\n owners: [\n current.then(current =\u003e current.objectId),\n groupOwner.objectId,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\ngroup_owner = azuread.User(\"groupOwner\",\n user_principal_name=\"example-group-owner@hashicorp.com\",\n display_name=\"Group Owner\",\n mail_nickname=\"example-group-owner\",\n password=\"SecretP@sswd99!\")\nexample = azuread.Group(\"example\",\n display_name=\"example\",\n mail_enabled=True,\n mail_nickname=\"ExampleGroup\",\n security_enabled=True,\n types=[\"Unified\"],\n owners=[\n current.object_id,\n group_owner.object_id,\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var groupOwner = new AzureAD.User(\"groupOwner\", new()\n {\n UserPrincipalName = \"example-group-owner@hashicorp.com\",\n DisplayName = \"Group Owner\",\n MailNickname = \"example-group-owner\",\n Password = \"SecretP@sswd99!\",\n });\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"example\",\n MailEnabled = true,\n MailNickname = \"ExampleGroup\",\n SecurityEnabled = true,\n Types = new[]\n {\n \"Unified\",\n },\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n groupOwner.ObjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgroupOwner, err := azuread.NewUser(ctx, \"groupOwner\", \u0026azuread.UserArgs{\n\t\t\tUserPrincipalName: pulumi.String(\"example-group-owner@hashicorp.com\"),\n\t\t\tDisplayName: pulumi.String(\"Group Owner\"),\n\t\t\tMailNickname: pulumi.String(\"example-group-owner\"),\n\t\t\tPassword: pulumi.String(\"SecretP@sswd99!\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"example\"),\n\t\t\tMailEnabled: pulumi.Bool(true),\n\t\t\tMailNickname: pulumi.String(\"ExampleGroup\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t\tTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Unified\"),\n\t\t\t},\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t\tgroupOwner.ObjectId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.User;\nimport com.pulumi.azuread.UserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var groupOwner = new User(\"groupOwner\", UserArgs.builder() \n .userPrincipalName(\"example-group-owner@hashicorp.com\")\n .displayName(\"Group Owner\")\n .mailNickname(\"example-group-owner\")\n .password(\"SecretP@sswd99!\")\n .build());\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"example\")\n .mailEnabled(true)\n .mailNickname(\"ExampleGroup\")\n .securityEnabled(true)\n .types(\"Unified\")\n .owners( \n current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()),\n groupOwner.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n groupOwner:\n type: azuread:User\n properties:\n userPrincipalName: example-group-owner@hashicorp.com\n displayName: Group Owner\n mailNickname: example-group-owner\n password: SecretP@sswd99!\n example:\n type: azuread:Group\n properties:\n displayName: example\n mailEnabled: true\n mailNickname: ExampleGroup\n securityEnabled: true\n types:\n - Unified\n owners:\n - ${current.objectId}\n - ${groupOwner.objectId}\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Group with members*\n\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.User;\nimport com.pulumi.azuread.UserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var exampleUser = new User(\"exampleUser\", UserArgs.builder() \n .displayName(\"J Doe\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .password(\"notSecure123\")\n .userPrincipalName(\"jdoe@hashicorp.com\")\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"MyGroup\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .members(exampleUser.objectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleUser:\n type: azuread:User\n properties:\n displayName: J Doe\n owners:\n - ${current.objectId}\n password: notSecure123\n userPrincipalName: jdoe@hashicorp.com\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: MyGroup\n owners:\n - ${current.objectId}\n securityEnabled: true\n members:\n - ${exampleUser.objectId}\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n\n*Group with dynamic membership*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst current = azuread.getClientConfig({});\nconst example = new azuread.Group(\"example\", {\n displayName: \"MyGroup\",\n owners: [current.then(current =\u003e current.objectId)],\n securityEnabled: true,\n types: [\"DynamicMembership\"],\n dynamicMembership: {\n enabled: true,\n rule: \"user.department -eq \\\"Sales\\\"\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\ncurrent = azuread.get_client_config()\nexample = azuread.Group(\"example\",\n display_name=\"MyGroup\",\n owners=[current.object_id],\n security_enabled=True,\n types=[\"DynamicMembership\"],\n dynamic_membership=azuread.GroupDynamicMembershipArgs(\n enabled=True,\n rule=\"user.department -eq \\\"Sales\\\"\",\n ))\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var current = AzureAD.GetClientConfig.Invoke();\n\n var example = new AzureAD.Group(\"example\", new()\n {\n DisplayName = \"MyGroup\",\n Owners = new[]\n {\n current.Apply(getClientConfigResult =\u003e getClientConfigResult.ObjectId),\n },\n SecurityEnabled = true,\n Types = new[]\n {\n \"DynamicMembership\",\n },\n DynamicMembership = new AzureAD.Inputs.GroupDynamicMembershipArgs\n {\n Enabled = true,\n Rule = \"user.department -eq \\\"Sales\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcurrent, err := azuread.GetClientConfig(ctx, nil, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroup(ctx, \"example\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"MyGroup\"),\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\t*pulumi.String(current.ObjectId),\n\t\t\t},\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t\tTypes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"DynamicMembership\"),\n\t\t\t},\n\t\t\tDynamicMembership: \u0026azuread.GroupDynamicMembershipArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t\tRule: pulumi.String(\"user.department -eq \\\"Sales\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.inputs.GroupDynamicMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var current = AzureadFunctions.getClientConfig();\n\n var example = new Group(\"example\", GroupArgs.builder() \n .displayName(\"MyGroup\")\n .owners(current.applyValue(getClientConfigResult -\u003e getClientConfigResult.objectId()))\n .securityEnabled(true)\n .types(\"DynamicMembership\")\n .dynamicMembership(GroupDynamicMembershipArgs.builder()\n .enabled(true)\n .rule(\"user.department -eq \\\"Sales\\\"\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:Group\n properties:\n displayName: MyGroup\n owners:\n - ${current.objectId}\n securityEnabled: true\n types:\n - DynamicMembership\n dynamicMembership:\n enabled: true\n rule: user.department -eq \"Sales\"\nvariables:\n current:\n fn::invoke:\n Function: azuread:getClientConfig\n Arguments: {}\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGroups can be imported using their object ID, e.g.\n\n```sh\n $ pulumi import azuread:index/group:Group my_group 00000000-0000-0000-0000-000000000000\n```\n\n ",
"properties": {
"administrativeUnitIds": {
"type": "array",
@@ -4891,6 +5952,10 @@
"type": "string",
"description": "The on-premises FQDN, also called dnsDomainName, synchronised from the on-premises directory when Azure AD Connect is used.\n"
},
+ "onpremisesGroupType": {
+ "type": "string",
+ "description": "The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.\n"
+ },
"onpremisesNetbiosName": {
"type": "string",
"description": "The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.\n"
@@ -4954,6 +6019,10 @@
"visibility": {
"type": "string",
"description": "The group join policy and group content visibility. Possible values are `Private`, `Public`, or `Hiddenmembership`. Only Microsoft 365 groups can have `Hiddenmembership` visibility and this value must be set when the group is created. By default, security groups will receive `Private` visibility and Microsoft 365 groups will receive `Public` visibility.\n"
+ },
+ "writebackEnabled": {
+ "type": "boolean",
+ "description": "Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.\n"
}
},
"required": [
@@ -4967,6 +6036,7 @@
"members",
"objectId",
"onpremisesDomainName",
+ "onpremisesGroupType",
"onpremisesNetbiosName",
"onpremisesSamAccountName",
"onpremisesSecurityIdentifier",
@@ -5041,6 +6111,10 @@
},
"description": "A set of members who should be present in this group. Supported object types are Users, Groups or Service Principals. Cannot be used with the `dynamic_membership` block.\n"
},
+ "onpremisesGroupType": {
+ "type": "string",
+ "description": "The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.\n"
+ },
"owners": {
"type": "array",
"items": {
@@ -5079,6 +6153,10 @@
"visibility": {
"type": "string",
"description": "The group join policy and group content visibility. Possible values are `Private`, `Public`, or `Hiddenmembership`. Only Microsoft 365 groups can have `Hiddenmembership` visibility and this value must be set when the group is created. By default, security groups will receive `Private` visibility and Microsoft 365 groups will receive `Public` visibility.\n"
+ },
+ "writebackEnabled": {
+ "type": "boolean",
+ "description": "Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.\n"
}
},
"requiredInputs": [
@@ -5163,6 +6241,10 @@
"type": "string",
"description": "The on-premises FQDN, also called dnsDomainName, synchronised from the on-premises directory when Azure AD Connect is used.\n"
},
+ "onpremisesGroupType": {
+ "type": "string",
+ "description": "The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.\n"
+ },
"onpremisesNetbiosName": {
"type": "string",
"description": "The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.\n"
@@ -5228,13 +6310,17 @@
"visibility": {
"type": "string",
"description": "The group join policy and group content visibility. Possible values are `Private`, `Public`, or `Hiddenmembership`. Only Microsoft 365 groups can have `Hiddenmembership` visibility and this value must be set when the group is created. By default, security groups will receive `Private` visibility and Microsoft 365 groups will receive `Public` visibility.\n"
+ },
+ "writebackEnabled": {
+ "type": "boolean",
+ "description": "Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.\n"
}
},
"type": "object"
}
},
"azuread:index/groupMember:GroupMember": {
- "description": "Manages a single group membership within Azure Active Directory.\n\n\u003e **Warning** Do not use this resource at the same time as the `members` property of the `azuread.Group` resource for the same group. Doing so will cause a conflict and group members will be removed.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Groups Administrator`, `User Administrator` or `Global Administrator`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleUser = azuread.getUser({\n userPrincipalName: \"jdoe@hashicorp.com\",\n});\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"my_group\",\n securityEnabled: true,\n});\nconst exampleGroupMember = new azuread.GroupMember(\"exampleGroupMember\", {\n groupObjectId: exampleGroup.id,\n memberObjectId: exampleUser.then(exampleUser =\u003e exampleUser.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_user = azuread.get_user(user_principal_name=\"jdoe@hashicorp.com\")\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"my_group\",\n security_enabled=True)\nexample_group_member = azuread.GroupMember(\"exampleGroupMember\",\n group_object_id=example_group.id,\n member_object_id=example_user.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleUser = AzureAD.GetUser.Invoke(new()\n {\n UserPrincipalName = \"jdoe@hashicorp.com\",\n });\n\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"my_group\",\n SecurityEnabled = true,\n });\n\n var exampleGroupMember = new AzureAD.GroupMember(\"exampleGroupMember\", new()\n {\n GroupObjectId = exampleGroup.Id,\n MemberObjectId = exampleUser.Apply(getUserResult =\u003e getUserResult.Id),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUser, err := azuread.LookupUser(ctx, \u0026azuread.LookupUserArgs{\n\t\t\tUserPrincipalName: pulumi.StringRef(\"jdoe@hashicorp.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGroup, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my_group\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroupMember(ctx, \"exampleGroupMember\", \u0026azuread.GroupMemberArgs{\n\t\t\tGroupObjectId: exampleGroup.ID(),\n\t\t\tMemberObjectId: *pulumi.String(exampleUser.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetUserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.GroupMember;\nimport com.pulumi.azuread.GroupMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleUser = AzureadFunctions.getUser(GetUserArgs.builder()\n .userPrincipalName(\"jdoe@hashicorp.com\")\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"my_group\")\n .securityEnabled(true)\n .build());\n\n var exampleGroupMember = new GroupMember(\"exampleGroupMember\", GroupMemberArgs.builder() \n .groupObjectId(exampleGroup.id())\n .memberObjectId(exampleUser.applyValue(getUserResult -\u003e getUserResult.id()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: my_group\n securityEnabled: true\n exampleGroupMember:\n type: azuread:GroupMember\n properties:\n groupObjectId: ${exampleGroup.id}\n memberObjectId: ${exampleUser.id}\nvariables:\n exampleUser:\n fn::invoke:\n Function: azuread:getUser\n Arguments:\n userPrincipalName: jdoe@hashicorp.com\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGroup members can be imported using the object ID of the group and the object ID of the member, e.g.\n\n```sh\n $ pulumi import azuread:index/groupMember:GroupMember test 00000000-0000-0000-0000-000000000000/member/11111111-1111-1111-1111-111111111111\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Azure AD Group Object ID and the target Member Object ID in the format `{GroupObjectID}/member/{MemberObjectID}`. ",
+ "description": "Manages a single group membership within Azure Active Directory.\n\n\u003e **Warning** Do not use this resource at the same time as the `members` property of the `azuread.Group` resource for the same group. Doing so will cause a conflict and group members will be removed.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`.\n\nHowever, if the authenticated service principal is an owner of the group being managed, an application role is not required.\n\nWhen authenticated with a user principal, this resource requires one of the following directory roles: `Groups Administrator`, `User Administrator` or `Global Administrator`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst exampleUser = azuread.getUser({\n userPrincipalName: \"jdoe@hashicorp.com\",\n});\nconst exampleGroup = new azuread.Group(\"exampleGroup\", {\n displayName: \"my_group\",\n securityEnabled: true,\n});\nconst exampleGroupMember = new azuread.GroupMember(\"exampleGroupMember\", {\n groupObjectId: exampleGroup.id,\n memberObjectId: exampleUser.then(exampleUser =\u003e exampleUser.id),\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample_user = azuread.get_user(user_principal_name=\"jdoe@hashicorp.com\")\nexample_group = azuread.Group(\"exampleGroup\",\n display_name=\"my_group\",\n security_enabled=True)\nexample_group_member = azuread.GroupMember(\"exampleGroupMember\",\n group_object_id=example_group.id,\n member_object_id=example_user.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var exampleUser = AzureAD.GetUser.Invoke(new()\n {\n UserPrincipalName = \"jdoe@hashicorp.com\",\n });\n\n var exampleGroup = new AzureAD.Group(\"exampleGroup\", new()\n {\n DisplayName = \"my_group\",\n SecurityEnabled = true,\n });\n\n var exampleGroupMember = new AzureAD.GroupMember(\"exampleGroupMember\", new()\n {\n GroupObjectId = exampleGroup.Id,\n MemberObjectId = exampleUser.Apply(getUserResult =\u003e getUserResult.Id),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texampleUser, err := azuread.LookupUser(ctx, \u0026azuread.LookupUserArgs{\n\t\t\tUserPrincipalName: pulumi.StringRef(\"jdoe@hashicorp.com\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleGroup, err := azuread.NewGroup(ctx, \"exampleGroup\", \u0026azuread.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my_group\"),\n\t\t\tSecurityEnabled: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = azuread.NewGroupMember(ctx, \"exampleGroupMember\", \u0026azuread.GroupMemberArgs{\n\t\t\tGroupObjectId: exampleGroup.ID(),\n\t\t\tMemberObjectId: *pulumi.String(exampleUser.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetUserArgs;\nimport com.pulumi.azuread.Group;\nimport com.pulumi.azuread.GroupArgs;\nimport com.pulumi.azuread.GroupMember;\nimport com.pulumi.azuread.GroupMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var exampleUser = AzureadFunctions.getUser(GetUserArgs.builder()\n .userPrincipalName(\"jdoe@hashicorp.com\")\n .build());\n\n var exampleGroup = new Group(\"exampleGroup\", GroupArgs.builder() \n .displayName(\"my_group\")\n .securityEnabled(true)\n .build());\n\n var exampleGroupMember = new GroupMember(\"exampleGroupMember\", GroupMemberArgs.builder() \n .groupObjectId(exampleGroup.id())\n .memberObjectId(exampleUser.applyValue(getUserResult -\u003e getUserResult.id()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n exampleGroup:\n type: azuread:Group\n properties:\n displayName: my_group\n securityEnabled: true\n exampleGroupMember:\n type: azuread:GroupMember\n properties:\n groupObjectId: ${exampleGroup.id}\n memberObjectId: ${exampleUser.id}\nvariables:\n exampleUser:\n fn::invoke:\n Function: azuread:getUser\n Arguments:\n userPrincipalName: jdoe@hashicorp.com\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nGroup members can be imported using the object ID of the group and the object ID of the member, e.g.\n\n```sh\n $ pulumi import azuread:index/groupMember:GroupMember test 00000000-0000-0000-0000-000000000000/member/11111111-1111-1111-1111-111111111111\n```\n\n -\u003e This ID format is unique to Terraform and is composed of the Azure AD Group Object ID and the target Member Object ID in the format `{GroupObjectID}/member/{MemberObjectID}`. ",
"properties": {
"groupObjectId": {
"type": "string",
@@ -7108,9 +8194,189 @@
},
"type": "object"
}
+ },
+ "azuread:index/userFlowAttribute:UserFlowAttribute": {
+ "description": "Manages user flow attributes in an Azure Active Directory (Azure AD) tenant.\n\n## API Permissions\n\nThe following API permissions are required in order to use this resource.\n\nWhen authenticated with a service principal, this resource requires the following application role: `IdentityUserFlow.ReadWrite.All`\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*Basic example*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = new azuread.UserFlowAttribute(\"example\", {\n dataType: \"string\",\n description: \"Your hobby\",\n displayName: \"Hobby\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.UserFlowAttribute(\"example\",\n data_type=\"string\",\n description=\"Your hobby\",\n display_name=\"Hobby\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = new AzureAD.UserFlowAttribute(\"example\", new()\n {\n DataType = \"string\",\n Description = \"Your hobby\",\n DisplayName = \"Hobby\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewUserFlowAttribute(ctx, \"example\", \u0026azuread.UserFlowAttributeArgs{\n\t\t\tDataType: pulumi.String(\"string\"),\n\t\t\tDescription: pulumi.String(\"Your hobby\"),\n\t\t\tDisplayName: pulumi.String(\"Hobby\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.UserFlowAttribute;\nimport com.pulumi.azuread.UserFlowAttributeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example = new UserFlowAttribute(\"example\", UserFlowAttributeArgs.builder() \n .dataType(\"string\")\n .description(\"Your hobby\")\n .displayName(\"Hobby\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example:\n type: azuread:UserFlowAttribute\n properties:\n dataType: string\n description: Your hobby\n displayName: Hobby\n```\n{{% /example %}}\n{{% /examples %}}\n\n## Import\n\nUser flow attributes can be imported using the `id`, e.g.\n\n```sh\n $ pulumi import azuread:index/userFlowAttribute:UserFlowAttribute example extension_ecc9f88db2924942b8a96f44873616fe_Hobbyjkorv\n```\n\n -\u003e This ID can be queried using the [User Flow Attributes API](https://learn.microsoft.com/en-us/graph/api/identityuserflowattribute-list?view=graph-rest-1.0\u0026tabs=http). ",
+ "properties": {
+ "attributeType": {
+ "type": "string",
+ "description": "The type of the user flow attribute. Values include `builtIn`, `custom` or `required`.\n"
+ },
+ "dataType": {
+ "type": "string",
+ "description": "The data type of the user flow attribute. Possible values are `boolean`, `dateTime`, `int64`, `string` or `stringCollection`. Changing this forces a new resource to be created.\n"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the user flow attribute that is shown to the user at the time of sign-up.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the user flow attribute. Changing this forces a new resource to be created.\n"
+ }
+ },
+ "required": [
+ "attributeType",
+ "dataType",
+ "description",
+ "displayName"
+ ],
+ "inputProperties": {
+ "dataType": {
+ "type": "string",
+ "description": "The data type of the user flow attribute. Possible values are `boolean`, `dateTime`, `int64`, `string` or `stringCollection`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the user flow attribute that is shown to the user at the time of sign-up.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the user flow attribute. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "requiredInputs": [
+ "dataType",
+ "description",
+ "displayName"
+ ],
+ "stateInputs": {
+ "description": "Input properties used for looking up and filtering UserFlowAttribute resources.\n",
+ "properties": {
+ "attributeType": {
+ "type": "string",
+ "description": "The type of the user flow attribute. Values include `builtIn`, `custom` or `required`.\n"
+ },
+ "dataType": {
+ "type": "string",
+ "description": "The data type of the user flow attribute. Possible values are `boolean`, `dateTime`, `int64`, `string` or `stringCollection`. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the user flow attribute that is shown to the user at the time of sign-up.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the user flow attribute. Changing this forces a new resource to be created.\n",
+ "willReplaceOnChanges": true
+ }
+ },
+ "type": "object"
+ }
}
},
"functions": {
+ "azuread:index/getAccessPackage:getAccessPackage": {
+ "description": "Use this data source to retrieve information for an existing access package within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this data source.\n\nWhen authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Access package manager`, `Global Reader`, or `Global Administrator`.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*Look up by ID*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAccessPackage({\n objectId: \"00000000-0000-0000-0000-000000000000\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_access_package(object_id=\"00000000-0000-0000-0000-000000000000\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAccessPackage.Invoke(new()\n {\n ObjectId = \"00000000-0000-0000-0000-000000000000\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAccessPackage(ctx, \u0026azuread.LookupAccessPackageArgs{\n\t\t\tObjectId: pulumi.StringRef(\"00000000-0000-0000-0000-000000000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAccessPackageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAccessPackage(GetAccessPackageArgs.builder()\n .objectId(\"00000000-0000-0000-0000-000000000000\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAccessPackage\n Arguments:\n objectId: 00000000-0000-0000-0000-000000000000\n```\n\n*Look up by DisplayName*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAccessPackage({\n catalogId: \"00000000-0000-0000-0000-000000000000\",\n displayName: \"My access package Catalog\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_access_package(catalog_id=\"00000000-0000-0000-0000-000000000000\",\n display_name=\"My access package Catalog\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAccessPackage.Invoke(new()\n {\n CatalogId = \"00000000-0000-0000-0000-000000000000\",\n DisplayName = \"My access package Catalog\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAccessPackage(ctx, \u0026azuread.LookupAccessPackageArgs{\n\t\t\tCatalogId: pulumi.StringRef(\"00000000-0000-0000-0000-000000000000\"),\n\t\t\tDisplayName: pulumi.StringRef(\"My access package Catalog\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAccessPackageArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAccessPackage(GetAccessPackageArgs.builder()\n .catalogId(\"00000000-0000-0000-0000-000000000000\")\n .displayName(\"My access package Catalog\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAccessPackage\n Arguments:\n catalogId: 00000000-0000-0000-0000-000000000000\n displayName: My access package Catalog\n```\n{{% /example %}}\n{{% /examples %}}",
+ "inputs": {
+ "description": "A collection of arguments for invoking getAccessPackage.\n",
+ "properties": {
+ "catalogId": {
+ "type": "string",
+ "description": "The ID of the Catalog this access package is in.\n"
+ },
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package.\n"
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of this access package.\n"
+ }
+ },
+ "type": "object"
+ },
+ "outputs": {
+ "description": "A collection of values returned by getAccessPackage.\n",
+ "properties": {
+ "catalogId": {
+ "type": "string"
+ },
+ "description": {
+ "type": "string",
+ "description": "The description of the access package.\n"
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "hidden": {
+ "type": "boolean",
+ "description": "Whether the access package is hidden from the requestor.\n"
+ },
+ "id": {
+ "type": "string",
+ "description": "The provider-assigned unique ID for this managed resource.\n"
+ },
+ "objectId": {
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "required": [
+ "description",
+ "displayName",
+ "hidden",
+ "objectId",
+ "id"
+ ]
+ }
+ },
+ "azuread:index/getAccessPackageCatalog:getAccessPackageCatalog": {
+ "description": "i\nUse this resource to retrieve information for an existing access package catalog within Identity Governance in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this data source.\n\nWhen authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.\n\nWhen authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Global Reader`, or `Global Administrator`.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n\n*Look up by ID*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAccessPackageCatalog({\n objectId: \"00000000-0000-0000-0000-000000000000\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_access_package_catalog(object_id=\"00000000-0000-0000-0000-000000000000\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAccessPackageCatalog.Invoke(new()\n {\n ObjectId = \"00000000-0000-0000-0000-000000000000\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAccessPackageCatalog(ctx, \u0026azuread.LookupAccessPackageCatalogArgs{\n\t\t\tObjectId: pulumi.StringRef(\"00000000-0000-0000-0000-000000000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAccessPackageCatalogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAccessPackageCatalog(GetAccessPackageCatalogArgs.builder()\n .objectId(\"00000000-0000-0000-0000-000000000000\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAccessPackageCatalog\n Arguments:\n objectId: 00000000-0000-0000-0000-000000000000\n```\n\n*Look up by DisplayName*\n\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAccessPackageCatalog({\n displayName: \"My access package Catalog\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_access_package_catalog(display_name=\"My access package Catalog\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAccessPackageCatalog.Invoke(new()\n {\n DisplayName = \"My access package Catalog\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAccessPackageCatalog(ctx, \u0026azuread.LookupAccessPackageCatalogArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"My access package Catalog\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAccessPackageCatalogArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAccessPackageCatalog(GetAccessPackageCatalogArgs.builder()\n .displayName(\"My access package Catalog\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAccessPackageCatalog\n Arguments:\n displayName: My access package Catalog\n```\n{{% /example %}}\n{{% /examples %}}",
+ "inputs": {
+ "description": "A collection of arguments for invoking getAccessPackageCatalog.\n",
+ "properties": {
+ "displayName": {
+ "type": "string",
+ "description": "The display name of the access package catalog.\n"
+ },
+ "objectId": {
+ "type": "string",
+ "description": "The ID of this access package catalog.\n"
+ }
+ },
+ "type": "object"
+ },
+ "outputs": {
+ "description": "A collection of values returned by getAccessPackageCatalog.\n",
+ "properties": {
+ "description": {
+ "type": "string",
+ "description": "The description of the access package catalog.\n"
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "externallyVisible": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog can be requested by users outside the tenant.\n"
+ },
+ "id": {
+ "type": "string",
+ "description": "The provider-assigned unique ID for this managed resource.\n"
+ },
+ "objectId": {
+ "type": "string"
+ },
+ "published": {
+ "type": "boolean",
+ "description": "Whether the access packages in this catalog are available for management.\n"
+ }
+ },
+ "type": "object",
+ "required": [
+ "description",
+ "displayName",
+ "externallyVisible",
+ "objectId",
+ "published",
+ "id"
+ ]
+ }
+ },
"azuread:index/getAdministrativeUnit:getAdministrativeUnit": {
"description": "Gets information about an adminisrative unit in Azure Active Directory.\n\n## API Permissions\n\nThe following API permissions are required in order to use this data source.\n\nWhen authenticated with a service principal, this data source requires one of the following application roles: `AdministrativeUnit.Read.All` or `Directory.Read.All`\n\nWhen authenticated with a user principal, this data source does not require any additional roles.\n\n{{% examples %}}\n## Example Usage\n{{% example %}}\n### By Group Display Name)\n\n*Look up by display name*\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAdministrativeUnit({\n displayName: \"Example-AU\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_administrative_unit(display_name=\"Example-AU\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAdministrativeUnit.Invoke(new()\n {\n DisplayName = \"Example-AU\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAdministrativeUnit(ctx, \u0026azuread.LookupAdministrativeUnitArgs{\n\t\t\tDisplayName: pulumi.StringRef(\"Example-AU\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAdministrativeUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAdministrativeUnit(GetAdministrativeUnitArgs.builder()\n .displayName(\"Example-AU\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAdministrativeUnit\n Arguments:\n displayName: Example-AU\n```\n\n*Look up by object ID*\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as azuread from \"@pulumi/azuread\";\n\nconst example = azuread.getAdministrativeUnit({\n objectId: \"00000000-0000-0000-0000-000000000000\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.get_administrative_unit(object_id=\"00000000-0000-0000-0000-000000000000\")\n```\n```csharp\nusing System.Collections.Generic;\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example = AzureAD.GetAdministrativeUnit.Invoke(new()\n {\n ObjectId = \"00000000-0000-0000-0000-000000000000\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v5/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.LookupAdministrativeUnit(ctx, \u0026azuread.LookupAdministrativeUnitArgs{\n\t\t\tObjectId: pulumi.StringRef(\"00000000-0000-0000-0000-000000000000\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.azuread.AzureadFunctions;\nimport com.pulumi.azuread.inputs.GetAdministrativeUnitArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var example = AzureadFunctions.getAdministrativeUnit(GetAdministrativeUnitArgs.builder()\n .objectId(\"00000000-0000-0000-0000-000000000000\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n example:\n fn::invoke:\n Function: azuread:getAdministrativeUnit\n Arguments:\n objectId: 00000000-0000-0000-0000-000000000000\n```\n{{% /example %}}\n{{% /examples %}}",
"inputs": {
@@ -7325,6 +8591,10 @@
},
"description": "A collection of `required_resource_access` blocks as documented below.\n"
},
+ "serviceManagementReference": {
+ "type": "string",
+ "description": "References application context information from a Service or Asset Management database.\n"
+ },
"signInAudience": {
"type": "string",
"description": "The Microsoft account types that are supported for the current application. One of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`.\n"
@@ -7385,6 +8655,7 @@
"publicClients",
"publisherDomain",
"requiredResourceAccesses",
+ "serviceManagementReference",
"signInAudience",
"singlePageApplications",
"supportUrl",
@@ -7785,6 +9056,10 @@
"type": "string",
"description": "The on-premises FQDN, also called dnsDomainName, synchronised from the on-premises directory when Azure AD Connect is used.\n"
},
+ "onpremisesGroupType": {
+ "type": "string",
+ "description": "The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.\n"
+ },
"onpremisesNetbiosName": {
"type": "string",
"description": "The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.\n"
@@ -7844,6 +9119,10 @@
"visibility": {
"type": "string",
"description": "The group join policy and group content visibility. Possible values are `Private`, `Public`, or `Hiddenmembership`. Only Microsoft 365 groups can have `Hiddenmembership` visibility.\n"
+ },
+ "writebackEnabled": {
+ "type": "boolean",
+ "description": "Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.\n"
}
},
"type": "object",
@@ -7863,6 +9142,7 @@
"members",
"objectId",
"onpremisesDomainName",
+ "onpremisesGroupType",
"onpremisesNetbiosName",
"onpremisesSamAccountName",
"onpremisesSecurityIdentifier",
@@ -7875,6 +9155,7 @@
"theme",
"types",
"visibility",
+ "writebackEnabled",
"id"
]
}
@@ -8268,6 +9549,10 @@
"inputs": {
"description": "A collection of arguments for invoking getUser.\n",
"properties": {
+ "mail": {
+ "type": "string",
+ "description": "The SMTP address for the user.\n"
+ },
"mailNickname": {
"type": "string",
"description": "The email alias of the user.\n"
diff --git a/provider/go.mod b/provider/go.mod
index 07c4c906b..809c7ab00 100644
--- a/provider/go.mod
+++ b/provider/go.mod
@@ -3,7 +3,7 @@ module github.com/pulumi/pulumi-azuread/provider/v5
go 1.19
require (
- github.com/hashicorp/go-azure-sdk v0.20230223.1132808
+ github.com/hashicorp/go-azure-sdk v0.20230331.1143618
github.com/hashicorp/terraform-provider-azuread/shim v0.0.0
github.com/pulumi/pulumi-terraform-bridge/v3 v3.41.0
github.com/pulumi/pulumi/sdk/v3 v3.56.0
@@ -109,7 +109,7 @@ require (
github.com/gorilla/mux v1.8.0 // indirect
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-azure-helpers v0.52.0 // indirect
+ github.com/hashicorp/go-azure-helpers v0.55.0 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
@@ -138,7 +138,7 @@ require (
github.com/hashicorp/terraform-plugin-go v0.14.1 // indirect
github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 // indirect
- github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352 // indirect
+ github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957 // indirect
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c // indirect
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
github.com/hashicorp/vault/api v1.8.2 // indirect
@@ -156,7 +156,7 @@ require (
github.com/kevinburke/ssh_config v1.2.0 // indirect
github.com/klauspost/compress v1.15.11 // indirect
github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/manicminer/hamilton v0.59.0 // indirect
+ github.com/manicminer/hamilton v0.61.0 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mattn/go-runewidth v0.0.13 // indirect
diff --git a/provider/go.sum b/provider/go.sum
index 8d403b0e3..87714e186 100644
--- a/provider/go.sum
+++ b/provider/go.sum
@@ -1070,10 +1070,10 @@ github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FK
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-azure-helpers v0.52.0 h1:2xIjsPpDbZf5dFLEdqOy5akfdnh8M/6mQtVWhkpM3hM=
-github.com/hashicorp/go-azure-helpers v0.52.0/go.mod h1:lsykLR4KjTUO7MiRmNWiTiX8QQtw3ILjyOvT0f5h3rw=
-github.com/hashicorp/go-azure-sdk v0.20230223.1132808 h1:3RTwCTiY42qQjN8rzi4QABWzYyMEp8ZqdWf7K7XzAXo=
-github.com/hashicorp/go-azure-sdk v0.20230223.1132808/go.mod h1:lU3F9c+qXc7iqMayTNmUP/VDc0H6f95mkhv4u35zV8I=
+github.com/hashicorp/go-azure-helpers v0.55.0 h1:2A2KWPiaDC5kQWr6tYHTD/P1k9bO0HvflEb/Nc1yLeU=
+github.com/hashicorp/go-azure-helpers v0.55.0/go.mod h1:RQugkG8wEcNIjYmcBLHpuEI/u2mTJwO4r37rR/OKRpo=
+github.com/hashicorp/go-azure-sdk v0.20230331.1143618 h1:SUBW7DehNG5zZhY9xvcvtNWg6xtwDas4rWz1r1mlM0U=
+github.com/hashicorp/go-azure-sdk v0.20230331.1143618/go.mod h1:L9JXVUcnL0GjMizCnngYUlMp1lLhDBNgSTvn6Of/5O4=
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -1112,7 +1112,6 @@ github.com/hashicorp/go-plugin v1.4.6 h1:MDV3UrKQBM3du3G7MApDGvOsMYy3JQJ4exhSoKB
github.com/hashicorp/go-plugin v1.4.6/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
-github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0=
github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
@@ -1144,7 +1143,6 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
@@ -1187,8 +1185,8 @@ github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfD
github.com/hashicorp/terraform-plugin-sdk v1.7.0 h1:B//oq0ZORG+EkVrIJy0uPGSonvmXqxSzXe8+GhknoW0=
github.com/hashicorp/terraform-plugin-sdk v1.7.0/go.mod h1:OjgQmey5VxnPej/buEhe+YqKm0KNvV3QqU4hkqHqPCY=
github.com/hashicorp/terraform-plugin-test v1.2.0/go.mod h1:QIJHYz8j+xJtdtLrFTlzQVC0ocr3rf/OjIpgZLK56Hs=
-github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352 h1:6ov/5e6ea8HRYRwA3JwZKGpMhnUWZFDPTvKfgCGAfQA=
-github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352/go.mod h1:3gvi+tMJX9cwL5DVfJ6MPcKkAfJF7CyaGGfq9lW6CyU=
+github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957 h1:UG1X4lUVwPG8q43e+qL7oFAmvrcxwlIwHHeWgzsKukI=
+github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957/go.mod h1:Znc0cBgGpfw46cTPuOeQPlMUVhlwjkfrjLyf2Pnn+pI=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI=
github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
@@ -1370,11 +1368,8 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN
github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/manicminer/hamilton v0.43.0/go.mod h1:lbVyngC+/nCWuDp8UhC6Bw+bh7jcP/E+YwqzHTmzemk=
-github.com/manicminer/hamilton v0.55.0/go.mod h1:lbVyngC+/nCWuDp8UhC6Bw+bh7jcP/E+YwqzHTmzemk=
-github.com/manicminer/hamilton v0.59.0 h1:RLGwWamCtTUa53sdAbv04XzRu3e9RwJoPcAN/VReydY=
-github.com/manicminer/hamilton v0.59.0/go.mod h1:kvNZuh/KneyjgSvx/DU/117zjgPDWV7b18LLJivHMa8=
-github.com/manicminer/hamilton-autorest v0.3.0/go.mod h1:NselDpNTImEmOc/fa41kPg6YhDt/6S95ejWbTGZ6tlg=
+github.com/manicminer/hamilton v0.61.0 h1:Hp25wOIkArXUJ9++U9J+jpVL+nXCzUtsvzVa/vE3Or4=
+github.com/manicminer/hamilton v0.61.0/go.mod h1:va/X2sztcgQ5+BSxc2eU3FTHYIyxLnHvB4LudlPUZdE=
github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0=
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
diff --git a/provider/resources.go b/provider/resources.go
index fb2261153..9f0e47d71 100644
--- a/provider/resources.go
+++ b/provider/resources.go
@@ -224,8 +224,19 @@ func Provider() tfbridge.ProviderInfo {
"azuread_service_principal_claims_mapping_policy_assignment": {
Tok: makeResource(mainMod, "ServicePrincipalClaimsMappingPolicyAssignment"),
},
- "azuread_synchronization_job": {Tok: makeResource(mainMod, "SynchronizationJob")},
- "azuread_synchronization_secret": {Tok: makeResource(mainMod, "SynchronizationSecret")},
+ "azuread_synchronization_job": {Tok: makeResource(mainMod, "SynchronizationJob")},
+ "azuread_synchronization_secret": {Tok: makeResource(mainMod, "SynchronizationSecret")},
+ "azuread_access_package": {Tok: makeResource(mainMod, "AccessPackage")},
+ "azuread_access_package_assignment_policy": {Tok: makeResource(mainMod, "AccessPackageAssignmentPolicy")},
+ "azuread_access_package_catalog": {Tok: makeResource(mainMod, "AccessPackageCatalog")},
+ "azuread_access_package_resource_catalog_association": {
+ Tok: makeResource(mainMod, "AccessPackageResourceCatalogAssociation"),
+ },
+ "azuread_access_package_resource_package_association": {
+ Tok: makeResource(mainMod, "AccessPackageResourcePackageAssociation"),
+ },
+ "azuread_administrative_unit_role_member": {Tok: makeResource(mainMod, "AdministrativeUnitRoleMember")},
+ "azuread_user_flow_attribute": {Tok: makeResource(mainMod, "UserFlowAttribute")},
},
DataSources: map[string]*tfbridge.DataSourceInfo{
"azuread_application": {Tok: makeDataSource(mainMod, "getApplication")},
@@ -242,6 +253,8 @@ func Provider() tfbridge.ProviderInfo {
"azuread_administrative_unit": {Tok: makeDataSource(mainMod, "getAdministrativeUnit")},
"azuread_directory_object": {Tok: makeDataSource(mainMod, "getDirectoryObject")},
"azuread_directory_roles": {Tok: makeDataSource(mainMod, "getDirectoryRoles")},
+ "azuread_access_package": {Tok: makeDataSource(mainMod, "getAccessPackage")},
+ "azuread_access_package_catalog": {Tok: makeDataSource(mainMod, "getAccessPackageCatalog")},
},
JavaScript: &tfbridge.JavaScriptInfo{
// List any npm dependencies and their versions
diff --git a/provider/shim/go.mod b/provider/shim/go.mod
index 74b14dc41..93c119a41 100644
--- a/provider/shim/go.mod
+++ b/provider/shim/go.mod
@@ -4,7 +4,7 @@ go 1.19
require (
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
- github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352
+ github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957
)
require (
@@ -16,8 +16,8 @@ require (
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/go-cmp v0.5.9 // indirect
github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-azure-helpers v0.52.0 // indirect
- github.com/hashicorp/go-azure-sdk v0.20230223.1132808 // indirect
+ github.com/hashicorp/go-azure-helpers v0.55.0 // indirect
+ github.com/hashicorp/go-azure-sdk v0.20230331.1143618 // indirect
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
@@ -37,7 +37,7 @@ require (
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c // indirect
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 // indirect
- github.com/manicminer/hamilton v0.59.0 // indirect
+ github.com/manicminer/hamilton v0.61.0 // indirect
github.com/mattn/go-colorable v0.1.12 // indirect
github.com/mattn/go-isatty v0.0.14 // indirect
github.com/mitchellh/copystructure v1.2.0 // indirect
diff --git a/provider/shim/go.sum b/provider/shim/go.sum
index 98b54ae0b..88d1d29dd 100644
--- a/provider/shim/go.sum
+++ b/provider/shim/go.sum
@@ -1,44 +1,11 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
-cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
-cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
-cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
-cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
-cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4=
-cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M=
-cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc=
-cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk=
-cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs=
-cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc=
-cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY=
-cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
-cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg=
-cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc=
-cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ=
cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k=
-cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
-cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk=
-cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
-cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA=
-cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU=
-cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
-cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
-cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
-dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk=
-github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
@@ -47,7 +14,6 @@ github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYX
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk=
github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
@@ -73,9 +39,6 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkE
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
@@ -88,7 +51,6 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg=
github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
@@ -112,32 +74,19 @@ github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI
github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0=
github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4=
github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
-github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.4.3/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
-github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw=
-github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4=
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
@@ -149,41 +98,25 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
-github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
-github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
-github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
-github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
-github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-azure-helpers v0.52.0 h1:2xIjsPpDbZf5dFLEdqOy5akfdnh8M/6mQtVWhkpM3hM=
-github.com/hashicorp/go-azure-helpers v0.52.0/go.mod h1:lsykLR4KjTUO7MiRmNWiTiX8QQtw3ILjyOvT0f5h3rw=
-github.com/hashicorp/go-azure-sdk v0.20230223.1132808 h1:3RTwCTiY42qQjN8rzi4QABWzYyMEp8ZqdWf7K7XzAXo=
-github.com/hashicorp/go-azure-sdk v0.20230223.1132808/go.mod h1:lU3F9c+qXc7iqMayTNmUP/VDc0H6f95mkhv4u35zV8I=
+github.com/hashicorp/go-azure-helpers v0.55.0 h1:2A2KWPiaDC5kQWr6tYHTD/P1k9bO0HvflEb/Nc1yLeU=
+github.com/hashicorp/go-azure-helpers v0.55.0/go.mod h1:RQugkG8wEcNIjYmcBLHpuEI/u2mTJwO4r37rR/OKRpo=
+github.com/hashicorp/go-azure-sdk v0.20230331.1143618 h1:SUBW7DehNG5zZhY9xvcvtNWg6xtwDas4rWz1r1mlM0U=
+github.com/hashicorp/go-azure-sdk v0.20230331.1143618/go.mod h1:L9JXVUcnL0GjMizCnngYUlMp1lLhDBNgSTvn6Of/5O4=
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
@@ -200,20 +133,15 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
github.com/hashicorp/go-plugin v1.4.6 h1:MDV3UrKQBM3du3G7MApDGvOsMYy3JQJ4exhSoKBAeVA=
github.com/hashicorp/go-plugin v1.4.6/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY=
github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0=
github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.5.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk=
github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI=
github.com/hashicorp/hcl/v2 v2.15.0 h1:CPDXO6+uORPjKflkWCCwoWc9uRp+zSIPcCQ+BrxV7m8=
@@ -228,8 +156,8 @@ github.com/hashicorp/terraform-plugin-go v0.14.1 h1:cwZzPYla82XwAqpLhSzdVsOMU+6H
github.com/hashicorp/terraform-plugin-go v0.14.1/go.mod h1:Bc/K6K26BQ2FHqIELPbpKtt2CzzbQou+0UQF3/0NsCQ=
github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
-github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352 h1:6ov/5e6ea8HRYRwA3JwZKGpMhnUWZFDPTvKfgCGAfQA=
-github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230302235257-7ddd481b4352/go.mod h1:3gvi+tMJX9cwL5DVfJ6MPcKkAfJF7CyaGGfq9lW6CyU=
+github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957 h1:UG1X4lUVwPG8q43e+qL7oFAmvrcxwlIwHHeWgzsKukI=
+github.com/hashicorp/terraform-provider-azuread v1.6.1-0.20230419234510-a8170bb91957/go.mod h1:Znc0cBgGpfw46cTPuOeQPlMUVhlwjkfrjLyf2Pnn+pI=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI=
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
@@ -238,7 +166,6 @@ github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKe
github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 h1:xixZ2bWeofWV68J+x6AzmKuVM/JWCQwkWm6GW/MUR6I=
github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
@@ -246,11 +173,8 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE=
github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
-github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck=
github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
@@ -262,11 +186,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
-github.com/manicminer/hamilton v0.43.0/go.mod h1:lbVyngC+/nCWuDp8UhC6Bw+bh7jcP/E+YwqzHTmzemk=
-github.com/manicminer/hamilton v0.55.0/go.mod h1:lbVyngC+/nCWuDp8UhC6Bw+bh7jcP/E+YwqzHTmzemk=
-github.com/manicminer/hamilton v0.59.0 h1:RLGwWamCtTUa53sdAbv04XzRu3e9RwJoPcAN/VReydY=
-github.com/manicminer/hamilton v0.59.0/go.mod h1:kvNZuh/KneyjgSvx/DU/117zjgPDWV7b18LLJivHMa8=
-github.com/manicminer/hamilton-autorest v0.3.0/go.mod h1:NselDpNTImEmOc/fa41kPg6YhDt/6S95ejWbTGZ6tlg=
+github.com/manicminer/hamilton v0.61.0 h1:Hp25wOIkArXUJ9++U9J+jpVL+nXCzUtsvzVa/vE3Or4=
+github.com/manicminer/hamilton v0.61.0/go.mod h1:va/X2sztcgQ5+BSxc2eU3FTHYIyxLnHvB4LudlPUZdE=
github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@@ -306,7 +227,6 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:
github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20221122203342-430f685de305 h1:BkHVmLAinUEU2v9GmlUQ2utF25c9qXhAV/VZ6IrVYJk=
github.com/pulumi/terraform-plugin-sdk/v2 v2.0.0-20221122203342-430f685de305/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw=
github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/sebdah/goldie v1.0.0/go.mod h1:jXP4hmWywNEwZzhMuv2ccnqTSFpuq8iyQhtQdkkZBH4=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
@@ -333,8 +253,6 @@ github.com/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vb
github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI=
github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0=
-github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
@@ -344,57 +262,24 @@ github.com/zclconf/go-cty v1.11.0/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeW
github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY=
github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA=
github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8=
-go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220331220935-ae2d96664a29/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
-golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
-golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
-golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
-golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
-golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
-golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
-golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
-golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
-golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -405,26 +290,11 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
-golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
@@ -437,52 +307,28 @@ golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M=
golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -506,9 +352,7 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -517,126 +361,38 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200713011307-fd294ab11aed/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
-golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
-google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
-google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
-google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM=
-google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA=
-google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U=
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
google.golang.org/genproto v0.0.0-20200711021454-869866162049/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac h1:qSNTkEN+L2mvWcLgJOR+8bdHX9rN/IdU3A1Ghpfb1Rg=
google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo=
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
-google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
-google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ=
@@ -665,7 +421,6 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
@@ -676,14 +431,6 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
software.sslmate.com/src/go-pkcs12 v0.2.0 h1:nlFkj7bTysH6VkC4fGphtjXRbezREPgrHuJG20hBGPE=
software.sslmate.com/src/go-pkcs12 v0.2.0/go.mod h1:23rNcYsMabIc1otwLpTkCCPwUq6kQsTyowttG/as0kQ=
diff --git a/sdk/dotnet/AccessPackage.cs b/sdk/dotnet/AccessPackage.cs
new file mode 100644
index 000000000..03a87f317
--- /dev/null
+++ b/sdk/dotnet/AccessPackage.cs
@@ -0,0 +1,190 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages an Access Package within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Access package manager` or `Global Administrator`
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog("exampleAccessPackageCatalog", new()
+ /// {
+ /// DisplayName = "example-catalog",
+ /// Description = "Example catalog",
+ /// });
+ ///
+ /// var exampleAccessPackage = new AzureAD.AccessPackage("exampleAccessPackage", new()
+ /// {
+ /// CatalogId = exampleAccessPackageCatalog.Id,
+ /// DisplayName = "access-package",
+ /// Description = "Access Package",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// Access Packages can be imported using the `id`, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/accessPackage:AccessPackage example_package 00000000-0000-0000-0000-000000000000
+ /// ```
+ ///
+ [AzureADResourceType("azuread:index/accessPackage:AccessPackage")]
+ public partial class AccessPackage : global::Pulumi.CustomResource
+ {
+ ///
+ /// The ID of the Catalog this access package will be created in.
+ ///
+ [Output("catalogId")]
+ public Output CatalogId { get; private set; } = null!;
+
+ ///
+ /// The description of the access package.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// The display name of the access package.
+ ///
+ [Output("displayName")]
+ public Output DisplayName { get; private set; } = null!;
+
+ ///
+ /// Whether the access package is hidden from the requestor.
+ ///
+ [Output("hidden")]
+ public Output Hidden { get; private set; } = null!;
+
+
+ ///
+ /// Create a AccessPackage resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AccessPackage(string name, AccessPackageArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackage:AccessPackage", name, args ?? new AccessPackageArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AccessPackage(string name, Input id, AccessPackageState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackage:AccessPackage", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AccessPackage resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AccessPackage Get(string name, Input id, AccessPackageState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AccessPackage(name, id, state, options);
+ }
+ }
+
+ public sealed class AccessPackageArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of the Catalog this access package will be created in.
+ ///
+ [Input("catalogId", required: true)]
+ public Input CatalogId { get; set; } = null!;
+
+ ///
+ /// The description of the access package.
+ ///
+ [Input("description", required: true)]
+ public Input Description { get; set; } = null!;
+
+ ///
+ /// The display name of the access package.
+ ///
+ [Input("displayName", required: true)]
+ public Input DisplayName { get; set; } = null!;
+
+ ///
+ /// Whether the access package is hidden from the requestor.
+ ///
+ [Input("hidden")]
+ public Input? Hidden { get; set; }
+
+ public AccessPackageArgs()
+ {
+ }
+ public static new AccessPackageArgs Empty => new AccessPackageArgs();
+ }
+
+ public sealed class AccessPackageState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of the Catalog this access package will be created in.
+ ///
+ [Input("catalogId")]
+ public Input? CatalogId { get; set; }
+
+ ///
+ /// The description of the access package.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// The display name of the access package.
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ ///
+ /// Whether the access package is hidden from the requestor.
+ ///
+ [Input("hidden")]
+ public Input? Hidden { get; set; }
+
+ public AccessPackageState()
+ {
+ }
+ public static new AccessPackageState Empty => new AccessPackageState();
+ }
+}
diff --git a/sdk/dotnet/AccessPackageAssignmentPolicy.cs b/sdk/dotnet/AccessPackageAssignmentPolicy.cs
new file mode 100644
index 000000000..4ceaa9a5f
--- /dev/null
+++ b/sdk/dotnet/AccessPackageAssignmentPolicy.cs
@@ -0,0 +1,365 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages an assignment policy for an access package within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this resource requires `Global Administrator` directory role, or one of the `Catalog Owner` and `Access Package Manager` role in Idneity Governance.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleGroup = new AzureAD.Group("exampleGroup", new()
+ /// {
+ /// DisplayName = "group-name",
+ /// SecurityEnabled = true,
+ /// });
+ ///
+ /// var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog("exampleAccessPackageCatalog", new()
+ /// {
+ /// DisplayName = "example-catalog",
+ /// Description = "Example catalog",
+ /// });
+ ///
+ /// var exampleAccessPackage = new AzureAD.AccessPackage("exampleAccessPackage", new()
+ /// {
+ /// CatalogId = exampleAccessPackageCatalog.Id,
+ /// DisplayName = "access-package",
+ /// Description = "Access Package",
+ /// });
+ ///
+ /// var test = new AzureAD.AccessPackageAssignmentPolicy("test", new()
+ /// {
+ /// AccessPackageId = azuread_access_package.Test.Id,
+ /// DisplayName = "assignment-policy",
+ /// Description = "My assignment policy",
+ /// DurationInDays = 90,
+ /// RequestorSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyRequestorSettingsArgs
+ /// {
+ /// ScopeType = "AllExistingDirectoryMemberUsers",
+ /// },
+ /// ApprovalSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsArgs
+ /// {
+ /// ApprovalRequired = true,
+ /// ApprovalStages = new[]
+ /// {
+ /// new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs
+ /// {
+ /// ApprovalTimeoutInDays = 14,
+ /// PrimaryApprovers = new[]
+ /// {
+ /// new AzureAD.Inputs.AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs
+ /// {
+ /// ObjectId = azuread_group.Test.Object_id,
+ /// SubjectType = "groupMembers",
+ /// },
+ /// },
+ /// },
+ /// },
+ /// },
+ /// AssignmentReviewSettings = new AzureAD.Inputs.AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs
+ /// {
+ /// Enabled = true,
+ /// ReviewFrequency = "weekly",
+ /// DurationInDays = 3,
+ /// ReviewType = "Self",
+ /// AccessReviewTimeoutBehavior = "keepAccess",
+ /// },
+ /// Questions = new[]
+ /// {
+ /// new AzureAD.Inputs.AccessPackageAssignmentPolicyQuestionArgs
+ /// {
+ /// Text = new AzureAD.Inputs.AccessPackageAssignmentPolicyQuestionTextArgs
+ /// {
+ /// DefaultText = "hello, how are you?",
+ /// },
+ /// },
+ /// },
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// An access package assignment policy can be imported using the ID, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy example 00000000-0000-0000-0000-000000000000
+ /// ```
+ ///
+ [AzureADResourceType("azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy")]
+ public partial class AccessPackageAssignmentPolicy : global::Pulumi.CustomResource
+ {
+ ///
+ /// The ID of the access package that will contain the policy.
+ ///
+ [Output("accessPackageId")]
+ public Output AccessPackageId { get; private set; } = null!;
+
+ ///
+ /// An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.
+ ///
+ [Output("approvalSettings")]
+ public Output ApprovalSettings { get; private set; } = null!;
+
+ ///
+ /// An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.
+ ///
+ [Output("assignmentReviewSettings")]
+ public Output AssignmentReviewSettings { get; private set; } = null!;
+
+ ///
+ /// The description of the policy.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// The display name of the policy.
+ ///
+ [Output("displayName")]
+ public Output DisplayName { get; private set; } = null!;
+
+ ///
+ /// How many days this assignment is valid for.
+ ///
+ [Output("durationInDays")]
+ public Output DurationInDays { get; private set; } = null!;
+
+ ///
+ /// The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).
+ ///
+ [Output("expirationDate")]
+ public Output ExpirationDate { get; private set; } = null!;
+
+ ///
+ /// Whether users will be able to request extension of their access to this package before their access expires.
+ ///
+ [Output("extensionEnabled")]
+ public Output ExtensionEnabled { get; private set; } = null!;
+
+ ///
+ /// One or more `question` blocks for the requestor, as documented below.
+ ///
+ [Output("questions")]
+ public Output> Questions { get; private set; } = null!;
+
+ ///
+ /// A `requestor_settings` block to configure the users who can request access, as documented below.
+ ///
+ [Output("requestorSettings")]
+ public Output RequestorSettings { get; private set; } = null!;
+
+
+ ///
+ /// Create a AccessPackageAssignmentPolicy resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AccessPackageAssignmentPolicy(string name, AccessPackageAssignmentPolicyArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy", name, args ?? new AccessPackageAssignmentPolicyArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AccessPackageAssignmentPolicy(string name, Input id, AccessPackageAssignmentPolicyState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageAssignmentPolicy:AccessPackageAssignmentPolicy", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AccessPackageAssignmentPolicy resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AccessPackageAssignmentPolicy Get(string name, Input id, AccessPackageAssignmentPolicyState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AccessPackageAssignmentPolicy(name, id, state, options);
+ }
+ }
+
+ public sealed class AccessPackageAssignmentPolicyArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of the access package that will contain the policy.
+ ///
+ [Input("accessPackageId", required: true)]
+ public Input AccessPackageId { get; set; } = null!;
+
+ ///
+ /// An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.
+ ///
+ [Input("approvalSettings")]
+ public Input? ApprovalSettings { get; set; }
+
+ ///
+ /// An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.
+ ///
+ [Input("assignmentReviewSettings")]
+ public Input? AssignmentReviewSettings { get; set; }
+
+ ///
+ /// The description of the policy.
+ ///
+ [Input("description", required: true)]
+ public Input Description { get; set; } = null!;
+
+ ///
+ /// The display name of the policy.
+ ///
+ [Input("displayName", required: true)]
+ public Input DisplayName { get; set; } = null!;
+
+ ///
+ /// How many days this assignment is valid for.
+ ///
+ [Input("durationInDays")]
+ public Input? DurationInDays { get; set; }
+
+ ///
+ /// The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).
+ ///
+ [Input("expirationDate")]
+ public Input? ExpirationDate { get; set; }
+
+ ///
+ /// Whether users will be able to request extension of their access to this package before their access expires.
+ ///
+ [Input("extensionEnabled")]
+ public Input? ExtensionEnabled { get; set; }
+
+ [Input("questions")]
+ private InputList? _questions;
+
+ ///
+ /// One or more `question` blocks for the requestor, as documented below.
+ ///
+ public InputList Questions
+ {
+ get => _questions ?? (_questions = new InputList());
+ set => _questions = value;
+ }
+
+ ///
+ /// A `requestor_settings` block to configure the users who can request access, as documented below.
+ ///
+ [Input("requestorSettings")]
+ public Input? RequestorSettings { get; set; }
+
+ public AccessPackageAssignmentPolicyArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyArgs Empty => new AccessPackageAssignmentPolicyArgs();
+ }
+
+ public sealed class AccessPackageAssignmentPolicyState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of the access package that will contain the policy.
+ ///
+ [Input("accessPackageId")]
+ public Input? AccessPackageId { get; set; }
+
+ ///
+ /// An `approval_settings` block to specify whether approvals are required and how they are obtained, as documented below.
+ ///
+ [Input("approvalSettings")]
+ public Input? ApprovalSettings { get; set; }
+
+ ///
+ /// An `assignment_review_settings` block, to specify whether assignment review is needed and how it is conducted, as documented below.
+ ///
+ [Input("assignmentReviewSettings")]
+ public Input? AssignmentReviewSettings { get; set; }
+
+ ///
+ /// The description of the policy.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// The display name of the policy.
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ ///
+ /// How many days this assignment is valid for.
+ ///
+ [Input("durationInDays")]
+ public Input? DurationInDays { get; set; }
+
+ ///
+ /// The date that this assignment expires, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z).
+ ///
+ [Input("expirationDate")]
+ public Input? ExpirationDate { get; set; }
+
+ ///
+ /// Whether users will be able to request extension of their access to this package before their access expires.
+ ///
+ [Input("extensionEnabled")]
+ public Input? ExtensionEnabled { get; set; }
+
+ [Input("questions")]
+ private InputList? _questions;
+
+ ///
+ /// One or more `question` blocks for the requestor, as documented below.
+ ///
+ public InputList Questions
+ {
+ get => _questions ?? (_questions = new InputList());
+ set => _questions = value;
+ }
+
+ ///
+ /// A `requestor_settings` block to configure the users who can request access, as documented below.
+ ///
+ [Input("requestorSettings")]
+ public Input? RequestorSettings { get; set; }
+
+ public AccessPackageAssignmentPolicyState()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyState Empty => new AccessPackageAssignmentPolicyState();
+ }
+}
diff --git a/sdk/dotnet/AccessPackageCatalog.cs b/sdk/dotnet/AccessPackageCatalog.cs
new file mode 100644
index 000000000..f9b26ebe5
--- /dev/null
+++ b/sdk/dotnet/AccessPackageCatalog.cs
@@ -0,0 +1,183 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages an access package catalog within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Catalog creator` or `Global Administrator`
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = new AzureAD.AccessPackageCatalog("example", new()
+ /// {
+ /// Description = "Example access package catalog",
+ /// DisplayName = "example-access-package-catalog",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// An Access Package Catalog can be imported using the `id`, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/accessPackageCatalog:AccessPackageCatalog example 00000000-0000-0000-0000-000000000000
+ /// ```
+ ///
+ [AzureADResourceType("azuread:index/accessPackageCatalog:AccessPackageCatalog")]
+ public partial class AccessPackageCatalog : global::Pulumi.CustomResource
+ {
+ ///
+ /// The description of the access package catalog.
+ ///
+ [Output("description")]
+ public Output Description { get; private set; } = null!;
+
+ ///
+ /// The display name of the access package catalog.
+ ///
+ [Output("displayName")]
+ public Output DisplayName { get; private set; } = null!;
+
+ ///
+ /// Whether the access packages in this catalog can be requested by users outside the tenant.
+ ///
+ [Output("externallyVisible")]
+ public Output ExternallyVisible { get; private set; } = null!;
+
+ ///
+ /// Whether the access packages in this catalog are available for management.
+ ///
+ [Output("published")]
+ public Output Published { get; private set; } = null!;
+
+
+ ///
+ /// Create a AccessPackageCatalog resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AccessPackageCatalog(string name, AccessPackageCatalogArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageCatalog:AccessPackageCatalog", name, args ?? new AccessPackageCatalogArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AccessPackageCatalog(string name, Input id, AccessPackageCatalogState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageCatalog:AccessPackageCatalog", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AccessPackageCatalog resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AccessPackageCatalog Get(string name, Input id, AccessPackageCatalogState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AccessPackageCatalog(name, id, state, options);
+ }
+ }
+
+ public sealed class AccessPackageCatalogArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The description of the access package catalog.
+ ///
+ [Input("description", required: true)]
+ public Input Description { get; set; } = null!;
+
+ ///
+ /// The display name of the access package catalog.
+ ///
+ [Input("displayName", required: true)]
+ public Input DisplayName { get; set; } = null!;
+
+ ///
+ /// Whether the access packages in this catalog can be requested by users outside the tenant.
+ ///
+ [Input("externallyVisible")]
+ public Input? ExternallyVisible { get; set; }
+
+ ///
+ /// Whether the access packages in this catalog are available for management.
+ ///
+ [Input("published")]
+ public Input? Published { get; set; }
+
+ public AccessPackageCatalogArgs()
+ {
+ }
+ public static new AccessPackageCatalogArgs Empty => new AccessPackageCatalogArgs();
+ }
+
+ public sealed class AccessPackageCatalogState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The description of the access package catalog.
+ ///
+ [Input("description")]
+ public Input? Description { get; set; }
+
+ ///
+ /// The display name of the access package catalog.
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ ///
+ /// Whether the access packages in this catalog can be requested by users outside the tenant.
+ ///
+ [Input("externallyVisible")]
+ public Input? ExternallyVisible { get; set; }
+
+ ///
+ /// Whether the access packages in this catalog are available for management.
+ ///
+ [Input("published")]
+ public Input? Published { get; set; }
+
+ public AccessPackageCatalogState()
+ {
+ }
+ public static new AccessPackageCatalogState Empty => new AccessPackageCatalogState();
+ }
+}
diff --git a/sdk/dotnet/AccessPackageResourceCatalogAssociation.cs b/sdk/dotnet/AccessPackageResourceCatalogAssociation.cs
new file mode 100644
index 000000000..de37693dc
--- /dev/null
+++ b/sdk/dotnet/AccessPackageResourceCatalogAssociation.cs
@@ -0,0 +1,180 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages the resources added to access package catalogs within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner` or `Global Administrator`
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleGroup = new AzureAD.Group("exampleGroup", new()
+ /// {
+ /// DisplayName = "example-group",
+ /// SecurityEnabled = true,
+ /// });
+ ///
+ /// var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog("exampleAccessPackageCatalog", new()
+ /// {
+ /// DisplayName = "example-catalog",
+ /// Description = "Example catalog",
+ /// });
+ ///
+ /// var exampleAccessPackageResourceCatalogAssociation = new AzureAD.AccessPackageResourceCatalogAssociation("exampleAccessPackageResourceCatalogAssociation", new()
+ /// {
+ /// CatalogId = azuread_access_package_catalog.Example_catalog.Id,
+ /// ResourceOriginId = azuread_group.Example_group.Object_id,
+ /// ResourceOriginSystem = "AadGroup",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// The resource and catalog association can be imported using the catalog ID and the resource origin ID, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation example 00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111
+ /// ```
+ ///
+ /// -> This ID format is unique to Terraform and is composed of the Catalog ID and the Resource Origin ID in the format `{CatalogID}/{ResourceOriginID}`.
+ ///
+ [AzureADResourceType("azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation")]
+ public partial class AccessPackageResourceCatalogAssociation : global::Pulumi.CustomResource
+ {
+ ///
+ /// The unique ID of the access package catalog. Changing this forces a new resource to be created.
+ ///
+ [Output("catalogId")]
+ public Output CatalogId { get; private set; } = null!;
+
+ ///
+ /// The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.
+ ///
+ [Output("resourceOriginId")]
+ public Output ResourceOriginId { get; private set; } = null!;
+
+ ///
+ /// The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.
+ ///
+ [Output("resourceOriginSystem")]
+ public Output ResourceOriginSystem { get; private set; } = null!;
+
+
+ ///
+ /// Create a AccessPackageResourceCatalogAssociation resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AccessPackageResourceCatalogAssociation(string name, AccessPackageResourceCatalogAssociationArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation", name, args ?? new AccessPackageResourceCatalogAssociationArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AccessPackageResourceCatalogAssociation(string name, Input id, AccessPackageResourceCatalogAssociationState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageResourceCatalogAssociation:AccessPackageResourceCatalogAssociation", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AccessPackageResourceCatalogAssociation resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AccessPackageResourceCatalogAssociation Get(string name, Input id, AccessPackageResourceCatalogAssociationState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AccessPackageResourceCatalogAssociation(name, id, state, options);
+ }
+ }
+
+ public sealed class AccessPackageResourceCatalogAssociationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The unique ID of the access package catalog. Changing this forces a new resource to be created.
+ ///
+ [Input("catalogId", required: true)]
+ public Input CatalogId { get; set; } = null!;
+
+ ///
+ /// The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.
+ ///
+ [Input("resourceOriginId", required: true)]
+ public Input ResourceOriginId { get; set; } = null!;
+
+ ///
+ /// The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.
+ ///
+ [Input("resourceOriginSystem", required: true)]
+ public Input ResourceOriginSystem { get; set; } = null!;
+
+ public AccessPackageResourceCatalogAssociationArgs()
+ {
+ }
+ public static new AccessPackageResourceCatalogAssociationArgs Empty => new AccessPackageResourceCatalogAssociationArgs();
+ }
+
+ public sealed class AccessPackageResourceCatalogAssociationState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The unique ID of the access package catalog. Changing this forces a new resource to be created.
+ ///
+ [Input("catalogId")]
+ public Input? CatalogId { get; set; }
+
+ ///
+ /// The unique identifier of the resource in the origin system. In the case of an Azure AD group, this is the identifier of the group. Changing this forces a new resource to be created.
+ ///
+ [Input("resourceOriginId")]
+ public Input? ResourceOriginId { get; set; }
+
+ ///
+ /// The type of the resource in the origin system, such as `SharePointOnline`, `AadApplication` or `AadGroup`. Changing this forces a new resource to be created.
+ ///
+ [Input("resourceOriginSystem")]
+ public Input? ResourceOriginSystem { get; set; }
+
+ public AccessPackageResourceCatalogAssociationState()
+ {
+ }
+ public static new AccessPackageResourceCatalogAssociationState Empty => new AccessPackageResourceCatalogAssociationState();
+ }
+}
diff --git a/sdk/dotnet/AccessPackageResourcePackageAssociation.cs b/sdk/dotnet/AccessPackageResourcePackageAssociation.cs
new file mode 100644
index 000000000..1052724f2
--- /dev/null
+++ b/sdk/dotnet/AccessPackageResourcePackageAssociation.cs
@@ -0,0 +1,193 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages the resources added to access packages within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires the following application role: `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this resource requires one of the following directory roles: `Catalog owner`, `Access package manager` or `Global Administrator`.
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleGroup = new AzureAD.Group("exampleGroup", new()
+ /// {
+ /// DisplayName = "example-group",
+ /// SecurityEnabled = true,
+ /// });
+ ///
+ /// var exampleAccessPackageCatalog = new AzureAD.AccessPackageCatalog("exampleAccessPackageCatalog", new()
+ /// {
+ /// DisplayName = "example-catalog",
+ /// Description = "Example catalog",
+ /// });
+ ///
+ /// var exampleAccessPackageResourceCatalogAssociation = new AzureAD.AccessPackageResourceCatalogAssociation("exampleAccessPackageResourceCatalogAssociation", new()
+ /// {
+ /// CatalogId = azuread_access_package_catalog.Example_catalog.Id,
+ /// ResourceOriginId = azuread_group.Example_group.Object_id,
+ /// ResourceOriginSystem = "AadGroup",
+ /// });
+ ///
+ /// var exampleAccessPackage = new AzureAD.AccessPackage("exampleAccessPackage", new()
+ /// {
+ /// DisplayName = "example-package",
+ /// Description = "Example Package",
+ /// CatalogId = azuread_access_package_catalog.Example_catalog.Id,
+ /// });
+ ///
+ /// var exampleAccessPackageResourcePackageAssociation = new AzureAD.AccessPackageResourcePackageAssociation("exampleAccessPackageResourcePackageAssociation", new()
+ /// {
+ /// AccessPackageId = exampleAccessPackage.Id,
+ /// CatalogResourceAssociationId = exampleAccessPackageResourceCatalogAssociation.Id,
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// The resource and catalog association can be imported using the access package ID, the resource association ID, the resource origin ID, and the access type, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation example 00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111_22222222-2222-2222-2222-22222222/33333333-3333-3333-3333-33333333/Member
+ /// ```
+ ///
+ /// -> This ID format is unique to Terraform and is composed of the Access Package ID, the Resource Association ID, the Resource Origin ID, and the Access Type, in the format `{AccessPackageID}/{ResourceAssociationID}/{ResourceOriginID}/{AccessType}`.
+ ///
+ [AzureADResourceType("azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation")]
+ public partial class AccessPackageResourcePackageAssociation : global::Pulumi.CustomResource
+ {
+ ///
+ /// The ID of access package this resource association is configured to. Changing this forces a new resource to be created.
+ ///
+ [Output("accessPackageId")]
+ public Output AccessPackageId { get; private set; } = null!;
+
+ ///
+ /// The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.
+ ///
+ [Output("accessType")]
+ public Output AccessType { get; private set; } = null!;
+
+ ///
+ /// The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.
+ ///
+ [Output("catalogResourceAssociationId")]
+ public Output CatalogResourceAssociationId { get; private set; } = null!;
+
+
+ ///
+ /// Create a AccessPackageResourcePackageAssociation resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AccessPackageResourcePackageAssociation(string name, AccessPackageResourcePackageAssociationArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation", name, args ?? new AccessPackageResourcePackageAssociationArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AccessPackageResourcePackageAssociation(string name, Input id, AccessPackageResourcePackageAssociationState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/accessPackageResourcePackageAssociation:AccessPackageResourcePackageAssociation", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AccessPackageResourcePackageAssociation resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AccessPackageResourcePackageAssociation Get(string name, Input id, AccessPackageResourcePackageAssociationState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AccessPackageResourcePackageAssociation(name, id, state, options);
+ }
+ }
+
+ public sealed class AccessPackageResourcePackageAssociationArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of access package this resource association is configured to. Changing this forces a new resource to be created.
+ ///
+ [Input("accessPackageId", required: true)]
+ public Input AccessPackageId { get; set; } = null!;
+
+ ///
+ /// The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.
+ ///
+ [Input("accessType")]
+ public Input? AccessType { get; set; }
+
+ ///
+ /// The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.
+ ///
+ [Input("catalogResourceAssociationId", required: true)]
+ public Input CatalogResourceAssociationId { get; set; } = null!;
+
+ public AccessPackageResourcePackageAssociationArgs()
+ {
+ }
+ public static new AccessPackageResourcePackageAssociationArgs Empty => new AccessPackageResourcePackageAssociationArgs();
+ }
+
+ public sealed class AccessPackageResourcePackageAssociationState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The ID of access package this resource association is configured to. Changing this forces a new resource to be created.
+ ///
+ [Input("accessPackageId")]
+ public Input? AccessPackageId { get; set; }
+
+ ///
+ /// The role of access type to the specified resource. Valid values are `Member`, or `Owner` The default is `Member`. Changing this forces a new resource to be created.
+ ///
+ [Input("accessType")]
+ public Input? AccessType { get; set; }
+
+ ///
+ /// The ID of the catalog association from the `azuread.AccessPackageResourceCatalogAssociation` resource. Changing this forces a new resource to be created.
+ ///
+ [Input("catalogResourceAssociationId")]
+ public Input? CatalogResourceAssociationId { get; set; }
+
+ public AccessPackageResourcePackageAssociationState()
+ {
+ }
+ public static new AccessPackageResourcePackageAssociationState Empty => new AccessPackageResourcePackageAssociationState();
+ }
+}
diff --git a/sdk/dotnet/AdministrativeUnitRoleMember.cs b/sdk/dotnet/AdministrativeUnitRoleMember.cs
new file mode 100644
index 000000000..145e77582
--- /dev/null
+++ b/sdk/dotnet/AdministrativeUnitRoleMember.cs
@@ -0,0 +1,183 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ ///
+ /// Manages a single directory role assignment scoped to an administrative unit within Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this resource.
+ ///
+ /// When authenticated with a service principal, this resource requires one of the following application roles: `AdministrativeUnit.ReadWrite.All` and `RoleManagement.ReadWrite.Directory`, or `Directory.ReadWrite.All`
+ ///
+ /// When authenticated with a user principal, this resource requires one of the following directory roles: `Privileged Role Administrator` or `Global Administrator`
+ ///
+ /// ## Example Usage
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var exampleUser = AzureAD.GetUser.Invoke(new()
+ /// {
+ /// UserPrincipalName = "jdoe@hashicorp.com",
+ /// });
+ ///
+ /// var exampleAdministrativeUnit = new AzureAD.AdministrativeUnit("exampleAdministrativeUnit", new()
+ /// {
+ /// DisplayName = "Example-AU",
+ /// });
+ ///
+ /// var exampleDirectoryRole = new AzureAD.DirectoryRole("exampleDirectoryRole", new()
+ /// {
+ /// DisplayName = "Security administrator",
+ /// });
+ ///
+ /// var exampleAdministrativeUnitRoleMember = new AzureAD.AdministrativeUnitRoleMember("exampleAdministrativeUnitRoleMember", new()
+ /// {
+ /// RoleObjectId = exampleDirectoryRole.ObjectId,
+ /// AdministrativeUnitObjectId = exampleAdministrativeUnit.Id,
+ /// MemberObjectId = exampleUser.Apply(getUserResult => getUserResult.Id),
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// ## Import
+ ///
+ /// Administrative unit role members can be imported using the object ID of the administrative unit and the unique ID of the role assignment, e.g.
+ ///
+ /// ```sh
+ /// $ pulumi import azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember test 00000000-0000-0000-0000-000000000000/roleMember/zX37MRLyF0uvE-xf2WH4B7x-6CPLfudNnxFGj800htpBXqkxW7bITqGb6Rj4kuTuS
+ /// ```
+ ///
+ /// -> This ID format is unique to Terraform and is composed of the Administrative Unit Object ID and the role assignment ID in the format `{AdministrativeUnitObjectID}/roleMember/{RoleAssignmentID}`.
+ ///
+ [AzureADResourceType("azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember")]
+ public partial class AdministrativeUnitRoleMember : global::Pulumi.CustomResource
+ {
+ ///
+ /// The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.
+ ///
+ [Output("administrativeUnitObjectId")]
+ public Output AdministrativeUnitObjectId { get; private set; } = null!;
+
+ ///
+ /// The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.
+ ///
+ [Output("memberObjectId")]
+ public Output MemberObjectId { get; private set; } = null!;
+
+ ///
+ /// The object ID of the directory role you want to assign. Changing this forces a new resource to be created.
+ ///
+ [Output("roleObjectId")]
+ public Output RoleObjectId { get; private set; } = null!;
+
+
+ ///
+ /// Create a AdministrativeUnitRoleMember resource with the given unique name, arguments, and options.
+ ///
+ ///
+ /// The unique name of the resource
+ /// The arguments used to populate this resource's properties
+ /// A bag of options that control this resource's behavior
+ public AdministrativeUnitRoleMember(string name, AdministrativeUnitRoleMemberArgs args, CustomResourceOptions? options = null)
+ : base("azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember", name, args ?? new AdministrativeUnitRoleMemberArgs(), MakeResourceOptions(options, ""))
+ {
+ }
+
+ private AdministrativeUnitRoleMember(string name, Input id, AdministrativeUnitRoleMemberState? state = null, CustomResourceOptions? options = null)
+ : base("azuread:index/administrativeUnitRoleMember:AdministrativeUnitRoleMember", name, state, MakeResourceOptions(options, id))
+ {
+ }
+
+ private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input? id)
+ {
+ var defaultOptions = new CustomResourceOptions
+ {
+ Version = Utilities.Version,
+ };
+ var merged = CustomResourceOptions.Merge(defaultOptions, options);
+ // Override the ID if one was specified for consistency with other language SDKs.
+ merged.Id = id ?? merged.Id;
+ return merged;
+ }
+ ///
+ /// Get an existing AdministrativeUnitRoleMember resource's state with the given name, ID, and optional extra
+ /// properties used to qualify the lookup.
+ ///
+ ///
+ /// The unique name of the resulting resource.
+ /// The unique provider ID of the resource to lookup.
+ /// Any extra arguments used during the lookup.
+ /// A bag of options that control this resource's behavior
+ public static AdministrativeUnitRoleMember Get(string name, Input id, AdministrativeUnitRoleMemberState? state = null, CustomResourceOptions? options = null)
+ {
+ return new AdministrativeUnitRoleMember(name, id, state, options);
+ }
+ }
+
+ public sealed class AdministrativeUnitRoleMemberArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.
+ ///
+ [Input("administrativeUnitObjectId", required: true)]
+ public Input AdministrativeUnitObjectId { get; set; } = null!;
+
+ ///
+ /// The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.
+ ///
+ [Input("memberObjectId", required: true)]
+ public Input MemberObjectId { get; set; } = null!;
+
+ ///
+ /// The object ID of the directory role you want to assign. Changing this forces a new resource to be created.
+ ///
+ [Input("roleObjectId", required: true)]
+ public Input RoleObjectId { get; set; } = null!;
+
+ public AdministrativeUnitRoleMemberArgs()
+ {
+ }
+ public static new AdministrativeUnitRoleMemberArgs Empty => new AdministrativeUnitRoleMemberArgs();
+ }
+
+ public sealed class AdministrativeUnitRoleMemberState : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The object ID of the administrative unit you want to add the member to. Changing this forces a new resource to be created.
+ ///
+ [Input("administrativeUnitObjectId")]
+ public Input? AdministrativeUnitObjectId { get; set; }
+
+ ///
+ /// The object ID of the user, group or service principal you want to add as a member of the administrative unit. Changing this forces a new resource to be created.
+ ///
+ [Input("memberObjectId")]
+ public Input? MemberObjectId { get; set; }
+
+ ///
+ /// The object ID of the directory role you want to assign. Changing this forces a new resource to be created.
+ ///
+ [Input("roleObjectId")]
+ public Input? RoleObjectId { get; set; }
+
+ public AdministrativeUnitRoleMemberState()
+ {
+ }
+ public static new AdministrativeUnitRoleMemberState Empty => new AdministrativeUnitRoleMemberState();
+ }
+}
diff --git a/sdk/dotnet/Application.cs b/sdk/dotnet/Application.cs
index 78acad0a1..38cdff9c9 100644
--- a/sdk/dotnet/Application.cs
+++ b/sdk/dotnet/Application.cs
@@ -392,6 +392,12 @@ public partial class Application : global::Pulumi.CustomResource
[Output("requiredResourceAccesses")]
public Output> RequiredResourceAccesses { get; private set; } = null!;
+ ///
+ /// References application context information from a Service or Asset Management database.
+ ///
+ [Output("serviceManagementReference")]
+ public Output ServiceManagementReference { get; private set; } = null!;
+
///
/// The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.
///
@@ -630,6 +636,12 @@ public InputList RequiredResourceA
set => _requiredResourceAccesses = value;
}
+ ///
+ /// References application context information from a Service or Asset Management database.
+ ///
+ [Input("serviceManagementReference")]
+ public Input? ServiceManagementReference { get; set; }
+
///
/// The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.
///
@@ -890,6 +902,12 @@ public InputList RequiredResour
set => _requiredResourceAccesses = value;
}
+ ///
+ /// References application context information from a Service or Asset Management database.
+ ///
+ [Input("serviceManagementReference")]
+ public Input? ServiceManagementReference { get; set; }
+
///
/// The Microsoft account types that are supported for the current application. Must be one of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`. Defaults to `AzureADMyOrg`.
///
diff --git a/sdk/dotnet/GetAccessPackage.cs b/sdk/dotnet/GetAccessPackage.cs
new file mode 100644
index 000000000..d82ffc317
--- /dev/null
+++ b/sdk/dotnet/GetAccessPackage.cs
@@ -0,0 +1,220 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ public static class GetAccessPackage
+ {
+ ///
+ /// Use this data source to retrieve information for an existing access package within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this data source.
+ ///
+ /// When authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Access package manager`, `Global Reader`, or `Global Administrator`.
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// *Look up by ID*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackage.Invoke(new()
+ /// {
+ /// ObjectId = "00000000-0000-0000-0000-000000000000",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// *Look up by DisplayName*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackage.Invoke(new()
+ /// {
+ /// CatalogId = "00000000-0000-0000-0000-000000000000",
+ /// DisplayName = "My access package Catalog",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetAccessPackageArgs? args = null, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.InvokeAsync("azuread:index/getAccessPackage:getAccessPackage", args ?? new GetAccessPackageArgs(), options.WithDefaults());
+
+ ///
+ /// Use this data source to retrieve information for an existing access package within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this data source.
+ ///
+ /// When authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Access package manager`, `Global Reader`, or `Global Administrator`.
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// *Look up by ID*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackage.Invoke(new()
+ /// {
+ /// ObjectId = "00000000-0000-0000-0000-000000000000",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// *Look up by DisplayName*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackage.Invoke(new()
+ /// {
+ /// CatalogId = "00000000-0000-0000-0000-000000000000",
+ /// DisplayName = "My access package Catalog",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetAccessPackageInvokeArgs? args = null, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.Invoke("azuread:index/getAccessPackage:getAccessPackage", args ?? new GetAccessPackageInvokeArgs(), options.WithDefaults());
+ }
+
+
+ public sealed class GetAccessPackageArgs : global::Pulumi.InvokeArgs
+ {
+ ///
+ /// The ID of the Catalog this access package is in.
+ ///
+ [Input("catalogId")]
+ public string? CatalogId { get; set; }
+
+ ///
+ /// The display name of the access package.
+ ///
+ [Input("displayName")]
+ public string? DisplayName { get; set; }
+
+ ///
+ /// The ID of this access package.
+ ///
+ [Input("objectId")]
+ public string? ObjectId { get; set; }
+
+ public GetAccessPackageArgs()
+ {
+ }
+ public static new GetAccessPackageArgs Empty => new GetAccessPackageArgs();
+ }
+
+ public sealed class GetAccessPackageInvokeArgs : global::Pulumi.InvokeArgs
+ {
+ ///
+ /// The ID of the Catalog this access package is in.
+ ///
+ [Input("catalogId")]
+ public Input? CatalogId { get; set; }
+
+ ///
+ /// The display name of the access package.
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ ///
+ /// The ID of this access package.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ public GetAccessPackageInvokeArgs()
+ {
+ }
+ public static new GetAccessPackageInvokeArgs Empty => new GetAccessPackageInvokeArgs();
+ }
+
+
+ [OutputType]
+ public sealed class GetAccessPackageResult
+ {
+ public readonly string? CatalogId;
+ ///
+ /// The description of the access package.
+ ///
+ public readonly string Description;
+ public readonly string DisplayName;
+ ///
+ /// Whether the access package is hidden from the requestor.
+ ///
+ public readonly bool Hidden;
+ ///
+ /// The provider-assigned unique ID for this managed resource.
+ ///
+ public readonly string Id;
+ public readonly string ObjectId;
+
+ [OutputConstructor]
+ private GetAccessPackageResult(
+ string? catalogId,
+
+ string description,
+
+ string displayName,
+
+ bool hidden,
+
+ string id,
+
+ string objectId)
+ {
+ CatalogId = catalogId;
+ Description = description;
+ DisplayName = displayName;
+ Hidden = hidden;
+ Id = id;
+ ObjectId = objectId;
+ }
+ }
+}
diff --git a/sdk/dotnet/GetAccessPackageCatalog.cs b/sdk/dotnet/GetAccessPackageCatalog.cs
new file mode 100644
index 000000000..34142dbae
--- /dev/null
+++ b/sdk/dotnet/GetAccessPackageCatalog.cs
@@ -0,0 +1,211 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD
+{
+ public static class GetAccessPackageCatalog
+ {
+ ///
+ /// i
+ /// Use this resource to retrieve information for an existing access package catalog within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this data source.
+ ///
+ /// When authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Global Reader`, or `Global Administrator`.
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// *Look up by ID*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackageCatalog.Invoke(new()
+ /// {
+ /// ObjectId = "00000000-0000-0000-0000-000000000000",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// *Look up by DisplayName*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackageCatalog.Invoke(new()
+ /// {
+ /// DisplayName = "My access package Catalog",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Task InvokeAsync(GetAccessPackageCatalogArgs? args = null, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.InvokeAsync("azuread:index/getAccessPackageCatalog:getAccessPackageCatalog", args ?? new GetAccessPackageCatalogArgs(), options.WithDefaults());
+
+ ///
+ /// i
+ /// Use this resource to retrieve information for an existing access package catalog within Identity Governance in Azure Active Directory.
+ ///
+ /// ## API Permissions
+ ///
+ /// The following API permissions are required in order to use this data source.
+ ///
+ /// When authenticated with a service principal, this data source requires one of the following application roles: `EntitlementManagement.Read.All`, or `EntitlementManagement.ReadWrite.All`.
+ ///
+ /// When authenticated with a user principal, this data source requires one of the following directory roles: `Catalog owner`, `Catalog reader`, `Global Reader`, or `Global Administrator`.
+ ///
+ /// {{% examples %}}
+ /// ## Example Usage
+ /// {{% example %}}
+ ///
+ /// *Look up by ID*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackageCatalog.Invoke(new()
+ /// {
+ /// ObjectId = "00000000-0000-0000-0000-000000000000",
+ /// });
+ ///
+ /// });
+ /// ```
+ ///
+ /// *Look up by DisplayName*
+ ///
+ /// ```csharp
+ /// using System.Collections.Generic;
+ /// using Pulumi;
+ /// using AzureAD = Pulumi.AzureAD;
+ ///
+ /// return await Deployment.RunAsync(() =>
+ /// {
+ /// var example = AzureAD.GetAccessPackageCatalog.Invoke(new()
+ /// {
+ /// DisplayName = "My access package Catalog",
+ /// });
+ ///
+ /// });
+ /// ```
+ /// {{% /example %}}
+ /// {{% /examples %}}
+ ///
+ public static Output Invoke(GetAccessPackageCatalogInvokeArgs? args = null, InvokeOptions? options = null)
+ => global::Pulumi.Deployment.Instance.Invoke("azuread:index/getAccessPackageCatalog:getAccessPackageCatalog", args ?? new GetAccessPackageCatalogInvokeArgs(), options.WithDefaults());
+ }
+
+
+ public sealed class GetAccessPackageCatalogArgs : global::Pulumi.InvokeArgs
+ {
+ ///
+ /// The display name of the access package catalog.
+ ///
+ [Input("displayName")]
+ public string? DisplayName { get; set; }
+
+ ///
+ /// The ID of this access package catalog.
+ ///
+ [Input("objectId")]
+ public string? ObjectId { get; set; }
+
+ public GetAccessPackageCatalogArgs()
+ {
+ }
+ public static new GetAccessPackageCatalogArgs Empty => new GetAccessPackageCatalogArgs();
+ }
+
+ public sealed class GetAccessPackageCatalogInvokeArgs : global::Pulumi.InvokeArgs
+ {
+ ///
+ /// The display name of the access package catalog.
+ ///
+ [Input("displayName")]
+ public Input? DisplayName { get; set; }
+
+ ///
+ /// The ID of this access package catalog.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ public GetAccessPackageCatalogInvokeArgs()
+ {
+ }
+ public static new GetAccessPackageCatalogInvokeArgs Empty => new GetAccessPackageCatalogInvokeArgs();
+ }
+
+
+ [OutputType]
+ public sealed class GetAccessPackageCatalogResult
+ {
+ ///
+ /// The description of the access package catalog.
+ ///
+ public readonly string Description;
+ public readonly string DisplayName;
+ ///
+ /// Whether the access packages in this catalog can be requested by users outside the tenant.
+ ///
+ public readonly bool ExternallyVisible;
+ ///
+ /// The provider-assigned unique ID for this managed resource.
+ ///
+ public readonly string Id;
+ public readonly string ObjectId;
+ ///
+ /// Whether the access packages in this catalog are available for management.
+ ///
+ public readonly bool Published;
+
+ [OutputConstructor]
+ private GetAccessPackageCatalogResult(
+ string description,
+
+ string displayName,
+
+ bool externallyVisible,
+
+ string id,
+
+ string objectId,
+
+ bool published)
+ {
+ Description = description;
+ DisplayName = displayName;
+ ExternallyVisible = externallyVisible;
+ Id = id;
+ ObjectId = objectId;
+ Published = published;
+ }
+ }
+}
diff --git a/sdk/dotnet/GetApplication.cs b/sdk/dotnet/GetApplication.cs
index 0f5a0dc63..65aa4c501 100644
--- a/sdk/dotnet/GetApplication.cs
+++ b/sdk/dotnet/GetApplication.cs
@@ -248,6 +248,10 @@ public sealed class GetApplicationResult
///
public readonly ImmutableArray RequiredResourceAccesses;
///
+ /// References application context information from a Service or Asset Management database.
+ ///
+ public readonly string ServiceManagementReference;
+ ///
/// The Microsoft account types that are supported for the current application. One of `AzureADMyOrg`, `AzureADMultipleOrgs`, `AzureADandPersonalMicrosoftAccount` or `PersonalMicrosoftAccount`.
///
public readonly string SignInAudience;
@@ -324,6 +328,8 @@ private GetApplicationResult(
ImmutableArray requiredResourceAccesses,
+ string serviceManagementReference,
+
string signInAudience,
ImmutableArray singlePageApplications,
@@ -361,6 +367,7 @@ private GetApplicationResult(
PublicClients = publicClients;
PublisherDomain = publisherDomain;
RequiredResourceAccesses = requiredResourceAccesses;
+ ServiceManagementReference = serviceManagementReference;
SignInAudience = signInAudience;
SinglePageApplications = singlePageApplications;
SupportUrl = supportUrl;
diff --git a/sdk/dotnet/GetGroup.cs b/sdk/dotnet/GetGroup.cs
index 091bcac14..c8bb7f083 100644
--- a/sdk/dotnet/GetGroup.cs
+++ b/sdk/dotnet/GetGroup.cs
@@ -220,6 +220,10 @@ public sealed class GetGroupResult
///
public readonly string OnpremisesDomainName;
///
+ /// The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.
+ ///
+ public readonly string OnpremisesGroupType;
+ ///
/// The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.
///
public readonly string OnpremisesNetbiosName;
@@ -267,6 +271,10 @@ public sealed class GetGroupResult
/// The group join policy and group content visibility. Possible values are `Private`, `Public`, or `Hiddenmembership`. Only Microsoft 365 groups can have `Hiddenmembership` visibility.
///
public readonly string Visibility;
+ ///
+ /// Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.
+ ///
+ public readonly bool WritebackEnabled;
[OutputConstructor]
private GetGroupResult(
@@ -302,6 +310,8 @@ private GetGroupResult(
string onpremisesDomainName,
+ string onpremisesGroupType,
+
string onpremisesNetbiosName,
string onpremisesSamAccountName,
@@ -324,7 +334,9 @@ private GetGroupResult(
ImmutableArray types,
- string visibility)
+ string visibility,
+
+ bool writebackEnabled)
{
AssignableToRole = assignableToRole;
AutoSubscribeNewMembers = autoSubscribeNewMembers;
@@ -342,6 +354,7 @@ private GetGroupResult(
Members = members;
ObjectId = objectId;
OnpremisesDomainName = onpremisesDomainName;
+ OnpremisesGroupType = onpremisesGroupType;
OnpremisesNetbiosName = onpremisesNetbiosName;
OnpremisesSamAccountName = onpremisesSamAccountName;
OnpremisesSecurityIdentifier = onpremisesSecurityIdentifier;
@@ -354,6 +367,7 @@ private GetGroupResult(
Theme = theme;
Types = types;
Visibility = visibility;
+ WritebackEnabled = writebackEnabled;
}
}
}
diff --git a/sdk/dotnet/GetUser.cs b/sdk/dotnet/GetUser.cs
index 00228d0b4..3cf3d57a5 100644
--- a/sdk/dotnet/GetUser.cs
+++ b/sdk/dotnet/GetUser.cs
@@ -85,6 +85,12 @@ public static Output Invoke(GetUserInvokeArgs? args = null, Invok
public sealed class GetUserArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The SMTP address for the user.
+ ///
+ [Input("mail")]
+ public string? Mail { get; set; }
+
///
/// The email alias of the user.
///
@@ -111,6 +117,12 @@ public GetUserArgs()
public sealed class GetUserInvokeArgs : global::Pulumi.InvokeArgs
{
+ ///
+ /// The SMTP address for the user.
+ ///
+ [Input("mail")]
+ public Input? Mail { get; set; }
+
///
/// The email alias of the user.
///
diff --git a/sdk/dotnet/Group.cs b/sdk/dotnet/Group.cs
index 092c734b8..de1a5ce0b 100644
--- a/sdk/dotnet/Group.cs
+++ b/sdk/dotnet/Group.cs
@@ -16,7 +16,9 @@ namespace Pulumi.AzureAD
///
/// The following API permissions are required in order to use this resource.
///
- /// When authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`
+ /// When authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`.
+ ///
+ /// Alternatively, if the authenticated service principal is also an owner of the group being managed, this resource can use the application role: `Group.Create`.
///
/// If using the `assignable_to_role` property, this resource additionally requires one of the following application roles: `RoleManagement.ReadWrite.Directory` or `Directory.ReadWrite.All`
///
@@ -135,6 +137,12 @@ public partial class Group : global::Pulumi.CustomResource
[Output("onpremisesDomainName")]
public Output OnpremisesDomainName { get; private set; } = null!;
+ ///
+ /// The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.
+ ///
+ [Output("onpremisesGroupType")]
+ public Output OnpremisesGroupType { get; private set; } = null!;
+
///
/// The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.
///
@@ -213,6 +221,12 @@ public partial class Group : global::Pulumi.CustomResource
[Output("visibility")]
public Output Visibility { get; private set; } = null!;
+ ///
+ /// Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.
+ ///
+ [Output("writebackEnabled")]
+ public Output WritebackEnabled { get; private set; } = null!;
+
///
/// Create a Group resource with the given unique name, arguments, and options.
@@ -355,6 +369,12 @@ public InputList Members
set => _members = value;
}
+ ///
+ /// The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.
+ ///
+ [Input("onpremisesGroupType")]
+ public Input? OnpremisesGroupType { get; set; }
+
[Input("owners")]
private InputList? _owners;
@@ -415,6 +435,12 @@ public InputList Types
[Input("visibility")]
public Input? Visibility { get; set; }
+ ///
+ /// Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.
+ ///
+ [Input("writebackEnabled")]
+ public Input? WritebackEnabled { get; set; }
+
public GroupArgs()
{
}
@@ -537,6 +563,12 @@ public InputList Members
[Input("onpremisesDomainName")]
public Input? OnpremisesDomainName { get; set; }
+ ///
+ /// The on-premises group type that the AAD group will be written as, when writeback is enabled. Possible values are `UniversalDistributionGroup`, `UniversalMailEnabledSecurityGroup`, or `UniversalSecurityGroup`.
+ ///
+ [Input("onpremisesGroupType")]
+ public Input? OnpremisesGroupType { get; set; }
+
///
/// The on-premises NetBIOS name, synchronised from the on-premises directory when Azure AD Connect is used.
///
@@ -639,6 +671,12 @@ public InputList Types
[Input("visibility")]
public Input? Visibility { get; set; }
+ ///
+ /// Whether the group will be written back to the configured on-premises Active Directory when Azure AD Connect is used.
+ ///
+ [Input("writebackEnabled")]
+ public Input? WritebackEnabled { get; set; }
+
public GroupState()
{
}
diff --git a/sdk/dotnet/GroupMember.cs b/sdk/dotnet/GroupMember.cs
index 9f8399bff..9a9cdb6e7 100644
--- a/sdk/dotnet/GroupMember.cs
+++ b/sdk/dotnet/GroupMember.cs
@@ -18,7 +18,9 @@ namespace Pulumi.AzureAD
///
/// The following API permissions are required in order to use this resource.
///
- /// When authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`
+ /// When authenticated with a service principal, this resource requires one of the following application roles: `Group.ReadWrite.All` or `Directory.ReadWrite.All`.
+ ///
+ /// However, if the authenticated service principal is an owner of the group being managed, an application role is not required.
///
/// When authenticated with a user principal, this resource requires one of the following directory roles: `Groups Administrator`, `User Administrator` or `Global Administrator`
///
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs.cs
new file mode 100644
index 000000000..050c64a26
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs.cs
new file mode 100644
index 000000000..c5b93d8ce
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageAlternativeApproverGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs.cs
new file mode 100644
index 000000000..67806b8b4
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs.cs
@@ -0,0 +1,68 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether alternative approvers are enabled.
+ ///
+ [Input("alternativeApprovalEnabled")]
+ public Input? AlternativeApprovalEnabled { get; set; }
+
+ [Input("alternativeApprovers")]
+ private InputList? _alternativeApprovers;
+
+ ///
+ /// A block specifying alternative approvers when escalation is enabled and the primary approvers do not respond before the escalation time, as documented below.
+ ///
+ public InputList AlternativeApprovers
+ {
+ get => _alternativeApprovers ?? (_alternativeApprovers = new InputList());
+ set => _alternativeApprovers = value;
+ }
+
+ ///
+ /// Maximum number of days within which a request must be approved. If a request is not approved within this time period after it is made, it will be automatically rejected.
+ ///
+ [Input("approvalTimeoutInDays", required: true)]
+ public Input ApprovalTimeoutInDays { get; set; } = null!;
+
+ ///
+ /// Whether an approver must provide a justification for their decision. Justification is visible to other approvers and the requestor.
+ ///
+ [Input("approverJustificationRequired")]
+ public Input? ApproverJustificationRequired { get; set; }
+
+ ///
+ /// Number of days before the request is forwarded to alternative approvers.
+ ///
+ [Input("enableAlternativeApprovalInDays")]
+ public Input? EnableAlternativeApprovalInDays { get; set; }
+
+ [Input("primaryApprovers")]
+ private InputList? _primaryApprovers;
+
+ ///
+ /// A block specifying the users who will be asked to approve requests, as documented below.
+ ///
+ public InputList PrimaryApprovers
+ {
+ get => _primaryApprovers ?? (_primaryApprovers = new InputList());
+ set => _primaryApprovers = value;
+ }
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs.cs
new file mode 100644
index 000000000..714f9e61d
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs.cs
@@ -0,0 +1,68 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether alternative approvers are enabled.
+ ///
+ [Input("alternativeApprovalEnabled")]
+ public Input? AlternativeApprovalEnabled { get; set; }
+
+ [Input("alternativeApprovers")]
+ private InputList? _alternativeApprovers;
+
+ ///
+ /// A block specifying alternative approvers when escalation is enabled and the primary approvers do not respond before the escalation time, as documented below.
+ ///
+ public InputList AlternativeApprovers
+ {
+ get => _alternativeApprovers ?? (_alternativeApprovers = new InputList());
+ set => _alternativeApprovers = value;
+ }
+
+ ///
+ /// Maximum number of days within which a request must be approved. If a request is not approved within this time period after it is made, it will be automatically rejected.
+ ///
+ [Input("approvalTimeoutInDays", required: true)]
+ public Input ApprovalTimeoutInDays { get; set; } = null!;
+
+ ///
+ /// Whether an approver must provide a justification for their decision. Justification is visible to other approvers and the requestor.
+ ///
+ [Input("approverJustificationRequired")]
+ public Input? ApproverJustificationRequired { get; set; }
+
+ ///
+ /// Number of days before the request is forwarded to alternative approvers.
+ ///
+ [Input("enableAlternativeApprovalInDays")]
+ public Input? EnableAlternativeApprovalInDays { get; set; }
+
+ [Input("primaryApprovers")]
+ private InputList? _primaryApprovers;
+
+ ///
+ /// A block specifying the users who will be asked to approve requests, as documented below.
+ ///
+ public InputList PrimaryApprovers
+ {
+ get => _primaryApprovers ?? (_primaryApprovers = new InputList());
+ set => _primaryApprovers = value;
+ }
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStageGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs.cs
new file mode 100644
index 000000000..2b647b6ff
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs.cs
new file mode 100644
index 000000000..ba252c8c6
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsApprovalStagePrimaryApproverGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsArgs.cs
new file mode 100644
index 000000000..9e3b0d4b1
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether an approval is required.
+ ///
+ [Input("approvalRequired")]
+ public Input? ApprovalRequired { get; set; }
+
+ ///
+ /// Whether an approval is required to grant extension. Same approval settings used to approve initial access will apply.
+ ///
+ [Input("approvalRequiredForExtension")]
+ public Input? ApprovalRequiredForExtension { get; set; }
+
+ [Input("approvalStages")]
+ private InputList? _approvalStages;
+
+ ///
+ /// An `approval_stage` block specifying the process to obtain an approval, as documented below.
+ ///
+ public InputList ApprovalStages
+ {
+ get => _approvalStages ?? (_approvalStages = new InputList());
+ set => _approvalStages = value;
+ }
+
+ ///
+ /// Whether a requestor is required to provide a justification to request an access package. Justification is visible to approvers and the requestor.
+ ///
+ [Input("requestorJustificationRequired")]
+ public Input? RequestorJustificationRequired { get; set; }
+
+ public AccessPackageAssignmentPolicyApprovalSettingsArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsGetArgs.cs
new file mode 100644
index 000000000..806c3900b
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyApprovalSettingsGetArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyApprovalSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether an approval is required.
+ ///
+ [Input("approvalRequired")]
+ public Input? ApprovalRequired { get; set; }
+
+ ///
+ /// Whether an approval is required to grant extension. Same approval settings used to approve initial access will apply.
+ ///
+ [Input("approvalRequiredForExtension")]
+ public Input? ApprovalRequiredForExtension { get; set; }
+
+ [Input("approvalStages")]
+ private InputList? _approvalStages;
+
+ ///
+ /// An `approval_stage` block specifying the process to obtain an approval, as documented below.
+ ///
+ public InputList ApprovalStages
+ {
+ get => _approvalStages ?? (_approvalStages = new InputList());
+ set => _approvalStages = value;
+ }
+
+ ///
+ /// Whether a requestor is required to provide a justification to request an access package. Justification is visible to approvers and the requestor.
+ ///
+ [Input("requestorJustificationRequired")]
+ public Input? RequestorJustificationRequired { get; set; }
+
+ public AccessPackageAssignmentPolicyApprovalSettingsGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyApprovalSettingsGetArgs Empty => new AccessPackageAssignmentPolicyApprovalSettingsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs.cs
new file mode 100644
index 000000000..368f61b50
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs.cs
@@ -0,0 +1,80 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether to show the reviewer decision helpers. If enabled, system recommendations based on users' access information will be shown to the reviewers. The reviewer will be recommended to approve the review if the user has signed-in at least once during the last 30 days. The reviewer will be recommended to deny the review if the user has not signed-in during the last 30 days.
+ ///
+ [Input("accessRecommendationEnabled")]
+ public Input? AccessRecommendationEnabled { get; set; }
+
+ ///
+ /// Specifies the actions the system takes if reviewers don't respond in time. Valid values are `keepAccess`, `removeAccess`, or `acceptAccessRecommendation`.
+ ///
+ [Input("accessReviewTimeoutBehavior")]
+ public Input? AccessReviewTimeoutBehavior { get; set; }
+
+ ///
+ /// Whether a reviewer needs to provide a justification for their decision. Justification is visible to other reviewers and the requestor.
+ ///
+ [Input("approverJustificationRequired")]
+ public Input? ApproverJustificationRequired { get; set; }
+
+ ///
+ /// How many days each occurrence of the access review series will run.
+ ///
+ [Input("durationInDays")]
+ public Input? DurationInDays { get; set; }
+
+ ///
+ /// Whether to enable assignment review.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// This will determine how often the access review campaign runs, valid values are `weekly`, `monthly`, `quarterly`, `halfyearly`, or `annual`.
+ ///
+ [Input("reviewFrequency")]
+ public Input? ReviewFrequency { get; set; }
+
+ ///
+ /// Self review or specific reviewers. Valid values are `Self`, or `Reviewers`.
+ ///
+ [Input("reviewType")]
+ public Input? ReviewType { get; set; }
+
+ [Input("reviewers")]
+ private InputList? _reviewers;
+
+ ///
+ /// One or more `reviewer` blocks to specify the users who will be reviewers (when `review_type` is `Reviewers`), as documented below.
+ ///
+ public InputList Reviewers
+ {
+ get => _reviewers ?? (_reviewers = new InputList());
+ set => _reviewers = value;
+ }
+
+ ///
+ /// This is the date the access review campaign will start on, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z), default is now. Once an access review has been created, you cannot update its start date
+ ///
+ [Input("startingOn")]
+ public Input? StartingOn { get; set; }
+
+ public AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs Empty => new AccessPackageAssignmentPolicyAssignmentReviewSettingsArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs.cs
new file mode 100644
index 000000000..393e5bf93
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs.cs
@@ -0,0 +1,80 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// Whether to show the reviewer decision helpers. If enabled, system recommendations based on users' access information will be shown to the reviewers. The reviewer will be recommended to approve the review if the user has signed-in at least once during the last 30 days. The reviewer will be recommended to deny the review if the user has not signed-in during the last 30 days.
+ ///
+ [Input("accessRecommendationEnabled")]
+ public Input? AccessRecommendationEnabled { get; set; }
+
+ ///
+ /// Specifies the actions the system takes if reviewers don't respond in time. Valid values are `keepAccess`, `removeAccess`, or `acceptAccessRecommendation`.
+ ///
+ [Input("accessReviewTimeoutBehavior")]
+ public Input? AccessReviewTimeoutBehavior { get; set; }
+
+ ///
+ /// Whether a reviewer needs to provide a justification for their decision. Justification is visible to other reviewers and the requestor.
+ ///
+ [Input("approverJustificationRequired")]
+ public Input? ApproverJustificationRequired { get; set; }
+
+ ///
+ /// How many days each occurrence of the access review series will run.
+ ///
+ [Input("durationInDays")]
+ public Input? DurationInDays { get; set; }
+
+ ///
+ /// Whether to enable assignment review.
+ ///
+ [Input("enabled")]
+ public Input? Enabled { get; set; }
+
+ ///
+ /// This will determine how often the access review campaign runs, valid values are `weekly`, `monthly`, `quarterly`, `halfyearly`, or `annual`.
+ ///
+ [Input("reviewFrequency")]
+ public Input? ReviewFrequency { get; set; }
+
+ ///
+ /// Self review or specific reviewers. Valid values are `Self`, or `Reviewers`.
+ ///
+ [Input("reviewType")]
+ public Input? ReviewType { get; set; }
+
+ [Input("reviewers")]
+ private InputList? _reviewers;
+
+ ///
+ /// One or more `reviewer` blocks to specify the users who will be reviewers (when `review_type` is `Reviewers`), as documented below.
+ ///
+ public InputList Reviewers
+ {
+ get => _reviewers ?? (_reviewers = new InputList());
+ set => _reviewers = value;
+ }
+
+ ///
+ /// This is the date the access review campaign will start on, formatted as an RFC3339 date string in UTC(e.g. 2018-01-01T01:02:03Z), default is now. Once an access review has been created, you cannot update its start date
+ ///
+ [Input("startingOn")]
+ public Input? StartingOn { get; set; }
+
+ public AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs Empty => new AccessPackageAssignmentPolicyAssignmentReviewSettingsGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs.cs
new file mode 100644
index 000000000..302b6cc91
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs Empty => new AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs.cs
new file mode 100644
index 000000000..a92d41e28
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// For a user in an approval stage, this property indicates whether the user is a backup fallback approver.
+ ///
+ [Input("backup")]
+ public Input? Backup { get; set; }
+
+ ///
+ /// The ID of the subject.
+ ///
+ [Input("objectId")]
+ public Input? ObjectId { get; set; }
+
+ ///
+ /// Specifies the type of users. Valid values are `singleUser`, `groupMembers`, `connectedOrganizationMembers`, `requestorManager`, `internalSponsors`, or `externalSponsors`.
+ ///
+ [Input("subjectType", required: true)]
+ public Input SubjectType { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs Empty => new AccessPackageAssignmentPolicyAssignmentReviewSettingsReviewerGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionArgs.cs
new file mode 100644
index 000000000..79dd2d6ad
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("choices")]
+ private InputList? _choices;
+
+ ///
+ /// One or more blocks configuring a choice to the question, as documented below.
+ ///
+ public InputList Choices
+ {
+ get => _choices ?? (_choices = new InputList());
+ set => _choices = value;
+ }
+
+ ///
+ /// Whether this question is required.
+ ///
+ [Input("required")]
+ public Input? Required { get; set; }
+
+ ///
+ /// The sequence number of this question.
+ ///
+ [Input("sequence")]
+ public Input? Sequence { get; set; }
+
+ ///
+ /// A block describing the content of this question, as documented below.
+ ///
+ [Input("text", required: true)]
+ public Input Text { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionArgs Empty => new AccessPackageAssignmentPolicyQuestionArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceArgs.cs
new file mode 100644
index 000000000..6ca19c271
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The actual value of this choice.
+ ///
+ [Input("actualValue", required: true)]
+ public Input ActualValue { get; set; } = null!;
+
+ ///
+ /// A block describing the display text of this choice, as documented below.
+ ///
+ [Input("displayValue", required: true)]
+ public Input DisplayValue { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionChoiceArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs.cs
new file mode 100644
index 000000000..3f06172c5
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The default text of this question.
+ ///
+ [Input("defaultText", required: true)]
+ public Input DefaultText { get; set; } = null!;
+
+ [Input("localizedTexts")]
+ private InputList? _localizedTexts;
+
+ ///
+ /// One or more blocks describing localized text of this question, as documented below.
+ ///
+ public InputList LocalizedTexts
+ {
+ get => _localizedTexts ?? (_localizedTexts = new InputList());
+ set => _localizedTexts = value;
+ }
+
+ public AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs.cs
new file mode 100644
index 000000000..c717ffb71
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The default text of this question.
+ ///
+ [Input("defaultText", required: true)]
+ public Input DefaultText { get; set; } = null!;
+
+ [Input("localizedTexts")]
+ private InputList? _localizedTexts;
+
+ ///
+ /// One or more blocks describing localized text of this question, as documented below.
+ ///
+ public InputList LocalizedTexts
+ {
+ get => _localizedTexts ?? (_localizedTexts = new InputList());
+ set => _localizedTexts = value;
+ }
+
+ public AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs.cs
new file mode 100644
index 000000000..f30cdb423
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The localized content of this question.
+ ///
+ [Input("content", required: true)]
+ public Input Content { get; set; } = null!;
+
+ ///
+ /// The ISO 639 language code for this question content.
+ ///
+ [Input("languageCode", required: true)]
+ public Input LanguageCode { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs.cs
new file mode 100644
index 000000000..e3e16d052
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The localized content of this question.
+ ///
+ [Input("content", required: true)]
+ public Input Content { get; set; } = null!;
+
+ ///
+ /// The ISO 639 language code for this question content.
+ ///
+ [Input("languageCode", required: true)]
+ public Input LanguageCode { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceDisplayValueLocalizedTextGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceGetArgs.cs
new file mode 100644
index 000000000..56d249b55
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionChoiceGetArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionChoiceGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The actual value of this choice.
+ ///
+ [Input("actualValue", required: true)]
+ public Input ActualValue { get; set; } = null!;
+
+ ///
+ /// A block describing the display text of this choice, as documented below.
+ ///
+ [Input("displayValue", required: true)]
+ public Input DisplayValue { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionChoiceGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionChoiceGetArgs Empty => new AccessPackageAssignmentPolicyQuestionChoiceGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionGetArgs.cs
new file mode 100644
index 000000000..a3f01660a
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionGetArgs.cs
@@ -0,0 +1,50 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionGetArgs : global::Pulumi.ResourceArgs
+ {
+ [Input("choices")]
+ private InputList? _choices;
+
+ ///
+ /// One or more blocks configuring a choice to the question, as documented below.
+ ///
+ public InputList Choices
+ {
+ get => _choices ?? (_choices = new InputList());
+ set => _choices = value;
+ }
+
+ ///
+ /// Whether this question is required.
+ ///
+ [Input("required")]
+ public Input? Required { get; set; }
+
+ ///
+ /// The sequence number of this question.
+ ///
+ [Input("sequence")]
+ public Input? Sequence { get; set; }
+
+ ///
+ /// A block describing the content of this question, as documented below.
+ ///
+ [Input("text", required: true)]
+ public Input Text { get; set; } = null!;
+
+ public AccessPackageAssignmentPolicyQuestionGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionGetArgs Empty => new AccessPackageAssignmentPolicyQuestionGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextArgs.cs
new file mode 100644
index 000000000..45180445e
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionTextArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The default text of this question.
+ ///
+ [Input("defaultText", required: true)]
+ public Input DefaultText { get; set; } = null!;
+
+ [Input("localizedTexts")]
+ private InputList? _localizedTexts;
+
+ ///
+ /// One or more blocks describing localized text of this question, as documented below.
+ ///
+ public InputList LocalizedTexts
+ {
+ get => _localizedTexts ?? (_localizedTexts = new InputList());
+ set => _localizedTexts = value;
+ }
+
+ public AccessPackageAssignmentPolicyQuestionTextArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionTextArgs Empty => new AccessPackageAssignmentPolicyQuestionTextArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextGetArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextGetArgs.cs
new file mode 100644
index 000000000..f51763307
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextGetArgs.cs
@@ -0,0 +1,38 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionTextGetArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The default text of this question.
+ ///
+ [Input("defaultText", required: true)]
+ public Input DefaultText { get; set; } = null!;
+
+ [Input("localizedTexts")]
+ private InputList? _localizedTexts;
+
+ ///
+ /// One or more blocks describing localized text of this question, as documented below.
+ ///
+ public InputList LocalizedTexts
+ {
+ get => _localizedTexts ?? (_localizedTexts = new InputList());
+ set => _localizedTexts = value;
+ }
+
+ public AccessPackageAssignmentPolicyQuestionTextGetArgs()
+ {
+ }
+ public static new AccessPackageAssignmentPolicyQuestionTextGetArgs Empty => new AccessPackageAssignmentPolicyQuestionTextGetArgs();
+ }
+}
diff --git a/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextLocalizedTextArgs.cs b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextLocalizedTextArgs.cs
new file mode 100644
index 000000000..5b5e1116a
--- /dev/null
+++ b/sdk/dotnet/Inputs/AccessPackageAssignmentPolicyQuestionTextLocalizedTextArgs.cs
@@ -0,0 +1,32 @@
+// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
+// *** Do not edit by hand unless you're certain you know what you are doing! ***
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Immutable;
+using System.Threading.Tasks;
+using Pulumi.Serialization;
+
+namespace Pulumi.AzureAD.Inputs
+{
+
+ public sealed class AccessPackageAssignmentPolicyQuestionTextLocalizedTextArgs : global::Pulumi.ResourceArgs
+ {
+ ///
+ /// The localized content of this question.
+ ///
+ [Input("content", required: true)]
+ public Input Content { get; set; } = null!;
+
+ ///