{
  "tagging" : {
    "permissions" : [ "ram:TagResource", "ram:UntagResource" ],
    "taggable" : true,
    "tagOnCreate" : true,
    "tagUpdatable" : true,
    "tagProperty" : "/properties/Tags",
    "cloudFormationSystemTags" : false
  },
  "typeName" : "AWS::RAM::ResourceShare",
  "readOnlyProperties" : [ "/properties/Arn", "/properties/Status", "/properties/CreationTime", "/properties/LastUpdatedTime", "/properties/FeatureSet", "/properties/OwningAccountId" ],
  "description" : "Resource type definition for AWS::RAM::ResourceShare",
  "createOnlyProperties" : [ "/properties/ResourceShareConfiguration/RetainSharingOnAccountLeaveOrganization" ],
  "primaryIdentifier" : [ "/properties/Arn" ],
  "required" : [ "Name" ],
  "sourceUrl" : "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ram",
  "handlers" : {
    "read" : {
      "permissions" : [ "ram:GetResourceShares" ]
    },
    "create" : {
      "permissions" : [ "ram:CreateResourceShare", "ram:TagResource" ]
    },
    "update" : {
      "permissions" : [ "ram:GetPermission", "ram:GetResourceShares", "ram:GetResourceShareAssociations", "ram:ListResourceSharePermissions", "ram:UpdateResourceShare", "ram:AssociateResourceSharePermission", "ram:AssociateResourceShare", "ram:DisassociateResourceShare", "ram:UntagResource", "ram:TagResource" ]
    },
    "list" : {
      "permissions" : [ "ram:GetResourceShares" ]
    },
    "delete" : {
      "permissions" : [ "ram:DeleteResourceShare", "ram:GetResourceShares" ]
    }
  },
  "writeOnlyProperties" : [ "/properties/PermissionArns", "/properties/Principals", "/properties/ResourceArns", "/properties/Sources" ],
  "additionalProperties" : false,
  "definitions" : {
    "ResourceShareConfiguration" : {
      "description" : "The configuration for a resource share.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "ExclusiveAccountAccess" : {
          "description" : "The resource share restricts access to an account",
          "type" : "boolean"
        },
        "RetainSharingOnAccountLeaveOrganization" : {
          "description" : "Specifies whether the consumer account retains access to the resource share after leaving the organization.",
          "type" : "boolean"
        }
      }
    },
    "Tag" : {
      "description" : "A key-value pair to associate with a resource.",
      "additionalProperties" : false,
      "type" : "object",
      "properties" : {
        "Value" : {
          "description" : "The value for the tag. You can specify a value that is 0 to 256 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
          "type" : "string"
        },
        "Key" : {
          "description" : "The key name of the tag. You can specify a value that is 1 to 128 Unicode characters in length and cannot be prefixed with aws:. You can use any of the following characters: the set of Unicode letters, digits, whitespace, _, ., /, =, +, and -.",
          "type" : "string"
        }
      },
      "required" : [ "Key", "Value" ]
    }
  },
  "properties" : {
    "Status" : {
      "description" : "The current status of the resource share.",
      "type" : "string",
      "enum" : [ "PENDING", "ACTIVE", "FAILED", "DELETING", "DELETED" ]
    },
    "ResourceShareConfiguration" : {
      "description" : "Specifies the configuration for the resource share",
      "$ref" : "#/definitions/ResourceShareConfiguration"
    },
    "PermissionArns" : {
      "description" : "Specifies the [Amazon Resource Names (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html) of the AWS RAM permission to associate with the resource share. If you do not specify an ARN for the permission, AWS RAM automatically attaches the default version of the permission for each resource type. You can associate only one permission with each resource type included in the resource share.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "Principals" : {
      "description" : "Specifies the principals to associate with the resource share. The possible values are:\n\n- An AWS account ID\n\n- An Amazon Resource Name (ARN) of an organization in AWS Organizations\n\n- An ARN of an organizational unit (OU) in AWS Organizations\n\n- An ARN of an IAM role\n\n- An ARN of an IAM user",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "LastUpdatedTime" : {
      "format" : "date-time",
      "description" : "The date and time when the resource share was last updated.",
      "type" : "string"
    },
    "Sources" : {
      "description" : "Specifies from which source accounts the service principal has access to the resources in this resource share.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "Name" : {
      "description" : "Specifies the name of the resource share.",
      "type" : "string"
    },
    "CreationTime" : {
      "format" : "date-time",
      "description" : "The date and time when the resource share was created.",
      "type" : "string"
    },
    "OwningAccountId" : {
      "description" : "The ID of the AWS account that owns the resource share.",
      "type" : "string"
    },
    "FeatureSet" : {
      "description" : "The feature set of the resource share.",
      "type" : "string",
      "enum" : [ "CREATED_FROM_POLICY", "PROMOTING_TO_STANDARD", "STANDARD" ]
    },
    "AllowExternalPrincipals" : {
      "description" : "Specifies whether principals outside your organization in AWS Organizations can be associated with a resource share. A value of `true` lets you share with individual AWS accounts that are not in your organization. A value of `false` only has meaning if your account is a member of an AWS Organization. The default value is `true`.",
      "type" : "boolean"
    },
    "Arn" : {
      "type" : "string"
    },
    "ResourceArns" : {
      "description" : "Specifies a list of one or more ARNs of the resources to associate with the resource share.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "type" : "string"
      }
    },
    "Tags" : {
      "uniqueItems" : true,
      "description" : "Specifies one or more tags to attach to the resource share itself. It doesn't attach the tags to the resources associated with the resource share.",
      "insertionOrder" : false,
      "type" : "array",
      "items" : {
        "$ref" : "#/definitions/Tag"
      }
    }
  }
}