{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "HandleAnswer",
  "anyOf": [
    {
      "description": "MintNft will also display the minted token's ID in the log attributes under the key `minted` in case minting was done as a callback message",
      "type": "object",
      "required": [
        "mint_nft"
      ],
      "properties": {
        "mint_nft": {
          "type": "object",
          "required": [
            "token_id"
          ],
          "properties": {
            "token_id": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "description": "BatchMintNft will also display the minted tokens' IDs in the log attributes under the key `minted` in case minting was done as a callback message",
      "type": "object",
      "required": [
        "batch_mint_nft"
      ],
      "properties": {
        "batch_mint_nft": {
          "type": "object",
          "required": [
            "token_ids"
          ],
          "properties": {
            "token_ids": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    {
      "description": "Displays the token ids of the first minted NFT and the last minted NFT.  Because these are serialized clones, the ids of all the tokens minted in between should be easily inferred.  MintNftClones will also display the minted tokens' IDs in the log attributes under the keys `first_minted` and `last_minted` in case minting was done as a callback message",
      "type": "object",
      "required": [
        "mint_nft_clones"
      ],
      "properties": {
        "mint_nft_clones": {
          "type": "object",
          "required": [
            "first_minted",
            "last_minted"
          ],
          "properties": {
            "first_minted": {
              "description": "token id of the first minted clone",
              "type": "string"
            },
            "last_minted": {
              "description": "token id of the last minted clone",
              "type": "string"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_metadata"
      ],
      "properties": {
        "set_metadata": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_royalty_info"
      ],
      "properties": {
        "set_royalty_info": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "make_ownership_private"
      ],
      "properties": {
        "make_ownership_private": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "reveal"
      ],
      "properties": {
        "reveal": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "approve"
      ],
      "properties": {
        "approve": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "revoke"
      ],
      "properties": {
        "revoke": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "approve_all"
      ],
      "properties": {
        "approve_all": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "revoke_all"
      ],
      "properties": {
        "revoke_all": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_global_approval"
      ],
      "properties": {
        "set_global_approval": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_whitelisted_approval"
      ],
      "properties": {
        "set_whitelisted_approval": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "transfer_nft"
      ],
      "properties": {
        "transfer_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "batch_transfer_nft"
      ],
      "properties": {
        "batch_transfer_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "send_nft"
      ],
      "properties": {
        "send_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "batch_send_nft"
      ],
      "properties": {
        "batch_send_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "burn_nft"
      ],
      "properties": {
        "burn_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "batch_burn_nft"
      ],
      "properties": {
        "batch_burn_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "register_receive_nft"
      ],
      "properties": {
        "register_receive_nft": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "description": "response from both setting and creating a viewing key",
      "type": "object",
      "required": [
        "viewing_key"
      ],
      "properties": {
        "viewing_key": {
          "type": "object",
          "required": [
            "key"
          ],
          "properties": {
            "key": {
              "type": "string"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "add_minters"
      ],
      "properties": {
        "add_minters": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "remove_minters"
      ],
      "properties": {
        "remove_minters": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_minters"
      ],
      "properties": {
        "set_minters": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "change_admin"
      ],
      "properties": {
        "change_admin": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "set_contract_status"
      ],
      "properties": {
        "set_contract_status": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    },
    {
      "type": "object",
      "required": [
        "revoke_permit"
      ],
      "properties": {
        "revoke_permit": {
          "type": "object",
          "required": [
            "status"
          ],
          "properties": {
            "status": {
              "$ref": "#/definitions/ResponseStatus"
            }
          }
        }
      }
    }
  ],
  "definitions": {
    "ResponseStatus": {
      "type": "string",
      "enum": [
        "success",
        "failure"
      ]
    }
  }
}