Hi Nick -
Each RKObjectRequestOperation determines how to perform mapping by evaluating the response of the HTTP request against the array of RKResponseDescriptor objects with which it was initialized. When you obtain an object request operation from the manager, it gets initialized with all of the RKResponseDescriptor objects that could possibly match (based on the path pattern). Once the response is loaded, the response descriptors are enumerated to find matches for the response payload and then they are handed off to the response mapper operation for processing.
For your case, you will probably want to obtain an operation directly, configure the mapping descriptors, and then enqueue it. If you want to preserve the one-liner use of getObjectsAtPath, you can subclass the object manager and encapsulate your specific logic into that subclass. I've tried to provide very sensible defaults for most straightforward use-cases but exposed all of the lower level primitive methods that will let you customize and create your own versions of the methods very easily. If you read the source code for RKObjectManager, you'll see that most of the getObjectsAtPath, put/postObject, etc. are all very short and rely on smaller bites of functionality implemented in other public methods on the manager.
If you get a 204 response, the success block is still going to be invoked, even if no mapping was performed. Error mapping has been generalized to use the response descriptor concept such an error mapping is just a mapping that happens to target a status code in the 4xx or 5xx status code range.
If you do want to really customize the HTTP handling in some way, you can register a custom subclass of RKHTTPRequestOperation on the manager. The object request operations are really just aggregate operations that run an HTTP request operation to completion, then takes the response body and runs it through an instance of RKResponseMapperOperation. If you subclass RKHTTPRequestOperation and register it on the manager, your subclass will be used for all HTTP transport for requests made through the manager. RKHTTPRequestOperation is a subclass of the AFNetworking URL connection operation, meaning that it implements the NSURLConnectionDelegate and as such has full access to entire lifecycle of the URL connection. Whatever response and error values are exposed by the HTTP operation are what flows into the response mapper.
I think you'll actually find things to be more flexible once you get oriented in the new code base. Things are much less monolithic, so its easier to break things apart and use them to construct your own operations.