{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--aws-ec2-ipampool.json",
  "title": "AWSEC2IPAMPoolProperties",
  "description": "Resource Schema of AWS::EC2::IPAMPool Type. Source:- <https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git>",
  "x-lintel": {
    "source": "https://raw.githubusercontent.com/lalcebo/json-schema/master/serverless/resources/cloudformation-modified/aws-ec2-ipampool.json",
    "sourceSha256": "388df9c4d9ffbef791c4c9e6c6c91eae9bcb023d3c7e02c82f095a92a92c8e75"
  },
  "type": "object",
  "properties": {
    "AddressFamily": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The address family of the address space in this pool. Either IPv4 or IPv6."
    },
    "AllocationMinNetmaskLength": {
      "description": "The minimum allowed netmask length for allocations made from this pool.",
      "type": "integer"
    },
    "AllocationDefaultNetmaskLength": {
      "description": "The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.",
      "type": "integer"
    },
    "AllocationMaxNetmaskLength": {
      "description": "The maximum allowed netmask length for allocations made from this pool.",
      "type": "integer"
    },
    "AllocationResourceTags": {
      "description": "When specified, an allocation will not be allowed unless a resource has a matching set of tags.",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    },
    "AutoImport": {
      "description": "Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.",
      "type": "boolean"
    },
    "AwsService": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "ec2"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Limits which service in Amazon Web Services that the pool can be used in."
    },
    "Description": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ]
    },
    "IpamScopeId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Id of the scope this pool is a part of."
    },
    "Locale": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The region of this pool. If not set, this will default to \"None\" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match."
    },
    "ProvisionedCidrs": {
      "description": "A list of cidrs representing the address space available for allocation in this pool.",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/ProvisionedCidr"
      }
    },
    "PublicIpSource": {
      "oneOf": [
        {
          "type": "string",
          "enum": [
            "byoip",
            "amazon"
          ]
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`."
    },
    "PubliclyAdvertisable": {
      "description": "Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.",
      "type": "boolean"
    },
    "SourceIpamPoolId": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool."
    },
    "Tags": {
      "description": "An array of key-value pairs to apply to this resource.",
      "type": "array",
      "uniqueItems": true,
      "insertionOrder": false,
      "items": {
        "$ref": "#/$defs/Tag"
      }
    }
  },
  "typeName": "AWS::EC2::IPAMPool",
  "createOnlyProperties": [
    "/properties/IpamScopeId",
    "/properties/SourceIpamPoolId",
    "/properties/Locale",
    "/properties/AddressFamily",
    "/properties/PubliclyAdvertisable",
    "/properties/PublicIpSource",
    "/properties/AwsService"
  ],
  "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-ipam.git",
  "taggable": true,
  "additionalProperties": false,
  "readOnlyProperties": [
    "/properties/IpamPoolId",
    "/properties/Arn",
    "/properties/IpamScopeArn",
    "/properties/IpamScopeType",
    "/properties/IpamArn",
    "/properties/PoolDepth",
    "/properties/State",
    "/properties/StateMessage"
  ],
  "$defs": {
    "Cidr": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
        }
      ],
      "description": "Represents a single IPv4 or IPv6 CIDR",
      "title": "AWSEC2IPAMPoolCidrDefinition"
    },
    "ProvisionedCidr": {
      "description": "An address space to be inserted into this pool. All allocations must be made from this address space.",
      "type": "object",
      "properties": {
        "Cidr": {
          "$ref": "#/$defs/Cidr"
        }
      },
      "required": [
        "Cidr"
      ],
      "title": "AWSEC2IPAMPoolProvisionedCidrDefinition",
      "additionalProperties": false
    },
    "Tag": {
      "description": "A key-value pair to associate with a resource.",
      "type": "object",
      "properties": {
        "Key": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "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 -."
        },
        "Value": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 0,
              "maxLength": 256
            },
            {
              "$ref": "https://catalog.lintel.tools/schemas/schemastore/serverless-framework-configuration/_shared/latest--cf.functions.json#/Aws_CF_FunctionString"
            }
          ],
          "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 -."
        }
      },
      "required": [
        "Key",
        "Value"
      ],
      "title": "AWSEC2IPAMPoolTagDefinition",
      "additionalProperties": false
    }
  },
  "propertyTransform": {
    "/properties/AddressFamily": "$lowercase(AddressFamily)"
  },
  "required": [
    "IpamScopeId",
    "AddressFamily"
  ],
  "primaryIdentifier": [
    "/properties/IpamPoolId"
  ]
}
