Recently, I was quite confused by some snippets that I saw while browsing through Movable Type's plugin section. Apparently, with 3.31 and newer releases, BigPapi functionality is provided out of the box, and some plugins are actually incompatible with BigPapi because of this.
Updating an existing BigPapi plugin apparently isn't very difficult, you just have to rename some of your function calls. The problem is that there is no documentation to help you to accomplish this - which makes writing new plugins that much more difficult.
I love movable type, but I really have a problem with the documentation they produce and the accessibility of information regarding plugin functionality.
After hours of fruitless searching, I asked a question on the unsupported forums. I was referred to this page, where another developer had posted some information based on his own experience.
Apparently:


1<br /> 2bigpapi::param::edit_entry<br />
maps to


1<br /> 2MT::App::CMS::AppTemplateParam.edit_entry<br />
Unfortunately, MT::App::CMS isn't defined in the API documentation, but it is defined in an alternate API document here. Of course, there is no reference to MT::App::CMS::AppTemplateParam... oy vey. Fortunately, I did find a little bit of documentation on this page. BigPapi supported two types of callbacks - Template callbacks and Parametric callbacks. The above mapping is for parametric callbacks. For template callbacks, they would map as such:


1<br /> 2bigpapi::template::edit_entry<br />
maps to


1<br /> 2MT::App::CMS::AppTemplateSource.edit_entry<br />
There is also now


1<br /> 2MT::App::CMS::AppTemplateOutput.edit_entry<br />
which may be interchanged with AppTemplateSource for most plugins I would assume. The difference between AppTemplateSource and AppTemplateOutput is that Output actually presents you with the processed template, whereas Source provides you with the template intact as it exists in the filesystem without any parameters populated.
You could actually use a wildcard such as


1<br /> 2*::AppTemplateSource<br />
to ensure that your code would be called in any subclassed instance of MT::App, although for my own personal coding practices, I'd rather not imply the definition of my plugin within unknown environments.
So there you have it... BigPapi translated into transformer plugins. The original BigPapi developer docs are still useful if you can manage to keep the context mapping straight. While still a little bit thin, reviewing that doc in addition to some existing plugins is probably your best guide to move forward with.
Transformer Plugins in Movable Type 3.31 Interaction
