docs: def parse_url_to_topic(method, route):
      """
      Transforms a URL to a topic.
  
      `GET /bar/{id}` -> `get.bar.*`
      `POST /bar/{id}` -> `post.bar.*`
      `GET /foo/bar/{id}/baz` -? `get.foo.bar.*.baz`
  
      Possible gotchas
  
      `GET /foo/{id}` -> `get.foo.*`
      `GET /foo/{id}:action` -> `get.foo.*`
  
      However, once it hits the service the router will be able to distinguish the two requests.
      """
      route = route.replace('.', '?')
      route = route.replace('/', '.').strip('.')
      topic = f'{method.value.lower()}.{route}'
      # need to replace `{id}` and `{id}:some_method` with just `*`
      return re.sub(r"\.\{[^\}]*\}[:\w\d_-]*", ".*", topic)