{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/FunctionName",
  "/properties/FunctionUrlAuthType",
  "/properties/InvokedViaFunctionUrl",
  "/properties/SourceAccount",
  "/properties/SourceArn",
  "/properties/Principal",
  "/properties/PrincipalOrgID",
  "/properties/Action",
  "/properties/EventSourceToken"
 ],
 "primaryIdentifier": [
  "/properties/FunctionName",
  "/properties/Id"
 ],
 "properties": {
  "Action": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^(lambda:[*]|lambda:[a-zA-Z]+|[*])$",
   "type": "string"
  },
  "EventSourceToken": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9._\\-]+$",
   "type": "string"
  },
  "FunctionName": {
   "maxLength": 140,
   "minLength": 1,
   "pattern": "^(arn:(aws[a-zA-Z-]*)?:lambda:)?((eusc-)?[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?$",
   "type": "string"
  },
  "FunctionUrlAuthType": {
   "enum": [
    "AWS_IAM",
    "NONE"
   ],
   "type": "string"
  },
  "Id": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^.*$",
   "type": "string"
  },
  "InvokedViaFunctionUrl": {
   "type": "boolean"
  },
  "Principal": {
   "maxLength": 256,
   "minLength": 1,
   "pattern": "^.*$",
   "type": "string"
  },
  "PrincipalOrgID": {
   "maxLength": 34,
   "minLength": 12,
   "pattern": "^o-[a-z0-9]{10,32}$",
   "type": "string"
  },
  "SourceAccount": {
   "maxLength": 12,
   "minLength": 12,
   "pattern": "^\\d{12}$",
   "type": "string"
  },
  "SourceArn": {
   "maxLength": 1024,
   "minLength": 12,
   "pattern": "^arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\\-])+:((eusc-)?[a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1})?:(\\d{12})?:(.*)$",
   "type": "string"
  }
 },
 "propertyTransform": {
  "/properties/Principal": "$join([\"^arn:aws[a-zA-Z-]*:iam::\",Principal,\":[a-zA-Z-]*\"]) $OR Principal"
 },
 "readOnlyProperties": [
  "/properties/Id"
 ],
 "required": [
  "FunctionName",
  "Action",
  "Principal"
 ],
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": false,
  "tagUpdatable": false,
  "taggable": false
 },
 "typeName": "AWS::Lambda::Permission"
}
