[api] split the changestate check

the various action types require different checks so they can also have
different functions