A service agent is an event-driven program (often referred to as a interceptor, listener, or filter) that does not provide a published technical interface. Instead, it is designed to act as an intermediary capable of intercepting messages at runtime. When a message is intercepted, the service agent can perform active or passive processing upon the message. Agent processing logic is generally considered active when it ends up altering the message content, whereas passive processing logic does not. An example of passive processing logic is updating a separate log file used to trace messages. Service agents play a significant role in both REST and Web service architectures.