An all-pass filter has a constant gain over all frequencies. For every pole, the filter has a conjugate-reciprocal copy in a zero. An all-pass filter may have several conjugate-reciprocal pole-zero pairs. The general form of the transfer function for such a filter is
H(z) = A \prod\limits_{k=1}^{n}\left(\frac{z - c_k}{1 - c^*_kz} \right)
where A is a constant. The above expression is a form of a more general class known as Blashcke (pron. Bloss Kee) products, named after the Austrian mathematician Wilhelm Blaschke. The all-pass filter of order n as above is a finite Blashcke product. Finite Blashcke products were around for a while (but not addressed so) even before Blashcke proposed their infinite counterparts in 1915.

Closely associated with the all-pass filters are Blashcke matrices which are of the form \mathbf{B}(z) \mathbf{B}^*(z^{-1}) = \mathbf{I}, such that \mathbf{B}(z) has no poles within the unit circle and \mathbf{B}^*(z^{-1}) is the conjugate transpose. This is similar to the factorization of an all-pass filter [1].

Blashcke products are very useful in digital filter design. A recent book [1] has more information on other applications of Blashcke products.

[1] Mandic D. P. and Goh V. S. L., “Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models,” Wiley, 2009, p.146-147.
[2] Mashreghi J. and Fricain E., “Blaschke Products and Their Applications,” Springer, 2013.