{
  "typeName" : "AWS::CloudFront::TrustStore",
  "additionalProperties" : false,
  "definitions" : {
    "CaCertificatesBundleSource" : {
      "additionalProperties" : false,
      "properties" : {
        "CaCertificatesBundleS3Location" : {
          "$ref" : "#/definitions/CaCertificatesBundleS3Location",
          "description" : "The CA certificates bundle location in Amazon S3."
        }
      },
      "required" : [ "CaCertificatesBundleS3Location" ],
      "type" : "object",
      "description" : "A CA certificates bundle source."
    },
    "CaCertificatesBundleS3Location" : {
      "additionalProperties" : false,
      "properties" : {
        "Bucket" : {
          "type" : "string",
          "description" : "The S3 bucket."
        },
        "Key" : {
          "type" : "string",
          "description" : "The location's key."
        },
        "Region" : {
          "type" : "string",
          "description" : "The location's Region."
        },
        "Version" : {
          "type" : "string",
          "description" : "The location's version."
        }
      },
      "required" : [ "Bucket", "Key", "Region" ],
      "type" : "object",
      "description" : "The CA certificates bundle location in Amazon S3."
    },
    "Tag" : {
      "additionalProperties" : false,
      "properties" : {
        "Key" : {
          "maxLength" : 128,
          "minLength" : 1,
          "type" : "string",
          "pattern" : "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
          "description" : "A string that contains ``Tag`` key.\n The string length should be between 1 and 128 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``."
        },
        "Value" : {
          "maxLength" : 256,
          "minLength" : 0,
          "type" : "string",
          "pattern" : "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
          "description" : "A string that contains an optional ``Tag`` value.\n The string length should be between 0 and 256 characters. Valid characters include ``a-z``, ``A-Z``, ``0-9``, space, and the special characters ``_ - . : / = + @``."
        }
      },
      "required" : [ "Key", "Value" ],
      "type" : "object",
      "description" : "A complex type that contains ``Tag`` key and ``Tag`` value."
    }
  },
  "description" : "A trust store.",
  "handlers" : {
    "create" : {
      "permissions" : [ "cloudfront:CreateTrustStore", "cloudfront:GetTrustStore", "cloudfront:TagResource", "cloudfront:ListTagsForResource", "s3:GetObjectVersion", "s3:GetObject", "s3:ListBucket" ]
    },
    "read" : {
      "permissions" : [ "cloudfront:GetTrustStore", "cloudfront:ListTagsForResource" ]
    },
    "update" : {
      "permissions" : [ "cloudfront:GetTrustStore", "cloudfront:UpdateTrustStore", "cloudfront:TagResource", "cloudfront:UntagResource", "cloudfront:ListTagsForResource", "s3:GetObjectVersion", "s3:GetObject", "s3:ListBucket" ]
    },
    "delete" : {
      "permissions" : [ "cloudfront:DeleteTrustStore", "cloudfront:GetTrustStore" ]
    },
    "list" : {
      "permissions" : [ "cloudfront:ListTrustStores", "cloudfront:ListTagsForResource" ]
    }
  },
  "primaryIdentifier" : [ "/properties/Id" ],
  "additionalIdentifiers" : [ [ "/properties/Name" ] ],
  "properties" : {
    "Id" : {
      "type" : "string",
      "description" : ""
    },
    "Name" : {
      "type" : "string",
      "description" : "The trust store's name."
    },
    "Arn" : {
      "type" : "string",
      "pattern" : "^arn:aws:cloudfront::[0-9]{12}:trust-store/[A-Za-z0-9_]+$",
      "description" : ""
    },
    "CaCertificatesBundleSource" : {
      "$ref" : "#/definitions/CaCertificatesBundleSource",
      "description" : "A CA certificates bundle source."
    },
    "UseClientCertificateOCSPEndpoint" : {
      "type" : "boolean",
      "description" : "A boolean. When true, performs real-time certificate revocation checks by querying the OCSP endpoint specified within the client certificate."
    },
    "Status" : {
      "type" : "string",
      "enum" : [ "PENDING", "ACTIVE", "FAILED" ],
      "description" : ""
    },
    "ETag" : {
      "type" : "string",
      "description" : ""
    },
    "LastModifiedTime" : {
      "type" : "string",
      "description" : ""
    },
    "NumberOfCaCertificates" : {
      "type" : "integer",
      "description" : ""
    },
    "Tags" : {
      "type" : "array",
      "insertionOrder" : false,
      "items" : {
        "$ref" : "#/definitions/Tag"
      },
      "description" : "A complex type that contains zero or more ``Tag`` elements."
    }
  },
  "createOnlyProperties" : [ "/properties/Name" ],
  "readOnlyProperties" : [ "/properties/Id", "/properties/Arn", "/properties/Status", "/properties/ETag", "/properties/LastModifiedTime", "/properties/NumberOfCaCertificates" ],
  "writeOnlyProperties" : [ "/properties/CaCertificatesBundleSource" ],
  "required" : [ "Name" ],
  "tagging" : {
    "cloudFormationSystemTags" : false,
    "permissions" : [ "cloudfront:TagResource", "cloudfront:UntagResource", "cloudfront:ListTagsForResource" ],
    "tagOnCreate" : true,
    "tagProperty" : "/properties/Tags",
    "tagUpdatable" : true,
    "taggable" : true
  }
}