# `ScoutApm.Internal.Layer`

Internal to the ScoutAPM agent.

Represents a single layer during a TrackedRequest

# `t`

```elixir
@type t() :: %ScoutApm.Internal.Layer{
  backtrace: nil | [any()],
  children: [
    %ScoutApm.Internal.Layer{
      backtrace: term(),
      children: term(),
      db_command: term(),
      db_rows: term(),
      desc: term(),
      http_method: term(),
      http_status_code: term(),
      http_url: term(),
      manual_duration: term(),
      name: term(),
      scopable: term(),
      started_at: term(),
      stopped_at: term(),
      type: term(),
      uri: term()
    }
  ],
  db_command: nil | String.t(),
  db_rows: nil | non_neg_integer(),
  desc: nil | String.t(),
  http_method: nil | String.t(),
  http_status_code: nil | non_neg_integer(),
  http_url: nil | String.t(),
  manual_duration: nil | ScoutApm.Internal.Duration.t(),
  name: nil | String.t(),
  scopable: boolean(),
  started_at: number(),
  stopped_at: nil | Integer,
  type: String.t(),
  uri: nil | String.t()
}
```

# `new`

```elixir
@spec new(map()) :: t()
```

# `set_manual_duration`

# `total_child_time`

# `total_exclusive_time`

# `total_time`

# `update_backtrace`

# `update_children`

# `update_db_command`

# `update_db_rows`

# `update_desc`

# `update_fields`

# `update_http_method`

# `update_http_status_code`

# `update_http_url`

# `update_name`

# `update_stopped_at`

# `update_stopped_at`

# `update_uri`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
