diff --git a/CHANGELOG.md b/CHANGELOG.md index 228235d3a..40a8a297d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,8 @@ CHANGELOG ========= ## HEAD (Unreleased) -_(none)_ +* Upgrade to Pulumi v2.9.0, which adds type annotations and input/output classes to Python +* Upgrade to pulumi-terraform-bridge v2.7.2 --- diff --git a/provider/cmd/pulumi-resource-azuread/schema.json b/provider/cmd/pulumi-resource-azuread/schema.json index 4150ba31b..2fa5ae9d2 100644 --- a/provider/cmd/pulumi-resource-azuread/schema.json +++ b/provider/cmd/pulumi-resource-azuread/schema.json @@ -1322,7 +1322,7 @@ }, "resources": { "azuread:index/application:Application": { - "description": "Manages an Application within Azure Active Directory.\n\n\u003e **NOTE:** If you're authenticating using a Service Principal then it must have permissions to both `Read and write owned by applications` and `Sign in and read user profile` within the `Windows Azure Active Directory` API.\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.Application(\"example\", {\n appRoles: [{\n allowedMemberTypes: [\n \"User\",\n \"Application\",\n ],\n description: \"Admins can manage roles and perform all task actions\",\n displayName: \"Admin\",\n isEnabled: true,\n value: \"Admin\",\n }],\n availableToOtherTenants: false,\n homepage: \"https://homepage\",\n identifierUris: [\"https://uri\"],\n oauth2AllowImplicitFlow: true,\n oauth2Permissions: [\n {\n adminConsentDescription: \"Allow the application to access example on behalf of the signed-in user.\",\n adminConsentDisplayName: \"Access example\",\n isEnabled: true,\n type: \"User\",\n userConsentDescription: \"Allow the application to access example on your behalf.\",\n userConsentDisplayName: \"Access example\",\n value: \"user_impersonation\",\n },\n {\n adminConsentDescription: \"Administer the example application\",\n adminConsentDisplayName: \"Administer\",\n isEnabled: true,\n type: \"Admin\",\n value: \"administer\",\n },\n ],\n optionalClaims: {\n accessTokens: [\n {\n name: \"myclaim\",\n },\n {\n name: \"otherclaim\",\n },\n ],\n idTokens: [{\n additionalProperties: [\"emit_as_roles\"],\n essential: true,\n name: \"userclaim\",\n source: \"user\",\n }],\n },\n owners: [\"00000004-0000-0000-c000-000000000000\"],\n replyUrls: [\"https://replyurl\"],\n requiredResourceAccesses: [\n {\n resourceAccesses: [\n {\n id: \"...\",\n type: \"Role\",\n },\n {\n id: \"...\",\n type: \"Scope\",\n },\n {\n id: \"...\",\n type: \"Scope\",\n },\n ],\n resourceAppId: \"00000003-0000-0000-c000-000000000000\",\n },\n {\n resourceAccesses: [{\n id: \"...\",\n type: \"Scope\",\n }],\n resourceAppId: \"00000002-0000-0000-c000-000000000000\",\n },\n ],\n type: \"webapp/api\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.Application(\"example\",\n app_roles=[{\n \"allowedMemberTypes\": [\n \"User\",\n \"Application\",\n ],\n \"description\": \"Admins can manage roles and perform all task actions\",\n \"display_name\": \"Admin\",\n \"isEnabled\": True,\n \"value\": \"Admin\",\n }],\n available_to_other_tenants=False,\n homepage=\"https://homepage\",\n identifier_uris=[\"https://uri\"],\n oauth2_allow_implicit_flow=True,\n oauth2_permissions=[\n {\n \"adminConsentDescription\": \"Allow the application to access example on behalf of the signed-in user.\",\n \"adminConsentDisplayName\": \"Access example\",\n \"isEnabled\": True,\n \"type\": \"User\",\n \"userConsentDescription\": \"Allow the application to access example on your behalf.\",\n \"userConsentDisplayName\": \"Access example\",\n \"value\": \"user_impersonation\",\n },\n {\n \"adminConsentDescription\": \"Administer the example application\",\n \"adminConsentDisplayName\": \"Administer\",\n \"isEnabled\": True,\n \"type\": \"Admin\",\n \"value\": \"administer\",\n },\n ],\n optional_claims={\n \"accessTokens\": [\n {\n \"name\": \"myclaim\",\n },\n {\n \"name\": \"otherclaim\",\n },\n ],\n \"idTokens\": [{\n \"additionalProperties\": [\"emit_as_roles\"],\n \"essential\": True,\n \"name\": \"userclaim\",\n \"source\": \"user\",\n }],\n },\n owners=[\"00000004-0000-0000-c000-000000000000\"],\n reply_urls=[\"https://replyurl\"],\n required_resource_accesses=[\n {\n \"resourceAccesses\": [\n {\n \"id\": \"...\",\n \"type\": \"Role\",\n },\n {\n \"id\": \"...\",\n \"type\": \"Scope\",\n },\n {\n \"id\": \"...\",\n \"type\": \"Scope\",\n },\n ],\n \"resourceAppId\": \"00000003-0000-0000-c000-000000000000\",\n },\n {\n \"resourceAccesses\": [{\n \"id\": \"...\",\n \"type\": \"Scope\",\n }],\n \"resourceAppId\": \"00000002-0000-0000-c000-000000000000\",\n },\n ],\n type=\"webapp/api\")\n```\n```csharp\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new AzureAD.Application(\"example\", new AzureAD.ApplicationArgs\n {\n AppRoles = \n {\n new AzureAD.Inputs.ApplicationAppRoleArgs\n {\n AllowedMemberTypes = \n {\n \"User\",\n \"Application\",\n },\n Description = \"Admins can manage roles and perform all task actions\",\n DisplayName = \"Admin\",\n IsEnabled = true,\n Value = \"Admin\",\n },\n },\n AvailableToOtherTenants = false,\n Homepage = \"https://homepage\",\n IdentifierUris = \n {\n \"https://uri\",\n },\n Oauth2AllowImplicitFlow = true,\n Oauth2Permissions = \n {\n new AzureAD.Inputs.ApplicationOauth2PermissionArgs\n {\n AdminConsentDescription = \"Allow the application to access example on behalf of the signed-in user.\",\n AdminConsentDisplayName = \"Access example\",\n IsEnabled = true,\n Type = \"User\",\n UserConsentDescription = \"Allow the application to access example on your behalf.\",\n UserConsentDisplayName = \"Access example\",\n Value = \"user_impersonation\",\n },\n new AzureAD.Inputs.ApplicationOauth2PermissionArgs\n {\n AdminConsentDescription = \"Administer the example application\",\n AdminConsentDisplayName = \"Administer\",\n IsEnabled = true,\n Type = \"Admin\",\n Value = \"administer\",\n },\n },\n OptionalClaims = new AzureAD.Inputs.ApplicationOptionalClaimsArgs\n {\n AccessTokens = \n {\n new AzureAD.Inputs.ApplicationOptionalClaimsAccessTokenArgs\n {\n Name = \"myclaim\",\n },\n new AzureAD.Inputs.ApplicationOptionalClaimsAccessTokenArgs\n {\n Name = \"otherclaim\",\n },\n },\n IdTokens = \n {\n new AzureAD.Inputs.ApplicationOptionalClaimsIdTokenArgs\n {\n AdditionalProperties = \n {\n \"emit_as_roles\",\n },\n Essential = true,\n Name = \"userclaim\",\n Source = \"user\",\n },\n },\n },\n Owners = \n {\n \"00000004-0000-0000-c000-000000000000\",\n },\n ReplyUrls = \n {\n \"https://replyurl\",\n },\n RequiredResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Role\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n },\n ResourceAppId = \"00000003-0000-0000-c000-000000000000\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n },\n ResourceAppId = \"00000002-0000-0000-c000-000000000000\",\n },\n },\n Type = \"webapp/api\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v2/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewApplication(ctx, \"example\", \u0026azuread.ApplicationArgs{\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(\"User\"),\n\t\t\t\t\t\tpulumi.String(\"Application\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Admins can manage roles and perform all task actions\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Admin\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tValue: pulumi.String(\"Admin\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAvailableToOtherTenants: pulumi.Bool(false),\n\t\t\tHomepage: pulumi.String(\"https://homepage\"),\n\t\t\tIdentifierUris: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://uri\"),\n\t\t\t},\n\t\t\tOauth2AllowImplicitFlow: pulumi.Bool(true),\n\t\t\tOauth2Permissions: azuread.ApplicationOauth2PermissionArray{\n\t\t\t\t\u0026azuread.ApplicationOauth2PermissionArgs{\n\t\t\t\t\tAdminConsentDescription: pulumi.String(\"Allow the application to access example on behalf of the signed-in user.\"),\n\t\t\t\t\tAdminConsentDisplayName: pulumi.String(\"Access example\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tType: pulumi.String(\"User\"),\n\t\t\t\t\tUserConsentDescription: pulumi.String(\"Allow the application to access example on your behalf.\"),\n\t\t\t\t\tUserConsentDisplayName: pulumi.String(\"Access example\"),\n\t\t\t\t\tValue: pulumi.String(\"user_impersonation\"),\n\t\t\t\t},\n\t\t\t\t\u0026azuread.ApplicationOauth2PermissionArgs{\n\t\t\t\t\tAdminConsentDescription: pulumi.String(\"Administer the example application\"),\n\t\t\t\t\tAdminConsentDisplayName: pulumi.String(\"Administer\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tType: pulumi.String(\"Admin\"),\n\t\t\t\t\tValue: pulumi.String(\"administer\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOptionalClaims: \u0026azuread.ApplicationOptionalClaimsArgs{\n\t\t\t\tAccessTokens: azuread.ApplicationOptionalClaimsAccessTokenArray{\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsAccessTokenArgs{\n\t\t\t\t\t\tName: pulumi.String(\"myclaim\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsAccessTokenArgs{\n\t\t\t\t\t\tName: pulumi.String(\"otherclaim\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIdTokens: azuread.ApplicationOptionalClaimsIdTokenArray{\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsIdTokenArgs{\n\t\t\t\t\t\tAdditionalProperties: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"emit_as_roles\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEssential: pulumi.Bool(true),\n\t\t\t\t\t\tName: pulumi.String(\"userclaim\"),\n\t\t\t\t\t\tSource: pulumi.String(\"user\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"00000004-0000-0000-c000-000000000000\"),\n\t\t\t},\n\t\t\tReplyUrls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://replyurl\"),\n\t\t\t},\n\t\t\tRequiredResourceAccesses: azuread.ApplicationRequiredResourceAccessArray{\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\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: pulumi.String(\"...\"),\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: pulumi.String(\"...\"),\n\t\t\t\t\t\t\tType: pulumi.String(\"Scope\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessResourceAccessArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"...\"),\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\tResourceAppId: pulumi.String(\"00000003-0000-0000-c000-000000000000\"),\n\t\t\t\t},\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\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: pulumi.String(\"...\"),\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\tResourceAppId: pulumi.String(\"00000002-0000-0000-c000-000000000000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"webapp/api\"),\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{{% /example %}}\n{{% /examples %}}", + "description": "Manages an Application within Azure Active Directory.\n\n\u003e **NOTE:** If you're authenticating using a Service Principal then it must have permissions to both `Read and write owned by applications` and `Sign in and read user profile` within the `Windows Azure Active Directory` API.\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.Application(\"example\", {\n appRoles: [{\n allowedMemberTypes: [\n \"User\",\n \"Application\",\n ],\n description: \"Admins can manage roles and perform all task actions\",\n displayName: \"Admin\",\n isEnabled: true,\n value: \"Admin\",\n }],\n availableToOtherTenants: false,\n homepage: \"https://homepage\",\n identifierUris: [\"https://uri\"],\n oauth2AllowImplicitFlow: true,\n oauth2Permissions: [\n {\n adminConsentDescription: \"Allow the application to access example on behalf of the signed-in user.\",\n adminConsentDisplayName: \"Access example\",\n isEnabled: true,\n type: \"User\",\n userConsentDescription: \"Allow the application to access example on your behalf.\",\n userConsentDisplayName: \"Access example\",\n value: \"user_impersonation\",\n },\n {\n adminConsentDescription: \"Administer the example application\",\n adminConsentDisplayName: \"Administer\",\n isEnabled: true,\n type: \"Admin\",\n value: \"administer\",\n },\n ],\n optionalClaims: {\n accessTokens: [\n {\n name: \"myclaim\",\n },\n {\n name: \"otherclaim\",\n },\n ],\n idTokens: [{\n additionalProperties: [\"emit_as_roles\"],\n essential: true,\n name: \"userclaim\",\n source: \"user\",\n }],\n },\n owners: [\"00000004-0000-0000-c000-000000000000\"],\n replyUrls: [\"https://replyurl\"],\n requiredResourceAccesses: [\n {\n resourceAccesses: [\n {\n id: \"...\",\n type: \"Role\",\n },\n {\n id: \"...\",\n type: \"Scope\",\n },\n {\n id: \"...\",\n type: \"Scope\",\n },\n ],\n resourceAppId: \"00000003-0000-0000-c000-000000000000\",\n },\n {\n resourceAccesses: [{\n id: \"...\",\n type: \"Scope\",\n }],\n resourceAppId: \"00000002-0000-0000-c000-000000000000\",\n },\n ],\n type: \"webapp/api\",\n});\n```\n```python\nimport pulumi\nimport pulumi_azuread as azuread\n\nexample = azuread.Application(\"example\",\n app_roles=[azuread.ApplicationAppRoleArgs(\n allowed_member_types=[\n \"User\",\n \"Application\",\n ],\n description=\"Admins can manage roles and perform all task actions\",\n display_name=\"Admin\",\n is_enabled=True,\n value=\"Admin\",\n )],\n available_to_other_tenants=False,\n homepage=\"https://homepage\",\n identifier_uris=[\"https://uri\"],\n oauth2_allow_implicit_flow=True,\n oauth2_permissions=[\n azuread.ApplicationOauth2PermissionArgs(\n admin_consent_description=\"Allow the application to access example on behalf of the signed-in user.\",\n admin_consent_display_name=\"Access example\",\n is_enabled=True,\n type=\"User\",\n user_consent_description=\"Allow the application to access example on your behalf.\",\n user_consent_display_name=\"Access example\",\n value=\"user_impersonation\",\n ),\n azuread.ApplicationOauth2PermissionArgs(\n admin_consent_description=\"Administer the example application\",\n admin_consent_display_name=\"Administer\",\n is_enabled=True,\n type=\"Admin\",\n value=\"administer\",\n ),\n ],\n optional_claims=azuread.ApplicationOptionalClaimsArgs(\n access_tokens=[\n azuread.ApplicationOptionalClaimsAccessTokenArgs(\n name=\"myclaim\",\n ),\n azuread.ApplicationOptionalClaimsAccessTokenArgs(\n name=\"otherclaim\",\n ),\n ],\n id_tokens=[azuread.ApplicationOptionalClaimsIdTokenArgs(\n additional_properties=[\"emit_as_roles\"],\n essential=True,\n name=\"userclaim\",\n source=\"user\",\n )],\n ),\n owners=[\"00000004-0000-0000-c000-000000000000\"],\n reply_urls=[\"https://replyurl\"],\n required_resource_accesses=[\n azuread.ApplicationRequiredResourceAccessArgs(\n resource_accesses=[\n azuread.ApplicationRequiredResourceAccessResourceAccessArgs(\n id=\"...\",\n type=\"Role\",\n ),\n azuread.ApplicationRequiredResourceAccessResourceAccessArgs(\n id=\"...\",\n type=\"Scope\",\n ),\n azuread.ApplicationRequiredResourceAccessResourceAccessArgs(\n id=\"...\",\n type=\"Scope\",\n ),\n ],\n resource_app_id=\"00000003-0000-0000-c000-000000000000\",\n ),\n azuread.ApplicationRequiredResourceAccessArgs(\n resource_accesses=[azuread.ApplicationRequiredResourceAccessResourceAccessArgs(\n id=\"...\",\n type=\"Scope\",\n )],\n resource_app_id=\"00000002-0000-0000-c000-000000000000\",\n ),\n ],\n type=\"webapp/api\")\n```\n```csharp\nusing Pulumi;\nusing AzureAD = Pulumi.AzureAD;\n\nclass MyStack : Stack\n{\n public MyStack()\n {\n var example = new AzureAD.Application(\"example\", new AzureAD.ApplicationArgs\n {\n AppRoles = \n {\n new AzureAD.Inputs.ApplicationAppRoleArgs\n {\n AllowedMemberTypes = \n {\n \"User\",\n \"Application\",\n },\n Description = \"Admins can manage roles and perform all task actions\",\n DisplayName = \"Admin\",\n IsEnabled = true,\n Value = \"Admin\",\n },\n },\n AvailableToOtherTenants = false,\n Homepage = \"https://homepage\",\n IdentifierUris = \n {\n \"https://uri\",\n },\n Oauth2AllowImplicitFlow = true,\n Oauth2Permissions = \n {\n new AzureAD.Inputs.ApplicationOauth2PermissionArgs\n {\n AdminConsentDescription = \"Allow the application to access example on behalf of the signed-in user.\",\n AdminConsentDisplayName = \"Access example\",\n IsEnabled = true,\n Type = \"User\",\n UserConsentDescription = \"Allow the application to access example on your behalf.\",\n UserConsentDisplayName = \"Access example\",\n Value = \"user_impersonation\",\n },\n new AzureAD.Inputs.ApplicationOauth2PermissionArgs\n {\n AdminConsentDescription = \"Administer the example application\",\n AdminConsentDisplayName = \"Administer\",\n IsEnabled = true,\n Type = \"Admin\",\n Value = \"administer\",\n },\n },\n OptionalClaims = new AzureAD.Inputs.ApplicationOptionalClaimsArgs\n {\n AccessTokens = \n {\n new AzureAD.Inputs.ApplicationOptionalClaimsAccessTokenArgs\n {\n Name = \"myclaim\",\n },\n new AzureAD.Inputs.ApplicationOptionalClaimsAccessTokenArgs\n {\n Name = \"otherclaim\",\n },\n },\n IdTokens = \n {\n new AzureAD.Inputs.ApplicationOptionalClaimsIdTokenArgs\n {\n AdditionalProperties = \n {\n \"emit_as_roles\",\n },\n Essential = true,\n Name = \"userclaim\",\n Source = \"user\",\n },\n },\n },\n Owners = \n {\n \"00000004-0000-0000-c000-000000000000\",\n },\n ReplyUrls = \n {\n \"https://replyurl\",\n },\n RequiredResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Role\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n },\n ResourceAppId = \"00000003-0000-0000-c000-000000000000\",\n },\n new AzureAD.Inputs.ApplicationRequiredResourceAccessArgs\n {\n ResourceAccesses = \n {\n new AzureAD.Inputs.ApplicationRequiredResourceAccessResourceAccessArgs\n {\n Id = \"...\",\n Type = \"Scope\",\n },\n },\n ResourceAppId = \"00000002-0000-0000-c000-000000000000\",\n },\n },\n Type = \"webapp/api\",\n });\n }\n\n}\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-azuread/sdk/v2/go/azuread\"\n\t\"github.com/pulumi/pulumi/sdk/v2/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := azuread.NewApplication(ctx, \"example\", \u0026azuread.ApplicationArgs{\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(\"User\"),\n\t\t\t\t\t\tpulumi.String(\"Application\"),\n\t\t\t\t\t},\n\t\t\t\t\tDescription: pulumi.String(\"Admins can manage roles and perform all task actions\"),\n\t\t\t\t\tDisplayName: pulumi.String(\"Admin\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tValue: pulumi.String(\"Admin\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAvailableToOtherTenants: pulumi.Bool(false),\n\t\t\tHomepage: pulumi.String(\"https://homepage\"),\n\t\t\tIdentifierUris: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://uri\"),\n\t\t\t},\n\t\t\tOauth2AllowImplicitFlow: pulumi.Bool(true),\n\t\t\tOauth2Permissions: azuread.ApplicationOauth2PermissionArray{\n\t\t\t\t\u0026azuread.ApplicationOauth2PermissionArgs{\n\t\t\t\t\tAdminConsentDescription: pulumi.String(\"Allow the application to access example on behalf of the signed-in user.\"),\n\t\t\t\t\tAdminConsentDisplayName: pulumi.String(\"Access example\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tType: pulumi.String(\"User\"),\n\t\t\t\t\tUserConsentDescription: pulumi.String(\"Allow the application to access example on your behalf.\"),\n\t\t\t\t\tUserConsentDisplayName: pulumi.String(\"Access example\"),\n\t\t\t\t\tValue: pulumi.String(\"user_impersonation\"),\n\t\t\t\t},\n\t\t\t\t\u0026azuread.ApplicationOauth2PermissionArgs{\n\t\t\t\t\tAdminConsentDescription: pulumi.String(\"Administer the example application\"),\n\t\t\t\t\tAdminConsentDisplayName: pulumi.String(\"Administer\"),\n\t\t\t\t\tIsEnabled: pulumi.Bool(true),\n\t\t\t\t\tType: pulumi.String(\"Admin\"),\n\t\t\t\t\tValue: pulumi.String(\"administer\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tOptionalClaims: \u0026azuread.ApplicationOptionalClaimsArgs{\n\t\t\t\tAccessTokens: azuread.ApplicationOptionalClaimsAccessTokenArray{\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsAccessTokenArgs{\n\t\t\t\t\t\tName: pulumi.String(\"myclaim\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsAccessTokenArgs{\n\t\t\t\t\t\tName: pulumi.String(\"otherclaim\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIdTokens: azuread.ApplicationOptionalClaimsIdTokenArray{\n\t\t\t\t\t\u0026azuread.ApplicationOptionalClaimsIdTokenArgs{\n\t\t\t\t\t\tAdditionalProperties: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"emit_as_roles\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEssential: pulumi.Bool(true),\n\t\t\t\t\t\tName: pulumi.String(\"userclaim\"),\n\t\t\t\t\t\tSource: pulumi.String(\"user\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tOwners: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"00000004-0000-0000-c000-000000000000\"),\n\t\t\t},\n\t\t\tReplyUrls: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"https://replyurl\"),\n\t\t\t},\n\t\t\tRequiredResourceAccesses: azuread.ApplicationRequiredResourceAccessArray{\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\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: pulumi.String(\"...\"),\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: pulumi.String(\"...\"),\n\t\t\t\t\t\t\tType: pulumi.String(\"Scope\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessResourceAccessArgs{\n\t\t\t\t\t\t\tId: pulumi.String(\"...\"),\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\tResourceAppId: pulumi.String(\"00000003-0000-0000-c000-000000000000\"),\n\t\t\t\t},\n\t\t\t\t\u0026azuread.ApplicationRequiredResourceAccessArgs{\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: pulumi.String(\"...\"),\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\tResourceAppId: pulumi.String(\"00000002-0000-0000-c000-000000000000\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tType: pulumi.String(\"webapp/api\"),\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{{% /example %}}\n{{% /examples %}}", "properties": { "appRoles": { "type": "array", @@ -3063,8 +3063,9 @@ "python": { "readme": "\u003e This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-azuread)\n\u003e distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature,\n\u003e first check the [`pulumi/pulumi-azuread` repo](https://github.com/pulumi/pulumi-azuread/issues); however, if that doesn't turn up anything,\n\u003e please consult the source [`terraform-providers/terraform-provider-azuread` repo](https://github.com/terraform-providers/terraform-provider-azuread/issues).", "requires": { - "pulumi": "\u003e=2.0.0,\u003c3.0.0" - } + "pulumi": "\u003e=2.9.0,\u003c3.0.0" + }, + "usesIOClasses": true } } } \ No newline at end of file diff --git a/provider/go.mod b/provider/go.mod index d4d3094d5..bb9edab39 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -4,8 +4,8 @@ go 1.14 require ( github.com/hashicorp/terraform-plugin-sdk v1.7.0 - github.com/pulumi/pulumi-terraform-bridge/v2 v2.5.2 - github.com/pulumi/pulumi/sdk/v2 v2.5.1-0.20200630091945-bb358c4d2173 + github.com/pulumi/pulumi-terraform-bridge/v2 v2.7.2 + github.com/pulumi/pulumi/sdk/v2 v2.9.1-0.20200821035132-629254334213 github.com/terraform-providers/terraform-provider-azuread v0.11.0 ) diff --git a/provider/go.sum b/provider/go.sum index 95b78d36d..ae98473bc 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -13,22 +13,36 @@ cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6T cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0 h1:MZQCQQaRwOrAcuKjiHWHrgKykt4fZyuwF2dtiG3fGW8= 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.55.0/go.mod h1:ZHmoY+/lIMNkN2+fBmuTiqZ4inFhvQad8ft7MT8IV5Y= +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.58.0 h1:vtAfVc723K3xKq1BQydk/FyCldnaNFhGhpJxaJzgRMQ= +cloud.google.com/go v0.58.0/go.mod h1:W+9FnSUw6nhVwXlFcp1eL+krq5+HQUJeUogSeJZZiWg= 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 h1:xE3CPsOgttP4ACBePh79zTKALtXwn/Edhcr16R5hMWU= 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/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.2.0/go.mod h1:iISCjWnTpnoJT1R287xRdjvQHJrxQOpeah4phb5D3h0= cloud.google.com/go/logging v1.0.0/go.mod h1:V1cc3ogwobYzQq5f2R7DS/GvRIrI4FKj01Gs5glwAls= 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 h1:Lpy6hKgdcl7a3WGSfJIFmxmcdjSpP6OmBEfcOv1Y680= 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 h1:UDpwYIwla4jHGzZJaEJYx1tOejbgSoNqsAfHAUYe2r8= 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.9.0 h1:oXnZyBjHB6hC8TnSle0AWW6pGJ29EuSo5ww+SFmdNBg= +cloud.google.com/go/storage v1.9.0/go.mod h1:m+/etGaqZbylxaNT876QGXqEHp4PR2Rq5GMqICWb9bU= contrib.go.opencensus.io/exporter/aws v0.0.0-20181029163544-2befc13012d0/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= @@ -37,14 +51,21 @@ contrib.go.opencensus.io/resource v0.1.1/go.mod h1:F361eGI91LCmW1I/Saf+rX0+OFcig dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AlecAivazis/survey/v2 v2.0.5/go.mod h1:WYBhg6f0y/fNYUuesWQc0PKbJcEliGcYHB9sNT3Bg74= github.com/Azure/azure-amqp-common-go/v2 v2.1.0/go.mod h1:R8rea+gJRuJR6QxTir/XuEd+YuKoUiazDC/N96FiDEU= +github.com/Azure/azure-amqp-common-go/v3 v3.0.0/go.mod h1:SY08giD/XbhTz07tJdpw1SoxQXHPN30+DI3Z04SYqyg= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= +github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v30.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v37.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v42.1.0+incompatible h1:ZNliGuvGKIHedRdz8W9BTMSrxBv9Nzz5BjeobotQTAI= github.com/Azure/azure-sdk-for-go v42.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-service-bus-go v0.9.1/go.mod h1:yzBx6/BUGfjfeqbRZny9AQIbIe3AcV9WZbAdpkoXOa0= +github.com/Azure/azure-service-bus-go v0.10.1/go.mod h1:E/FOceuKAFUfpbIJDKWz/May6guE+eGibfGT6q+n1to= github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0= +github.com/Azure/azure-storage-blob-go v0.9.0/go.mod h1:8UBPbiOhrMQ4pLPi3gA1tXnpjrS76UYE/fo5A40vf4g= +github.com/Azure/go-amqp v0.12.6/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= +github.com/Azure/go-amqp v0.12.7/go.mod h1:qApuH6OFTSKZFmCOxccvAv5rLizBQf4v8pRmG138DPo= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v12.4.3+incompatible h1:tCkdkgLZqAk+43nZu3wda9n413Q2g+z7xp1wmjiJTPY= github.com/Azure/go-autorest v12.4.3+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -59,6 +80,8 @@ github.com/Azure/go-autorest/autorest/adal v0.8.1-0.20191028180845-3492b2aff503/ github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0= github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.3 h1:O1AGG9Xig71FxdX9HO5pGNyZ7TbSyHaVg+5eJO/jSGw= +github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= github.com/Azure/go-autorest/autorest/azure/cli v0.2.0/go.mod h1:WWTbGPvkAg3I4ms2j2s+Zr5xCGwGqTQh+6M2ZqOczkE= github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= @@ -120,6 +143,8 @@ github.com/aws/aws-sdk-go v1.29.27 h1:4A53lDDGtk4TvnXFzvcOO3Vx3tDqEPfwvChhhxTPN/ github.com/aws/aws-sdk-go v1.29.27/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/aws/aws-sdk-go v1.30.7 h1:IaXfqtioP6p9SFAnNfsqdNczbR5UNbYqvcZUSsCAdTY= github.com/aws/aws-sdk-go v1.30.7/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= +github.com/aws/aws-sdk-go v1.31.13 h1:UeWMTRTL0XAKLR7vxDL4/u7KOtz/LtfJr+lXtxN4YEQ= +github.com/aws/aws-sdk-go v1.31.13/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= @@ -149,6 +174,7 @@ github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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= @@ -215,13 +241,24 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/mock v1.4.0 h1:Rd1kQnQu0Hq3qvJppYSG0HtP+f5LPPUiDswTLiEegLg= 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/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 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= 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= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 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= @@ -230,6 +267,8 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1 h1:/exdXoGamhu5ONeUJH0deniYLWYvQwW66yvlfiiKTu0= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-replayers/grpcreplay v0.1.0/go.mod h1:8Ig2Idjpr6gifRd6pNVggX6TC1Zw6Jx74AKp7QNH2QE= github.com/google/go-replayers/httpreplay v0.1.0/go.mod h1:YKZViNhiGgqdBlUbI2MwGpq4pXxNmhJLPHQ7cv2b5no= @@ -241,11 +280,15 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI 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-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/wire v0.3.0/go.mod h1:i1DMg/Lu8Sz5yYl25iOdmc5CT5qusaa+zmRWs16741s= +github.com/google/wire v0.4.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww= github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -363,11 +406,13 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +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= @@ -380,6 +425,8 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= +github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= @@ -466,6 +513,10 @@ github.com/pulumi/pulumi-terraform-bridge/v2 v2.4.1-0.20200608011815-6feeb51f2d3 github.com/pulumi/pulumi-terraform-bridge/v2 v2.4.1-0.20200608011815-6feeb51f2d39/go.mod h1:GI/1DagEgBD0PJUCt5wmaPLI8cx66IMzLRpy0oeucoo= github.com/pulumi/pulumi-terraform-bridge/v2 v2.5.2 h1:2fZdQQ1uO1D7J1O8D5ytsaPwze3jsxOlfb0OUxJZpMI= github.com/pulumi/pulumi-terraform-bridge/v2 v2.5.2/go.mod h1:lxWrXLYAMbse0AJeY570Iy2KYI3uUwNg6JOUZ6U7M+Q= +github.com/pulumi/pulumi-terraform-bridge/v2 v2.7.1 h1:/nkUi9m0joXkpUy2larPHDBWv8hidP5Ll34V5oextD8= +github.com/pulumi/pulumi-terraform-bridge/v2 v2.7.1/go.mod h1:kln3KcSDBJBhOLBJXBoZ9pYuXGkJu2GJz4ztorxGoLo= +github.com/pulumi/pulumi-terraform-bridge/v2 v2.7.2 h1:ZgBUEz1zPN1p8el+YDXoRlOPSPcBz8ytfZH6Ncj/PN4= +github.com/pulumi/pulumi-terraform-bridge/v2 v2.7.2/go.mod h1:UvbLRW8+YFluKwRZjzP3coPYWQPPYh/q9e2NN2GPbxg= github.com/pulumi/pulumi/pkg/v2 v2.0.0/go.mod h1:kNG9MBTdKP9AzMgkETumR3fmX9gUYB+HpQL767K6jXc= github.com/pulumi/pulumi/pkg/v2 v2.2.2-0.20200519081838-f66100ce28b0/go.mod h1:GV88eCIrqfFcBWd5QUdN3qMsR0h+x+iRIBnBhhvB78A= github.com/pulumi/pulumi/pkg/v2 v2.3.1-0.20200607162109-9754465b04db h1:5HrO1GNA53QEp+yN1UCX7BUsJD2I5/k1u2KLO4hOxOA= @@ -473,6 +524,10 @@ github.com/pulumi/pulumi/pkg/v2 v2.3.1-0.20200607162109-9754465b04db/go.mod h1:a github.com/pulumi/pulumi/pkg/v2 v2.3.1-0.20200610172153-45a901d3e77c/go.mod h1:aqo0wBboEEdy+T5EYKUB6YnzbL80VPjgJPwjttuHqT0= github.com/pulumi/pulumi/pkg/v2 v2.5.1-0.20200630091945-bb358c4d2173 h1:7nc8B91aEP2MTlty6MMzVLS/IGyX12k/UJ9loeCHcqE= github.com/pulumi/pulumi/pkg/v2 v2.5.1-0.20200630091945-bb358c4d2173/go.mod h1:zfUm4/GH2dVRlHZ3Yeb9bRweCQM7icVBdplu6MUDRrQ= +github.com/pulumi/pulumi/pkg/v2 v2.9.0 h1:rw1VHYxcfxoLsQzCFDWwb1YKdQ8bKe60fNnyoOSAAyk= +github.com/pulumi/pulumi/pkg/v2 v2.9.0/go.mod h1:Yq1q3nwy/KeU08DyyX0QsMyc6SqPs0jGJb8ev5f45AU= +github.com/pulumi/pulumi/pkg/v2 v2.9.1-0.20200821035132-629254334213 h1:c8UQ842Zg6XzX4sPeGhBo8hiGFzoU23vaMmxk64V8eU= +github.com/pulumi/pulumi/pkg/v2 v2.9.1-0.20200821035132-629254334213/go.mod h1:Yq1q3nwy/KeU08DyyX0QsMyc6SqPs0jGJb8ev5f45AU= github.com/pulumi/pulumi/sdk/v2 v2.0.0 h1:3VMXbEo3bqeaU+YDt8ufVBLD0WhLYE3tG3t/nIZ3Iac= github.com/pulumi/pulumi/sdk/v2 v2.0.0/go.mod h1:W7k1UDYerc5o97mHnlHHp5iQZKEby+oQrQefWt+2RF4= github.com/pulumi/pulumi/sdk/v2 v2.2.2-0.20200519081838-f66100ce28b0/go.mod h1:QNbWpL4gvf3X0lUFT7TXA2Jo1ff/Ti2l97AyFGYwvW4= @@ -482,12 +537,18 @@ github.com/pulumi/pulumi/sdk/v2 v2.3.1-0.20200610172153-45a901d3e77c/go.mod h1:l github.com/pulumi/pulumi/sdk/v2 v2.5.0/go.mod h1:llk6tmXss8kJrt3vEXAkwiwgZOuINEFmKIfMveVIwO8= github.com/pulumi/pulumi/sdk/v2 v2.5.1-0.20200630091945-bb358c4d2173 h1:tKAYUvIWlr6PTeC7OHL2aEMW92x+XqEPsy+NwOcY4R4= github.com/pulumi/pulumi/sdk/v2 v2.5.1-0.20200630091945-bb358c4d2173/go.mod h1:llk6tmXss8kJrt3vEXAkwiwgZOuINEFmKIfMveVIwO8= +github.com/pulumi/pulumi/sdk/v2 v2.9.0 h1:wF1AWUjiS4UwizKYxjWPPuyZIdk2WdBWLj2X/DrYEjo= +github.com/pulumi/pulumi/sdk/v2 v2.9.0/go.mod h1:x84WPiFiuE+G4kJ5jUYkOxmnQJlWoJaHNeEYdqnCKA4= +github.com/pulumi/pulumi/sdk/v2 v2.9.1-0.20200821035132-629254334213 h1:h4hBtS6/S0a1deLtJuUuYAIZGOCIJY9OVSdmC4VRk+M= +github.com/pulumi/pulumi/sdk/v2 v2.9.1-0.20200821035132-629254334213/go.mod h1:x84WPiFiuE+G4kJ5jUYkOxmnQJlWoJaHNeEYdqnCKA4= github.com/pulumi/tf2pulumi v0.8.1-0.20200519092335-cb56a4dfa88d h1:1JtzB9Gx0YX2UgKKkqJwTgBXxfg2cbLUEqTJKwKBK7s= github.com/pulumi/tf2pulumi v0.8.1-0.20200519092335-cb56a4dfa88d/go.mod h1:yv9XozKsue9ZELHQbrBGgIaFtE3OX3Q4m7koTzTqgpE= github.com/pulumi/tf2pulumi v0.8.1-0.20200528170746-c1234defe2b5 h1:h+pUwgEser1Ole6TMCc66njRPcw7SEVXpeoClG+ihEM= github.com/pulumi/tf2pulumi v0.8.1-0.20200528170746-c1234defe2b5/go.mod h1:WuOTC7l/5TV0+/v8Djbgz/zPxqwiCYCxf9zoffDFGuM= github.com/pulumi/tf2pulumi v0.8.1-0.20200630203740-1846524be4ec h1:C0l29EHsfhH+reeRSmqr0sIzJipQpXssof3YZurRrVo= github.com/pulumi/tf2pulumi v0.8.1-0.20200630203740-1846524be4ec/go.mod h1:lE39suxXfTqjNHg8PxtPUdek3wnTTdnoYXVpQdFGmEo= +github.com/pulumi/tf2pulumi v0.8.1-0.20200701212620-1e7538fb9a34 h1:u1NyO0NXvl+b6kXq2iuQgU95U3O1muXMZLEglS/k+zM= +github.com/pulumi/tf2pulumi v0.8.1-0.20200701212620-1e7538fb9a34/go.mod h1:lE39suxXfTqjNHg8PxtPUdek3wnTTdnoYXVpQdFGmEo= github.com/rjeczalik/notify v0.9.2/go.mod h1:aErll2f0sUX9PXZnVNyeiObbmTlk5jnMoCa4QEjJeqM= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -546,6 +607,8 @@ github.com/terraform-providers/terraform-provider-http v1.2.0/go.mod h1:2Iot921O github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6 h1:9VTskZOIRf2vKF3UL8TuWElry5pgUpV1tFSe/e/0m/E= github.com/texttheater/golang-levenshtein v0.0.0-20191208221605-eb6844b05fc6/go.mod h1:XDKHRm5ThF8YJjx001LtgelzsoaEcvnA7lVWz9EeX3g= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= +github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= github.com/uber/jaeger-client-go v2.22.1+incompatible h1:NHcubEkVbahf9t3p75TOCR83gdUHXjRJvjoBh1yACsM= github.com/uber/jaeger-client-go v2.22.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.2.0+incompatible h1:MxZXOiR2JuoANZ3J6DE/U0kSFv/eJ/GfSYVCjK7dyaw= @@ -563,6 +626,8 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1: github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= @@ -586,8 +651,10 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= gocloud.dev v0.19.0/go.mod h1:SmKwiR8YwIMMJvQBKLsC3fHNyMwXLw3PMDO+VVteJMI= gocloud.dev v0.19.1-0.20200517170643-46480dc2c3dd/go.mod h1:fvG7ZAkwaV3B1N49m64LkHoO/1bhgGBYyuK1egT06I4= +gocloud.dev v0.20.0/go.mod h1:+Y/RpSXrJthIOM8uFNzWp6MRu9pFPNFEEZrQMxpkfIc= gocloud.dev/secrets/hashivault v0.19.0/go.mod h1:doHlds85r+VwAs0T46bhjLwboWUfgfo3ovqDA8azNWo= gocloud.dev/secrets/hashivault v0.19.1-0.20200517170643-46480dc2c3dd/go.mod h1:Us/bsVAl9RPzZR+OXgyY2LyIfyugQoNKJm+7VRZfOi0= +gocloud.dev/secrets/hashivault v0.20.0/go.mod h1:2nNlZ76i4JlT9qrPVKbINB01L8BGgv4wmq2Cqyz22dA= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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= @@ -624,6 +691,7 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/lint v0.0.0-20200130185559-910be7a94367 h1:0IiAsCRByjO2QjX7ZPkw5oU9x+n1YqRL802rjC0c3Aw= 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= @@ -632,6 +700,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -652,12 +722,21 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/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-20191112182307-2180aed22343/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 h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= 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-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= +golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= 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-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -698,6 +777,7 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190804053845-51ab0e2deafa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/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= @@ -707,8 +787,17 @@ golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7w 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-20200317113312-5766fd39f98d h1:62ap6LNOjDU6uGmKXHJbSfciMoV+FeI1sRXx/pLDL44= golang.org/x/sys v0.0.0-20200317113312-5766fd39f98d/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-20200602225109-6fdc65e7d980 h1:OjiUf46hAmXblsZdnoSXsEUSKU8r1UEzcL5RVZ4gO9Y= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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= @@ -753,6 +842,18 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2 h1:L/G4KZvrQn7FWLN/LlulBtBzrLUhqjiGfTWWDmrh+IQ= 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-20200317043434-63da46f3035e/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200325010219-a49f79bcc224/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +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-20200601175630-2caf76543d99/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200606014950-c42cb6316fb6/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200608174601-1b747fd94509/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 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 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -768,14 +869,20 @@ google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsb 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 h1:jz2KixHX7EcCPiQrySzPdnYT7DbINAypCqKZ1Z7GM40= 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.26.0 h1:VJZ8h6E8ip82FRpQl848c5vAadxlTXrUh8RzQzSRm08= +google.golang.org/api v0.26.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= 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 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM= 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/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-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -799,8 +906,21 @@ google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvx 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-20200317114155-1f3552e48f24/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200318110522-7735f76e9fa5 h1:Bs8aCQBqwnuSvG/tB3ip/W8JLeuQt1+1ppSHYi4n9RM= google.golang.org/genproto v0.0.0-20200318110522-7735f76e9fa5/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200325114520-5b2d0af7952b/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-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-20200603110839-e855014d5736/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200608115520-7c474a2e3482 h1:i+Aiej6cta/Frzp13/swvwz5O00kYcSe0A/C5Wd7zX8= +google.golang.org/genproto v0.0.0-20200608115520-7c474a2e3482/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -814,6 +934,18 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0 h1:bO/TA4OxCOummhSf10siHuG7vJOiwh7SpRpFZDkOgl4= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= gopkg.in/AlecAivazis/survey.v1 v1.8.8/go.mod h1:CaHjv79TCgAvXMSFJSVgonHXYWxnhzI3eoHtnX5UgUo= gopkg.in/AlecAivazis/survey.v1 v1.8.9-0.20200217094205-6773bdf39b7f/go.mod h1:CaHjv79TCgAvXMSFJSVgonHXYWxnhzI3eoHtnX5UgUo= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= @@ -854,6 +986,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3 h1:sXmLre5bzIR6ypkjXCDI3jHPssRhc8KD/Ome589sc3U= 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= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= pack.ag/amqp v0.11.2/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/provider/resources.go b/provider/resources.go index 3d7269b05..bd4aafc62 100644 --- a/provider/resources.go +++ b/provider/resources.go @@ -172,10 +172,10 @@ func Provider() tfbridge.ProviderInfo { }, }, Python: &tfbridge.PythonInfo{ - // List any Python dependencies and their version ranges Requires: map[string]string{ - "pulumi": ">=2.0.0,<3.0.0", + "pulumi": ">=2.9.0,<3.0.0", }, + UsesIOClasses: true, }, CSharp: &tfbridge.CSharpInfo{ PackageReferences: map[string]string{ diff --git a/sdk/dotnet/Pulumi.AzureAD.csproj b/sdk/dotnet/Pulumi.AzureAD.csproj index f5978b8c1..2b87027bc 100644 --- a/sdk/dotnet/Pulumi.AzureAD.csproj +++ b/sdk/dotnet/Pulumi.AzureAD.csproj @@ -19,6 +19,16 @@ 1701;1702;1591 + + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + true + true + + + + + + diff --git a/sdk/nodejs/README.md b/sdk/nodejs/README.md index c62a2a206..5fcadbb0a 100644 --- a/sdk/nodejs/README.md +++ b/sdk/nodejs/README.md @@ -1,18 +1,3 @@ -The Microsoft Azure Active Directory (Azure AD) provider package offers support for all Azure AD services and their properties. -Services are exposed as types such as `Application`, `Group`, and `User`, among many others. Using this -package allows you to programmatically declare instances of any Azure AD services using infrastructure as code, which -Pulumi then uses to drive the Azure REST API. - -This package is typically used in conjunction with the [Pulumi Azure provider](https://www.pulumi.com/docs/reference/pkg/nodejs/pulumi/azure/). - -If this is your first time using this package, these two resources may be helpful: - -* [Azure Getting Started Guide](https://www.pulumi.com/docs/quickstart/azure): Get up and running quickly. -* [Azure Pulumi Setup Documentation](https://www.pulumi.com/docs/quickstart/azure/configure/): How to configure Pulumi - for use with your Azure account. - -Use the navigation below to see detailed documentation, including sample code, for each of the supported Azure services. - > This provider is a derived work of the [Terraform Provider](https://github.com/terraform-providers/terraform-provider-azuread) > distributed under [MPL 2.0](https://www.mozilla.org/en-US/MPL/2.0/). If you encounter a bug or missing feature, > first check the [`pulumi/pulumi-azuread` repo](https://github.com/pulumi/pulumi-azuread/issues); however, if that doesn't turn up anything, diff --git a/sdk/nodejs/config/vars.ts b/sdk/nodejs/config/vars.ts index c550c870e..3842a5534 100644 --- a/sdk/nodejs/config/vars.ts +++ b/sdk/nodejs/config/vars.ts @@ -2,8 +2,6 @@ // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; -import * as inputs from "../types/input"; -import * as outputs from "../types/output"; import * as utilities from "../utilities"; let __config = new pulumi.Config("azuread"); diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts index 76dec2418..372cb3b33 100644 --- a/sdk/nodejs/provider.ts +++ b/sdk/nodejs/provider.ts @@ -35,15 +35,17 @@ export class Provider extends pulumi.ProviderResource { */ constructor(name: string, args?: ProviderArgs, opts?: pulumi.ResourceOptions) { let inputs: pulumi.Inputs = {}; - inputs["clientCertificatePassword"] = (args ? args.clientCertificatePassword : undefined) || (utilities.getEnv("ARM_CLIENT_CERTIFICATE_PASSWORD") || ""); - inputs["clientCertificatePath"] = (args ? args.clientCertificatePath : undefined) || (utilities.getEnv("ARM_CLIENT_CERTIFICATE_PATH") || ""); - inputs["clientId"] = (args ? args.clientId : undefined) || (utilities.getEnv("ARM_CLIENT_ID") || ""); - inputs["clientSecret"] = (args ? args.clientSecret : undefined) || (utilities.getEnv("ARM_CLIENT_SECRET") || ""); - inputs["environment"] = (args ? args.environment : undefined) || (utilities.getEnv("ARM_ENVIRONMENT") || "public"); - inputs["msiEndpoint"] = (args ? args.msiEndpoint : undefined) || (utilities.getEnv("ARM_MSI_ENDPOINT") || ""); - inputs["subscriptionId"] = (args ? args.subscriptionId : undefined) || (utilities.getEnv("ARM_SUBSCRIPTION_ID") || ""); - inputs["tenantId"] = (args ? args.tenantId : undefined) || (utilities.getEnv("ARM_TENANT_ID") || ""); - inputs["useMsi"] = pulumi.output((args ? args.useMsi : undefined) || (utilities.getEnvBoolean("ARM_USE_MSI") || false)).apply(JSON.stringify); + { + inputs["clientCertificatePassword"] = (args ? args.clientCertificatePassword : undefined) || (utilities.getEnv("ARM_CLIENT_CERTIFICATE_PASSWORD") || ""); + inputs["clientCertificatePath"] = (args ? args.clientCertificatePath : undefined) || (utilities.getEnv("ARM_CLIENT_CERTIFICATE_PATH") || ""); + inputs["clientId"] = (args ? args.clientId : undefined) || (utilities.getEnv("ARM_CLIENT_ID") || ""); + inputs["clientSecret"] = (args ? args.clientSecret : undefined) || (utilities.getEnv("ARM_CLIENT_SECRET") || ""); + inputs["environment"] = (args ? args.environment : undefined) || (utilities.getEnv("ARM_ENVIRONMENT") || "public"); + inputs["msiEndpoint"] = (args ? args.msiEndpoint : undefined) || (utilities.getEnv("ARM_MSI_ENDPOINT") || ""); + inputs["subscriptionId"] = (args ? args.subscriptionId : undefined) || (utilities.getEnv("ARM_SUBSCRIPTION_ID") || ""); + inputs["tenantId"] = (args ? args.tenantId : undefined) || (utilities.getEnv("ARM_TENANT_ID") || ""); + inputs["useMsi"] = pulumi.output((args ? args.useMsi : undefined) || (utilities.getEnvBoolean("ARM_USE_MSI") || false)).apply(JSON.stringify); + } if (!opts) { opts = {} } diff --git a/sdk/python/pulumi_azuread/__init__.py b/sdk/python/pulumi_azuread/__init__.py index bcf2598d4..49fa764a9 100644 --- a/sdk/python/pulumi_azuread/__init__.py +++ b/sdk/python/pulumi_azuread/__init__.py @@ -21,3 +21,10 @@ from .service_principal_certificate import * from .service_principal_password import * from .user import * +from ._inputs import * +from . import outputs + +# Make subpackages available: +from . import ( + config, +) diff --git a/sdk/python/pulumi_azuread/_inputs.py b/sdk/python/pulumi_azuread/_inputs.py new file mode 100644 index 000000000..8e39885fa --- /dev/null +++ b/sdk/python/pulumi_azuread/_inputs.py @@ -0,0 +1,1062 @@ +# coding=utf-8 +# *** 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! *** + +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = [ + 'ApplicationAppRoleArgs', + 'ApplicationOauth2PermissionArgs', + 'ApplicationOptionalClaimsArgs', + 'ApplicationOptionalClaimsAccessTokenArgs', + 'ApplicationOptionalClaimsIdTokenArgs', + 'ApplicationRequiredResourceAccessArgs', + 'ApplicationRequiredResourceAccessResourceAccessArgs', + 'ServicePrincipalOauth2PermissionArgs', + 'GetApplicationOauth2PermissionArgs', + 'GetApplicationOptionalClaimsArgs', + 'GetApplicationOptionalClaimsAccessTokenArgs', + 'GetApplicationOptionalClaimsIdTokenArgs', + 'GetServicePrincipalOauth2PermissionArgs', +] + +@pulumi.input_type +class ApplicationAppRoleArgs: + def __init__(__self__, *, + allowed_member_types: pulumi.Input[List[pulumi.Input[str]]], + description: pulumi.Input[str], + display_name: pulumi.Input[str], + id: Optional[pulumi.Input[str]] = None, + is_enabled: Optional[pulumi.Input[bool]] = None, + value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[List[pulumi.Input[str]]] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. + :param pulumi.Input[str] description: Permission help text that appears in the admin app assignment and consent experiences. + :param pulumi.Input[str] display_name: Display name for the permission that appears in the admin consent and app assignment experiences. + :param pulumi.Input[str] id: The unique identifier of the `app_role`. + :param pulumi.Input[bool] is_enabled: Determines if the permission is enabled: defaults to `true`. + :param pulumi.Input[str] value: The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. + """ + pulumi.set(__self__, "allowed_member_types", allowed_member_types) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="allowedMemberTypes") + def allowed_member_types(self) -> pulumi.Input[List[pulumi.Input[str]]]: + """ + Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. + """ + return pulumi.get(self, "allowed_member_types") + + @allowed_member_types.setter + def allowed_member_types(self, value: pulumi.Input[List[pulumi.Input[str]]]): + pulumi.set(self, "allowed_member_types", value) + + @property + @pulumi.getter + def description(self) -> pulumi.Input[str]: + """ + Permission help text that appears in the admin app assignment and consent experiences. + """ + return pulumi.get(self, "description") + + @description.setter + def description(self, value: pulumi.Input[str]): + pulumi.set(self, "description", value) + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> pulumi.Input[str]: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "display_name") + + @display_name.setter + def display_name(self, value: pulumi.Input[str]): + pulumi.set(self, "display_name", value) + + @property + @pulumi.getter + def id(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "id", value) + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Determines if the permission is enabled: defaults to `true`. + """ + return pulumi.get(self, "is_enabled") + + @is_enabled.setter + def is_enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "is_enabled", value) + + @property + @pulumi.getter + def value(self) -> Optional[pulumi.Input[str]]: + """ + The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. + """ + return pulumi.get(self, "value") + + @value.setter + def value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "value", value) + + +@pulumi.input_type +class ApplicationOauth2PermissionArgs: + def __init__(__self__, *, + admin_consent_description: Optional[pulumi.Input[str]] = None, + admin_consent_display_name: Optional[pulumi.Input[str]] = None, + id: Optional[pulumi.Input[str]] = None, + is_enabled: Optional[pulumi.Input[bool]] = None, + type: Optional[pulumi.Input[str]] = None, + user_consent_description: Optional[pulumi.Input[str]] = None, + user_consent_display_name: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] admin_consent_description: Permission help text that appears in the admin consent and app assignment experiences. + :param pulumi.Input[str] admin_consent_display_name: Display name for the permission that appears in the admin consent and app assignment experiences. + :param pulumi.Input[str] id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + :param pulumi.Input[bool] is_enabled: Determines if the app role is enabled: Defaults to `true`. + :param pulumi.Input[str] type: Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. + :param pulumi.Input[str] user_consent_description: Permission help text that appears in the end user consent experience. + :param pulumi.Input[str] user_consent_display_name: Display name for the permission that appears in the end user consent experience. + :param pulumi.Input[str] value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + if admin_consent_description is not None: + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + if admin_consent_display_name is not None: + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if type is not None: + pulumi.set(__self__, "type", type) + if user_consent_description is not None: + pulumi.set(__self__, "user_consent_description", user_consent_description) + if user_consent_display_name is not None: + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> Optional[pulumi.Input[str]]: + """ + Permission help text that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "admin_consent_description") + + @admin_consent_description.setter + def admin_consent_description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "admin_consent_description", value) + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> Optional[pulumi.Input[str]]: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "admin_consent_display_name") + + @admin_consent_display_name.setter + def admin_consent_display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "admin_consent_display_name", value) + + @property + @pulumi.getter + def id(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "id", value) + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Determines if the app role is enabled: Defaults to `true`. + """ + return pulumi.get(self, "is_enabled") + + @is_enabled.setter + def is_enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "is_enabled", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> Optional[pulumi.Input[str]]: + """ + Permission help text that appears in the end user consent experience. + """ + return pulumi.get(self, "user_consent_description") + + @user_consent_description.setter + def user_consent_description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "user_consent_description", value) + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> Optional[pulumi.Input[str]]: + """ + Display name for the permission that appears in the end user consent experience. + """ + return pulumi.get(self, "user_consent_display_name") + + @user_consent_display_name.setter + def user_consent_display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "user_consent_display_name", value) + + @property + @pulumi.getter + def value(self) -> Optional[pulumi.Input[str]]: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + @value.setter + def value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "value", value) + + +@pulumi.input_type +class ApplicationOptionalClaimsArgs: + def __init__(__self__, *, + access_tokens: Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsAccessTokenArgs']]]] = None, + id_tokens: Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsIdTokenArgs']]]] = None): + if access_tokens is not None: + pulumi.set(__self__, "access_tokens", access_tokens) + if id_tokens is not None: + pulumi.set(__self__, "id_tokens", id_tokens) + + @property + @pulumi.getter(name="accessTokens") + def access_tokens(self) -> Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsAccessTokenArgs']]]]: + return pulumi.get(self, "access_tokens") + + @access_tokens.setter + def access_tokens(self, value: Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsAccessTokenArgs']]]]): + pulumi.set(self, "access_tokens", value) + + @property + @pulumi.getter(name="idTokens") + def id_tokens(self) -> Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsIdTokenArgs']]]]: + return pulumi.get(self, "id_tokens") + + @id_tokens.setter + def id_tokens(self, value: Optional[pulumi.Input[List[pulumi.Input['ApplicationOptionalClaimsIdTokenArgs']]]]): + pulumi.set(self, "id_tokens", value) + + +@pulumi.input_type +class ApplicationOptionalClaimsAccessTokenArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + additional_properties: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + essential: Optional[pulumi.Input[bool]] = None, + source: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: The name of the optional claim. + :param pulumi.Input[List[pulumi.Input[str]]] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param pulumi.Input[bool] essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param pulumi.Input[str] source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The name of the optional claim. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @additional_properties.setter + def additional_properties(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]): + pulumi.set(self, "additional_properties", value) + + @property + @pulumi.getter + def essential(self) -> Optional[pulumi.Input[bool]]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @essential.setter + def essential(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "essential", value) + + @property + @pulumi.getter + def source(self) -> Optional[pulumi.Input[str]]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + @source.setter + def source(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source", value) + + +@pulumi.input_type +class ApplicationOptionalClaimsIdTokenArgs: + def __init__(__self__, *, + name: pulumi.Input[str], + additional_properties: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + essential: Optional[pulumi.Input[bool]] = None, + source: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] name: The display name for the application. + :param pulumi.Input[List[pulumi.Input[str]]] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param pulumi.Input[bool] essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param pulumi.Input[str] source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> pulumi.Input[str]: + """ + The display name for the application. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: pulumi.Input[str]): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[pulumi.Input[List[pulumi.Input[str]]]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @additional_properties.setter + def additional_properties(self, value: Optional[pulumi.Input[List[pulumi.Input[str]]]]): + pulumi.set(self, "additional_properties", value) + + @property + @pulumi.getter + def essential(self) -> Optional[pulumi.Input[bool]]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @essential.setter + def essential(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "essential", value) + + @property + @pulumi.getter + def source(self) -> Optional[pulumi.Input[str]]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + @source.setter + def source(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "source", value) + + +@pulumi.input_type +class ApplicationRequiredResourceAccessArgs: + def __init__(__self__, *, + resource_accesses: pulumi.Input[List[pulumi.Input['ApplicationRequiredResourceAccessResourceAccessArgs']]], + resource_app_id: pulumi.Input[str]): + """ + :param pulumi.Input[List[pulumi.Input['ApplicationRequiredResourceAccessResourceAccessArgs']]] resource_accesses: A collection of `resource_access` blocks as documented below. + :param pulumi.Input[str] resource_app_id: The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. + """ + pulumi.set(__self__, "resource_accesses", resource_accesses) + pulumi.set(__self__, "resource_app_id", resource_app_id) + + @property + @pulumi.getter(name="resourceAccesses") + def resource_accesses(self) -> pulumi.Input[List[pulumi.Input['ApplicationRequiredResourceAccessResourceAccessArgs']]]: + """ + A collection of `resource_access` blocks as documented below. + """ + return pulumi.get(self, "resource_accesses") + + @resource_accesses.setter + def resource_accesses(self, value: pulumi.Input[List[pulumi.Input['ApplicationRequiredResourceAccessResourceAccessArgs']]]): + pulumi.set(self, "resource_accesses", value) + + @property + @pulumi.getter(name="resourceAppId") + def resource_app_id(self) -> pulumi.Input[str]: + """ + The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. + """ + return pulumi.get(self, "resource_app_id") + + @resource_app_id.setter + def resource_app_id(self, value: pulumi.Input[str]): + pulumi.set(self, "resource_app_id", value) + + +@pulumi.input_type +class ApplicationRequiredResourceAccessResourceAccessArgs: + def __init__(__self__, *, + id: pulumi.Input[str], + type: pulumi.Input[str]): + """ + :param pulumi.Input[str] id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + :param pulumi.Input[str] type: Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. + """ + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter + def id(self) -> pulumi.Input[str]: + """ + The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: pulumi.Input[str]): + pulumi.set(self, "id", value) + + @property + @pulumi.getter + def type(self) -> pulumi.Input[str]: + """ + Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: pulumi.Input[str]): + pulumi.set(self, "type", value) + + +@pulumi.input_type +class ServicePrincipalOauth2PermissionArgs: + def __init__(__self__, *, + admin_consent_description: Optional[pulumi.Input[str]] = None, + admin_consent_display_name: Optional[pulumi.Input[str]] = None, + id: Optional[pulumi.Input[str]] = None, + is_enabled: Optional[pulumi.Input[bool]] = None, + type: Optional[pulumi.Input[str]] = None, + user_consent_description: Optional[pulumi.Input[str]] = None, + user_consent_display_name: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None): + """ + :param pulumi.Input[str] admin_consent_description: The description of the admin consent. + :param pulumi.Input[str] admin_consent_display_name: The display name of the admin consent. + :param pulumi.Input[str] id: The unique identifier for one of the `OAuth2Permission`. + :param pulumi.Input[bool] is_enabled: Is this permission enabled? + :param pulumi.Input[str] type: The type of the permission. + :param pulumi.Input[str] user_consent_description: The description of the user consent. + :param pulumi.Input[str] user_consent_display_name: The display name of the user consent. + :param pulumi.Input[str] value: The name of this permission. + """ + if admin_consent_description is not None: + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + if admin_consent_display_name is not None: + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if type is not None: + pulumi.set(__self__, "type", type) + if user_consent_description is not None: + pulumi.set(__self__, "user_consent_description", user_consent_description) + if user_consent_display_name is not None: + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> Optional[pulumi.Input[str]]: + """ + The description of the admin consent. + """ + return pulumi.get(self, "admin_consent_description") + + @admin_consent_description.setter + def admin_consent_description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "admin_consent_description", value) + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> Optional[pulumi.Input[str]]: + """ + The display name of the admin consent. + """ + return pulumi.get(self, "admin_consent_display_name") + + @admin_consent_display_name.setter + def admin_consent_display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "admin_consent_display_name", value) + + @property + @pulumi.getter + def id(self) -> Optional[pulumi.Input[str]]: + """ + The unique identifier for one of the `OAuth2Permission`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "id", value) + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[pulumi.Input[bool]]: + """ + Is this permission enabled? + """ + return pulumi.get(self, "is_enabled") + + @is_enabled.setter + def is_enabled(self, value: Optional[pulumi.Input[bool]]): + pulumi.set(self, "is_enabled", value) + + @property + @pulumi.getter + def type(self) -> Optional[pulumi.Input[str]]: + """ + The type of the permission. + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "type", value) + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> Optional[pulumi.Input[str]]: + """ + The description of the user consent. + """ + return pulumi.get(self, "user_consent_description") + + @user_consent_description.setter + def user_consent_description(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "user_consent_description", value) + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> Optional[pulumi.Input[str]]: + """ + The display name of the user consent. + """ + return pulumi.get(self, "user_consent_display_name") + + @user_consent_display_name.setter + def user_consent_display_name(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "user_consent_display_name", value) + + @property + @pulumi.getter + def value(self) -> Optional[pulumi.Input[str]]: + """ + The name of this permission. + """ + return pulumi.get(self, "value") + + @value.setter + def value(self, value: Optional[pulumi.Input[str]]): + pulumi.set(self, "value", value) + + +@pulumi.input_type +class GetApplicationOauth2PermissionArgs: + def __init__(__self__, *, + admin_consent_description: str, + admin_consent_display_name: str, + id: str, + is_enabled: bool, + type: str, + user_consent_description: str, + user_consent_display_name: str, + value: str): + """ + :param str admin_consent_description: The description of the admin consent + :param str admin_consent_display_name: The display name of the admin consent + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str type: The type of the permission + :param str user_consent_description: The description of the user consent + :param str user_consent_display_name: The display name of the user consent + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "type", type) + pulumi.set(__self__, "user_consent_description", user_consent_description) + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> str: + """ + The description of the admin consent + """ + return pulumi.get(self, "admin_consent_description") + + @admin_consent_description.setter + def admin_consent_description(self, value: str): + pulumi.set(self, "admin_consent_description", value) + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> str: + """ + The display name of the admin consent + """ + return pulumi.get(self, "admin_consent_display_name") + + @admin_consent_display_name.setter + def admin_consent_display_name(self, value: str): + pulumi.set(self, "admin_consent_display_name", value) + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: str): + pulumi.set(self, "id", value) + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @is_enabled.setter + def is_enabled(self, value: bool): + pulumi.set(self, "is_enabled", value) + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the permission + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: str): + pulumi.set(self, "type", value) + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> str: + """ + The description of the user consent + """ + return pulumi.get(self, "user_consent_description") + + @user_consent_description.setter + def user_consent_description(self, value: str): + pulumi.set(self, "user_consent_description", value) + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> str: + """ + The display name of the user consent + """ + return pulumi.get(self, "user_consent_display_name") + + @user_consent_display_name.setter + def user_consent_display_name(self, value: str): + pulumi.set(self, "user_consent_display_name", value) + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + @value.setter + def value(self, value: str): + pulumi.set(self, "value", value) + + +@pulumi.input_type +class GetApplicationOptionalClaimsArgs: + def __init__(__self__, *, + access_tokens: Optional[List['GetApplicationOptionalClaimsAccessTokenArgs']] = None, + id_tokens: Optional[List['GetApplicationOptionalClaimsIdTokenArgs']] = None): + if access_tokens is not None: + pulumi.set(__self__, "access_tokens", access_tokens) + if id_tokens is not None: + pulumi.set(__self__, "id_tokens", id_tokens) + + @property + @pulumi.getter(name="accessTokens") + def access_tokens(self) -> Optional[List['GetApplicationOptionalClaimsAccessTokenArgs']]: + return pulumi.get(self, "access_tokens") + + @access_tokens.setter + def access_tokens(self, value: Optional[List['GetApplicationOptionalClaimsAccessTokenArgs']]): + pulumi.set(self, "access_tokens", value) + + @property + @pulumi.getter(name="idTokens") + def id_tokens(self) -> Optional[List['GetApplicationOptionalClaimsIdTokenArgs']]: + return pulumi.get(self, "id_tokens") + + @id_tokens.setter + def id_tokens(self, value: Optional[List['GetApplicationOptionalClaimsIdTokenArgs']]): + pulumi.set(self, "id_tokens", value) + + +@pulumi.input_type +class GetApplicationOptionalClaimsAccessTokenArgs: + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: Specifies the name of the Application within Azure Active Directory. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + Specifies the name of the Application within Azure Active Directory. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: str): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @additional_properties.setter + def additional_properties(self, value: Optional[List[str]]): + pulumi.set(self, "additional_properties", value) + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @essential.setter + def essential(self, value: Optional[bool]): + pulumi.set(self, "essential", value) + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + @source.setter + def source(self, value: Optional[str]): + pulumi.set(self, "source", value) + + +@pulumi.input_type +class GetApplicationOptionalClaimsIdTokenArgs: + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: Specifies the name of the Application within Azure Active Directory. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + Specifies the name of the Application within Azure Active Directory. + """ + return pulumi.get(self, "name") + + @name.setter + def name(self, value: str): + pulumi.set(self, "name", value) + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @additional_properties.setter + def additional_properties(self, value: Optional[List[str]]): + pulumi.set(self, "additional_properties", value) + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @essential.setter + def essential(self, value: Optional[bool]): + pulumi.set(self, "essential", value) + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + @source.setter + def source(self, value: Optional[str]): + pulumi.set(self, "source", value) + + +@pulumi.input_type +class GetServicePrincipalOauth2PermissionArgs: + def __init__(__self__, *, + admin_consent_description: str, + admin_consent_display_name: str, + id: str, + is_enabled: bool, + type: str, + user_consent_description: str, + user_consent_display_name: str, + value: str): + """ + :param str admin_consent_description: The description of the admin consent + :param str admin_consent_display_name: The display name of the admin consent + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str type: The type of the permission + :param str user_consent_description: The description of the user consent + :param str user_consent_display_name: The display name of the user consent + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "type", type) + pulumi.set(__self__, "user_consent_description", user_consent_description) + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> str: + """ + The description of the admin consent + """ + return pulumi.get(self, "admin_consent_description") + + @admin_consent_description.setter + def admin_consent_description(self, value: str): + pulumi.set(self, "admin_consent_description", value) + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> str: + """ + The display name of the admin consent + """ + return pulumi.get(self, "admin_consent_display_name") + + @admin_consent_display_name.setter + def admin_consent_display_name(self, value: str): + pulumi.set(self, "admin_consent_display_name", value) + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @id.setter + def id(self, value: str): + pulumi.set(self, "id", value) + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @is_enabled.setter + def is_enabled(self, value: bool): + pulumi.set(self, "is_enabled", value) + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the permission + """ + return pulumi.get(self, "type") + + @type.setter + def type(self, value: str): + pulumi.set(self, "type", value) + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> str: + """ + The description of the user consent + """ + return pulumi.get(self, "user_consent_description") + + @user_consent_description.setter + def user_consent_description(self, value: str): + pulumi.set(self, "user_consent_description", value) + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> str: + """ + The display name of the user consent + """ + return pulumi.get(self, "user_consent_display_name") + + @user_consent_display_name.setter + def user_consent_display_name(self, value: str): + pulumi.set(self, "user_consent_display_name", value) + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + @value.setter + def value(self, value: str): + pulumi.set(self, "value", value) + + diff --git a/sdk/python/pulumi_azuread/tables.py b/sdk/python/pulumi_azuread/_tables.py similarity index 81% rename from sdk/python/pulumi_azuread/tables.py rename to sdk/python/pulumi_azuread/_tables.py index 9763cec3b..4775b66a0 100644 --- a/sdk/python/pulumi_azuread/tables.py +++ b/sdk/python/pulumi_azuread/_tables.py @@ -2,13 +2,17 @@ # *** 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! *** -_SNAKE_TO_CAMEL_CASE_TABLE = { +SNAKE_TO_CAMEL_CASE_TABLE = { "account_enabled": "accountEnabled", "app_role_assignment_required": "appRoleAssignmentRequired", "app_roles": "appRoles", "application_id": "applicationId", "application_object_id": "applicationObjectId", "available_to_other_tenants": "availableToOtherTenants", + "client_certificate_password": "clientCertificatePassword", + "client_certificate_path": "clientCertificatePath", + "client_id": "clientId", + "client_secret": "clientSecret", "display_name": "displayName", "end_date": "endDate", "end_date_relative": "endDateRelative", @@ -21,6 +25,7 @@ "logout_url": "logoutUrl", "mail_nickname": "mailNickname", "member_object_id": "memberObjectId", + "msi_endpoint": "msiEndpoint", "oauth2_allow_implicit_flow": "oauth2AllowImplicitFlow", "oauth2_permissions": "oauth2Permissions", "object_id": "objectId", @@ -33,17 +38,24 @@ "required_resource_accesses": "requiredResourceAccesses", "service_principal_id": "servicePrincipalId", "start_date": "startDate", + "subscription_id": "subscriptionId", + "tenant_id": "tenantId", "usage_location": "usageLocation", + "use_msi": "useMsi", "user_principal_name": "userPrincipalName", } -_CAMEL_TO_SNAKE_CASE_TABLE = { +CAMEL_TO_SNAKE_CASE_TABLE = { "accountEnabled": "account_enabled", "appRoleAssignmentRequired": "app_role_assignment_required", "appRoles": "app_roles", "applicationId": "application_id", "applicationObjectId": "application_object_id", "availableToOtherTenants": "available_to_other_tenants", + "clientCertificatePassword": "client_certificate_password", + "clientCertificatePath": "client_certificate_path", + "clientId": "client_id", + "clientSecret": "client_secret", "displayName": "display_name", "endDate": "end_date", "endDateRelative": "end_date_relative", @@ -56,6 +68,7 @@ "logoutUrl": "logout_url", "mailNickname": "mail_nickname", "memberObjectId": "member_object_id", + "msiEndpoint": "msi_endpoint", "oauth2AllowImplicitFlow": "oauth2_allow_implicit_flow", "oauth2Permissions": "oauth2_permissions", "objectId": "object_id", @@ -68,6 +81,9 @@ "requiredResourceAccesses": "required_resource_accesses", "servicePrincipalId": "service_principal_id", "startDate": "start_date", + "subscriptionId": "subscription_id", + "tenantId": "tenant_id", "usageLocation": "usage_location", + "useMsi": "use_msi", "userPrincipalName": "user_principal_name", } diff --git a/sdk/python/pulumi_azuread/utilities.py b/sdk/python/pulumi_azuread/_utilities.py similarity index 96% rename from sdk/python/pulumi_azuread/utilities.py rename to sdk/python/pulumi_azuread/_utilities.py index 02b6ab316..829bc0cf8 100644 --- a/sdk/python/pulumi_azuread/utilities.py +++ b/sdk/python/pulumi_azuread/_utilities.py @@ -52,7 +52,7 @@ def get_env_float(*args): def get_version(): # __name__ is set to the fully-qualified name of the current module, In our case, it will be - # .utilities. is the module we want to query the version for. + # ._utilities. is the module we want to query the version for. root_package, *rest = __name__.split('.') # pkg_resources uses setuptools to inspect the set of installed packages. We use it here to ask diff --git a/sdk/python/pulumi_azuread/application.py b/sdk/python/pulumi_azuread/application.py index 261ecc700..3b4ce3cdb 100644 --- a/sdk/python/pulumi_azuread/application.py +++ b/sdk/python/pulumi_azuread/application.py @@ -5,118 +5,37 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +from ._inputs import * + +__all__ = ['Application'] class Application(pulumi.CustomResource): - app_roles: pulumi.Output[list] - """ - A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles - - * `allowedMemberTypes` (`list`) - Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. - * `description` (`str`) - Permission help text that appears in the admin app assignment and consent experiences. - * `display_name` (`str`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`str`) - The unique identifier of the `app_role`. - * `isEnabled` (`bool`) - Determines if the permission is enabled: defaults to `true`. - * `value` (`str`) - The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. - """ - application_id: pulumi.Output[str] - """ - The Application ID. - """ - available_to_other_tenants: pulumi.Output[bool] - """ - Is this Azure AD Application available to other tenants? Defaults to `false`. - """ - group_membership_claims: pulumi.Output[str] - """ - Configures the `groups` claim issued in a user or OAuth 2.0 access token that the app expects. Defaults to `SecurityGroup`. Possible values are `None`, `SecurityGroup`, `DirectoryRole`, `ApplicationGroup` or `All`. - """ - homepage: pulumi.Output[str] - """ - The URL to the application's home page. If no homepage is specified this defaults to `https://{name}`. - """ - identifier_uris: pulumi.Output[list] - """ - A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. - """ - logout_url: pulumi.Output[str] - """ - The URL of the logout page. - """ - name: pulumi.Output[str] - """ - The display name for the application. - """ - oauth2_allow_implicit_flow: pulumi.Output[bool] - """ - Does this Azure AD Application allow OAuth2.0 implicit flow tokens? Defaults to `false`. - """ - oauth2_permissions: pulumi.Output[list] - """ - A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. - - * `adminConsentDescription` (`str`) - Permission help text that appears in the admin consent and app assignment experiences. - * `adminConsentDisplayName` (`str`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`str`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `isEnabled` (`bool`) - Determines if the app role is enabled: Defaults to `true`. - * `type` (`str`) - Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - * `userConsentDescription` (`str`) - Permission help text that appears in the end user consent experience. - * `userConsentDisplayName` (`str`) - Display name for the permission that appears in the end user consent experience. - * `value` (`str`) - Specifies the value of the roles claim that the application should expect in the authentication and access tokens. - """ - object_id: pulumi.Output[str] - """ - The Application's Object ID. - """ - optional_claims: pulumi.Output[dict] - """ - A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - - * `accessTokens` (`list`) - * `additionalProperties` (`list`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`bool`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`str`) - The name of the optional claim. - * `source` (`str`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - * `idTokens` (`list`) - * `additionalProperties` (`list`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`bool`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`str`) - The display name for the application. - * `source` (`str`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - """ - owners: pulumi.Output[list] - """ - A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. - """ - prevent_duplicate_names: pulumi.Output[bool] - """ - If `true`, will return an error when an existing Application is found with the same name. Defaults to `false`. - """ - public_client: pulumi.Output[bool] - """ - Is this Azure AD Application a public client? Defaults to `false`. - """ - reply_urls: pulumi.Output[list] - """ - A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. - """ - required_resource_accesses: pulumi.Output[list] - """ - A collection of `required_resource_access` blocks as documented below. - - * `resourceAccesses` (`list`) - A collection of `resource_access` blocks as documented below. - * `id` (`str`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `type` (`str`) - Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. - - * `resourceAppId` (`str`) - The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. - """ - type: pulumi.Output[str] - """ - Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - """ - def __init__(__self__, resource_name, opts=None, app_roles=None, available_to_other_tenants=None, group_membership_claims=None, homepage=None, identifier_uris=None, logout_url=None, name=None, oauth2_allow_implicit_flow=None, oauth2_permissions=None, optional_claims=None, owners=None, prevent_duplicate_names=None, public_client=None, reply_urls=None, required_resource_accesses=None, type=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + app_roles: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationAppRoleArgs']]]]] = None, + available_to_other_tenants: Optional[pulumi.Input[bool]] = None, + group_membership_claims: Optional[pulumi.Input[str]] = None, + homepage: Optional[pulumi.Input[str]] = None, + identifier_uris: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + logout_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + oauth2_allow_implicit_flow: Optional[pulumi.Input[bool]] = None, + oauth2_permissions: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationOauth2PermissionArgs']]]]] = None, + optional_claims: Optional[pulumi.Input[pulumi.InputType['ApplicationOptionalClaimsArgs']]] = None, + owners: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + prevent_duplicate_names: Optional[pulumi.Input[bool]] = None, + public_client: Optional[pulumi.Input[bool]] = None, + reply_urls: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + required_resource_accesses: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationRequiredResourceAccessArgs']]]]] = None, + type: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages an Application within Azure Active Directory. @@ -129,145 +48,103 @@ def __init__(__self__, resource_name, opts=None, app_roles=None, available_to_ot import pulumi_azuread as azuread example = azuread.Application("example", - app_roles=[{ - "allowedMemberTypes": [ + app_roles=[azuread.ApplicationAppRoleArgs( + allowed_member_types=[ "User", "Application", ], - "description": "Admins can manage roles and perform all task actions", - "display_name": "Admin", - "isEnabled": True, - "value": "Admin", - }], + description="Admins can manage roles and perform all task actions", + display_name="Admin", + is_enabled=True, + value="Admin", + )], available_to_other_tenants=False, homepage="https://homepage", identifier_uris=["https://uri"], oauth2_allow_implicit_flow=True, oauth2_permissions=[ - { - "adminConsentDescription": "Allow the application to access example on behalf of the signed-in user.", - "adminConsentDisplayName": "Access example", - "isEnabled": True, - "type": "User", - "userConsentDescription": "Allow the application to access example on your behalf.", - "userConsentDisplayName": "Access example", - "value": "user_impersonation", - }, - { - "adminConsentDescription": "Administer the example application", - "adminConsentDisplayName": "Administer", - "isEnabled": True, - "type": "Admin", - "value": "administer", - }, + azuread.ApplicationOauth2PermissionArgs( + admin_consent_description="Allow the application to access example on behalf of the signed-in user.", + admin_consent_display_name="Access example", + is_enabled=True, + type="User", + user_consent_description="Allow the application to access example on your behalf.", + user_consent_display_name="Access example", + value="user_impersonation", + ), + azuread.ApplicationOauth2PermissionArgs( + admin_consent_description="Administer the example application", + admin_consent_display_name="Administer", + is_enabled=True, + type="Admin", + value="administer", + ), ], - optional_claims={ - "accessTokens": [ - { - "name": "myclaim", - }, - { - "name": "otherclaim", - }, + optional_claims=azuread.ApplicationOptionalClaimsArgs( + access_tokens=[ + azuread.ApplicationOptionalClaimsAccessTokenArgs( + name="myclaim", + ), + azuread.ApplicationOptionalClaimsAccessTokenArgs( + name="otherclaim", + ), ], - "idTokens": [{ - "additionalProperties": ["emit_as_roles"], - "essential": True, - "name": "userclaim", - "source": "user", - }], - }, + id_tokens=[azuread.ApplicationOptionalClaimsIdTokenArgs( + additional_properties=["emit_as_roles"], + essential=True, + name="userclaim", + source="user", + )], + ), owners=["00000004-0000-0000-c000-000000000000"], reply_urls=["https://replyurl"], required_resource_accesses=[ - { - "resourceAccesses": [ - { - "id": "...", - "type": "Role", - }, - { - "id": "...", - "type": "Scope", - }, - { - "id": "...", - "type": "Scope", - }, + azuread.ApplicationRequiredResourceAccessArgs( + resource_accesses=[ + azuread.ApplicationRequiredResourceAccessResourceAccessArgs( + id="...", + type="Role", + ), + azuread.ApplicationRequiredResourceAccessResourceAccessArgs( + id="...", + type="Scope", + ), + azuread.ApplicationRequiredResourceAccessResourceAccessArgs( + id="...", + type="Scope", + ), ], - "resourceAppId": "00000003-0000-0000-c000-000000000000", - }, - { - "resourceAccesses": [{ - "id": "...", - "type": "Scope", - }], - "resourceAppId": "00000002-0000-0000-c000-000000000000", - }, + resource_app_id="00000003-0000-0000-c000-000000000000", + ), + azuread.ApplicationRequiredResourceAccessArgs( + resource_accesses=[azuread.ApplicationRequiredResourceAccessResourceAccessArgs( + id="...", + type="Scope", + )], + resource_app_id="00000002-0000-0000-c000-000000000000", + ), ], type="webapp/api") ``` :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[list] app_roles: A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationAppRoleArgs']]]] app_roles: A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles :param pulumi.Input[bool] available_to_other_tenants: Is this Azure AD Application available to other tenants? Defaults to `false`. :param pulumi.Input[str] group_membership_claims: Configures the `groups` claim issued in a user or OAuth 2.0 access token that the app expects. Defaults to `SecurityGroup`. Possible values are `None`, `SecurityGroup`, `DirectoryRole`, `ApplicationGroup` or `All`. :param pulumi.Input[str] homepage: The URL to the application's home page. If no homepage is specified this defaults to `https://{name}`. - :param pulumi.Input[list] identifier_uris: A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. + :param pulumi.Input[List[pulumi.Input[str]]] identifier_uris: A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. :param pulumi.Input[str] logout_url: The URL of the logout page. :param pulumi.Input[str] name: The display name for the application. :param pulumi.Input[bool] oauth2_allow_implicit_flow: Does this Azure AD Application allow OAuth2.0 implicit flow tokens? Defaults to `false`. - :param pulumi.Input[list] oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. - :param pulumi.Input[dict] optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - :param pulumi.Input[list] owners: A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationOauth2PermissionArgs']]]] oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. + :param pulumi.Input[pulumi.InputType['ApplicationOptionalClaimsArgs']] optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims + :param pulumi.Input[List[pulumi.Input[str]]] owners: A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. :param pulumi.Input[bool] prevent_duplicate_names: If `true`, will return an error when an existing Application is found with the same name. Defaults to `false`. :param pulumi.Input[bool] public_client: Is this Azure AD Application a public client? Defaults to `false`. - :param pulumi.Input[list] reply_urls: A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. - :param pulumi.Input[list] required_resource_accesses: A collection of `required_resource_access` blocks as documented below. + :param pulumi.Input[List[pulumi.Input[str]]] reply_urls: A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationRequiredResourceAccessArgs']]]] required_resource_accesses: A collection of `required_resource_access` blocks as documented below. :param pulumi.Input[str] type: Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - - The **app_roles** object supports the following: - - * `allowedMemberTypes` (`pulumi.Input[list]`) - Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. - * `description` (`pulumi.Input[str]`) - Permission help text that appears in the admin app assignment and consent experiences. - * `display_name` (`pulumi.Input[str]`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`pulumi.Input[str]`) - The unique identifier of the `app_role`. - * `isEnabled` (`pulumi.Input[bool]`) - Determines if the permission is enabled: defaults to `true`. - * `value` (`pulumi.Input[str]`) - The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`pulumi.Input[str]`) - Permission help text that appears in the admin consent and app assignment experiences. - * `adminConsentDisplayName` (`pulumi.Input[str]`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `isEnabled` (`pulumi.Input[bool]`) - Determines if the app role is enabled: Defaults to `true`. - * `type` (`pulumi.Input[str]`) - Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - * `userConsentDescription` (`pulumi.Input[str]`) - Permission help text that appears in the end user consent experience. - * `userConsentDisplayName` (`pulumi.Input[str]`) - Display name for the permission that appears in the end user consent experience. - * `value` (`pulumi.Input[str]`) - Specifies the value of the roles claim that the application should expect in the authentication and access tokens. - - The **optional_claims** object supports the following: - - * `accessTokens` (`pulumi.Input[list]`) - * `additionalProperties` (`pulumi.Input[list]`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`pulumi.Input[bool]`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`pulumi.Input[str]`) - The name of the optional claim. - * `source` (`pulumi.Input[str]`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - * `idTokens` (`pulumi.Input[list]`) - * `additionalProperties` (`pulumi.Input[list]`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`pulumi.Input[bool]`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`pulumi.Input[str]`) - The display name for the application. - * `source` (`pulumi.Input[str]`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - The **required_resource_accesses** object supports the following: - - * `resourceAccesses` (`pulumi.Input[list]`) - A collection of `resource_access` blocks as documented below. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `type` (`pulumi.Input[str]`) - Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. - - * `resourceAppId` (`pulumi.Input[str]`) - The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. """ if __name__ is not None: warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning) @@ -280,7 +157,7 @@ def __init__(__self__, resource_name, opts=None, app_roles=None, available_to_ot if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -311,74 +188,52 @@ def __init__(__self__, resource_name, opts=None, app_roles=None, available_to_ot opts) @staticmethod - def get(resource_name, id, opts=None, app_roles=None, application_id=None, available_to_other_tenants=None, group_membership_claims=None, homepage=None, identifier_uris=None, logout_url=None, name=None, oauth2_allow_implicit_flow=None, oauth2_permissions=None, object_id=None, optional_claims=None, owners=None, prevent_duplicate_names=None, public_client=None, reply_urls=None, required_resource_accesses=None, type=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + app_roles: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationAppRoleArgs']]]]] = None, + application_id: Optional[pulumi.Input[str]] = None, + available_to_other_tenants: Optional[pulumi.Input[bool]] = None, + group_membership_claims: Optional[pulumi.Input[str]] = None, + homepage: Optional[pulumi.Input[str]] = None, + identifier_uris: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + logout_url: Optional[pulumi.Input[str]] = None, + name: Optional[pulumi.Input[str]] = None, + oauth2_allow_implicit_flow: Optional[pulumi.Input[bool]] = None, + oauth2_permissions: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationOauth2PermissionArgs']]]]] = None, + object_id: Optional[pulumi.Input[str]] = None, + optional_claims: Optional[pulumi.Input[pulumi.InputType['ApplicationOptionalClaimsArgs']]] = None, + owners: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + prevent_duplicate_names: Optional[pulumi.Input[bool]] = None, + public_client: Optional[pulumi.Input[bool]] = None, + reply_urls: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + required_resource_accesses: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationRequiredResourceAccessArgs']]]]] = None, + type: Optional[pulumi.Input[str]] = None) -> 'Application': """ Get an existing Application resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. - :param pulumi.Input[list] app_roles: A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationAppRoleArgs']]]] app_roles: A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles :param pulumi.Input[str] application_id: The Application ID. :param pulumi.Input[bool] available_to_other_tenants: Is this Azure AD Application available to other tenants? Defaults to `false`. :param pulumi.Input[str] group_membership_claims: Configures the `groups` claim issued in a user or OAuth 2.0 access token that the app expects. Defaults to `SecurityGroup`. Possible values are `None`, `SecurityGroup`, `DirectoryRole`, `ApplicationGroup` or `All`. :param pulumi.Input[str] homepage: The URL to the application's home page. If no homepage is specified this defaults to `https://{name}`. - :param pulumi.Input[list] identifier_uris: A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. + :param pulumi.Input[List[pulumi.Input[str]]] identifier_uris: A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. :param pulumi.Input[str] logout_url: The URL of the logout page. :param pulumi.Input[str] name: The display name for the application. :param pulumi.Input[bool] oauth2_allow_implicit_flow: Does this Azure AD Application allow OAuth2.0 implicit flow tokens? Defaults to `false`. - :param pulumi.Input[list] oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationOauth2PermissionArgs']]]] oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. :param pulumi.Input[str] object_id: The Application's Object ID. - :param pulumi.Input[dict] optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - :param pulumi.Input[list] owners: A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. + :param pulumi.Input[pulumi.InputType['ApplicationOptionalClaimsArgs']] optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims + :param pulumi.Input[List[pulumi.Input[str]]] owners: A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. :param pulumi.Input[bool] prevent_duplicate_names: If `true`, will return an error when an existing Application is found with the same name. Defaults to `false`. :param pulumi.Input[bool] public_client: Is this Azure AD Application a public client? Defaults to `false`. - :param pulumi.Input[list] reply_urls: A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. - :param pulumi.Input[list] required_resource_accesses: A collection of `required_resource_access` blocks as documented below. + :param pulumi.Input[List[pulumi.Input[str]]] reply_urls: A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ApplicationRequiredResourceAccessArgs']]]] required_resource_accesses: A collection of `required_resource_access` blocks as documented below. :param pulumi.Input[str] type: Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - - The **app_roles** object supports the following: - - * `allowedMemberTypes` (`pulumi.Input[list]`) - Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. - * `description` (`pulumi.Input[str]`) - Permission help text that appears in the admin app assignment and consent experiences. - * `display_name` (`pulumi.Input[str]`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`pulumi.Input[str]`) - The unique identifier of the `app_role`. - * `isEnabled` (`pulumi.Input[bool]`) - Determines if the permission is enabled: defaults to `true`. - * `value` (`pulumi.Input[str]`) - The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`pulumi.Input[str]`) - Permission help text that appears in the admin consent and app assignment experiences. - * `adminConsentDisplayName` (`pulumi.Input[str]`) - Display name for the permission that appears in the admin consent and app assignment experiences. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `isEnabled` (`pulumi.Input[bool]`) - Determines if the app role is enabled: Defaults to `true`. - * `type` (`pulumi.Input[str]`) - Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. - * `userConsentDescription` (`pulumi.Input[str]`) - Permission help text that appears in the end user consent experience. - * `userConsentDisplayName` (`pulumi.Input[str]`) - Display name for the permission that appears in the end user consent experience. - * `value` (`pulumi.Input[str]`) - Specifies the value of the roles claim that the application should expect in the authentication and access tokens. - - The **optional_claims** object supports the following: - - * `accessTokens` (`pulumi.Input[list]`) - * `additionalProperties` (`pulumi.Input[list]`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`pulumi.Input[bool]`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`pulumi.Input[str]`) - The name of the optional claim. - * `source` (`pulumi.Input[str]`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - * `idTokens` (`pulumi.Input[list]`) - * `additionalProperties` (`pulumi.Input[list]`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`pulumi.Input[bool]`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`pulumi.Input[str]`) - The display name for the application. - * `source` (`pulumi.Input[str]`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - The **required_resource_accesses** object supports the following: - - * `resourceAccesses` (`pulumi.Input[list]`) - A collection of `resource_access` blocks as documented below. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. - * `type` (`pulumi.Input[str]`) - Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. - - * `resourceAppId` (`pulumi.Input[str]`) - The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -404,8 +259,153 @@ def get(resource_name, id, opts=None, app_roles=None, application_id=None, avail __props__["type"] = type return Application(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="appRoles") + def app_roles(self) -> Optional[List['outputs.ApplicationAppRole']]: + """ + A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles + """ + return pulumi.get(self, "app_roles") + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> str: + """ + The Application ID. + """ + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="availableToOtherTenants") + def available_to_other_tenants(self) -> Optional[bool]: + """ + Is this Azure AD Application available to other tenants? Defaults to `false`. + """ + return pulumi.get(self, "available_to_other_tenants") + + @property + @pulumi.getter(name="groupMembershipClaims") + def group_membership_claims(self) -> Optional[str]: + """ + Configures the `groups` claim issued in a user or OAuth 2.0 access token that the app expects. Defaults to `SecurityGroup`. Possible values are `None`, `SecurityGroup`, `DirectoryRole`, `ApplicationGroup` or `All`. + """ + return pulumi.get(self, "group_membership_claims") + + @property + @pulumi.getter + def homepage(self) -> str: + """ + The URL to the application's home page. If no homepage is specified this defaults to `https://{name}`. + """ + return pulumi.get(self, "homepage") + + @property + @pulumi.getter(name="identifierUris") + def identifier_uris(self) -> List[str]: + """ + A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. + """ + return pulumi.get(self, "identifier_uris") + + @property + @pulumi.getter(name="logoutUrl") + def logout_url(self) -> Optional[str]: + """ + The URL of the logout page. + """ + return pulumi.get(self, "logout_url") + + @property + @pulumi.getter + def name(self) -> str: + """ + The display name for the application. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="oauth2AllowImplicitFlow") + def oauth2_allow_implicit_flow(self) -> Optional[bool]: + """ + Does this Azure AD Application allow OAuth2.0 implicit flow tokens? Defaults to `false`. + """ + return pulumi.get(self, "oauth2_allow_implicit_flow") + + @property + @pulumi.getter(name="oauth2Permissions") + def oauth2_permissions(self) -> List['outputs.ApplicationOauth2Permission']: + """ + A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by `oauth2_permissions` blocks as documented below. + """ + return pulumi.get(self, "oauth2_permissions") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + """ + The Application's Object ID. + """ + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="optionalClaims") + def optional_claims(self) -> Optional['outputs.ApplicationOptionalClaims']: + """ + A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims + """ + return pulumi.get(self, "optional_claims") + + @property + @pulumi.getter + def owners(self) -> List[str]: + """ + A list of Azure AD Object IDs that will be granted ownership of the application. Defaults to the Object ID of the caller creating the application. If a list is specified the caller Object ID will no longer be included unless explicitly added to the list. + """ + return pulumi.get(self, "owners") + + @property + @pulumi.getter(name="preventDuplicateNames") + def prevent_duplicate_names(self) -> Optional[bool]: + """ + If `true`, will return an error when an existing Application is found with the same name. Defaults to `false`. + """ + return pulumi.get(self, "prevent_duplicate_names") + + @property + @pulumi.getter(name="publicClient") + def public_client(self) -> bool: + """ + Is this Azure AD Application a public client? Defaults to `false`. + """ + return pulumi.get(self, "public_client") + + @property + @pulumi.getter(name="replyUrls") + def reply_urls(self) -> List[str]: + """ + A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. + """ + return pulumi.get(self, "reply_urls") + + @property + @pulumi.getter(name="requiredResourceAccesses") + def required_resource_accesses(self) -> Optional[List['outputs.ApplicationRequiredResourceAccess']]: + """ + A collection of `required_resource_access` blocks as documented below. + """ + return pulumi.get(self, "required_resource_accesses") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. + """ + return pulumi.get(self, "type") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/application_certificate.py b/sdk/python/pulumi_azuread/application_certificate.py index b711e9b63..52c37cef0 100644 --- a/sdk/python/pulumi_azuread/application_certificate.py +++ b/sdk/python/pulumi_azuread/application_certificate.py @@ -5,40 +5,26 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['ApplicationCertificate'] class ApplicationCertificate(pulumi.CustomResource): - application_object_id: pulumi.Output[str] - """ - The Object ID of the Application for which this Certificate should be created. Changing this field forces a new resource to be created. - """ - end_date: pulumi.Output[str] - """ - The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. - """ - end_date_relative: pulumi.Output[str] - """ - A relative duration for which the Certificate is valid until, for example `240h` (10 days) or `2400h30m`. Changing this field forces a new resource to be created. - """ - key_id: pulumi.Output[str] - """ - A GUID used to uniquely identify this Certificate. If not specified a GUID will be created. Changing this field forces a new resource to be created. - """ - start_date: pulumi.Output[str] - """ - The Start Date which the Certificate is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. - """ - type: pulumi.Output[str] - """ - The type of key/certificate. Must be one of `AsymmetricX509Cert` or `Symmetric`. Changing this fields forces a new resource to be created. - """ - value: pulumi.Output[str] - """ - The Certificate for this Service Principal. - """ - def __init__(__self__, resource_name, opts=None, application_object_id=None, end_date=None, end_date_relative=None, key_id=None, start_date=None, type=None, value=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + application_object_id: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Certificate associated with an Application within Azure Active Directory. @@ -79,7 +65,7 @@ def __init__(__self__, resource_name, opts=None, application_object_id=None, end if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -103,13 +89,22 @@ def __init__(__self__, resource_name, opts=None, application_object_id=None, end opts) @staticmethod - def get(resource_name, id, opts=None, application_object_id=None, end_date=None, end_date_relative=None, key_id=None, start_date=None, type=None, value=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + application_object_id: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None) -> 'ApplicationCertificate': """ Get an existing ApplicationCertificate resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] application_object_id: The Object ID of the Application for which this Certificate should be created. Changing this field forces a new resource to be created. :param pulumi.Input[str] end_date: The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. @@ -132,8 +127,65 @@ def get(resource_name, id, opts=None, application_object_id=None, end_date=None, __props__["value"] = value return ApplicationCertificate(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="applicationObjectId") + def application_object_id(self) -> str: + """ + The Object ID of the Application for which this Certificate should be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "application_object_id") + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + """ + The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="endDateRelative") + def end_date_relative(self) -> Optional[str]: + """ + A relative duration for which the Certificate is valid until, for example `240h` (10 days) or `2400h30m`. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date_relative") + + @property + @pulumi.getter(name="keyId") + def key_id(self) -> str: + """ + A GUID used to uniquely identify this Certificate. If not specified a GUID will be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "key_id") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + """ + The Start Date which the Certificate is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "start_date") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The type of key/certificate. Must be one of `AsymmetricX509Cert` or `Symmetric`. Changing this fields forces a new resource to be created. + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter + def value(self) -> str: + """ + The Certificate for this Service Principal. + """ + return pulumi.get(self, "value") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/application_password.py b/sdk/python/pulumi_azuread/application_password.py index 790bcb846..14ec1c4cd 100644 --- a/sdk/python/pulumi_azuread/application_password.py +++ b/sdk/python/pulumi_azuread/application_password.py @@ -5,41 +5,27 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['ApplicationPassword'] class ApplicationPassword(pulumi.CustomResource): - application_id: pulumi.Output[str] - application_object_id: pulumi.Output[str] - """ - The Object ID of the Application for which this password should be created. Changing this field forces a new resource to be created. - """ - description: pulumi.Output[str] - """ - A description for the Password. - """ - end_date: pulumi.Output[str] - """ - The End Date which the Password is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. - """ - end_date_relative: pulumi.Output[str] - """ - A relative duration for which the Password is valid until, for example `240h` (10 days) or `2400h30m`. Changing this field forces a new resource to be created. - """ - key_id: pulumi.Output[str] - """ - A GUID used to uniquely identify this Password. If not specified a GUID will be created. Changing this field forces a new resource to be created. - """ - start_date: pulumi.Output[str] - """ - The Start Date which the Password is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. - """ - value: pulumi.Output[str] - """ - The Password for this Application. - """ - def __init__(__self__, resource_name, opts=None, application_id=None, application_object_id=None, description=None, end_date=None, end_date_relative=None, key_id=None, start_date=None, value=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + application_id: Optional[pulumi.Input[str]] = None, + application_object_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Password associated with an Application within Azure Active Directory. Also can be referred to as Client secrets. @@ -80,7 +66,7 @@ def __init__(__self__, resource_name, opts=None, application_id=None, applicatio if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -106,13 +92,23 @@ def __init__(__self__, resource_name, opts=None, application_id=None, applicatio opts) @staticmethod - def get(resource_name, id, opts=None, application_id=None, application_object_id=None, description=None, end_date=None, end_date_relative=None, key_id=None, start_date=None, value=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + application_id: Optional[pulumi.Input[str]] = None, + application_object_id: Optional[pulumi.Input[str]] = None, + description: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None) -> 'ApplicationPassword': """ Get an existing ApplicationPassword resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] application_object_id: The Object ID of the Application for which this password should be created. Changing this field forces a new resource to be created. :param pulumi.Input[str] description: A description for the Password. @@ -136,8 +132,70 @@ def get(resource_name, id, opts=None, application_id=None, application_object_id __props__["value"] = value return ApplicationPassword(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> str: + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="applicationObjectId") + def application_object_id(self) -> str: + """ + The Object ID of the Application for which this password should be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "application_object_id") + + @property + @pulumi.getter + def description(self) -> str: + """ + A description for the Password. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + """ + The End Date which the Password is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="endDateRelative") + def end_date_relative(self) -> Optional[str]: + """ + A relative duration for which the Password is valid until, for example `240h` (10 days) or `2400h30m`. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date_relative") + + @property + @pulumi.getter(name="keyId") + def key_id(self) -> str: + """ + A GUID used to uniquely identify this Password. If not specified a GUID will be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "key_id") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + """ + The Start Date which the Password is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "start_date") + + @property + @pulumi.getter + def value(self) -> str: + """ + The Password for this Application. + """ + return pulumi.get(self, "value") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/config/README.md b/sdk/python/pulumi_azuread/config/README.md deleted file mode 100644 index 9dbaaceaa..000000000 --- a/sdk/python/pulumi_azuread/config/README.md +++ /dev/null @@ -1 +0,0 @@ -A Pulumi package for creating and managing azuread cloud resources. diff --git a/sdk/python/pulumi_azuread/config/vars.py b/sdk/python/pulumi_azuread/config/vars.py index 3bf10179b..1785328d3 100644 --- a/sdk/python/pulumi_azuread/config/vars.py +++ b/sdk/python/pulumi_azuread/config/vars.py @@ -5,26 +5,38 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from .. import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from .. import _utilities, _tables + +__all__ = [ + 'client_certificate_password', + 'client_certificate_path', + 'client_id', + 'client_secret', + 'environment', + 'msi_endpoint', + 'subscription_id', + 'tenant_id', + 'use_msi', +] __config__ = pulumi.Config('azuread') -client_certificate_password = __config__.get('clientCertificatePassword') or (utilities.get_env('ARM_CLIENT_CERTIFICATE_PASSWORD') or '') +client_certificate_password = __config__.get('clientCertificatePassword') or (_utilities.get_env('ARM_CLIENT_CERTIFICATE_PASSWORD') or '') -client_certificate_path = __config__.get('clientCertificatePath') or (utilities.get_env('ARM_CLIENT_CERTIFICATE_PATH') or '') +client_certificate_path = __config__.get('clientCertificatePath') or (_utilities.get_env('ARM_CLIENT_CERTIFICATE_PATH') or '') -client_id = __config__.get('clientId') or (utilities.get_env('ARM_CLIENT_ID') or '') +client_id = __config__.get('clientId') or (_utilities.get_env('ARM_CLIENT_ID') or '') -client_secret = __config__.get('clientSecret') or (utilities.get_env('ARM_CLIENT_SECRET') or '') +client_secret = __config__.get('clientSecret') or (_utilities.get_env('ARM_CLIENT_SECRET') or '') -environment = __config__.get('environment') or (utilities.get_env('ARM_ENVIRONMENT') or 'public') +environment = __config__.get('environment') or (_utilities.get_env('ARM_ENVIRONMENT') or 'public') -msi_endpoint = __config__.get('msiEndpoint') or (utilities.get_env('ARM_MSI_ENDPOINT') or '') +msi_endpoint = __config__.get('msiEndpoint') or (_utilities.get_env('ARM_MSI_ENDPOINT') or '') -subscription_id = __config__.get('subscriptionId') or (utilities.get_env('ARM_SUBSCRIPTION_ID') or '') +subscription_id = __config__.get('subscriptionId') or (_utilities.get_env('ARM_SUBSCRIPTION_ID') or '') -tenant_id = __config__.get('tenantId') or (utilities.get_env('ARM_TENANT_ID') or '') +tenant_id = __config__.get('tenantId') or (_utilities.get_env('ARM_TENANT_ID') or '') -use_msi = __config__.get('useMsi') or (utilities.get_env_bool('ARM_USE_MSI') or False) +use_msi = __config__.get('useMsi') or (_utilities.get_env_bool('ARM_USE_MSI') or False) diff --git a/sdk/python/pulumi_azuread/get_application.py b/sdk/python/pulumi_azuread/get_application.py index 303e08ec4..b45fbaea5 100644 --- a/sdk/python/pulumi_azuread/get_application.py +++ b/sdk/python/pulumi_azuread/get_application.py @@ -5,9 +5,18 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +from ._inputs import * +__all__ = [ + 'GetApplicationResult', + 'AwaitableGetApplicationResult', + 'get_application', +] + +@pulumi.output_type class GetApplicationResult: """ A collection of values returned by getApplication. @@ -15,103 +24,190 @@ class GetApplicationResult: def __init__(__self__, app_roles=None, application_id=None, available_to_other_tenants=None, group_membership_claims=None, homepage=None, id=None, identifier_uris=None, logout_url=None, name=None, oauth2_allow_implicit_flow=None, oauth2_permissions=None, object_id=None, optional_claims=None, owners=None, reply_urls=None, required_resource_accesses=None, type=None): if app_roles and not isinstance(app_roles, list): raise TypeError("Expected argument 'app_roles' to be a list") - __self__.app_roles = app_roles + pulumi.set(__self__, "app_roles", app_roles) + if application_id and not isinstance(application_id, str): + raise TypeError("Expected argument 'application_id' to be a str") + pulumi.set(__self__, "application_id", application_id) + if available_to_other_tenants and not isinstance(available_to_other_tenants, bool): + raise TypeError("Expected argument 'available_to_other_tenants' to be a bool") + pulumi.set(__self__, "available_to_other_tenants", available_to_other_tenants) + if group_membership_claims and not isinstance(group_membership_claims, str): + raise TypeError("Expected argument 'group_membership_claims' to be a str") + pulumi.set(__self__, "group_membership_claims", group_membership_claims) + if homepage and not isinstance(homepage, str): + raise TypeError("Expected argument 'homepage' to be a str") + pulumi.set(__self__, "homepage", homepage) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if identifier_uris and not isinstance(identifier_uris, list): + raise TypeError("Expected argument 'identifier_uris' to be a list") + pulumi.set(__self__, "identifier_uris", identifier_uris) + if logout_url and not isinstance(logout_url, str): + raise TypeError("Expected argument 'logout_url' to be a str") + pulumi.set(__self__, "logout_url", logout_url) + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + if oauth2_allow_implicit_flow and not isinstance(oauth2_allow_implicit_flow, bool): + raise TypeError("Expected argument 'oauth2_allow_implicit_flow' to be a bool") + pulumi.set(__self__, "oauth2_allow_implicit_flow", oauth2_allow_implicit_flow) + if oauth2_permissions and not isinstance(oauth2_permissions, list): + raise TypeError("Expected argument 'oauth2_permissions' to be a list") + pulumi.set(__self__, "oauth2_permissions", oauth2_permissions) + if object_id and not isinstance(object_id, str): + raise TypeError("Expected argument 'object_id' to be a str") + pulumi.set(__self__, "object_id", object_id) + if optional_claims and not isinstance(optional_claims, dict): + raise TypeError("Expected argument 'optional_claims' to be a dict") + pulumi.set(__self__, "optional_claims", optional_claims) + if owners and not isinstance(owners, list): + raise TypeError("Expected argument 'owners' to be a list") + pulumi.set(__self__, "owners", owners) + if reply_urls and not isinstance(reply_urls, list): + raise TypeError("Expected argument 'reply_urls' to be a list") + pulumi.set(__self__, "reply_urls", reply_urls) + if required_resource_accesses and not isinstance(required_resource_accesses, list): + raise TypeError("Expected argument 'required_resource_accesses' to be a list") + pulumi.set(__self__, "required_resource_accesses", required_resource_accesses) + if type and not isinstance(type, str): + raise TypeError("Expected argument 'type' to be a str") + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter(name="appRoles") + def app_roles(self) -> List['outputs.GetApplicationAppRoleResult']: """ A collection of `app_role` blocks as documented below. For more information https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/app-roles """ - if application_id and not isinstance(application_id, str): - raise TypeError("Expected argument 'application_id' to be a str") - __self__.application_id = application_id + return pulumi.get(self, "app_roles") + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> str: """ the Application ID of the Azure Active Directory Application. """ - if available_to_other_tenants and not isinstance(available_to_other_tenants, bool): - raise TypeError("Expected argument 'available_to_other_tenants' to be a bool") - __self__.available_to_other_tenants = available_to_other_tenants + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="availableToOtherTenants") + def available_to_other_tenants(self) -> bool: """ Is this Azure AD Application available to other tenants? """ - if group_membership_claims and not isinstance(group_membership_claims, str): - raise TypeError("Expected argument 'group_membership_claims' to be a str") - __self__.group_membership_claims = group_membership_claims + return pulumi.get(self, "available_to_other_tenants") + + @property + @pulumi.getter(name="groupMembershipClaims") + def group_membership_claims(self) -> str: """ The `groups` claim issued in a user or OAuth 2.0 access token that the app expects. """ - if homepage and not isinstance(homepage, str): - raise TypeError("Expected argument 'homepage' to be a str") - __self__.homepage = homepage - if id and not isinstance(id, str): - raise TypeError("Expected argument 'id' to be a str") - __self__.id = id + return pulumi.get(self, "group_membership_claims") + + @property + @pulumi.getter + def homepage(self) -> str: + return pulumi.get(self, "homepage") + + @property + @pulumi.getter + def id(self) -> str: """ The provider-assigned unique ID for this managed resource. """ - if identifier_uris and not isinstance(identifier_uris, list): - raise TypeError("Expected argument 'identifier_uris' to be a list") - __self__.identifier_uris = identifier_uris + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="identifierUris") + def identifier_uris(self) -> List[str]: """ A list of user-defined URI(s) that uniquely identify a Web application within it's Azure AD tenant, or within a verified custom domain if the application is multi-tenant. """ - if logout_url and not isinstance(logout_url, str): - raise TypeError("Expected argument 'logout_url' to be a str") - __self__.logout_url = logout_url + return pulumi.get(self, "identifier_uris") + + @property + @pulumi.getter(name="logoutUrl") + def logout_url(self) -> str: """ The URL of the logout page. """ - if name and not isinstance(name, str): - raise TypeError("Expected argument 'name' to be a str") - __self__.name = name + return pulumi.get(self, "logout_url") + + @property + @pulumi.getter + def name(self) -> str: """ The name of the optional claim. """ - if oauth2_allow_implicit_flow and not isinstance(oauth2_allow_implicit_flow, bool): - raise TypeError("Expected argument 'oauth2_allow_implicit_flow' to be a bool") - __self__.oauth2_allow_implicit_flow = oauth2_allow_implicit_flow + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="oauth2AllowImplicitFlow") + def oauth2_allow_implicit_flow(self) -> bool: """ Does this Azure AD Application allow OAuth2.0 implicit flow tokens? """ - if oauth2_permissions and not isinstance(oauth2_permissions, list): - raise TypeError("Expected argument 'oauth2_permissions' to be a list") - __self__.oauth2_permissions = oauth2_permissions + return pulumi.get(self, "oauth2_allow_implicit_flow") + + @property + @pulumi.getter(name="oauth2Permissions") + def oauth2_permissions(self) -> List['outputs.GetApplicationOauth2PermissionResult']: """ A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by a `oauth2_permission` block as documented below. """ - if object_id and not isinstance(object_id, str): - raise TypeError("Expected argument 'object_id' to be a str") - __self__.object_id = object_id + return pulumi.get(self, "oauth2_permissions") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: """ the Object ID of the Azure Active Directory Application. """ - if optional_claims and not isinstance(optional_claims, dict): - raise TypeError("Expected argument 'optional_claims' to be a dict") - __self__.optional_claims = optional_claims + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="optionalClaims") + def optional_claims(self) -> Optional['outputs.GetApplicationOptionalClaimsResult']: """ A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims """ - if owners and not isinstance(owners, list): - raise TypeError("Expected argument 'owners' to be a list") - __self__.owners = owners + return pulumi.get(self, "optional_claims") + + @property + @pulumi.getter + def owners(self) -> List[str]: """ A list of User Object IDs that are assigned ownership of the application registration. """ - if reply_urls and not isinstance(reply_urls, list): - raise TypeError("Expected argument 'reply_urls' to be a list") - __self__.reply_urls = reply_urls + return pulumi.get(self, "owners") + + @property + @pulumi.getter(name="replyUrls") + def reply_urls(self) -> List[str]: """ A list of URLs that user tokens are sent to for sign in, or the redirect URIs that OAuth 2.0 authorization codes and access tokens are sent to. """ - if required_resource_accesses and not isinstance(required_resource_accesses, list): - raise TypeError("Expected argument 'required_resource_accesses' to be a list") - __self__.required_resource_accesses = required_resource_accesses + return pulumi.get(self, "reply_urls") + + @property + @pulumi.getter(name="requiredResourceAccesses") + def required_resource_accesses(self) -> List['outputs.GetApplicationRequiredResourceAccessResult']: """ A collection of `required_resource_access` blocks as documented below. """ - if type and not isinstance(type, str): - raise TypeError("Expected argument 'type' to be a str") - __self__.type = type + return pulumi.get(self, "required_resource_accesses") + + @property + @pulumi.getter + def type(self) -> str: """ The type of the permission """ + return pulumi.get(self, "type") + + class AwaitableGetApplicationResult(GetApplicationResult): # pylint: disable=using-constant-test def __await__(self): @@ -136,7 +232,13 @@ def __await__(self): required_resource_accesses=self.required_resource_accesses, type=self.type) -def get_application(application_id=None,name=None,oauth2_permissions=None,object_id=None,optional_claims=None,opts=None): + +def get_application(application_id: Optional[str] = None, + name: Optional[str] = None, + oauth2_permissions: Optional[List[pulumi.InputType['GetApplicationOauth2PermissionArgs']]] = None, + object_id: Optional[str] = None, + optional_claims: Optional[pulumi.InputType['GetApplicationOptionalClaimsArgs']] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetApplicationResult: """ Use this data source to access information about an existing Application within Azure Active Directory. @@ -155,38 +257,11 @@ def get_application(application_id=None,name=None,oauth2_permissions=None,object :param str application_id: Specifies the Application ID of the Azure Active Directory Application. :param str name: Specifies the name of the Application within Azure Active Directory. - :param list oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by a `oauth2_permission` block as documented below. + :param List[pulumi.InputType['GetApplicationOauth2PermissionArgs']] oauth2_permissions: A collection of OAuth 2.0 permission scopes that the web API (resource) app exposes to client apps. Each permission is covered by a `oauth2_permission` block as documented below. :param str object_id: Specifies the Object ID of the Application within Azure Active Directory. - :param dict optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`str`) - The description of the admin consent - * `adminConsentDisplayName` (`str`) - The display name of the admin consent - * `id` (`str`) - The unique identifier of the `app_role`. - * `isEnabled` (`bool`) - Determines if the app role is enabled. - * `type` (`str`) - The type of the permission - * `userConsentDescription` (`str`) - The description of the user consent - * `userConsentDisplayName` (`str`) - The display name of the user consent - * `value` (`str`) - Specifies the value of the roles claim that the application should expect in the authentication and access tokens. - - The **optional_claims** object supports the following: - - * `accessTokens` (`list`) - * `additionalProperties` (`list`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`bool`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`str`) - Specifies the name of the Application within Azure Active Directory. - * `source` (`str`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. - - * `idTokens` (`list`) - * `additionalProperties` (`list`) - List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. - * `essential` (`bool`) - Whether the claim specified by the client is necessary to ensure a smooth authorization experience. - * `name` (`str`) - Specifies the name of the Application within Azure Active Directory. - * `source` (`str`) - The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + :param pulumi.InputType['GetApplicationOptionalClaimsArgs'] optional_claims: A collection of `access_token` or `id_token` blocks as documented below which list the optional claims configured for each token type. For more information see https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims """ __args__ = dict() - - __args__['applicationId'] = application_id __args__['name'] = name __args__['oauth2Permissions'] = oauth2_permissions @@ -195,24 +270,24 @@ def get_application(application_id=None,name=None,oauth2_permissions=None,object if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getApplication:getApplication', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getApplication:getApplication', __args__, opts=opts, typ=GetApplicationResult).value return AwaitableGetApplicationResult( - app_roles=__ret__.get('appRoles'), - application_id=__ret__.get('applicationId'), - available_to_other_tenants=__ret__.get('availableToOtherTenants'), - group_membership_claims=__ret__.get('groupMembershipClaims'), - homepage=__ret__.get('homepage'), - id=__ret__.get('id'), - identifier_uris=__ret__.get('identifierUris'), - logout_url=__ret__.get('logoutUrl'), - name=__ret__.get('name'), - oauth2_allow_implicit_flow=__ret__.get('oauth2AllowImplicitFlow'), - oauth2_permissions=__ret__.get('oauth2Permissions'), - object_id=__ret__.get('objectId'), - optional_claims=__ret__.get('optionalClaims'), - owners=__ret__.get('owners'), - reply_urls=__ret__.get('replyUrls'), - required_resource_accesses=__ret__.get('requiredResourceAccesses'), - type=__ret__.get('type')) + app_roles=__ret__.app_roles, + application_id=__ret__.application_id, + available_to_other_tenants=__ret__.available_to_other_tenants, + group_membership_claims=__ret__.group_membership_claims, + homepage=__ret__.homepage, + id=__ret__.id, + identifier_uris=__ret__.identifier_uris, + logout_url=__ret__.logout_url, + name=__ret__.name, + oauth2_allow_implicit_flow=__ret__.oauth2_allow_implicit_flow, + oauth2_permissions=__ret__.oauth2_permissions, + object_id=__ret__.object_id, + optional_claims=__ret__.optional_claims, + owners=__ret__.owners, + reply_urls=__ret__.reply_urls, + required_resource_accesses=__ret__.required_resource_accesses, + type=__ret__.type) diff --git a/sdk/python/pulumi_azuread/get_client_config.py b/sdk/python/pulumi_azuread/get_client_config.py index da6fb63b2..ca4644148 100644 --- a/sdk/python/pulumi_azuread/get_client_config.py +++ b/sdk/python/pulumi_azuread/get_client_config.py @@ -5,9 +5,16 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +__all__ = [ + 'GetClientConfigResult', + 'AwaitableGetClientConfigResult', + 'get_client_config', +] + +@pulumi.output_type class GetClientConfigResult: """ A collection of values returned by getClientConfig. @@ -15,26 +22,53 @@ class GetClientConfigResult: def __init__(__self__, client_id=None, id=None, object_id=None, subscription_id=None, tenant_id=None): if client_id and not isinstance(client_id, str): raise TypeError("Expected argument 'client_id' to be a str") - __self__.client_id = client_id + pulumi.set(__self__, "client_id", client_id) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") - __self__.id = id - """ - The provider-assigned unique ID for this managed resource. - """ + pulumi.set(__self__, "id", id) if object_id and not isinstance(object_id, str): raise TypeError("Expected argument 'object_id' to be a str") - __self__.object_id = object_id + pulumi.set(__self__, "object_id", object_id) if subscription_id and not isinstance(subscription_id, str): raise TypeError("Expected argument 'subscription_id' to be a str") if subscription_id is not None: warnings.warn("The \"subscription_id\" attribute will be removed in version 1.0 of the provider. If you are using this attribute, you should instead use the \"azurerm_client_config\" data source from the AzureRM provider", DeprecationWarning) pulumi.log.warn("subscription_id is deprecated: The \"subscription_id\" attribute will be removed in version 1.0 of the provider. If you are using this attribute, you should instead use the \"azurerm_client_config\" data source from the AzureRM provider") - __self__.subscription_id = subscription_id + pulumi.set(__self__, "subscription_id", subscription_id) if tenant_id and not isinstance(tenant_id, str): raise TypeError("Expected argument 'tenant_id' to be a str") - __self__.tenant_id = tenant_id + pulumi.set(__self__, "tenant_id", tenant_id) + + @property + @pulumi.getter(name="clientId") + def client_id(self) -> str: + return pulumi.get(self, "client_id") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="subscriptionId") + def subscription_id(self) -> str: + return pulumi.get(self, "subscription_id") + + @property + @pulumi.getter(name="tenantId") + def tenant_id(self) -> str: + return pulumi.get(self, "tenant_id") + + class AwaitableGetClientConfigResult(GetClientConfigResult): # pylint: disable=using-constant-test def __await__(self): @@ -47,7 +81,8 @@ def __await__(self): subscription_id=self.subscription_id, tenant_id=self.tenant_id) -def get_client_config(opts=None): + +def get_client_config(opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetClientConfigResult: """ Use this data source to access the configuration of the AzureRM provider. @@ -62,17 +97,15 @@ def get_client_config(opts=None): ``` """ __args__ = dict() - - if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getClientConfig:getClientConfig', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getClientConfig:getClientConfig', __args__, opts=opts, typ=GetClientConfigResult).value return AwaitableGetClientConfigResult( - client_id=__ret__.get('clientId'), - id=__ret__.get('id'), - object_id=__ret__.get('objectId'), - subscription_id=__ret__.get('subscriptionId'), - tenant_id=__ret__.get('tenantId')) + client_id=__ret__.client_id, + id=__ret__.id, + object_id=__ret__.object_id, + subscription_id=__ret__.subscription_id, + tenant_id=__ret__.tenant_id) diff --git a/sdk/python/pulumi_azuread/get_domains.py b/sdk/python/pulumi_azuread/get_domains.py index 19994be65..bb83ab245 100644 --- a/sdk/python/pulumi_azuread/get_domains.py +++ b/sdk/python/pulumi_azuread/get_domains.py @@ -5,9 +5,17 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +__all__ = [ + 'GetDomainsResult', + 'AwaitableGetDomainsResult', + 'get_domains', +] + +@pulumi.output_type class GetDomainsResult: """ A collection of values returned by getDomains. @@ -15,25 +23,52 @@ class GetDomainsResult: def __init__(__self__, domains=None, id=None, include_unverified=None, only_default=None, only_initial=None): if domains and not isinstance(domains, list): raise TypeError("Expected argument 'domains' to be a list") - __self__.domains = domains - """ - One or more `domain` blocks as defined below. - """ + pulumi.set(__self__, "domains", domains) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") - __self__.id = id - """ - The provider-assigned unique ID for this managed resource. - """ + pulumi.set(__self__, "id", id) if include_unverified and not isinstance(include_unverified, bool): raise TypeError("Expected argument 'include_unverified' to be a bool") - __self__.include_unverified = include_unverified + pulumi.set(__self__, "include_unverified", include_unverified) if only_default and not isinstance(only_default, bool): raise TypeError("Expected argument 'only_default' to be a bool") - __self__.only_default = only_default + pulumi.set(__self__, "only_default", only_default) if only_initial and not isinstance(only_initial, bool): raise TypeError("Expected argument 'only_initial' to be a bool") - __self__.only_initial = only_initial + pulumi.set(__self__, "only_initial", only_initial) + + @property + @pulumi.getter + def domains(self) -> List['outputs.GetDomainsDomainResult']: + """ + One or more `domain` blocks as defined below. + """ + return pulumi.get(self, "domains") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="includeUnverified") + def include_unverified(self) -> Optional[bool]: + return pulumi.get(self, "include_unverified") + + @property + @pulumi.getter(name="onlyDefault") + def only_default(self) -> Optional[bool]: + return pulumi.get(self, "only_default") + + @property + @pulumi.getter(name="onlyInitial") + def only_initial(self) -> Optional[bool]: + return pulumi.get(self, "only_initial") + + class AwaitableGetDomainsResult(GetDomainsResult): # pylint: disable=using-constant-test def __await__(self): @@ -46,7 +81,11 @@ def __await__(self): only_default=self.only_default, only_initial=self.only_initial) -def get_domains(include_unverified=None,only_default=None,only_initial=None,opts=None): + +def get_domains(include_unverified: Optional[bool] = None, + only_default: Optional[bool] = None, + only_initial: Optional[bool] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDomainsResult: """ Use this data source to access information about an existing Domains within Azure Active Directory. @@ -68,20 +107,18 @@ def get_domains(include_unverified=None,only_default=None,only_initial=None,opts :param bool only_initial: Set to `true` to only return the initial domain, which is your primary Azure Active Directory tenant domain. Defaults to `false`. """ __args__ = dict() - - __args__['includeUnverified'] = include_unverified __args__['onlyDefault'] = only_default __args__['onlyInitial'] = only_initial if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getDomains:getDomains', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getDomains:getDomains', __args__, opts=opts, typ=GetDomainsResult).value return AwaitableGetDomainsResult( - domains=__ret__.get('domains'), - id=__ret__.get('id'), - include_unverified=__ret__.get('includeUnverified'), - only_default=__ret__.get('onlyDefault'), - only_initial=__ret__.get('onlyInitial')) + domains=__ret__.domains, + id=__ret__.id, + include_unverified=__ret__.include_unverified, + only_default=__ret__.only_default, + only_initial=__ret__.only_initial) diff --git a/sdk/python/pulumi_azuread/get_group.py b/sdk/python/pulumi_azuread/get_group.py index 283bd7e12..796f3e168 100644 --- a/sdk/python/pulumi_azuread/get_group.py +++ b/sdk/python/pulumi_azuread/get_group.py @@ -5,9 +5,16 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +__all__ = [ + 'GetGroupResult', + 'AwaitableGetGroupResult', + 'get_group', +] + +@pulumi.output_type class GetGroupResult: """ A collection of values returned by getGroup. @@ -15,37 +22,69 @@ class GetGroupResult: def __init__(__self__, description=None, id=None, members=None, name=None, object_id=None, owners=None): if description and not isinstance(description, str): raise TypeError("Expected argument 'description' to be a str") - __self__.description = description + pulumi.set(__self__, "description", description) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if members and not isinstance(members, list): + raise TypeError("Expected argument 'members' to be a list") + pulumi.set(__self__, "members", members) + if name and not isinstance(name, str): + raise TypeError("Expected argument 'name' to be a str") + pulumi.set(__self__, "name", name) + if object_id and not isinstance(object_id, str): + raise TypeError("Expected argument 'object_id' to be a str") + pulumi.set(__self__, "object_id", object_id) + if owners and not isinstance(owners, list): + raise TypeError("Expected argument 'owners' to be a list") + pulumi.set(__self__, "owners", owners) + + @property + @pulumi.getter + def description(self) -> str: """ The description of the AD Group. """ - if id and not isinstance(id, str): - raise TypeError("Expected argument 'id' to be a str") - __self__.id = id + return pulumi.get(self, "description") + + @property + @pulumi.getter + def id(self) -> str: """ The provider-assigned unique ID for this managed resource. """ - if members and not isinstance(members, list): - raise TypeError("Expected argument 'members' to be a list") - __self__.members = members + return pulumi.get(self, "id") + + @property + @pulumi.getter + def members(self) -> List[str]: """ The Object IDs of the Azure AD Group members. """ - if name and not isinstance(name, str): - raise TypeError("Expected argument 'name' to be a str") - __self__.name = name + return pulumi.get(self, "members") + + @property + @pulumi.getter + def name(self) -> str: """ The name of the Azure AD Group. """ - if object_id and not isinstance(object_id, str): - raise TypeError("Expected argument 'object_id' to be a str") - __self__.object_id = object_id - if owners and not isinstance(owners, list): - raise TypeError("Expected argument 'owners' to be a list") - __self__.owners = owners + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + @property + @pulumi.getter + def owners(self) -> List[str]: """ The Object IDs of the Azure AD Group owners. """ + return pulumi.get(self, "owners") + + class AwaitableGetGroupResult(GetGroupResult): # pylint: disable=using-constant-test def __await__(self): @@ -59,7 +98,10 @@ def __await__(self): object_id=self.object_id, owners=self.owners) -def get_group(name=None,object_id=None,opts=None): + +def get_group(name: Optional[str] = None, + object_id: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetGroupResult: """ Gets information about an Azure Active Directory group. @@ -80,20 +122,18 @@ def get_group(name=None,object_id=None,opts=None): :param str object_id: Specifies the Object ID of the AD Group within Azure Active Directory. """ __args__ = dict() - - __args__['name'] = name __args__['objectId'] = object_id if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getGroup:getGroup', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getGroup:getGroup', __args__, opts=opts, typ=GetGroupResult).value return AwaitableGetGroupResult( - description=__ret__.get('description'), - id=__ret__.get('id'), - members=__ret__.get('members'), - name=__ret__.get('name'), - object_id=__ret__.get('objectId'), - owners=__ret__.get('owners')) + description=__ret__.description, + id=__ret__.id, + members=__ret__.members, + name=__ret__.name, + object_id=__ret__.object_id, + owners=__ret__.owners) diff --git a/sdk/python/pulumi_azuread/get_groups.py b/sdk/python/pulumi_azuread/get_groups.py index 7c024dc56..c21b4de65 100644 --- a/sdk/python/pulumi_azuread/get_groups.py +++ b/sdk/python/pulumi_azuread/get_groups.py @@ -5,9 +5,16 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +__all__ = [ + 'GetGroupsResult', + 'AwaitableGetGroupsResult', + 'get_groups', +] + +@pulumi.output_type class GetGroupsResult: """ A collection of values returned by getGroups. @@ -15,22 +22,39 @@ class GetGroupsResult: def __init__(__self__, id=None, names=None, object_ids=None): if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") - __self__.id = id + pulumi.set(__self__, "id", id) + if names and not isinstance(names, list): + raise TypeError("Expected argument 'names' to be a list") + pulumi.set(__self__, "names", names) + if object_ids and not isinstance(object_ids, list): + raise TypeError("Expected argument 'object_ids' to be a list") + pulumi.set(__self__, "object_ids", object_ids) + + @property + @pulumi.getter + def id(self) -> str: """ The provider-assigned unique ID for this managed resource. """ - if names and not isinstance(names, list): - raise TypeError("Expected argument 'names' to be a list") - __self__.names = names + return pulumi.get(self, "id") + + @property + @pulumi.getter + def names(self) -> List[str]: """ The Display Names of the Azure AD Groups. """ - if object_ids and not isinstance(object_ids, list): - raise TypeError("Expected argument 'object_ids' to be a list") - __self__.object_ids = object_ids + return pulumi.get(self, "names") + + @property + @pulumi.getter(name="objectIds") + def object_ids(self) -> List[str]: """ The Object IDs of the Azure AD Groups. """ + return pulumi.get(self, "object_ids") + + class AwaitableGetGroupsResult(GetGroupsResult): # pylint: disable=using-constant-test def __await__(self): @@ -41,7 +65,10 @@ def __await__(self): names=self.names, object_ids=self.object_ids) -def get_groups(names=None,object_ids=None,opts=None): + +def get_groups(names: Optional[List[str]] = None, + object_ids: Optional[List[str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetGroupsResult: """ Gets Object IDs or Display Names for multiple Azure Active Directory groups. @@ -60,21 +87,19 @@ def get_groups(names=None,object_ids=None,opts=None): ``` - :param list names: The Display Names of the Azure AD Groups. - :param list object_ids: The Object IDs of the Azure AD Groups. + :param List[str] names: The Display Names of the Azure AD Groups. + :param List[str] object_ids: The Object IDs of the Azure AD Groups. """ __args__ = dict() - - __args__['names'] = names __args__['objectIds'] = object_ids if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getGroups:getGroups', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getGroups:getGroups', __args__, opts=opts, typ=GetGroupsResult).value return AwaitableGetGroupsResult( - id=__ret__.get('id'), - names=__ret__.get('names'), - object_ids=__ret__.get('objectIds')) + id=__ret__.id, + names=__ret__.names, + object_ids=__ret__.object_ids) diff --git a/sdk/python/pulumi_azuread/get_service_principal.py b/sdk/python/pulumi_azuread/get_service_principal.py index a682a170e..c32ace11b 100644 --- a/sdk/python/pulumi_azuread/get_service_principal.py +++ b/sdk/python/pulumi_azuread/get_service_principal.py @@ -5,9 +5,18 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables - +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +from ._inputs import * + +__all__ = [ + 'GetServicePrincipalResult', + 'AwaitableGetServicePrincipalResult', + 'get_service_principal', +] + +@pulumi.output_type class GetServicePrincipalResult: """ A collection of values returned by getServicePrincipal. @@ -15,28 +24,60 @@ class GetServicePrincipalResult: def __init__(__self__, app_roles=None, application_id=None, display_name=None, id=None, oauth2_permissions=None, object_id=None): if app_roles and not isinstance(app_roles, list): raise TypeError("Expected argument 'app_roles' to be a list") - __self__.app_roles = app_roles + pulumi.set(__self__, "app_roles", app_roles) if application_id and not isinstance(application_id, str): raise TypeError("Expected argument 'application_id' to be a str") - __self__.application_id = application_id + pulumi.set(__self__, "application_id", application_id) if display_name and not isinstance(display_name, str): raise TypeError("Expected argument 'display_name' to be a str") - __self__.display_name = display_name - """ - Display name for the permission that appears in the admin consent and app assignment experiences. - """ + pulumi.set(__self__, "display_name", display_name) if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") - __self__.id = id - """ - The provider-assigned unique ID for this managed resource. - """ + pulumi.set(__self__, "id", id) if oauth2_permissions and not isinstance(oauth2_permissions, list): raise TypeError("Expected argument 'oauth2_permissions' to be a list") - __self__.oauth2_permissions = oauth2_permissions + pulumi.set(__self__, "oauth2_permissions", oauth2_permissions) if object_id and not isinstance(object_id, str): raise TypeError("Expected argument 'object_id' to be a str") - __self__.object_id = object_id + pulumi.set(__self__, "object_id", object_id) + + @property + @pulumi.getter(name="appRoles") + def app_roles(self) -> List['outputs.GetServicePrincipalAppRoleResult']: + return pulumi.get(self, "app_roles") + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> str: + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="oauth2Permissions") + def oauth2_permissions(self) -> List['outputs.GetServicePrincipalOauth2PermissionResult']: + return pulumi.get(self, "oauth2_permissions") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + class AwaitableGetServicePrincipalResult(GetServicePrincipalResult): # pylint: disable=using-constant-test def __await__(self): @@ -50,7 +91,12 @@ def __await__(self): oauth2_permissions=self.oauth2_permissions, object_id=self.object_id) -def get_service_principal(application_id=None,display_name=None,oauth2_permissions=None,object_id=None,opts=None): + +def get_service_principal(application_id: Optional[str] = None, + display_name: Optional[str] = None, + oauth2_permissions: Optional[List[pulumi.InputType['GetServicePrincipalOauth2PermissionArgs']]] = None, + object_id: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetServicePrincipalResult: """ Gets information about an existing Service Principal associated with an Application within Azure Active Directory. @@ -85,23 +131,10 @@ def get_service_principal(application_id=None,display_name=None,oauth2_permissio :param str application_id: The ID of the Azure AD Application. :param str display_name: The Display Name of the Azure AD Application associated with this Service Principal. - :param list oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. + :param List[pulumi.InputType['GetServicePrincipalOauth2PermissionArgs']] oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. :param str object_id: The ID of the Azure AD Service Principal. - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`str`) - The description of the admin consent - * `adminConsentDisplayName` (`str`) - The display name of the admin consent - * `id` (`str`) - The unique identifier of the `app_role`. - * `isEnabled` (`bool`) - Determines if the app role is enabled. - * `type` (`str`) - The type of the permission - * `userConsentDescription` (`str`) - The description of the user consent - * `userConsentDisplayName` (`str`) - The display name of the user consent - * `value` (`str`) - Specifies the value of the roles claim that the application should expect in the authentication and access tokens. """ __args__ = dict() - - __args__['applicationId'] = application_id __args__['displayName'] = display_name __args__['oauth2Permissions'] = oauth2_permissions @@ -109,13 +142,13 @@ def get_service_principal(application_id=None,display_name=None,oauth2_permissio if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getServicePrincipal:getServicePrincipal', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getServicePrincipal:getServicePrincipal', __args__, opts=opts, typ=GetServicePrincipalResult).value return AwaitableGetServicePrincipalResult( - app_roles=__ret__.get('appRoles'), - application_id=__ret__.get('applicationId'), - display_name=__ret__.get('displayName'), - id=__ret__.get('id'), - oauth2_permissions=__ret__.get('oauth2Permissions'), - object_id=__ret__.get('objectId')) + app_roles=__ret__.app_roles, + application_id=__ret__.application_id, + display_name=__ret__.display_name, + id=__ret__.id, + oauth2_permissions=__ret__.oauth2_permissions, + object_id=__ret__.object_id) diff --git a/sdk/python/pulumi_azuread/get_user.py b/sdk/python/pulumi_azuread/get_user.py index b15f88c7e..878e32ef9 100644 --- a/sdk/python/pulumi_azuread/get_user.py +++ b/sdk/python/pulumi_azuread/get_user.py @@ -5,9 +5,16 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +__all__ = [ + 'GetUserResult', + 'AwaitableGetUserResult', + 'get_user', +] + +@pulumi.output_type class GetUserResult: """ A collection of values returned by getUser. @@ -15,67 +22,124 @@ class GetUserResult: def __init__(__self__, account_enabled=None, display_name=None, id=None, immutable_id=None, mail=None, mail_nickname=None, object_id=None, onpremises_sam_account_name=None, onpremises_user_principal_name=None, usage_location=None, user_principal_name=None): if account_enabled and not isinstance(account_enabled, bool): raise TypeError("Expected argument 'account_enabled' to be a bool") - __self__.account_enabled = account_enabled + pulumi.set(__self__, "account_enabled", account_enabled) + if display_name and not isinstance(display_name, str): + raise TypeError("Expected argument 'display_name' to be a str") + pulumi.set(__self__, "display_name", display_name) + if id and not isinstance(id, str): + raise TypeError("Expected argument 'id' to be a str") + pulumi.set(__self__, "id", id) + if immutable_id and not isinstance(immutable_id, str): + raise TypeError("Expected argument 'immutable_id' to be a str") + pulumi.set(__self__, "immutable_id", immutable_id) + if mail and not isinstance(mail, str): + raise TypeError("Expected argument 'mail' to be a str") + pulumi.set(__self__, "mail", mail) + if mail_nickname and not isinstance(mail_nickname, str): + raise TypeError("Expected argument 'mail_nickname' to be a str") + pulumi.set(__self__, "mail_nickname", mail_nickname) + if object_id and not isinstance(object_id, str): + raise TypeError("Expected argument 'object_id' to be a str") + pulumi.set(__self__, "object_id", object_id) + if onpremises_sam_account_name and not isinstance(onpremises_sam_account_name, str): + raise TypeError("Expected argument 'onpremises_sam_account_name' to be a str") + pulumi.set(__self__, "onpremises_sam_account_name", onpremises_sam_account_name) + if onpremises_user_principal_name and not isinstance(onpremises_user_principal_name, str): + raise TypeError("Expected argument 'onpremises_user_principal_name' to be a str") + pulumi.set(__self__, "onpremises_user_principal_name", onpremises_user_principal_name) + if usage_location and not isinstance(usage_location, str): + raise TypeError("Expected argument 'usage_location' to be a str") + pulumi.set(__self__, "usage_location", usage_location) + if user_principal_name and not isinstance(user_principal_name, str): + raise TypeError("Expected argument 'user_principal_name' to be a str") + pulumi.set(__self__, "user_principal_name", user_principal_name) + + @property + @pulumi.getter(name="accountEnabled") + def account_enabled(self) -> bool: """ `True` if the account is enabled; otherwise `False`. """ - if display_name and not isinstance(display_name, str): - raise TypeError("Expected argument 'display_name' to be a str") - __self__.display_name = display_name + return pulumi.get(self, "account_enabled") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: """ The Display Name of the Azure AD User. """ - if id and not isinstance(id, str): - raise TypeError("Expected argument 'id' to be a str") - __self__.id = id + return pulumi.get(self, "display_name") + + @property + @pulumi.getter + def id(self) -> str: """ The provider-assigned unique ID for this managed resource. """ - if immutable_id and not isinstance(immutable_id, str): - raise TypeError("Expected argument 'immutable_id' to be a str") - __self__.immutable_id = immutable_id + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="immutableId") + def immutable_id(self) -> str: """ The value used to associate an on-premises Active Directory user account with their Azure AD user object. """ - if mail and not isinstance(mail, str): - raise TypeError("Expected argument 'mail' to be a str") - __self__.mail = mail + return pulumi.get(self, "immutable_id") + + @property + @pulumi.getter + def mail(self) -> str: """ The primary email address of the Azure AD User. """ - if mail_nickname and not isinstance(mail_nickname, str): - raise TypeError("Expected argument 'mail_nickname' to be a str") - __self__.mail_nickname = mail_nickname + return pulumi.get(self, "mail") + + @property + @pulumi.getter(name="mailNickname") + def mail_nickname(self) -> str: """ The email alias of the Azure AD User. """ - if object_id and not isinstance(object_id, str): - raise TypeError("Expected argument 'object_id' to be a str") - __self__.object_id = object_id - if onpremises_sam_account_name and not isinstance(onpremises_sam_account_name, str): - raise TypeError("Expected argument 'onpremises_sam_account_name' to be a str") - __self__.onpremises_sam_account_name = onpremises_sam_account_name + return pulumi.get(self, "mail_nickname") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="onpremisesSamAccountName") + def onpremises_sam_account_name(self) -> str: """ The on premise sam account name of the Azure AD User. """ - if onpremises_user_principal_name and not isinstance(onpremises_user_principal_name, str): - raise TypeError("Expected argument 'onpremises_user_principal_name' to be a str") - __self__.onpremises_user_principal_name = onpremises_user_principal_name + return pulumi.get(self, "onpremises_sam_account_name") + + @property + @pulumi.getter(name="onpremisesUserPrincipalName") + def onpremises_user_principal_name(self) -> str: """ The on premise user principal name of the Azure AD User. """ - if usage_location and not isinstance(usage_location, str): - raise TypeError("Expected argument 'usage_location' to be a str") - __self__.usage_location = usage_location + return pulumi.get(self, "onpremises_user_principal_name") + + @property + @pulumi.getter(name="usageLocation") + def usage_location(self) -> str: """ The usage location of the Azure AD User. """ - if user_principal_name and not isinstance(user_principal_name, str): - raise TypeError("Expected argument 'user_principal_name' to be a str") - __self__.user_principal_name = user_principal_name + return pulumi.get(self, "usage_location") + + @property + @pulumi.getter(name="userPrincipalName") + def user_principal_name(self) -> str: """ The User Principal Name of the Azure AD User. """ + return pulumi.get(self, "user_principal_name") + + class AwaitableGetUserResult(GetUserResult): # pylint: disable=using-constant-test def __await__(self): @@ -94,7 +158,11 @@ def __await__(self): usage_location=self.usage_location, user_principal_name=self.user_principal_name) -def get_user(mail_nickname=None,object_id=None,user_principal_name=None,opts=None): + +def get_user(mail_nickname: Optional[str] = None, + object_id: Optional[str] = None, + user_principal_name: Optional[str] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetUserResult: """ Gets information about an Azure Active Directory user. @@ -115,26 +183,24 @@ def get_user(mail_nickname=None,object_id=None,user_principal_name=None,opts=Non :param str user_principal_name: The User Principal Name of the Azure AD User. """ __args__ = dict() - - __args__['mailNickname'] = mail_nickname __args__['objectId'] = object_id __args__['userPrincipalName'] = user_principal_name if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getUser:getUser', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getUser:getUser', __args__, opts=opts, typ=GetUserResult).value return AwaitableGetUserResult( - account_enabled=__ret__.get('accountEnabled'), - display_name=__ret__.get('displayName'), - id=__ret__.get('id'), - immutable_id=__ret__.get('immutableId'), - mail=__ret__.get('mail'), - mail_nickname=__ret__.get('mailNickname'), - object_id=__ret__.get('objectId'), - onpremises_sam_account_name=__ret__.get('onpremisesSamAccountName'), - onpremises_user_principal_name=__ret__.get('onpremisesUserPrincipalName'), - usage_location=__ret__.get('usageLocation'), - user_principal_name=__ret__.get('userPrincipalName')) + account_enabled=__ret__.account_enabled, + display_name=__ret__.display_name, + id=__ret__.id, + immutable_id=__ret__.immutable_id, + mail=__ret__.mail, + mail_nickname=__ret__.mail_nickname, + object_id=__ret__.object_id, + onpremises_sam_account_name=__ret__.onpremises_sam_account_name, + onpremises_user_principal_name=__ret__.onpremises_user_principal_name, + usage_location=__ret__.usage_location, + user_principal_name=__ret__.user_principal_name) diff --git a/sdk/python/pulumi_azuread/get_users.py b/sdk/python/pulumi_azuread/get_users.py index c97f2ee91..c8e785c46 100644 --- a/sdk/python/pulumi_azuread/get_users.py +++ b/sdk/python/pulumi_azuread/get_users.py @@ -5,9 +5,17 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +__all__ = [ + 'GetUsersResult', + 'AwaitableGetUsersResult', + 'get_users', +] + +@pulumi.output_type class GetUsersResult: """ A collection of values returned by getUsers. @@ -15,37 +23,69 @@ class GetUsersResult: def __init__(__self__, id=None, ignore_missing=None, mail_nicknames=None, object_ids=None, user_principal_names=None, users=None): if id and not isinstance(id, str): raise TypeError("Expected argument 'id' to be a str") - __self__.id = id - """ - The provider-assigned unique ID for this managed resource. - """ + pulumi.set(__self__, "id", id) if ignore_missing and not isinstance(ignore_missing, bool): raise TypeError("Expected argument 'ignore_missing' to be a bool") - __self__.ignore_missing = ignore_missing + pulumi.set(__self__, "ignore_missing", ignore_missing) if mail_nicknames and not isinstance(mail_nicknames, list): raise TypeError("Expected argument 'mail_nicknames' to be a list") - __self__.mail_nicknames = mail_nicknames + pulumi.set(__self__, "mail_nicknames", mail_nicknames) + if object_ids and not isinstance(object_ids, list): + raise TypeError("Expected argument 'object_ids' to be a list") + pulumi.set(__self__, "object_ids", object_ids) + if user_principal_names and not isinstance(user_principal_names, list): + raise TypeError("Expected argument 'user_principal_names' to be a list") + pulumi.set(__self__, "user_principal_names", user_principal_names) + if users and not isinstance(users, list): + raise TypeError("Expected argument 'users' to be a list") + pulumi.set(__self__, "users", users) + + @property + @pulumi.getter + def id(self) -> str: + """ + The provider-assigned unique ID for this managed resource. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="ignoreMissing") + def ignore_missing(self) -> Optional[bool]: + return pulumi.get(self, "ignore_missing") + + @property + @pulumi.getter(name="mailNicknames") + def mail_nicknames(self) -> List[str]: """ The email aliases of the Azure AD Users. """ - if object_ids and not isinstance(object_ids, list): - raise TypeError("Expected argument 'object_ids' to be a list") - __self__.object_ids = object_ids + return pulumi.get(self, "mail_nicknames") + + @property + @pulumi.getter(name="objectIds") + def object_ids(self) -> List[str]: """ The Object IDs of the Azure AD Users. """ - if user_principal_names and not isinstance(user_principal_names, list): - raise TypeError("Expected argument 'user_principal_names' to be a list") - __self__.user_principal_names = user_principal_names + return pulumi.get(self, "object_ids") + + @property + @pulumi.getter(name="userPrincipalNames") + def user_principal_names(self) -> List[str]: """ The User Principal Names of the Azure AD Users. """ - if users and not isinstance(users, list): - raise TypeError("Expected argument 'users' to be a list") - __self__.users = users + return pulumi.get(self, "user_principal_names") + + @property + @pulumi.getter + def users(self) -> List['outputs.GetUsersUserResult']: """ An Array of Azure AD Users. Each `user` object consists of the fields documented below. """ + return pulumi.get(self, "users") + + class AwaitableGetUsersResult(GetUsersResult): # pylint: disable=using-constant-test def __await__(self): @@ -59,7 +99,12 @@ def __await__(self): user_principal_names=self.user_principal_names, users=self.users) -def get_users(ignore_missing=None,mail_nicknames=None,object_ids=None,user_principal_names=None,opts=None): + +def get_users(ignore_missing: Optional[bool] = None, + mail_nicknames: Optional[List[str]] = None, + object_ids: Optional[List[str]] = None, + user_principal_names: Optional[List[str]] = None, + opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetUsersResult: """ Gets Object IDs or UPNs for multiple Azure Active Directory users. @@ -79,13 +124,11 @@ def get_users(ignore_missing=None,mail_nicknames=None,object_ids=None,user_princ :param bool ignore_missing: Ignore missing users and return users that were found. The data source will still fail if no users are found. Defaults to false. - :param list mail_nicknames: The email aliases of the Azure AD Users. - :param list object_ids: The Object IDs of the Azure AD Users. - :param list user_principal_names: The User Principal Names of the Azure AD Users. + :param List[str] mail_nicknames: The email aliases of the Azure AD Users. + :param List[str] object_ids: The Object IDs of the Azure AD Users. + :param List[str] user_principal_names: The User Principal Names of the Azure AD Users. """ __args__ = dict() - - __args__['ignoreMissing'] = ignore_missing __args__['mailNicknames'] = mail_nicknames __args__['objectIds'] = object_ids @@ -93,13 +136,13 @@ def get_users(ignore_missing=None,mail_nicknames=None,object_ids=None,user_princ if opts is None: opts = pulumi.InvokeOptions() if opts.version is None: - opts.version = utilities.get_version() - __ret__ = pulumi.runtime.invoke('azuread:index/getUsers:getUsers', __args__, opts=opts).value + opts.version = _utilities.get_version() + __ret__ = pulumi.runtime.invoke('azuread:index/getUsers:getUsers', __args__, opts=opts, typ=GetUsersResult).value return AwaitableGetUsersResult( - id=__ret__.get('id'), - ignore_missing=__ret__.get('ignoreMissing'), - mail_nicknames=__ret__.get('mailNicknames'), - object_ids=__ret__.get('objectIds'), - user_principal_names=__ret__.get('userPrincipalNames'), - users=__ret__.get('users')) + id=__ret__.id, + ignore_missing=__ret__.ignore_missing, + mail_nicknames=__ret__.mail_nicknames, + object_ids=__ret__.object_ids, + user_principal_names=__ret__.user_principal_names, + users=__ret__.users) diff --git a/sdk/python/pulumi_azuread/group.py b/sdk/python/pulumi_azuread/group.py index 9d00021a8..47ad96506 100644 --- a/sdk/python/pulumi_azuread/group.py +++ b/sdk/python/pulumi_azuread/group.py @@ -5,33 +5,24 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['Group'] class Group(pulumi.CustomResource): - description: pulumi.Output[str] - """ - The description for the Group. Changing this forces a new resource to be created. - """ - members: pulumi.Output[list] - """ - A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. - """ - name: pulumi.Output[str] - """ - The display name for the Group. Changing this forces a new resource to be created. - """ - object_id: pulumi.Output[str] - owners: pulumi.Output[list] - """ - A set of owners who own this Group. Supported Object types are Users or Service Principals. - """ - prevent_duplicate_names: pulumi.Output[bool] - """ - If `true`, will return an error when an existing Group is found with the same name. Defaults to `false`. - """ - def __init__(__self__, resource_name, opts=None, description=None, members=None, name=None, owners=None, prevent_duplicate_names=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + members: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + owners: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + prevent_duplicate_names: Optional[pulumi.Input[bool]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Group within Azure Active Directory. @@ -64,9 +55,9 @@ def __init__(__self__, resource_name, opts=None, description=None, members=None, :param str resource_name: The name of the resource. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: The description for the Group. Changing this forces a new resource to be created. - :param pulumi.Input[list] members: A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. + :param pulumi.Input[List[pulumi.Input[str]]] members: A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. :param pulumi.Input[str] name: The display name for the Group. Changing this forces a new resource to be created. - :param pulumi.Input[list] owners: A set of owners who own this Group. Supported Object types are Users or Service Principals. + :param pulumi.Input[List[pulumi.Input[str]]] owners: A set of owners who own this Group. Supported Object types are Users or Service Principals. :param pulumi.Input[bool] prevent_duplicate_names: If `true`, will return an error when an existing Group is found with the same name. Defaults to `false`. """ if __name__ is not None: @@ -80,7 +71,7 @@ def __init__(__self__, resource_name, opts=None, description=None, members=None, if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -99,18 +90,26 @@ def __init__(__self__, resource_name, opts=None, description=None, members=None, opts) @staticmethod - def get(resource_name, id, opts=None, description=None, members=None, name=None, object_id=None, owners=None, prevent_duplicate_names=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + members: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + name: Optional[pulumi.Input[str]] = None, + object_id: Optional[pulumi.Input[str]] = None, + owners: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + prevent_duplicate_names: Optional[pulumi.Input[bool]] = None) -> 'Group': """ Get an existing Group resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: The description for the Group. Changing this forces a new resource to be created. - :param pulumi.Input[list] members: A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. + :param pulumi.Input[List[pulumi.Input[str]]] members: A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. :param pulumi.Input[str] name: The display name for the Group. Changing this forces a new resource to be created. - :param pulumi.Input[list] owners: A set of owners who own this Group. Supported Object types are Users or Service Principals. + :param pulumi.Input[List[pulumi.Input[str]]] owners: A set of owners who own this Group. Supported Object types are Users or Service Principals. :param pulumi.Input[bool] prevent_duplicate_names: If `true`, will return an error when an existing Group is found with the same name. Defaults to `false`. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -125,8 +124,54 @@ def get(resource_name, id, opts=None, description=None, members=None, name=None, __props__["prevent_duplicate_names"] = prevent_duplicate_names return Group(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter + def description(self) -> Optional[str]: + """ + The description for the Group. Changing this forces a new resource to be created. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter + def members(self) -> List[str]: + """ + A set of members who should be present in this Group. Supported Object types are Users, Groups or Service Principals. + """ + return pulumi.get(self, "members") + + @property + @pulumi.getter + def name(self) -> str: + """ + The display name for the Group. Changing this forces a new resource to be created. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + @property + @pulumi.getter + def owners(self) -> List[str]: + """ + A set of owners who own this Group. Supported Object types are Users or Service Principals. + """ + return pulumi.get(self, "owners") + + @property + @pulumi.getter(name="preventDuplicateNames") + def prevent_duplicate_names(self) -> Optional[bool]: + """ + If `true`, will return an error when an existing Group is found with the same name. Defaults to `false`. + """ + return pulumi.get(self, "prevent_duplicate_names") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/group_member.py b/sdk/python/pulumi_azuread/group_member.py index 6f292a857..b1a51dace 100644 --- a/sdk/python/pulumi_azuread/group_member.py +++ b/sdk/python/pulumi_azuread/group_member.py @@ -5,20 +5,21 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['GroupMember'] class GroupMember(pulumi.CustomResource): - group_object_id: pulumi.Output[str] - """ - The Object ID of the Azure AD Group you want to add the Member to. Changing this forces a new resource to be created. - """ - member_object_id: pulumi.Output[str] - """ - The Object ID of the Azure AD Object you want to add as a Member to the Group. Supported Object types are Users, Groups or Service Principals. Changing this forces a new resource to be created. - """ - def __init__(__self__, resource_name, opts=None, group_object_id=None, member_object_id=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + group_object_id: Optional[pulumi.Input[str]] = None, + member_object_id: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a single Group Membership within Azure Active Directory. @@ -53,7 +54,7 @@ def __init__(__self__, resource_name, opts=None, group_object_id=None, member_ob if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -72,13 +73,17 @@ def __init__(__self__, resource_name, opts=None, group_object_id=None, member_ob opts) @staticmethod - def get(resource_name, id, opts=None, group_object_id=None, member_object_id=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + group_object_id: Optional[pulumi.Input[str]] = None, + member_object_id: Optional[pulumi.Input[str]] = None) -> 'GroupMember': """ Get an existing GroupMember resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] group_object_id: The Object ID of the Azure AD Group you want to add the Member to. Changing this forces a new resource to be created. :param pulumi.Input[str] member_object_id: The Object ID of the Azure AD Object you want to add as a Member to the Group. Supported Object types are Users, Groups or Service Principals. Changing this forces a new resource to be created. @@ -91,8 +96,25 @@ def get(resource_name, id, opts=None, group_object_id=None, member_object_id=Non __props__["member_object_id"] = member_object_id return GroupMember(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="groupObjectId") + def group_object_id(self) -> str: + """ + The Object ID of the Azure AD Group you want to add the Member to. Changing this forces a new resource to be created. + """ + return pulumi.get(self, "group_object_id") + + @property + @pulumi.getter(name="memberObjectId") + def member_object_id(self) -> str: + """ + The Object ID of the Azure AD Object you want to add as a Member to the Group. Supported Object types are Users, Groups or Service Principals. Changing this forces a new resource to be created. + """ + return pulumi.get(self, "member_object_id") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/outputs.py b/sdk/python/pulumi_azuread/outputs.py new file mode 100644 index 000000000..b8e2b1481 --- /dev/null +++ b/sdk/python/pulumi_azuread/outputs.py @@ -0,0 +1,1224 @@ +# coding=utf-8 +# *** 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! *** + +import warnings +import pulumi +import pulumi.runtime +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs + +__all__ = [ + 'ApplicationAppRole', + 'ApplicationOauth2Permission', + 'ApplicationOptionalClaims', + 'ApplicationOptionalClaimsAccessToken', + 'ApplicationOptionalClaimsIdToken', + 'ApplicationRequiredResourceAccess', + 'ApplicationRequiredResourceAccessResourceAccess', + 'ServicePrincipalOauth2Permission', + 'GetApplicationAppRoleResult', + 'GetApplicationOauth2PermissionResult', + 'GetApplicationOptionalClaimsResult', + 'GetApplicationOptionalClaimsAccessTokenResult', + 'GetApplicationOptionalClaimsIdTokenResult', + 'GetApplicationRequiredResourceAccessResult', + 'GetApplicationRequiredResourceAccessResourceAccessResult', + 'GetDomainsDomainResult', + 'GetServicePrincipalAppRoleResult', + 'GetServicePrincipalOauth2PermissionResult', + 'GetUsersUserResult', +] + +@pulumi.output_type +class ApplicationAppRole(dict): + def __init__(__self__, *, + allowed_member_types: List[str], + description: str, + display_name: str, + id: Optional[str] = None, + is_enabled: Optional[bool] = None, + value: Optional[str] = None): + """ + :param List[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. + :param str description: Permission help text that appears in the admin app assignment and consent experiences. + :param str display_name: Display name for the permission that appears in the admin consent and app assignment experiences. + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the permission is enabled: defaults to `true`. + :param str value: The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. + """ + pulumi.set(__self__, "allowed_member_types", allowed_member_types) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="allowedMemberTypes") + def allowed_member_types(self) -> List[str]: + """ + Specifies whether this app role definition can be assigned to users and groups by setting to `User`, or to other applications (that are accessing this application in daemon service scenarios) by setting to `Application`, or to both. + """ + return pulumi.get(self, "allowed_member_types") + + @property + @pulumi.getter + def description(self) -> str: + """ + Permission help text that appears in the admin app assignment and consent experiences. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter + def id(self) -> Optional[str]: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[bool]: + """ + Determines if the permission is enabled: defaults to `true`. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def value(self) -> Optional[str]: + """ + The value of the scope claim that the resource application should expect in the OAuth 2.0 access token. + """ + return pulumi.get(self, "value") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationOauth2Permission(dict): + def __init__(__self__, *, + admin_consent_description: Optional[str] = None, + admin_consent_display_name: Optional[str] = None, + id: Optional[str] = None, + is_enabled: Optional[bool] = None, + type: Optional[str] = None, + user_consent_description: Optional[str] = None, + user_consent_display_name: Optional[str] = None, + value: Optional[str] = None): + """ + :param str admin_consent_description: Permission help text that appears in the admin consent and app assignment experiences. + :param str admin_consent_display_name: Display name for the permission that appears in the admin consent and app assignment experiences. + :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + :param bool is_enabled: Determines if the app role is enabled: Defaults to `true`. + :param str type: Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. + :param str user_consent_description: Permission help text that appears in the end user consent experience. + :param str user_consent_display_name: Display name for the permission that appears in the end user consent experience. + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + if admin_consent_description is not None: + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + if admin_consent_display_name is not None: + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if type is not None: + pulumi.set(__self__, "type", type) + if user_consent_description is not None: + pulumi.set(__self__, "user_consent_description", user_consent_description) + if user_consent_display_name is not None: + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> Optional[str]: + """ + Permission help text that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "admin_consent_description") + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> Optional[str]: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "admin_consent_display_name") + + @property + @pulumi.getter + def id(self) -> Optional[str]: + """ + The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[bool]: + """ + Determines if the app role is enabled: Defaults to `true`. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + Type of an application: `webapp/api` or `native`. Defaults to `webapp/api`. For `native` apps type `identifier_uris` property can not not be set. + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> Optional[str]: + """ + Permission help text that appears in the end user consent experience. + """ + return pulumi.get(self, "user_consent_description") + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> Optional[str]: + """ + Display name for the permission that appears in the end user consent experience. + """ + return pulumi.get(self, "user_consent_display_name") + + @property + @pulumi.getter + def value(self) -> Optional[str]: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationOptionalClaims(dict): + def __init__(__self__, *, + access_tokens: Optional[List['outputs.ApplicationOptionalClaimsAccessToken']] = None, + id_tokens: Optional[List['outputs.ApplicationOptionalClaimsIdToken']] = None): + if access_tokens is not None: + pulumi.set(__self__, "access_tokens", access_tokens) + if id_tokens is not None: + pulumi.set(__self__, "id_tokens", id_tokens) + + @property + @pulumi.getter(name="accessTokens") + def access_tokens(self) -> Optional[List['outputs.ApplicationOptionalClaimsAccessToken']]: + return pulumi.get(self, "access_tokens") + + @property + @pulumi.getter(name="idTokens") + def id_tokens(self) -> Optional[List['outputs.ApplicationOptionalClaimsIdToken']]: + return pulumi.get(self, "id_tokens") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationOptionalClaimsAccessToken(dict): + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: The name of the optional claim. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + The name of the optional claim. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationOptionalClaimsIdToken(dict): + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: The display name for the application. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + The display name for the application. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationRequiredResourceAccess(dict): + def __init__(__self__, *, + resource_accesses: List['outputs.ApplicationRequiredResourceAccessResourceAccess'], + resource_app_id: str): + """ + :param List['ApplicationRequiredResourceAccessResourceAccessArgs'] resource_accesses: A collection of `resource_access` blocks as documented below. + :param str resource_app_id: The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. + """ + pulumi.set(__self__, "resource_accesses", resource_accesses) + pulumi.set(__self__, "resource_app_id", resource_app_id) + + @property + @pulumi.getter(name="resourceAccesses") + def resource_accesses(self) -> List['outputs.ApplicationRequiredResourceAccessResourceAccess']: + """ + A collection of `resource_access` blocks as documented below. + """ + return pulumi.get(self, "resource_accesses") + + @property + @pulumi.getter(name="resourceAppId") + def resource_app_id(self) -> str: + """ + The unique identifier for the resource that the application requires access to. This should be equal to the appId declared on the target resource application. + """ + return pulumi.get(self, "resource_app_id") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ApplicationRequiredResourceAccessResourceAccess(dict): + def __init__(__self__, *, + id: str, + type: str): + """ + :param str id: The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + :param str type: Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. + """ + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier for one of the `OAuth2Permission` or `AppRole` instances that the resource application exposes. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter + def type(self) -> str: + """ + Specifies whether the id property references an `OAuth2Permission` or an `AppRole`. Possible values are `Scope` or `Role`. + """ + return pulumi.get(self, "type") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class ServicePrincipalOauth2Permission(dict): + def __init__(__self__, *, + admin_consent_description: Optional[str] = None, + admin_consent_display_name: Optional[str] = None, + id: Optional[str] = None, + is_enabled: Optional[bool] = None, + type: Optional[str] = None, + user_consent_description: Optional[str] = None, + user_consent_display_name: Optional[str] = None, + value: Optional[str] = None): + """ + :param str admin_consent_description: The description of the admin consent. + :param str admin_consent_display_name: The display name of the admin consent. + :param str id: The unique identifier for one of the `OAuth2Permission`. + :param bool is_enabled: Is this permission enabled? + :param str type: The type of the permission. + :param str user_consent_description: The description of the user consent. + :param str user_consent_display_name: The display name of the user consent. + :param str value: The name of this permission. + """ + if admin_consent_description is not None: + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + if admin_consent_display_name is not None: + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + if id is not None: + pulumi.set(__self__, "id", id) + if is_enabled is not None: + pulumi.set(__self__, "is_enabled", is_enabled) + if type is not None: + pulumi.set(__self__, "type", type) + if user_consent_description is not None: + pulumi.set(__self__, "user_consent_description", user_consent_description) + if user_consent_display_name is not None: + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + if value is not None: + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> Optional[str]: + """ + The description of the admin consent. + """ + return pulumi.get(self, "admin_consent_description") + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> Optional[str]: + """ + The display name of the admin consent. + """ + return pulumi.get(self, "admin_consent_display_name") + + @property + @pulumi.getter + def id(self) -> Optional[str]: + """ + The unique identifier for one of the `OAuth2Permission`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> Optional[bool]: + """ + Is this permission enabled? + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The type of the permission. + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> Optional[str]: + """ + The description of the user consent. + """ + return pulumi.get(self, "user_consent_description") + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> Optional[str]: + """ + The display name of the user consent. + """ + return pulumi.get(self, "user_consent_display_name") + + @property + @pulumi.getter + def value(self) -> Optional[str]: + """ + The name of this permission. + """ + return pulumi.get(self, "value") + + def _translate_property(self, prop): + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + + +@pulumi.output_type +class GetApplicationAppRoleResult(dict): + def __init__(__self__, *, + allowed_member_types: List[str], + description: str, + display_name: str, + id: str, + is_enabled: bool, + value: str): + """ + :param List[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both. + :param str description: Permission help text that appears in the admin app assignment and consent experiences. + :param str display_name: Display name for the permission that appears in the admin consent and app assignment experiences. + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "allowed_member_types", allowed_member_types) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="allowedMemberTypes") + def allowed_member_types(self) -> List[str]: + """ + Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both. + """ + return pulumi.get(self, "allowed_member_types") + + @property + @pulumi.getter + def description(self) -> str: + """ + Permission help text that appears in the admin app assignment and consent experiences. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + Display name for the permission that appears in the admin consent and app assignment experiences. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + +@pulumi.output_type +class GetApplicationOauth2PermissionResult(dict): + def __init__(__self__, *, + admin_consent_description: str, + admin_consent_display_name: str, + id: str, + is_enabled: bool, + type: str, + user_consent_description: str, + user_consent_display_name: str, + value: str): + """ + :param str admin_consent_description: The description of the admin consent + :param str admin_consent_display_name: The display name of the admin consent + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str type: The type of the permission + :param str user_consent_description: The description of the user consent + :param str user_consent_display_name: The display name of the user consent + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "type", type) + pulumi.set(__self__, "user_consent_description", user_consent_description) + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> str: + """ + The description of the admin consent + """ + return pulumi.get(self, "admin_consent_description") + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> str: + """ + The display name of the admin consent + """ + return pulumi.get(self, "admin_consent_display_name") + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the permission + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> str: + """ + The description of the user consent + """ + return pulumi.get(self, "user_consent_description") + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> str: + """ + The display name of the user consent + """ + return pulumi.get(self, "user_consent_display_name") + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + +@pulumi.output_type +class GetApplicationOptionalClaimsResult(dict): + def __init__(__self__, *, + access_tokens: Optional[List['outputs.GetApplicationOptionalClaimsAccessTokenResult']] = None, + id_tokens: Optional[List['outputs.GetApplicationOptionalClaimsIdTokenResult']] = None): + if access_tokens is not None: + pulumi.set(__self__, "access_tokens", access_tokens) + if id_tokens is not None: + pulumi.set(__self__, "id_tokens", id_tokens) + + @property + @pulumi.getter(name="accessTokens") + def access_tokens(self) -> Optional[List['outputs.GetApplicationOptionalClaimsAccessTokenResult']]: + return pulumi.get(self, "access_tokens") + + @property + @pulumi.getter(name="idTokens") + def id_tokens(self) -> Optional[List['outputs.GetApplicationOptionalClaimsIdTokenResult']]: + return pulumi.get(self, "id_tokens") + + +@pulumi.output_type +class GetApplicationOptionalClaimsAccessTokenResult(dict): + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: Specifies the name of the Application within Azure Active Directory. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + Specifies the name of the Application within Azure Active Directory. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + +@pulumi.output_type +class GetApplicationOptionalClaimsIdTokenResult(dict): + def __init__(__self__, *, + name: str, + additional_properties: Optional[List[str]] = None, + essential: Optional[bool] = None, + source: Optional[str] = None): + """ + :param str name: Specifies the name of the Application within Azure Active Directory. + :param List[str] additional_properties: List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + :param bool essential: Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + :param str source: The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + pulumi.set(__self__, "name", name) + if additional_properties is not None: + pulumi.set(__self__, "additional_properties", additional_properties) + if essential is not None: + pulumi.set(__self__, "essential", essential) + if source is not None: + pulumi.set(__self__, "source", source) + + @property + @pulumi.getter + def name(self) -> str: + """ + Specifies the name of the Application within Azure Active Directory. + """ + return pulumi.get(self, "name") + + @property + @pulumi.getter(name="additionalProperties") + def additional_properties(self) -> Optional[List[str]]: + """ + List of Additional Properties of the claim. If a property exists in this list, it modifies the behaviour of the optional claim. + """ + return pulumi.get(self, "additional_properties") + + @property + @pulumi.getter + def essential(self) -> Optional[bool]: + """ + Whether the claim specified by the client is necessary to ensure a smooth authorization experience. + """ + return pulumi.get(self, "essential") + + @property + @pulumi.getter + def source(self) -> Optional[str]: + """ + The source of the claim. If `source` is absent, the claim is a predefined optional claim. If `source` is `user`, the value of `name` is the extension property from the user object. + """ + return pulumi.get(self, "source") + + +@pulumi.output_type +class GetApplicationRequiredResourceAccessResult(dict): + def __init__(__self__, *, + resource_accesses: List['outputs.GetApplicationRequiredResourceAccessResourceAccessResult'], + resource_app_id: str): + """ + :param List['GetApplicationRequiredResourceAccessResourceAccessArgs'] resource_accesses: A collection of `resource_access` blocks as documented below + :param str resource_app_id: The unique identifier for the resource that the application requires access to. + """ + pulumi.set(__self__, "resource_accesses", resource_accesses) + pulumi.set(__self__, "resource_app_id", resource_app_id) + + @property + @pulumi.getter(name="resourceAccesses") + def resource_accesses(self) -> List['outputs.GetApplicationRequiredResourceAccessResourceAccessResult']: + """ + A collection of `resource_access` blocks as documented below + """ + return pulumi.get(self, "resource_accesses") + + @property + @pulumi.getter(name="resourceAppId") + def resource_app_id(self) -> str: + """ + The unique identifier for the resource that the application requires access to. + """ + return pulumi.get(self, "resource_app_id") + + +@pulumi.output_type +class GetApplicationRequiredResourceAccessResourceAccessResult(dict): + def __init__(__self__, *, + id: str, + type: str): + """ + :param str id: The unique identifier of the `app_role`. + :param str type: The type of the permission + """ + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "type", type) + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the permission + """ + return pulumi.get(self, "type") + + +@pulumi.output_type +class GetDomainsDomainResult(dict): + def __init__(__self__, *, + authentication_type: str, + domain_name: str, + is_default: bool, + is_initial: bool, + is_verified: bool): + """ + :param str authentication_type: The authentication type of the domain (Managed or Federated). + :param str domain_name: The name of the domain. + :param bool is_default: `True` if this is the default domain that is used for user creation. + :param bool is_initial: `True` if this is the initial domain created by Azure Activie Directory. + :param bool is_verified: `True` if the domain has completed domain ownership verification. + """ + pulumi.set(__self__, "authentication_type", authentication_type) + pulumi.set(__self__, "domain_name", domain_name) + pulumi.set(__self__, "is_default", is_default) + pulumi.set(__self__, "is_initial", is_initial) + pulumi.set(__self__, "is_verified", is_verified) + + @property + @pulumi.getter(name="authenticationType") + def authentication_type(self) -> str: + """ + The authentication type of the domain (Managed or Federated). + """ + return pulumi.get(self, "authentication_type") + + @property + @pulumi.getter(name="domainName") + def domain_name(self) -> str: + """ + The name of the domain. + """ + return pulumi.get(self, "domain_name") + + @property + @pulumi.getter(name="isDefault") + def is_default(self) -> bool: + """ + `True` if this is the default domain that is used for user creation. + """ + return pulumi.get(self, "is_default") + + @property + @pulumi.getter(name="isInitial") + def is_initial(self) -> bool: + """ + `True` if this is the initial domain created by Azure Activie Directory. + """ + return pulumi.get(self, "is_initial") + + @property + @pulumi.getter(name="isVerified") + def is_verified(self) -> bool: + """ + `True` if the domain has completed domain ownership verification. + """ + return pulumi.get(self, "is_verified") + + +@pulumi.output_type +class GetServicePrincipalAppRoleResult(dict): + def __init__(__self__, *, + allowed_member_types: List[str], + description: str, + display_name: str, + id: str, + is_enabled: bool, + value: str): + """ + :param List[str] allowed_member_types: Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both. + :param str description: Permission help text that appears in the admin app assignment and consent experiences. + :param str display_name: The Display Name of the Azure AD Application associated with this Service Principal. + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "allowed_member_types", allowed_member_types) + pulumi.set(__self__, "description", description) + pulumi.set(__self__, "display_name", display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="allowedMemberTypes") + def allowed_member_types(self) -> List[str]: + """ + Specifies whether this app role definition can be assigned to users and groups, or to other applications (that are accessing this application in daemon service scenarios). Possible values are: `User` and `Application`, or both. + """ + return pulumi.get(self, "allowed_member_types") + + @property + @pulumi.getter + def description(self) -> str: + """ + Permission help text that appears in the admin app assignment and consent experiences. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + The Display Name of the Azure AD Application associated with this Service Principal. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + +@pulumi.output_type +class GetServicePrincipalOauth2PermissionResult(dict): + def __init__(__self__, *, + admin_consent_description: str, + admin_consent_display_name: str, + id: str, + is_enabled: bool, + type: str, + user_consent_description: str, + user_consent_display_name: str, + value: str): + """ + :param str admin_consent_description: The description of the admin consent + :param str admin_consent_display_name: The display name of the admin consent + :param str id: The unique identifier of the `app_role`. + :param bool is_enabled: Determines if the app role is enabled. + :param str type: The type of the permission + :param str user_consent_description: The description of the user consent + :param str user_consent_display_name: The display name of the user consent + :param str value: Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + pulumi.set(__self__, "admin_consent_description", admin_consent_description) + pulumi.set(__self__, "admin_consent_display_name", admin_consent_display_name) + pulumi.set(__self__, "id", id) + pulumi.set(__self__, "is_enabled", is_enabled) + pulumi.set(__self__, "type", type) + pulumi.set(__self__, "user_consent_description", user_consent_description) + pulumi.set(__self__, "user_consent_display_name", user_consent_display_name) + pulumi.set(__self__, "value", value) + + @property + @pulumi.getter(name="adminConsentDescription") + def admin_consent_description(self) -> str: + """ + The description of the admin consent + """ + return pulumi.get(self, "admin_consent_description") + + @property + @pulumi.getter(name="adminConsentDisplayName") + def admin_consent_display_name(self) -> str: + """ + The display name of the admin consent + """ + return pulumi.get(self, "admin_consent_display_name") + + @property + @pulumi.getter + def id(self) -> str: + """ + The unique identifier of the `app_role`. + """ + return pulumi.get(self, "id") + + @property + @pulumi.getter(name="isEnabled") + def is_enabled(self) -> bool: + """ + Determines if the app role is enabled. + """ + return pulumi.get(self, "is_enabled") + + @property + @pulumi.getter + def type(self) -> str: + """ + The type of the permission + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter(name="userConsentDescription") + def user_consent_description(self) -> str: + """ + The description of the user consent + """ + return pulumi.get(self, "user_consent_description") + + @property + @pulumi.getter(name="userConsentDisplayName") + def user_consent_display_name(self) -> str: + """ + The display name of the user consent + """ + return pulumi.get(self, "user_consent_display_name") + + @property + @pulumi.getter + def value(self) -> str: + """ + Specifies the value of the roles claim that the application should expect in the authentication and access tokens. + """ + return pulumi.get(self, "value") + + +@pulumi.output_type +class GetUsersUserResult(dict): + def __init__(__self__, *, + account_enabled: bool, + display_name: str, + immutable_id: str, + mail: str, + mail_nickname: str, + object_id: str, + onpremises_sam_account_name: str, + onpremises_user_principal_name: str, + usage_location: str, + user_principal_name: str): + """ + :param bool account_enabled: `True` if the account is enabled; otherwise `False`. + :param str display_name: The Display Name of the Azure AD User. + :param str immutable_id: The value used to associate an on-premises Active Directory user account with their Azure AD user object. + :param str mail: The primary email address of the Azure AD User. + :param str mail_nickname: The email alias of the Azure AD User. + :param str onpremises_sam_account_name: The on premise sam account name of the Azure AD User. + :param str onpremises_user_principal_name: The on premise user principal name of the Azure AD User. + :param str usage_location: The usage location of the Azure AD User. + :param str user_principal_name: The User Principal Name of the Azure AD User. + """ + pulumi.set(__self__, "account_enabled", account_enabled) + pulumi.set(__self__, "display_name", display_name) + pulumi.set(__self__, "immutable_id", immutable_id) + pulumi.set(__self__, "mail", mail) + pulumi.set(__self__, "mail_nickname", mail_nickname) + pulumi.set(__self__, "object_id", object_id) + pulumi.set(__self__, "onpremises_sam_account_name", onpremises_sam_account_name) + pulumi.set(__self__, "onpremises_user_principal_name", onpremises_user_principal_name) + pulumi.set(__self__, "usage_location", usage_location) + pulumi.set(__self__, "user_principal_name", user_principal_name) + + @property + @pulumi.getter(name="accountEnabled") + def account_enabled(self) -> bool: + """ + `True` if the account is enabled; otherwise `False`. + """ + return pulumi.get(self, "account_enabled") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + The Display Name of the Azure AD User. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="immutableId") + def immutable_id(self) -> str: + """ + The value used to associate an on-premises Active Directory user account with their Azure AD user object. + """ + return pulumi.get(self, "immutable_id") + + @property + @pulumi.getter + def mail(self) -> str: + """ + The primary email address of the Azure AD User. + """ + return pulumi.get(self, "mail") + + @property + @pulumi.getter(name="mailNickname") + def mail_nickname(self) -> str: + """ + The email alias of the Azure AD User. + """ + return pulumi.get(self, "mail_nickname") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="onpremisesSamAccountName") + def onpremises_sam_account_name(self) -> str: + """ + The on premise sam account name of the Azure AD User. + """ + return pulumi.get(self, "onpremises_sam_account_name") + + @property + @pulumi.getter(name="onpremisesUserPrincipalName") + def onpremises_user_principal_name(self) -> str: + """ + The on premise user principal name of the Azure AD User. + """ + return pulumi.get(self, "onpremises_user_principal_name") + + @property + @pulumi.getter(name="usageLocation") + def usage_location(self) -> str: + """ + The usage location of the Azure AD User. + """ + return pulumi.get(self, "usage_location") + + @property + @pulumi.getter(name="userPrincipalName") + def user_principal_name(self) -> str: + """ + The User Principal Name of the Azure AD User. + """ + return pulumi.get(self, "user_principal_name") + + diff --git a/sdk/python/pulumi_azuread/provider.py b/sdk/python/pulumi_azuread/provider.py index df683c0ed..719fb6350 100644 --- a/sdk/python/pulumi_azuread/provider.py +++ b/sdk/python/pulumi_azuread/provider.py @@ -6,12 +6,28 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['Provider'] class Provider(pulumi.ProviderResource): - def __init__(__self__, resource_name, opts=None, client_certificate_password=None, client_certificate_path=None, client_id=None, client_secret=None, environment=None, msi_endpoint=None, subscription_id=None, tenant_id=None, use_msi=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + client_certificate_password: Optional[pulumi.Input[str]] = None, + client_certificate_path: Optional[pulumi.Input[str]] = None, + client_id: Optional[pulumi.Input[str]] = None, + client_secret: Optional[pulumi.Input[str]] = None, + environment: Optional[pulumi.Input[str]] = None, + msi_endpoint: Optional[pulumi.Input[str]] = None, + subscription_id: Optional[pulumi.Input[str]] = None, + tenant_id: Optional[pulumi.Input[str]] = None, + use_msi: Optional[pulumi.Input[bool]] = None, + __props__=None, + __name__=None, + __opts__=None): """ The provider type for the azuread package. By default, resources use package-wide configuration settings, however an explicit `Provider` instance may be created and passed during resource @@ -32,38 +48,38 @@ def __init__(__self__, resource_name, opts=None, client_certificate_password=Non if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') __props__ = dict() if client_certificate_password is None: - client_certificate_password = (utilities.get_env('ARM_CLIENT_CERTIFICATE_PASSWORD') or '') + client_certificate_password = (_utilities.get_env('ARM_CLIENT_CERTIFICATE_PASSWORD') or '') __props__['client_certificate_password'] = client_certificate_password if client_certificate_path is None: - client_certificate_path = (utilities.get_env('ARM_CLIENT_CERTIFICATE_PATH') or '') + client_certificate_path = (_utilities.get_env('ARM_CLIENT_CERTIFICATE_PATH') or '') __props__['client_certificate_path'] = client_certificate_path if client_id is None: - client_id = (utilities.get_env('ARM_CLIENT_ID') or '') + client_id = (_utilities.get_env('ARM_CLIENT_ID') or '') __props__['client_id'] = client_id if client_secret is None: - client_secret = (utilities.get_env('ARM_CLIENT_SECRET') or '') + client_secret = (_utilities.get_env('ARM_CLIENT_SECRET') or '') __props__['client_secret'] = client_secret if environment is None: - environment = (utilities.get_env('ARM_ENVIRONMENT') or 'public') + environment = (_utilities.get_env('ARM_ENVIRONMENT') or 'public') __props__['environment'] = environment if msi_endpoint is None: - msi_endpoint = (utilities.get_env('ARM_MSI_ENDPOINT') or '') + msi_endpoint = (_utilities.get_env('ARM_MSI_ENDPOINT') or '') __props__['msi_endpoint'] = msi_endpoint if subscription_id is None: - subscription_id = (utilities.get_env('ARM_SUBSCRIPTION_ID') or '') + subscription_id = (_utilities.get_env('ARM_SUBSCRIPTION_ID') or '') __props__['subscription_id'] = subscription_id if tenant_id is None: - tenant_id = (utilities.get_env('ARM_TENANT_ID') or '') + tenant_id = (_utilities.get_env('ARM_TENANT_ID') or '') __props__['tenant_id'] = tenant_id if use_msi is None: - use_msi = (utilities.get_env_bool('ARM_USE_MSI') or False) + use_msi = (_utilities.get_env_bool('ARM_USE_MSI') or False) __props__['use_msi'] = pulumi.Output.from_input(use_msi).apply(json.dumps) if use_msi is not None else None super(Provider, __self__).__init__( 'azuread', @@ -72,7 +88,8 @@ def __init__(__self__, resource_name, opts=None, client_certificate_password=Non opts) def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/service_principal.py b/sdk/python/pulumi_azuread/service_principal.py index 2966e053d..451353aee 100644 --- a/sdk/python/pulumi_azuread/service_principal.py +++ b/sdk/python/pulumi_azuread/service_principal.py @@ -5,45 +5,25 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables +from . import outputs +from ._inputs import * + +__all__ = ['ServicePrincipal'] class ServicePrincipal(pulumi.CustomResource): - app_role_assignment_required: pulumi.Output[bool] - """ - Does this Service Principal require an AppRoleAssignment to a user or group before Azure AD will issue a user or access token to the application? Defaults to `false`. - """ - application_id: pulumi.Output[str] - """ - The ID of the Azure AD Application for which to create a Service Principal. - """ - display_name: pulumi.Output[str] - """ - The Display Name of the Azure Active Directory Application associated with this Service Principal. - """ - oauth2_permissions: pulumi.Output[list] - """ - A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. - - * `adminConsentDescription` (`str`) - The description of the admin consent. - * `adminConsentDisplayName` (`str`) - The display name of the admin consent. - * `id` (`str`) - The unique identifier for one of the `OAuth2Permission`. - * `isEnabled` (`bool`) - Is this permission enabled? - * `type` (`str`) - The type of the permission. - * `userConsentDescription` (`str`) - The description of the user consent. - * `userConsentDisplayName` (`str`) - The display name of the user consent. - * `value` (`str`) - The name of this permission. - """ - object_id: pulumi.Output[str] - """ - The Service Principal's Object ID. - """ - tags: pulumi.Output[list] - """ - A list of tags to apply to the Service Principal. - """ - def __init__(__self__, resource_name, opts=None, app_role_assignment_required=None, application_id=None, oauth2_permissions=None, tags=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + app_role_assignment_required: Optional[pulumi.Input[bool]] = None, + application_id: Optional[pulumi.Input[str]] = None, + oauth2_permissions: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ServicePrincipalOauth2PermissionArgs']]]]] = None, + tags: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Service Principal associated with an Application within Azure Active Directory. @@ -75,19 +55,8 @@ def __init__(__self__, resource_name, opts=None, app_role_assignment_required=No :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[bool] app_role_assignment_required: Does this Service Principal require an AppRoleAssignment to a user or group before Azure AD will issue a user or access token to the application? Defaults to `false`. :param pulumi.Input[str] application_id: The ID of the Azure AD Application for which to create a Service Principal. - :param pulumi.Input[list] oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. - :param pulumi.Input[list] tags: A list of tags to apply to the Service Principal. - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`pulumi.Input[str]`) - The description of the admin consent. - * `adminConsentDisplayName` (`pulumi.Input[str]`) - The display name of the admin consent. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission`. - * `isEnabled` (`pulumi.Input[bool]`) - Is this permission enabled? - * `type` (`pulumi.Input[str]`) - The type of the permission. - * `userConsentDescription` (`pulumi.Input[str]`) - The description of the user consent. - * `userConsentDisplayName` (`pulumi.Input[str]`) - The display name of the user consent. - * `value` (`pulumi.Input[str]`) - The name of this permission. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ServicePrincipalOauth2PermissionArgs']]]] oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. + :param pulumi.Input[List[pulumi.Input[str]]] tags: A list of tags to apply to the Service Principal. """ if __name__ is not None: warnings.warn("explicit use of __name__ is deprecated", DeprecationWarning) @@ -100,7 +69,7 @@ def __init__(__self__, resource_name, opts=None, app_role_assignment_required=No if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -121,31 +90,28 @@ def __init__(__self__, resource_name, opts=None, app_role_assignment_required=No opts) @staticmethod - def get(resource_name, id, opts=None, app_role_assignment_required=None, application_id=None, display_name=None, oauth2_permissions=None, object_id=None, tags=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + app_role_assignment_required: Optional[pulumi.Input[bool]] = None, + application_id: Optional[pulumi.Input[str]] = None, + display_name: Optional[pulumi.Input[str]] = None, + oauth2_permissions: Optional[pulumi.Input[List[pulumi.Input[pulumi.InputType['ServicePrincipalOauth2PermissionArgs']]]]] = None, + object_id: Optional[pulumi.Input[str]] = None, + tags: Optional[pulumi.Input[List[pulumi.Input[str]]]] = None) -> 'ServicePrincipal': """ Get an existing ServicePrincipal resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[bool] app_role_assignment_required: Does this Service Principal require an AppRoleAssignment to a user or group before Azure AD will issue a user or access token to the application? Defaults to `false`. :param pulumi.Input[str] application_id: The ID of the Azure AD Application for which to create a Service Principal. :param pulumi.Input[str] display_name: The Display Name of the Azure Active Directory Application associated with this Service Principal. - :param pulumi.Input[list] oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. + :param pulumi.Input[List[pulumi.Input[pulumi.InputType['ServicePrincipalOauth2PermissionArgs']]]] oauth2_permissions: A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. :param pulumi.Input[str] object_id: The Service Principal's Object ID. - :param pulumi.Input[list] tags: A list of tags to apply to the Service Principal. - - The **oauth2_permissions** object supports the following: - - * `adminConsentDescription` (`pulumi.Input[str]`) - The description of the admin consent. - * `adminConsentDisplayName` (`pulumi.Input[str]`) - The display name of the admin consent. - * `id` (`pulumi.Input[str]`) - The unique identifier for one of the `OAuth2Permission`. - * `isEnabled` (`pulumi.Input[bool]`) - Is this permission enabled? - * `type` (`pulumi.Input[str]`) - The type of the permission. - * `userConsentDescription` (`pulumi.Input[str]`) - The description of the user consent. - * `userConsentDisplayName` (`pulumi.Input[str]`) - The display name of the user consent. - * `value` (`pulumi.Input[str]`) - The name of this permission. + :param pulumi.Input[List[pulumi.Input[str]]] tags: A list of tags to apply to the Service Principal. """ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id)) @@ -159,8 +125,57 @@ def get(resource_name, id, opts=None, app_role_assignment_required=None, applica __props__["tags"] = tags return ServicePrincipal(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="appRoleAssignmentRequired") + def app_role_assignment_required(self) -> Optional[bool]: + """ + Does this Service Principal require an AppRoleAssignment to a user or group before Azure AD will issue a user or access token to the application? Defaults to `false`. + """ + return pulumi.get(self, "app_role_assignment_required") + + @property + @pulumi.getter(name="applicationId") + def application_id(self) -> str: + """ + The ID of the Azure AD Application for which to create a Service Principal. + """ + return pulumi.get(self, "application_id") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + The Display Name of the Azure Active Directory Application associated with this Service Principal. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="oauth2Permissions") + def oauth2_permissions(self) -> List['outputs.ServicePrincipalOauth2Permission']: + """ + A collection of OAuth 2.0 permissions exposed by the associated application. Each permission is covered by a `oauth2_permission` block as documented below. + """ + return pulumi.get(self, "oauth2_permissions") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + """ + The Service Principal's Object ID. + """ + return pulumi.get(self, "object_id") + + @property + @pulumi.getter + def tags(self) -> Optional[List[str]]: + """ + A list of tags to apply to the Service Principal. + """ + return pulumi.get(self, "tags") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/service_principal_certificate.py b/sdk/python/pulumi_azuread/service_principal_certificate.py index 0336fc40a..68ba4f656 100644 --- a/sdk/python/pulumi_azuread/service_principal_certificate.py +++ b/sdk/python/pulumi_azuread/service_principal_certificate.py @@ -5,40 +5,26 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['ServicePrincipalCertificate'] class ServicePrincipalCertificate(pulumi.CustomResource): - end_date: pulumi.Output[str] - """ - The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. - """ - end_date_relative: pulumi.Output[str] - """ - A relative duration for which the Certificate is valid until, for example `240h` (10 days) or `2400h30m`. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Changing this field forces a new resource to be created. - """ - key_id: pulumi.Output[str] - """ - A GUID used to uniquely identify this Certificate. If not specified a GUID will be created. Changing this field forces a new resource to be created. - """ - service_principal_id: pulumi.Output[str] - """ - The ID of the Service Principal for which this certificate should be created. Changing this field forces a new resource to be created. - """ - start_date: pulumi.Output[str] - """ - The Start Date which the Certificate is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. - """ - type: pulumi.Output[str] - """ - The type of key/certificate. Must be one of `AsymmetricX509Cert` or `Symmetric`. Changing this fields forces a new resource to be created. - """ - value: pulumi.Output[str] - """ - The Certificate for this Service Principal. - """ - def __init__(__self__, resource_name, opts=None, end_date=None, end_date_relative=None, key_id=None, service_principal_id=None, start_date=None, type=None, value=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + service_principal_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Certificate associated with a Service Principal within Azure Active Directory. @@ -80,7 +66,7 @@ def __init__(__self__, resource_name, opts=None, end_date=None, end_date_relativ if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -104,13 +90,22 @@ def __init__(__self__, resource_name, opts=None, end_date=None, end_date_relativ opts) @staticmethod - def get(resource_name, id, opts=None, end_date=None, end_date_relative=None, key_id=None, service_principal_id=None, start_date=None, type=None, value=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + service_principal_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + type: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None) -> 'ServicePrincipalCertificate': """ Get an existing ServicePrincipalCertificate resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] end_date: The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. :param pulumi.Input[str] end_date_relative: A relative duration for which the Certificate is valid until, for example `240h` (10 days) or `2400h30m`. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Changing this field forces a new resource to be created. @@ -133,8 +128,65 @@ def get(resource_name, id, opts=None, end_date=None, end_date_relative=None, key __props__["value"] = value return ServicePrincipalCertificate(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + """ + The End Date which the Certificate is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="endDateRelative") + def end_date_relative(self) -> Optional[str]: + """ + A relative duration for which the Certificate is valid until, for example `240h` (10 days) or `2400h30m`. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date_relative") + + @property + @pulumi.getter(name="keyId") + def key_id(self) -> str: + """ + A GUID used to uniquely identify this Certificate. If not specified a GUID will be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "key_id") + + @property + @pulumi.getter(name="servicePrincipalId") + def service_principal_id(self) -> str: + """ + The ID of the Service Principal for which this certificate should be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "service_principal_id") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + """ + The Start Date which the Certificate is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "start_date") + + @property + @pulumi.getter + def type(self) -> Optional[str]: + """ + The type of key/certificate. Must be one of `AsymmetricX509Cert` or `Symmetric`. Changing this fields forces a new resource to be created. + """ + return pulumi.get(self, "type") + + @property + @pulumi.getter + def value(self) -> str: + """ + The Certificate for this Service Principal. + """ + return pulumi.get(self, "value") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/service_principal_password.py b/sdk/python/pulumi_azuread/service_principal_password.py index df17d75c8..3de192b92 100644 --- a/sdk/python/pulumi_azuread/service_principal_password.py +++ b/sdk/python/pulumi_azuread/service_principal_password.py @@ -5,40 +5,26 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['ServicePrincipalPassword'] class ServicePrincipalPassword(pulumi.CustomResource): - description: pulumi.Output[str] - """ - A description for the Password. - """ - end_date: pulumi.Output[str] - """ - The End Date which the Password is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. - """ - end_date_relative: pulumi.Output[str] - """ - A relative duration for which the Password is valid until, for example `240h` (10 days) or `2400h30m`. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Changing this field forces a new resource to be created. - """ - key_id: pulumi.Output[str] - """ - A GUID used to uniquely identify this Key. If not specified a GUID will be created. Changing this field forces a new resource to be created. - """ - service_principal_id: pulumi.Output[str] - """ - The ID of the Service Principal for which this password should be created. Changing this field forces a new resource to be created. - """ - start_date: pulumi.Output[str] - """ - The Start Date which the Password is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. - """ - value: pulumi.Output[str] - """ - The Password for this Service Principal. - """ - def __init__(__self__, resource_name, opts=None, description=None, end_date=None, end_date_relative=None, key_id=None, service_principal_id=None, start_date=None, value=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + service_principal_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a Password associated with a Service Principal within Azure Active Directory. @@ -80,7 +66,7 @@ def __init__(__self__, resource_name, opts=None, description=None, end_date=None if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -104,13 +90,22 @@ def __init__(__self__, resource_name, opts=None, description=None, end_date=None opts) @staticmethod - def get(resource_name, id, opts=None, description=None, end_date=None, end_date_relative=None, key_id=None, service_principal_id=None, start_date=None, value=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + description: Optional[pulumi.Input[str]] = None, + end_date: Optional[pulumi.Input[str]] = None, + end_date_relative: Optional[pulumi.Input[str]] = None, + key_id: Optional[pulumi.Input[str]] = None, + service_principal_id: Optional[pulumi.Input[str]] = None, + start_date: Optional[pulumi.Input[str]] = None, + value: Optional[pulumi.Input[str]] = None) -> 'ServicePrincipalPassword': """ Get an existing ServicePrincipalPassword resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[str] description: A description for the Password. :param pulumi.Input[str] end_date: The End Date which the Password is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. @@ -133,8 +128,65 @@ def get(resource_name, id, opts=None, description=None, end_date=None, end_date_ __props__["value"] = value return ServicePrincipalPassword(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter + def description(self) -> str: + """ + A description for the Password. + """ + return pulumi.get(self, "description") + + @property + @pulumi.getter(name="endDate") + def end_date(self) -> str: + """ + The End Date which the Password is valid until, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date") + + @property + @pulumi.getter(name="endDateRelative") + def end_date_relative(self) -> Optional[str]: + """ + A relative duration for which the Password is valid until, for example `240h` (10 days) or `2400h30m`. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "end_date_relative") + + @property + @pulumi.getter(name="keyId") + def key_id(self) -> str: + """ + A GUID used to uniquely identify this Key. If not specified a GUID will be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "key_id") + + @property + @pulumi.getter(name="servicePrincipalId") + def service_principal_id(self) -> str: + """ + The ID of the Service Principal for which this password should be created. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "service_principal_id") + + @property + @pulumi.getter(name="startDate") + def start_date(self) -> str: + """ + The Start Date which the Password is valid from, formatted as a RFC3339 date string (e.g. `2018-01-01T01:02:03Z`). If this isn't specified, the current date is used. Changing this field forces a new resource to be created. + """ + return pulumi.get(self, "start_date") + + @property + @pulumi.getter + def value(self) -> str: + """ + The Password for this Service Principal. + """ + return pulumi.get(self, "value") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/pulumi_azuread/user.py b/sdk/python/pulumi_azuread/user.py index e5ed38a28..08ec6d29d 100644 --- a/sdk/python/pulumi_azuread/user.py +++ b/sdk/python/pulumi_azuread/user.py @@ -5,60 +5,27 @@ import warnings import pulumi import pulumi.runtime -from typing import Union -from . import utilities, tables +from typing import Any, Dict, List, Mapping, Optional, Tuple, Union +from . import _utilities, _tables + +__all__ = ['User'] class User(pulumi.CustomResource): - account_enabled: pulumi.Output[bool] - """ - `true` if the account should be enabled, otherwise `false`. Defaults to `true`. - """ - display_name: pulumi.Output[str] - """ - The name to display in the address book for the user. - """ - force_password_change: pulumi.Output[bool] - """ - `true` if the User is forced to change the password during the next sign-in. Defaults to `false`. - """ - immutable_id: pulumi.Output[str] - """ - The value used to associate an on-premises Active Directory user account with their Azure AD user object. This must be specified if you are using a federated domain for the user's userPrincipalName (UPN) property when creating a new user account. - """ - mail: pulumi.Output[str] - """ - The primary email address of the Azure AD User. - """ - mail_nickname: pulumi.Output[str] - """ - The mail alias for the user. Defaults to the user name part of the User Principal Name. - """ - object_id: pulumi.Output[str] - """ - The Object ID of the Azure AD User. - """ - onpremises_sam_account_name: pulumi.Output[str] - """ - The on premise sam account name of the Azure AD User. - """ - onpremises_user_principal_name: pulumi.Output[str] - """ - The on premise user principal name of the Azure AD User. - """ - password: pulumi.Output[str] - """ - The password for the User. The password must satisfy minimum requirements as specified by the password policy. The maximum length is 256 characters. - """ - usage_location: pulumi.Output[str] - """ - The usage location of the User. Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. The usage location is a two letter country code (ISO standard 3166). Examples include: `NO`, `JP`, and `GB`. Cannot be reset to null once set. - """ - user_principal_name: pulumi.Output[str] - """ - The User Principal Name of the Azure AD User. - """ - def __init__(__self__, resource_name, opts=None, account_enabled=None, display_name=None, force_password_change=None, immutable_id=None, mail_nickname=None, password=None, usage_location=None, user_principal_name=None, __props__=None, __name__=None, __opts__=None): + def __init__(__self__, + resource_name, + opts: Optional[pulumi.ResourceOptions] = None, + account_enabled: Optional[pulumi.Input[bool]] = None, + display_name: Optional[pulumi.Input[str]] = None, + force_password_change: Optional[pulumi.Input[bool]] = None, + immutable_id: Optional[pulumi.Input[str]] = None, + mail_nickname: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + usage_location: Optional[pulumi.Input[str]] = None, + user_principal_name: Optional[pulumi.Input[str]] = None, + __props__=None, + __name__=None, + __opts__=None): """ Manages a User within Azure Active Directory. @@ -99,7 +66,7 @@ def __init__(__self__, resource_name, opts=None, account_enabled=None, display_n if not isinstance(opts, pulumi.ResourceOptions): raise TypeError('Expected resource options to be a ResourceOptions instance') if opts.version is None: - opts.version = utilities.get_version() + opts.version = _utilities.get_version() if opts.id is None: if __props__ is not None: raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource') @@ -130,13 +97,27 @@ def __init__(__self__, resource_name, opts=None, account_enabled=None, display_n opts) @staticmethod - def get(resource_name, id, opts=None, account_enabled=None, display_name=None, force_password_change=None, immutable_id=None, mail=None, mail_nickname=None, object_id=None, onpremises_sam_account_name=None, onpremises_user_principal_name=None, password=None, usage_location=None, user_principal_name=None): + def get(resource_name: str, + id: pulumi.Input[str], + opts: Optional[pulumi.ResourceOptions] = None, + account_enabled: Optional[pulumi.Input[bool]] = None, + display_name: Optional[pulumi.Input[str]] = None, + force_password_change: Optional[pulumi.Input[bool]] = None, + immutable_id: Optional[pulumi.Input[str]] = None, + mail: Optional[pulumi.Input[str]] = None, + mail_nickname: Optional[pulumi.Input[str]] = None, + object_id: Optional[pulumi.Input[str]] = None, + onpremises_sam_account_name: Optional[pulumi.Input[str]] = None, + onpremises_user_principal_name: Optional[pulumi.Input[str]] = None, + password: Optional[pulumi.Input[str]] = None, + usage_location: Optional[pulumi.Input[str]] = None, + user_principal_name: Optional[pulumi.Input[str]] = None) -> 'User': """ Get an existing User resource's state with the given name, id, and optional extra properties used to qualify the lookup. :param str resource_name: The unique name of the resulting resource. - :param str id: The unique provider ID of the resource to lookup. + :param pulumi.Input[str] id: The unique provider ID of the resource to lookup. :param pulumi.ResourceOptions opts: Options for the resource. :param pulumi.Input[bool] account_enabled: `true` if the account should be enabled, otherwise `false`. Defaults to `true`. :param pulumi.Input[str] display_name: The name to display in the address book for the user. @@ -169,8 +150,105 @@ def get(resource_name, id, opts=None, account_enabled=None, display_name=None, f __props__["user_principal_name"] = user_principal_name return User(resource_name, opts=opts, __props__=__props__) + @property + @pulumi.getter(name="accountEnabled") + def account_enabled(self) -> Optional[bool]: + """ + `true` if the account should be enabled, otherwise `false`. Defaults to `true`. + """ + return pulumi.get(self, "account_enabled") + + @property + @pulumi.getter(name="displayName") + def display_name(self) -> str: + """ + The name to display in the address book for the user. + """ + return pulumi.get(self, "display_name") + + @property + @pulumi.getter(name="forcePasswordChange") + def force_password_change(self) -> Optional[bool]: + """ + `true` if the User is forced to change the password during the next sign-in. Defaults to `false`. + """ + return pulumi.get(self, "force_password_change") + + @property + @pulumi.getter(name="immutableId") + def immutable_id(self) -> str: + """ + The value used to associate an on-premises Active Directory user account with their Azure AD user object. This must be specified if you are using a federated domain for the user's userPrincipalName (UPN) property when creating a new user account. + """ + return pulumi.get(self, "immutable_id") + + @property + @pulumi.getter + def mail(self) -> str: + """ + The primary email address of the Azure AD User. + """ + return pulumi.get(self, "mail") + + @property + @pulumi.getter(name="mailNickname") + def mail_nickname(self) -> str: + """ + The mail alias for the user. Defaults to the user name part of the User Principal Name. + """ + return pulumi.get(self, "mail_nickname") + + @property + @pulumi.getter(name="objectId") + def object_id(self) -> str: + """ + The Object ID of the Azure AD User. + """ + return pulumi.get(self, "object_id") + + @property + @pulumi.getter(name="onpremisesSamAccountName") + def onpremises_sam_account_name(self) -> str: + """ + The on premise sam account name of the Azure AD User. + """ + return pulumi.get(self, "onpremises_sam_account_name") + + @property + @pulumi.getter(name="onpremisesUserPrincipalName") + def onpremises_user_principal_name(self) -> str: + """ + The on premise user principal name of the Azure AD User. + """ + return pulumi.get(self, "onpremises_user_principal_name") + + @property + @pulumi.getter + def password(self) -> str: + """ + The password for the User. The password must satisfy minimum requirements as specified by the password policy. The maximum length is 256 characters. + """ + return pulumi.get(self, "password") + + @property + @pulumi.getter(name="usageLocation") + def usage_location(self) -> str: + """ + The usage location of the User. Required for users that will be assigned licenses due to legal requirement to check for availability of services in countries. The usage location is a two letter country code (ISO standard 3166). Examples include: `NO`, `JP`, and `GB`. Cannot be reset to null once set. + """ + return pulumi.get(self, "usage_location") + + @property + @pulumi.getter(name="userPrincipalName") + def user_principal_name(self) -> str: + """ + The User Principal Name of the Azure AD User. + """ + return pulumi.get(self, "user_principal_name") + def translate_output_property(self, prop): - return tables._CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop + return _tables.CAMEL_TO_SNAKE_CASE_TABLE.get(prop) or prop def translate_input_property(self, prop): - return tables._SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + return _tables.SNAKE_TO_CAMEL_CASE_TABLE.get(prop) or prop + diff --git a/sdk/python/setup.py b/sdk/python/setup.py index d194617bf..5191fd62d 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -53,7 +53,7 @@ def readme(): }, install_requires=[ 'parver>=0.2.1', - 'pulumi>=2.0.0,<3.0.0', + 'pulumi>=2.9.0,<3.0.0', 'semver>=2.8.1' ], zip_safe=False)