lib/onebusaway_sdk/models/schedule_for_route_retrieve_response.rb



# frozen_string_literal: true

module OnebusawaySDK
  module Models
    # @see OnebusawaySDK::Resources::ScheduleForRoute#retrieve
    class ScheduleForRouteRetrieveResponse < OnebusawaySDK::Models::ResponseWrapper
      # @!attribute data
      #
      #   @return [OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data]
      required :data, -> { OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data }

      # @!method initialize(data:)
      #   @param data [OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data]

      class Data < OnebusawaySDK::Internal::Type::BaseModel
        # @!attribute entry
        #
        #   @return [OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry]
        required :entry, -> { OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry }

        # @!method initialize(entry:)
        #   @param entry [OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry]

        # @see OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data#entry
        class Entry < OnebusawaySDK::Internal::Type::BaseModel
          # @!attribute route_id
          #
          #   @return [String]
          required :route_id, String, api_name: :routeId

          # @!attribute schedule_date
          #
          #   @return [Integer]
          required :schedule_date, Integer, api_name: :scheduleDate

          # @!attribute service_ids
          #
          #   @return [Array<String>]
          required :service_ids, OnebusawaySDK::Internal::Type::ArrayOf[String], api_name: :serviceIds

          # @!attribute stops
          #
          #   @return [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Stop>]
          required :stops,
                   -> { OnebusawaySDK::Internal::Type::ArrayOf[OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Stop] }

          # @!attribute stop_trip_groupings
          #
          #   @return [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping>]
          required :stop_trip_groupings,
                   -> { OnebusawaySDK::Internal::Type::ArrayOf[OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping] },
                   api_name: :stopTripGroupings

          # @!attribute trips
          #
          #   @return [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Trip>]
          required :trips,
                   -> { OnebusawaySDK::Internal::Type::ArrayOf[OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Trip] }

          # @!method initialize(route_id:, schedule_date:, service_ids:, stops:, stop_trip_groupings:, trips:)
          #   @param route_id [String]
          #   @param schedule_date [Integer]
          #   @param service_ids [Array<String>]
          #   @param stops [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Stop>]
          #   @param stop_trip_groupings [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping>]
          #   @param trips [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::Trip>]

          class Stop < OnebusawaySDK::Internal::Type::BaseModel
            # @!attribute id
            #
            #   @return [String]
            required :id, String

            # @!attribute lat
            #
            #   @return [Float]
            required :lat, Float

            # @!attribute location_type
            #
            #   @return [Integer]
            required :location_type, Integer, api_name: :locationType

            # @!attribute lon
            #
            #   @return [Float]
            required :lon, Float

            # @!attribute name
            #
            #   @return [String]
            required :name, String

            # @!attribute parent
            #
            #   @return [String]
            required :parent, String

            # @!attribute route_ids
            #
            #   @return [Array<String>]
            required :route_ids, OnebusawaySDK::Internal::Type::ArrayOf[String], api_name: :routeIds

            # @!attribute static_route_ids
            #
            #   @return [Array<String>]
            required :static_route_ids,
                     OnebusawaySDK::Internal::Type::ArrayOf[String],
                     api_name: :staticRouteIds

            # @!attribute code
            #
            #   @return [String, nil]
            optional :code, String

            # @!attribute direction
            #
            #   @return [String, nil]
            optional :direction, String

            # @!attribute wheelchair_boarding
            #
            #   @return [String, nil]
            optional :wheelchair_boarding, String, api_name: :wheelchairBoarding

            # @!method initialize(id:, lat:, location_type:, lon:, name:, parent:, route_ids:, static_route_ids:, code: nil, direction: nil, wheelchair_boarding: nil)
            #   @param id [String]
            #   @param lat [Float]
            #   @param location_type [Integer]
            #   @param lon [Float]
            #   @param name [String]
            #   @param parent [String]
            #   @param route_ids [Array<String>]
            #   @param static_route_ids [Array<String>]
            #   @param code [String]
            #   @param direction [String]
            #   @param wheelchair_boarding [String]
          end

          class StopTripGrouping < OnebusawaySDK::Internal::Type::BaseModel
            # @!attribute direction_id
            #
            #   @return [String]
            required :direction_id, String, api_name: :directionId

            # @!attribute stop_ids
            #
            #   @return [Array<String>]
            required :stop_ids, OnebusawaySDK::Internal::Type::ArrayOf[String], api_name: :stopIds

            # @!attribute trip_headsigns
            #
            #   @return [Array<String>]
            required :trip_headsigns, OnebusawaySDK::Internal::Type::ArrayOf[String], api_name: :tripHeadsigns

            # @!attribute trip_ids
            #
            #   @return [Array<String>]
            required :trip_ids, OnebusawaySDK::Internal::Type::ArrayOf[String], api_name: :tripIds

            # @!attribute trips_with_stop_times
            #
            #   @return [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime>, nil]
            optional :trips_with_stop_times,
                     -> { OnebusawaySDK::Internal::Type::ArrayOf[OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime] },
                     api_name: :tripsWithStopTimes

            # @!method initialize(direction_id:, stop_ids:, trip_headsigns:, trip_ids:, trips_with_stop_times: nil)
            #   @param direction_id [String]
            #   @param stop_ids [Array<String>]
            #   @param trip_headsigns [Array<String>]
            #   @param trip_ids [Array<String>]
            #   @param trips_with_stop_times [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime>]

            class TripsWithStopTime < OnebusawaySDK::Internal::Type::BaseModel
              # @!attribute stop_times
              #
              #   @return [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime::StopTime>]
              required :stop_times,
                       -> do
                         OnebusawaySDK::Internal::Type::ArrayOf[
                           OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime::StopTime
                         ]
                       end,
                       api_name: :stopTimes

              # @!attribute trip_id
              #
              #   @return [String]
              required :trip_id, String, api_name: :tripId

              # @!method initialize(stop_times:, trip_id:)
              #   @param stop_times [Array<OnebusawaySDK::Models::ScheduleForRouteRetrieveResponse::Data::Entry::StopTripGrouping::TripsWithStopTime::StopTime>]
              #   @param trip_id [String]

              class StopTime < OnebusawaySDK::Internal::Type::BaseModel
                # @!attribute arrival_enabled
                #
                #   @return [Boolean]
                required :arrival_enabled, OnebusawaySDK::Internal::Type::Boolean, api_name: :arrivalEnabled

                # @!attribute arrival_time
                #
                #   @return [Integer]
                required :arrival_time, Integer, api_name: :arrivalTime

                # @!attribute departure_enabled
                #
                #   @return [Boolean]
                required :departure_enabled,
                         OnebusawaySDK::Internal::Type::Boolean,
                         api_name: :departureEnabled

                # @!attribute departure_time
                #
                #   @return [Integer]
                required :departure_time, Integer, api_name: :departureTime

                # @!attribute stop_id
                #
                #   @return [String]
                required :stop_id, String, api_name: :stopId

                # @!attribute trip_id
                #
                #   @return [String]
                required :trip_id, String, api_name: :tripId

                # @!attribute service_id
                #
                #   @return [String, nil]
                optional :service_id, String, api_name: :serviceId

                # @!attribute stop_headsign
                #
                #   @return [String, nil]
                optional :stop_headsign, String, api_name: :stopHeadsign

                # @!method initialize(arrival_enabled:, arrival_time:, departure_enabled:, departure_time:, stop_id:, trip_id:, service_id: nil, stop_headsign: nil)
                #   @param arrival_enabled [Boolean]
                #   @param arrival_time [Integer]
                #   @param departure_enabled [Boolean]
                #   @param departure_time [Integer]
                #   @param stop_id [String]
                #   @param trip_id [String]
                #   @param service_id [String]
                #   @param stop_headsign [String]
              end
            end
          end

          class Trip < OnebusawaySDK::Internal::Type::BaseModel
            # @!attribute id
            #
            #   @return [String]
            required :id, String

            # @!attribute route_id
            #
            #   @return [String]
            required :route_id, String, api_name: :routeId

            # @!attribute service_id
            #
            #   @return [String]
            required :service_id, String, api_name: :serviceId

            # @!attribute block_id
            #
            #   @return [String, nil]
            optional :block_id, String, api_name: :blockId

            # @!attribute direction_id
            #
            #   @return [String, nil]
            optional :direction_id, String, api_name: :directionId

            # @!attribute peak_offpeak
            #
            #   @return [Integer, nil]
            optional :peak_offpeak, Integer, api_name: :peakOffpeak

            # @!attribute route_short_name
            #
            #   @return [String, nil]
            optional :route_short_name, String, api_name: :routeShortName

            # @!attribute shape_id
            #
            #   @return [String, nil]
            optional :shape_id, String, api_name: :shapeId

            # @!attribute time_zone
            #
            #   @return [String, nil]
            optional :time_zone, String, api_name: :timeZone

            # @!attribute trip_headsign
            #
            #   @return [String, nil]
            optional :trip_headsign, String, api_name: :tripHeadsign

            # @!attribute trip_short_name
            #
            #   @return [String, nil]
            optional :trip_short_name, String, api_name: :tripShortName

            # @!method initialize(id:, route_id:, service_id:, block_id: nil, direction_id: nil, peak_offpeak: nil, route_short_name: nil, shape_id: nil, time_zone: nil, trip_headsign: nil, trip_short_name: nil)
            #   @param id [String]
            #   @param route_id [String]
            #   @param service_id [String]
            #   @param block_id [String]
            #   @param direction_id [String]
            #   @param peak_offpeak [Integer]
            #   @param route_short_name [String]
            #   @param shape_id [String]
            #   @param time_zone [String]
            #   @param trip_headsign [String]
            #   @param trip_short_name [String]
          end
        end
      end
    end
  end
end