{
  "additionalProperties" : false,
  "definitions" : {
    "FunctionConfig" : {
      "additionalProperties" : false,
      "properties" : {
        "Comment" : {
          "type" : "string"
        },
        "Runtime" : {
          "type" : "string"
        }
      },
      "required" : [ "Comment", "Runtime" ],
      "type" : "object"
    },
    "FunctionMetadata" : {
      "additionalProperties" : false,
      "properties" : {
        "FunctionARN" : {
          "type" : "string"
        }
      },
      "type" : "object"
    }
  },
  "description" : "Resource Type definition for AWS::CloudFront::Function",
  "handlers" : {
    "create" : {
      "permissions" : [ "cloudfront:CreateFunction", "cloudfront:PublishFunction" ]
    },
    "delete" : {
      "permissions" : [ "cloudfront:DeleteFunction" ]
    },
    "list" : {
      "permissions" : [ "cloudfront:ListFunctions" ]
    },
    "read" : {
      "permissions" : [ "cloudfront:DescribeFunction" ]
    },
    "update" : {
      "permissions" : [ "cloudfront:UpdateFunction", "cloudfront:PublishFunction" ]
    }
  },
  "primaryIdentifier" : [ "/properties/FunctionARN" ],
  "properties" : {
    "AutoPublish" : {
      "type" : "boolean"
    },
    "FunctionARN" : {
      "type" : "string"
    },
    "FunctionCode" : {
      "type" : "string"
    },
    "FunctionConfig" : {
      "$ref" : "#/definitions/FunctionConfig"
    },
    "FunctionMetadata" : {
      "$ref" : "#/definitions/FunctionMetadata"
    },
    "Name" : {
      "type" : "string"
    },
    "Stage" : {
      "type" : "string"
    }
  },
  "readOnlyProperties" : [ "/properties/FunctionARN", "/properties/FunctionMetadata/FunctionARN", "/properties/Stage" ],
  "required" : [ "Name", "FunctionConfig", "FunctionCode" ],
  "typeName" : "AWS::CloudFront::Function",
  "writeOnlyProperties" : [ "/properties/AutoPublish" ]
}