When building HTTP based applications we are limited to a small set of HTTP methods in order to achieve the goals of our application. Once our needs go beyond simple CRUD style manipulation of resource representations, we need to be a little more creative in the way we manipulate resources in order to achieve more complex goals.
A factory resource is one that is used to create another resource.
A resource that provides access to a subset of a larger set of information through the use of parameters that filter, project and zoom information from the complete set.
A resource designed to accept a request body containing complex query parameters and redirect to a new location to enable the results of complex and expensive queries to be cached.
A type of resource that when deleted, re-appears as a different resource.
A resource designed to enable doing a partial updates to another resource.
A resource designed to provide a logical identifier but without being responsible for incurring the costs of transferring the representation.
This type of resource is used to provide a client with the information it needs to be able to access other resources. This removes the need for a client to hardcode resource URLs which include information such as the protocol scheme, host, path and query string.
A progress resource is usually a temporary resource that is created automatically by the server to provide status on some long running process that has been initiated by a client. It is used to provide feedback to an end user and point to the results of an operation once it has completed.
A builder resource is much like a factory resource in that it is used to create another resource, however, it is a transient resource that enables idempotent creation and allows the client to specify values that cannot change over the lifetime of the created resource.