{
  "metadata": {
    "apiVersion": "2014-11-01",
    "endpointPrefix": "kms",
    "jsonVersion": "1.1",
    "serviceAbbreviation": "KMS",
    "serviceFullName": "AWS Key Management Service",
    "signatureVersion": "v4",
    "targetPrefix": "TrentService",
    "protocol": "json"
  },
  "operations": {
    "CreateAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasName",
          "TargetKeyId"
        ],
        "members": {
          "AliasName": {},
          "TargetKeyId": {}
        }
      }
    },
    "CreateGrant": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "GranteePrincipal"
        ],
        "members": {
          "KeyId": {},
          "GranteePrincipal": {},
          "RetiringPrincipal": {},
          "Operations": {
            "shape": "S6"
          },
          "Constraints": {
            "shape": "S8"
          },
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "GrantToken": {},
          "GrantId": {}
        }
      }
    },
    "CreateKey": {
      "input": {
        "type": "structure",
        "members": {
          "Policy": {},
          "Description": {},
          "KeyUsage": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyMetadata": {
            "shape": "Sl"
          }
        }
      }
    },
    "Decrypt": {
      "input": {
        "type": "structure",
        "required": [
          "CiphertextBlob"
        ],
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "EncryptionContext": {
            "shape": "S9"
          },
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyId": {},
          "Plaintext": {
            "shape": "St"
          }
        }
      }
    },
    "DeleteAlias": {
      "input": {
        "type": "structure",
        "required": [
          "AliasName"
        ],
        "members": {
          "AliasName": {}
        }
      }
    },
    "DescribeKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyMetadata": {
            "shape": "Sl"
          }
        }
      }
    },
    "DisableKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "DisableKeyRotation": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "EnableKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "EnableKeyRotation": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      }
    },
    "Encrypt": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "Plaintext"
        ],
        "members": {
          "KeyId": {},
          "Plaintext": {
            "shape": "St"
          },
          "EncryptionContext": {
            "shape": "S9"
          },
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateDataKey": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "EncryptionContext": {
            "shape": "S9"
          },
          "NumberOfBytes": {
            "type": "integer"
          },
          "KeySpec": {},
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "Plaintext": {
            "shape": "St"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateDataKeyWithoutPlaintext": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "EncryptionContext": {
            "shape": "S9"
          },
          "KeySpec": {},
          "NumberOfBytes": {
            "type": "integer"
          },
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "KeyId": {}
        }
      }
    },
    "GenerateRandom": {
      "input": {
        "type": "structure",
        "members": {
          "NumberOfBytes": {
            "type": "integer"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Plaintext": {
            "shape": "St"
          }
        }
      }
    },
    "GetKeyPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "PolicyName"
        ],
        "members": {
          "KeyId": {},
          "PolicyName": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Policy": {}
        }
      }
    },
    "GetKeyRotationStatus": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "KeyRotationEnabled": {
            "type": "boolean"
          }
        }
      }
    },
    "ListAliases": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Aliases": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "AliasName": {},
                "AliasArn": {},
                "TargetKeyId": {}
              }
            }
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListGrants": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Grants": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "GrantId": {},
                "GranteePrincipal": {},
                "RetiringPrincipal": {},
                "IssuingAccount": {},
                "Operations": {
                  "shape": "S6"
                },
                "Constraints": {
                  "shape": "S8"
                }
              }
            }
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListKeyPolicies": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId"
        ],
        "members": {
          "KeyId": {},
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "PolicyNames": {
            "type": "list",
            "member": {}
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "ListKeys": {
      "input": {
        "type": "structure",
        "members": {
          "Limit": {
            "type": "integer"
          },
          "Marker": {}
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "Keys": {
            "type": "list",
            "member": {
              "type": "structure",
              "members": {
                "KeyId": {},
                "KeyArn": {}
              }
            }
          },
          "NextMarker": {},
          "Truncated": {
            "type": "boolean"
          }
        }
      }
    },
    "PutKeyPolicy": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "PolicyName",
          "Policy"
        ],
        "members": {
          "KeyId": {},
          "PolicyName": {},
          "Policy": {}
        }
      }
    },
    "ReEncrypt": {
      "input": {
        "type": "structure",
        "required": [
          "CiphertextBlob",
          "DestinationKeyId"
        ],
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "SourceEncryptionContext": {
            "shape": "S9"
          },
          "DestinationKeyId": {},
          "DestinationEncryptionContext": {
            "shape": "S9"
          },
          "GrantTokens": {
            "shape": "Sc"
          }
        }
      },
      "output": {
        "type": "structure",
        "members": {
          "CiphertextBlob": {
            "type": "blob"
          },
          "SourceKeyId": {},
          "KeyId": {}
        }
      }
    },
    "RetireGrant": {
      "input": {
        "type": "structure",
        "required": [
          "GrantToken"
        ],
        "members": {
          "GrantToken": {}
        }
      }
    },
    "RevokeGrant": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "GrantId"
        ],
        "members": {
          "KeyId": {},
          "GrantId": {}
        }
      }
    },
    "UpdateKeyDescription": {
      "input": {
        "type": "structure",
        "required": [
          "KeyId",
          "Description"
        ],
        "members": {
          "KeyId": {},
          "Description": {}
        }
      }
    }
  },
  "shapes": {
    "S6": {
      "type": "list",
      "member": {}
    },
    "S8": {
      "type": "structure",
      "members": {
        "EncryptionContextSubset": {
          "shape": "S9"
        },
        "EncryptionContextEquals": {
          "shape": "S9"
        }
      }
    },
    "S9": {
      "type": "map",
      "key": {},
      "value": {}
    },
    "Sc": {
      "type": "list",
      "member": {}
    },
    "Sl": {
      "type": "structure",
      "required": [
        "KeyId"
      ],
      "members": {
        "AWSAccountId": {},
        "KeyId": {},
        "Arn": {},
        "CreationDate": {
          "type": "timestamp"
        },
        "Enabled": {
          "type": "boolean"
        },
        "Description": {},
        "KeyUsage": {}
      }
    },
    "St": {
      "type": "blob",
      "sensitive": true
    }
  }
}