/* * 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 UpdatePortfolioShare operation. /// Updates the specified portfolio share. You can use this API to enable or disable TagOptions /// sharing or Principal sharing for an existing portfolio share. /// /// /// /// The portfolio share cannot be updated if the CreatePortfolioShare operation /// is IN_PROGRESS, as the share is not available to recipient entities. /// In this case, you must wait for the portfolio share to be COMPLETED. /// /// /// /// You must provide the accountId or organization node in the input, but /// not both. /// /// /// /// If the portfolio is shared to both an external account and an organization node, and /// both shares need to be updated, you must invoke UpdatePortfolioShare /// separately for each share type. /// /// /// /// This API cannot be used for removing the portfolio share. You must use DeletePortfolioShare /// API for that action. /// /// /// /// 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 UpdatePortfolioShareRequest : 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 of the recipient account. This field is required /// when updating an external account to account type share. /// /// 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. /// 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 unique identifier of the portfolio for which the share will be updated. /// /// [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. /// /// A flag to enables or disables Principals sharing in the portfolio. If /// this field is not provided, the current state of the Principals sharing /// on the portfolio share will not be modified. /// /// 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 for the portfolio share. If this /// field is not provided, the current state of TagOptions sharing on the portfolio share /// will not be modified. /// /// 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; } } }