 
   ## Endpoint API
 
-  In the previous section, we have used the `config/2` function that is
-  automatically generated in your endpoint. Here is a summary of all the
-  functions that are automatically defined in your endpoint.
-
-  #### Paths and URLs
-
-    * `struct_url()` - generates the endpoint base URL, but as a `URI` struct
-    * `url()` - generates the endpoint base URL without any path information
-    * `path(path)` - generates the path information when routing to this endpoint
-    * `static_url()` - generates the static URL without any path information
-    * `static_path(path)` - generates a route to a static file in `priv/static`
-
-  #### Channels
-
-    * `subscribe(topic, opts)` - subscribes the caller to the given topic.
-      See `Phoenix.PubSub.subscribe/3` for options.
-
-    * `unsubscribe(topic)` - unsubscribes the caller from the given topic.
-
-    * `broadcast(topic, event, msg)` - broadcasts a `msg` as `event`
-      in the given `topic`.
-
-    * `broadcast!(topic, event, msg)` - broadcasts a `msg` as `event`
-      in the given `topic`. Raises in case of failures.
-
-    * `broadcast_from(from, topic, event, msg)` - broadcasts a `msg` from
-      the given `from` as `event` in the given `topic`.
-
-    * `broadcast_from!(from, topic, event, msg)` - broadcasts a `msg` from
-      the given `from` as `event` in the given `topic`. Raises in case of failures.
-
-  #### Endpoint configuration
-
-    * `start_link()` - starts the Endpoint supervision tree, including its
-      configuration cache and possibly the servers for handling requests
-    * `config(key, default)` - access the endpoint configuration given by key
-    * `config_change(changed, removed)` - reload the endpoint configuration
-      on application upgrades
-
-  #### Plug API
-
-    * `init(opts)` - invoked when starting the endpoint server
-    * `call(conn, opts)` - invoked on every request (simply dispatches to
-      the defined plug pipeline)
-
-  #### Instrumentation API
-
-    * `instrument(event, runtime_metadata \\ nil, function)` - read more about
-      instrumentation in the "Instrumentation" section
+  In the previous section, we have used the `c:config/2` function that is
+  automatically generated in your endpoint. Here's a list of all the functions
+  that are automatically defined in your endpoint:
+
+    * for handling paths and URLs: `c:struct_url/0`, `c:url/0`, `c:path/1`,
+      `c:static_url/0`, and `c:static_path/1`;
+    * for handling channel subscriptions: `c:subscribe/2` and `c:unsubscribe/1`;
+    * for broadcasting to channels: `c:broadcast/3`, `c:broadcast!/3`,
+      `c:broadcast_from/4`, and `c:broadcast_from!/4`
+    * for configuration: `c:start_link/0`, `c:config/2`, and `c:config_change/2`;
+    * for instrumentation: `c:instrument/3`;
+    * as required by the `Plug` behaviour: `c:Plug.init/1` and `c:Plug.call/2`.
 
   ## Instrumentation
 
   Phoenix supports instrumentation through an extensible API. Each endpoint
-  defines an `instrument/3` macro that both users and Phoenix internals can call
+  defines an `c:instrument/3` macro that both users and Phoenix internals can call
   to instrument generic events. This macro is responsible for measuring the time
   it takes for the event to be processed and for notifying a list of interested
   instrumenter modules of this measurement.

  called like this:

      require MyApp.Endpoint
      MyApp.Endpoint.instrument :render_view, %{view: "index.html"}, fn ->
        # actual view rendering
      end

  All the instrumenter modules that export a `render_view/3` function will be
  notified of the event so that they can perform their respective actions.

      `:endpoint` field of the socket; if it's not there, `fun` will be
      executed with no instrumentation

  Usually, users should prefer to instrument events using the `c:instrument/3`
  macro defined in every Phoenix endpoint. This macro should only be used for
  cases when the endpoint is dynamic and not known at compile time.

