# NOTE: This file is auto generated by OpenAPI Generator 7.1.0 (https://openapi-generator.tech).
# Do not edit this file manually.
defmodule MBTA.Api.Shape do
@moduledoc """
API calls for all endpoints tagged `Shape`.
"""
alias MBTA.Connection
import MBTA.RequestBuilder
@doc """
**NOTE:** `filter[route]` **MUST** be given for any shapes to be returned. List of shapes. ## Vertices ### World `/data/{index}/attributes/polyline` is in [Encoded Polyline Algorithm Format](https://developers.google.com/maps/documentation/utilities/polylinealgorithm), which encodes the latitude and longitude of a sequence of points in the shape.
### Parameters
- `connection` (MBTA.Connection): Connection to server
- `filter_left_square_bracketroute_right_square_bracket` (String.t): Filter by `/data/{index}/relationships/route/data/id`. Multiple IDs **MUST** be a comma-separated (U+002C COMMA, \",\") list.
- `opts` (keyword): Optional parameters
- `:"page[offset]"` (integer()): Offset (0-based) of first element in the page
- `:"page[limit]"` (integer()): Max number of elements to return
- `:sort` (String.t): Results can be [sorted](http://jsonapi.org/format/#fetching-sorting) by the id or any `/data/{index}/attributes` key. Assumes ascending; may be prefixed with '-' for descending | JSON pointer | Direction | `sort` | |--------------|-----------|------------| | `/data/{index}/attributes/polyline` | ascending | `polyline` | | `/data/{index}/attributes/polyline` | descending | `-polyline` |
- `:"fields[shape]"` (String.t): Fields to include with the response. Multiple fields **MUST** be a comma-separated (U+002C COMMA, \",\") list. Note that fields can also be selected for included data types: see the [V3 API Best Practices](https://www.mbta.com/developers/v3-api/best-practices) for an example.
### Returns
- `{:ok, MBTA.Model.Shapes.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec api_web_shape_controller_index(Tesla.Env.client, String.t, keyword()) :: {:ok, MBTA.Model.Forbidden.t} | {:ok, MBTA.Model.TooManyRequests.t} | {:ok, MBTA.Model.Shapes.t} | {:ok, MBTA.Model.BadRequest.t} | {:error, Tesla.Env.t}
def api_web_shape_controller_index(connection, filter_left_square_bracketroute_right_square_bracket, opts \\ []) do
optional_params = %{
:"page[offset]" => :query,
:"page[limit]" => :query,
:sort => :query,
:"fields[shape]" => :query
}
request =
%{}
|> method(:get)
|> url("/shapes")
|> add_param(:query, :"filter[route]", filter_left_square_bracketroute_right_square_bracket)
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{429, MBTA.Model.TooManyRequests},
{403, MBTA.Model.Forbidden},
{400, MBTA.Model.BadRequest},
{200, MBTA.Model.Shapes}
])
end
@doc """
Detail of a particular shape. ## Vertices ### World `/data/attributes/polyline` is in [Encoded Polyline Algorithm Format](https://developers.google.com/maps/documentation/utilities/polylinealgorithm), which encodes the latitude and longitude of a sequence of points in the shape.
### Parameters
- `connection` (MBTA.Connection): Connection to server
- `id` (String.t): Unique identifier for shape
- `opts` (keyword): Optional parameters
- `:"fields[shape]"` (String.t): Fields to include with the response. Multiple fields **MUST** be a comma-separated (U+002C COMMA, \",\") list. Note that fields can also be selected for included data types: see the [V3 API Best Practices](https://www.mbta.com/developers/v3-api/best-practices) for an example.
### Returns
- `{:ok, MBTA.Model.Shape.t}` on success
- `{:error, Tesla.Env.t}` on failure
"""
@spec api_web_shape_controller_show(Tesla.Env.client, String.t, keyword()) :: {:ok, MBTA.Model.NotAcceptable.t} | {:ok, MBTA.Model.Forbidden.t} | {:ok, MBTA.Model.Shape.t} | {:ok, MBTA.Model.TooManyRequests.t} | {:ok, MBTA.Model.NotFound.t} | {:ok, MBTA.Model.BadRequest.t} | {:error, Tesla.Env.t}
def api_web_shape_controller_show(connection, id, opts \\ []) do
optional_params = %{
:"fields[shape]" => :query
}
request =
%{}
|> method(:get)
|> url("/shapes/#{id}")
|> add_optional_params(optional_params, opts)
|> Enum.into([])
connection
|> Connection.request(request)
|> evaluate_response([
{429, MBTA.Model.TooManyRequests},
{406, MBTA.Model.NotAcceptable},
{404, MBTA.Model.NotFound},
{403, MBTA.Model.Forbidden},
{400, MBTA.Model.BadRequest},
{200, MBTA.Model.Shape}
])
end
end