stonith_admin was the first tool whose functionality was moved to libpacemaker. We implemented a public API for it but did not expose it (see BUILD_PUBLIC_LIBPACEMAKER) because we weren't sure what we should expose yet.
Now that we have more experience, it's clear we just need to drop the stonith_t argument from the public APIs. Each public API should be a wrapper that creates a stonith_t (as well as an output object), calls the internal API, and returns the (XML) result.
Two functions will need additional changes. pcmk_fence_register_level() and pcmk_fence_validate() currently take a stonith_key_value_t argument. That shouldn't be used in libpacemaker APIs because it will likely be replaced when libstonithd is eventually merged into libcrmservice. pcmk_fence_register_level() can use a GList of char* instead (create_level_registration_xml() uses only the values, not the keys). pcmk_fence_validate() can use GHashTable; the first thing stonith_api_validate() does is convert the key pairs to a GHashTable, so it can be split into a wrapper that does that and a real function that doesn't (and can be called directly by pcmk_fence_validate() rather than as a stonith_t method).