{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/aws-backup/json-schema/aws-backup-create-framework-input-schema.json",
  "title": "CreateFrameworkInput",
  "x-generated": "2026-11-11",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/aws-backup-frameworks-api-openapi.yml#/components/schemas/CreateFrameworkInput",
  "type": "object",
  "properties": {
    "FrameworkName": {
      "type": "string",
      "description": "The unique name of the framework. The name must be between 1 and 256 characters, starting with a letter, and consisting of letters (a-z, A-Z), numbers (0-9), and underscores (_)."
    },
    "FrameworkDescription": {
      "type": "string",
      "description": "An optional description of the framework with a maximum of 1,024 characters."
    },
    "FrameworkControls": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/FrameworkControl"
      },
      "description": "The controls that make up the framework. Each control in the list has a name, input parameters, and scope."
    },
    "IdempotencyToken": {
      "type": "string",
      "description": "A customer-chosen string that you can use to distinguish between otherwise identical calls to CreateFrameworkInput. Retrying a successful request with the same idempotency token results in a success message with no action taken."
    },
    "FrameworkTags": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "The tags to assign to the framework."
    }
  },
  "required": [
    "FrameworkName",
    "FrameworkControls"
  ],
  "$defs": {
    "ControlInputParameter": {
      "type": "object",
      "properties": {
        "ParameterName": {
          "type": "string",
          "description": "The name of a parameter, for example, BackupPlanFrequency."
        },
        "ParameterValue": {
          "type": "string",
          "description": "The value of parameter, for example, hourly."
        }
      }
    },
    "ControlScope": {
      "type": "object",
      "properties": {
        "ComplianceResourceIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "The ID of the only Amazon Web Services resource that you want your control scope to contain."
        },
        "ComplianceResourceTypes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Describes whether the control scope includes one or more types of resources, such as EFS or RDS."
        },
        "Tags": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "The tag key-value pair applied to those Amazon Web Services resources that you want to trigger an evaluation for a rule. A maximum of one key-value pair can be provided. The tag value is optional, but it cannot be an empty string if you are creating or editing a framework from the console (though the value can be an empty string when included in a CloudFormation template). The structure to assign a tag is: [{\"Key\":\"string\",\"Value\":\"string\"}]."
        }
      }
    },
    "FrameworkControl": {
      "type": "object",
      "properties": {
        "ControlName": {
          "type": "string",
          "description": "The name of a control. This name is between 1 and 256 characters."
        },
        "ControlInputParameters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ControlInputParameter"
          },
          "description": "The name/value pairs."
        },
        "ControlScope": {
          "$ref": "#/$defs/ControlScope"
        }
      },
      "required": [
        "ControlName"
      ]
    }
  }
}