/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the servicecatalog-2015-12-10.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.ServiceCatalog.Model { /// /// Container for the parameters to the CreatePortfolioShare operation. /// Shares the specified portfolio with the specified account or organization node. Shares /// to an organization node can only be created by the management account of an organization /// or by a delegated administrator. You can share portfolios to an organization, an organizational /// unit, or a specific account. /// /// /// /// Note that if a delegated admin is de-registered, they can no longer create portfolio /// shares. /// /// /// /// AWSOrganizationsAccess must be enabled in order to create a portfolio /// share to an organization node. /// /// /// /// You can't share a shared resource, including portfolios that contain a shared product. /// /// /// /// If the portfolio share with the specified account or organization node already exists, /// this action will have no effect and will not return an error. To update an existing /// share, you must use the UpdatePortfolioShare API instead. /// /// /// /// When you associate a principal with portfolio, a potential privilege escalation path /// may occur when that portfolio is then shared with other accounts. For a user in a /// recipient account who is not an Service Catalog Admin, but still has the ability /// to create Principals (Users/Groups/Roles), that user could create a role that matches /// a principal name association for the portfolio. Although this user may not know which /// principal names are associated through Service Catalog, they may be able to guess /// the user. If this potential escalation path is a concern, then Service Catalog recommends /// using PrincipalType as IAM. With this configuration, the /// PrincipalARN must already exist in the recipient account before it can /// be associated. /// /// /// public partial class CreatePortfolioShareRequest : AmazonServiceCatalogRequest { private string _acceptLanguage; private string _accountId; private OrganizationNode _organizationNode; private string _portfolioId; private bool? _sharePrincipals; private bool? _shareTagOptions; /// /// Gets and sets the property AcceptLanguage. /// /// The language code. /// /// /// [AWSProperty(Max=100)] public string AcceptLanguage { get { return this._acceptLanguage; } set { this._acceptLanguage = value; } } // Check to see if AcceptLanguage property is set internal bool IsSetAcceptLanguage() { return this._acceptLanguage != null; } /// /// Gets and sets the property AccountId. /// /// The Amazon Web Services account ID. For example, 123456789012. /// /// public string AccountId { get { return this._accountId; } set { this._accountId = value; } } // Check to see if AccountId property is set internal bool IsSetAccountId() { return this._accountId != null; } /// /// Gets and sets the property OrganizationNode. /// /// The organization node to whom you are going to share. When you pass OrganizationNode, /// it creates PortfolioShare for all of the Amazon Web Services accounts /// that are associated to the OrganizationNode. The output returns a PortfolioShareToken, /// which enables the administrator to monitor the status of the PortfolioShare /// creation process. /// /// public OrganizationNode OrganizationNode { get { return this._organizationNode; } set { this._organizationNode = value; } } // Check to see if OrganizationNode property is set internal bool IsSetOrganizationNode() { return this._organizationNode != null; } /// /// Gets and sets the property PortfolioId. /// /// The portfolio identifier. /// /// [AWSProperty(Required=true, Min=1, Max=100)] public string PortfolioId { get { return this._portfolioId; } set { this._portfolioId = value; } } // Check to see if PortfolioId property is set internal bool IsSetPortfolioId() { return this._portfolioId != null; } /// /// Gets and sets the property SharePrincipals. /// /// Enables or disables Principal sharing when creating the portfolio share. /// If this flag is not provided, principal sharing is disabled. /// /// /// /// When you enable Principal Name Sharing for a portfolio share, the share recipient /// account end users with a principal that matches any of the associated IAM patterns /// can provision products from the portfolio. Once shared, the share recipient can view /// associations of PrincipalType: IAM_PATTERN on their portfolio. /// You can create the principals in the recipient account before or after creating the /// share. /// /// public bool SharePrincipals { get { return this._sharePrincipals.GetValueOrDefault(); } set { this._sharePrincipals = value; } } // Check to see if SharePrincipals property is set internal bool IsSetSharePrincipals() { return this._sharePrincipals.HasValue; } /// /// Gets and sets the property ShareTagOptions. /// /// Enables or disables TagOptions sharing when creating the portfolio share. /// If this flag is not provided, TagOptions sharing is disabled. /// /// public bool ShareTagOptions { get { return this._shareTagOptions.GetValueOrDefault(); } set { this._shareTagOptions = value; } } // Check to see if ShareTagOptions property is set internal bool IsSetShareTagOptions() { return this._shareTagOptions.HasValue; } } }