# `Electric.Shapes.Api.Response`
[🔗](https://github.com/electric-sql/electric/tree/%40core/sync-service%401.6.2/packages/sync-service/lib/electric/shapes/api/response.ex#L1)

# `shape_handle`

```elixir
@type shape_handle() :: Electric.shape_handle()
```

# `t`

```elixir
@type t() :: %Electric.Shapes.Api.Response{
  api: Electric.Shapes.Api.t(),
  body: Enum.t(),
  chunked: boolean(),
  finalized?: boolean(),
  handle: nil | shape_handle(),
  known_error: term(),
  no_changes: boolean(),
  offset: nil | Electric.Replication.LogOffset.t(),
  params: Electric.Shapes.Api.Params.t(),
  response_type: :normal_log | :subset,
  retry_after: term(),
  shape_definition: nil | Electric.Shapes.Shape.t(),
  status: pos_integer(),
  trace_attrs: %{optional(atom()) =&gt; term()},
  up_to_date: boolean()
}
```

# `electric_headers`

# `ensure_cleanup`

# `error`

```elixir
@spec error(
  Electric.Shapes.Api.t() | Electric.Shapes.Api.Request.t(),
  term(),
  keyword()
) :: t()
```

# `etag`

# `final`

# `invalid_request`

# `send`

```elixir
@spec send(Plug.Conn.t(), t()) :: Plug.Conn.t()
```

# `shape_definition_mismatch`

---

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