{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/CreateFunctionRequest",
  "title": "CreateFunctionRequest",
  "type": "object",
  "required": [
    "FunctionName",
    "Role",
    "Code"
  ],
  "properties": {
    "FunctionName": {
      "allOf": [
        {
          "$ref": "#/components/schemas/FunctionName"
        },
        {
          "description": "<p>The name of the Lambda function.</p> <p class=\"title\"> <b>Name formats</b> </p> <ul> <li> <p> <b>Function name</b> \u00e2\u20ac\u201c <code>my-function</code>.</p> </li> <li> <p> <b>Function ARN</b> \u00e2\u20ac\u201c <code>arn:aws:lambda:us-west-2:123456789012:function:my-function</code>.</p> </li> <li> <p> <b>Partial ARN</b> \u00e2\u20ac\u201c <code>123456789012:function:my-function</code>.</p> </li> </ul> <p>The length constraint applies only to the full ARN. If you specify only the function name, it is limited to 64 characters in length.</p>"
        }
      ]
    },
    "Runtime": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Runtime"
        },
        {
          "description": "<p>The identifier of the function's <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html\">runtime</a>. Runtime is required if the deployment package is a .zip file archive.</p> <p>The following list includes deprecated runtimes. For more information, see <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html#runtime-support-policy\">Runtime deprecation policy</a>.</p>"
        }
      ]
    },
    "Role": {
      "allOf": [
        {
          "$ref": "#/components/schemas/RoleArn"
        },
        {
          "description": "The Amazon Resource Name (ARN) of the function's execution role."
        }
      ]
    },
    "Handler": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Handler"
        },
        {
          "description": "The name of the method within your code that Lambda calls to run your function. Handler is required if the deployment package is a .zip file archive. The format includes the file name. It can also include namespaces and other qualifiers, depending on the runtime. For more information, see <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/foundation-progmodel.html\">Lambda programming model</a>."
        }
      ]
    },
    "Code": {
      "allOf": [
        {
          "$ref": "#/components/schemas/FunctionCode"
        },
        {
          "description": "The code for the function."
        }
      ]
    },
    "Description": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Description"
        },
        {
          "description": "A description of the function."
        }
      ]
    },
    "Timeout": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Timeout"
        },
        {
          "description": "The amount of time (in seconds) that Lambda allows a function to run before stopping it. The default is 3 seconds. The maximum allowed value is 900 seconds. For more information, see <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html\">Lambda execution environment</a>."
        }
      ]
    },
    "MemorySize": {
      "allOf": [
        {
          "$ref": "#/components/schemas/MemorySize"
        },
        {
          "description": "The amount of <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/configuration-function-common.html#configuration-memory-console\">memory available to the function</a> at runtime. Increasing the function memory also increases its CPU allocation. The default value is 128 MB. The value can be any multiple of 1 MB."
        }
      ]
    },
    "Publish": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Boolean"
        },
        {
          "description": "Set to true to publish the first version of the function during creation."
        }
      ]
    },
    "VpcConfig": {
      "allOf": [
        {
          "$ref": "#/components/schemas/VpcConfig"
        },
        {
          "description": "For network connectivity to Amazon Web Services resources in a VPC, specify a list of security groups and subnets in the VPC. When you connect a function to a VPC, it can access resources and the internet only through that VPC. For more information, see <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html\">Configuring a Lambda function to access resources in a VPC</a>."
        }
      ]
    },
    "PackageType": {
      "allOf": [
        {
          "$ref": "#/components/schemas/PackageType"
        },
        {
          "description": "The type of deployment package. Set to <code>Image</code> for container image and set to <code>Zip</code> for .zip file archive."
        }
      ]
    },
    "DeadLetterConfig": {
      "allOf": [
        {
          "$ref": "#/components/schemas/DeadLetterConfig"
        },
        {
          "description": "A dead-letter queue configuration that specifies the queue or topic where Lambda sends asynchronous events when they fail processing. For more information, see <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq\">Dead-letter queues</a>."
        }
      ]
    },
    "Environment": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Environment"
        },
        {
          "description": "Environment variables that are accessible from function code during execution."
        }
      ]
    },
    "KMSKeyArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/KMSKeyArn"
        },
        {
          "description": "The ARN of the Key Management Service (KMS) customer managed key that's used to encrypt your function's <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-encryption\">environment variables</a>. When <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/snapstart-security.html\">Lambda SnapStart</a> is activated, this key is also used to encrypt your function's snapshot. If you don't provide a customer managed key, Lambda uses a default service key."
        }
      ]
    },
    "TracingConfig": {
      "allOf": [
        {
          "$ref": "#/components/schemas/TracingConfig"
        },
        {
          "description": "Set <code>Mode</code> to <code>Active</code> to sample and trace a subset of incoming requests with <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/services-xray.html\">X-Ray</a>."
        }
      ]
    },
    "Tags": {
      "allOf": [
        {
          "$ref": "#/components/schemas/Tags"
        },
        {
          "description": "A list of <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/tagging.html\">tags</a> to apply to the function."
        }
      ]
    },
    "Layers": {
      "allOf": [
        {
          "$ref": "#/components/schemas/LayerList"
        },
        {
          "description": "A list of <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html\">function layers</a> to add to the function's execution environment. Specify each layer by its ARN, including the version."
        }
      ]
    },
    "FileSystemConfigs": {
      "allOf": [
        {
          "$ref": "#/components/schemas/FileSystemConfigList"
        },
        {
          "description": "Connection settings for an Amazon EFS file system."
        }
      ]
    },
    "ImageConfig": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ImageConfig"
        },
        {
          "description": "Container image <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html#configuration-images-settings\">configuration values</a> that override the values in the container image Dockerfile."
        }
      ]
    },
    "CodeSigningConfigArn": {
      "allOf": [
        {
          "$ref": "#/components/schemas/CodeSigningConfigArn"
        },
        {
          "description": "To enable code signing for this function, specify the ARN of a code-signing configuration. A code-signing configuration includes a set of signing profiles, which define the trusted publishers for this function."
        }
      ]
    },
    "Architectures": {
      "allOf": [
        {
          "$ref": "#/components/schemas/ArchitecturesList"
        },
        {
          "description": "The instruction set architecture that the function supports. Enter a string array with one of the valid values (arm64 or x86_64). The default value is <code>x86_64</code>."
        }
      ]
    },
    "EphemeralStorage": {
      "allOf": [
        {
          "$ref": "#/components/schemas/EphemeralStorage"
        },
        {
          "description": "The size of the function's <code>/tmp</code> directory in MB. The default value is 512, but can be any whole number between 512 and 10,240 MB."
        }
      ]
    },
    "SnapStart": {
      "allOf": [
        {
          "$ref": "#/components/schemas/SnapStart"
        },
        {
          "description": "The function's <a href=\"https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html\">SnapStart</a> setting."
        }
      ]
    }
  }
}