Update

How to update an existing trigger via GraphQL

Update is a mutation that allows you to update triggers and returns data from the updated trigger.

To update a trigger it's necessary to pass all the elements of the trigger using the same values where you don't want the trigger to change and new values where you want them to be updated.

Updating a trigger should be done carefully:

  1. Update requires passing every field and argument and will delete them otherwise

  2. Invalid updates via GraphQL could break the trigger and result in a blank page in the frontend (the trigger will still be fixable via GraphQL)

Available update mutations

In HAL the following update mutations are available:

Mutations Name

Scope

updateTransactionsTrigger

To update a TransactionsTrigger

updateEventsTrigger

To update an EventsTrigger

updateContractsTrigger

To update a ContractsTrigger

updateTriggerStatus

To update a trigger status from active to inactive or viceversa

Examples

Update a TransactionsTrigger

mutation  {
  updateTransactionsTrigger(input: {
    UUID: "d52bc720-f096-496b-a307-692ea9c87acc",
    name: "Updated Transactions Trigger!",
    statement: {
      filters: [
      {
        condition: {
          attribute: "0x2a0c0dbecc7e4d658f48e01e3fa353f44050c2099",
          predicate: Eq
        },
        parameter: {
          name: "To"
        },
        type: BasicFilter
      },
      {
        method: {
          name: "trade"
        },
        parameter: {
          name: "tradeValues",
          type: "uint256[8]",
          index: 1
        },
        type: CheckFunctionParameter,
        condition: {
          attribute: "2500",
          predicate: SmallerThan
        }
      }
      ],
      contract: {
        address: "0x2a0c0dbecc7e4d658f48e01e3fa353f44050c299",
        abi: [{anonymous:false,inputs:[{indexed:false,internalType:"address",name:"previousAdmin",type:"address"},{indexed:false,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:false,inputs:[{indexed:true,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{payable:true,stateMutability:"payable",type:"fallback"},{constant:false,inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"_admin",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],payable:true,stateMutability:"payable",type:"function"}]
      }
    },
    actions: [
    {
      type: Email,
      attributes: {
        subject: "Changed",
        body: "New Body",
        to: [
        "newmail@hal.xyz"
        ]
      }
    },
    {
      type: Webhook,
      attributes: {
        uri: "http://yo.bar"
      }
    }  
    ]
  }) {
    UUID
  }
}

Update an EventsTrigger

mutation {
  updateEventsTrigger(input: {
  UUID: "1cbfd7f3-9448-4fd2-88a3-091678f9f68b",
  name: "New name",
  statement: {
    contract: {
      address:"0x398ec7346dcd622edc5ae82352f02be94c62d119", 
      abi: [{anonymous:false,inputs:[{indexed:false,internalType:"address",name:"previousAdmin",type:"address"},{indexed:false,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:false,inputs:[{indexed:true,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{payable:true,stateMutability:"payable",type:"fallback"},{constant:false,inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"_admin",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],payable:true,stateMutability:"payable",type:"function"}]}
    filters: [{
      #use the proper event type (follow the schema for further details)
      type:CheckEventEmitted,
      method: { 
        name:"AdminChanged"
      }
    }]
  },
  actions: [
    {
      type: Email,
      attributes: {
        subject: "Changed",
        body: "New Body",
        to: [
        "newmail@hal.xyz"
        ]
      }
    },
    {
      type: Twitter,
      attributes: {
        status: "New Message",
        token: "$TwitterToken",
        secret: "$TwitterSecret"
      }
    }
  ]
}) {
    UUID
  }
}

Update a ContractsTrigger

mutation {
  updateContractsTrigger(input: {
    UUID:"0ff665cc-457a-4954-a623-4c777c30ac71",
    name: "Trigger updated",
    statement: {
      contract: {
        address: "0xdAC17F958D2ee523a2206206994597C13D831ec7",
        abi: [{anonymous:false,inputs:[{indexed:false,internalType:"address",name:"previousAdmin",type:"address"},{indexed:false,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:false,inputs:[{indexed:true,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{payable:true,stateMutability:"payable",type:"fallback"},{constant:false,inputs:[],name:"admin",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newAdmin",type:"address"}],name:"changeAdmin",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[],name:"implementation",outputs:[{internalType:"address",name:"",type:"address"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"address",name:"_admin",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"_logic",type:"address"},{internalType:"bytes",name:"_data",type:"bytes"}],name:"initialize",outputs:[],payable:true,stateMutability:"payable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"}],name:"upgradeTo",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{internalType:"address",name:"newImplementation",type:"address"},{internalType:"bytes",name:"data",type:"bytes"}],name:"upgradeToAndCall",outputs:[],payable:true,stateMutability:"payable",type:"function"}]
      },
      method: {
        name: "balanceOf"
      }
      inputs: [
        {
          type: "address",
          name: "who",
          value: "0x04fa0d235c4abf4bcf4787af4cf447de572ef828"
        }
      ],
      outputFilters: [
        {
          parameter: {
            internalType: "uint256",
            name: "returnAmount",
            type: "uint256"
          },
          returnIndex: 0,
          condition: {
            attribute: "9000",
            predicate: BiggerThan
          }
        }
      ]
    },
    actions: [
      {
      type: Email,
      attributes: {
        subject: "Changed",
        body: "New Body",
        to: [
        "newmail@hal.xyz"
        ]
      }
    }
    ]
  }) {
      UUID
    }
}

Update a trigger status

mutation {
  updateTriggerStatus(input: {UUID: "d52bc720-f096-496b-a307-692ea9c87acc", isActive: false}) {
    UUID
    isActive
  }
}

Last updated