gbfs icon indicating copy to clipboard operation
gbfs copied to clipboard

Add reservation price

Open benwedge opened this issue 4 years ago • 8 comments

I work for Joyride, a whitelabel solutions company enabling small operators to launch micromobility fleets around the world. Many of our clients use GBFS.

We would like to include a reservation price in the feeds, as some of our clients charge a fee to reserve the vehicle. This appears to be common with our competitors as well based on a market scan.

Please describe some potential solutions you have considered (even if they aren’t related to GBFS).

  1. Adding this information as a flat rate to system_pricing_plans as reservation_price
  2. Adding this information as a variable rate in system_pricing_plans in the same manner as per_min_pricing
  3. Some combination of the two options above for flexibility
  4. Adding this to vehicle_types
  5. Adding this to free_bike_status

Is your potential solution a breaking change?

  • [ ] Yes
  • [x] No
  • [ ] Unsure

benwedge avatar Jan 13 '22 21:01 benwedge

Hello @benwedge - welcome, it's wonderful to have your input. This a sounds very reasonable to me although I haven't seen much reservation pricing like this in the wild. Can you point to some examples you know of, either on the Joyride platform or elsewhere? thanks!

mplsmitch avatar Jan 17 '22 15:01 mplsmitch

This is an example from Bird in Ottawa (non-Joyride), where they charge $0.35 per minute to reserve, with a maximum of 30 min, which suggests we should do this in the manner of per_min_pricing

This is an example from Unlimited Biking (Joyride client), who charges 1 USD for up to 5 minutes. This would suggest that a flat rate pricing plan is needed.

For the Bird example, the rider would be charged per minute for the reservation, then an unlock fee, then a per minute fee on the ride. With the Unlimited Biking example, there is a flat rate to reserve, an unlock fee, and then a per minute fee once the ride begins.

I can do a more comprehensive search if needed to prove how popular this may be.

benwedge avatar Jan 17 '22 20:01 benwedge

@benwedge there was some work done on reservations a while back when we were working on integrating carsharing but the only thing that ultimately made it in the spec was default_reserve_time as part of vehicle_types in v2.3-RC2. I think this belongs in the system_pricing_plans file and your examples above indicate that more than one solution is needed. Can you share a URL for an Unlimited Biking system_pricing_plans endpoint or maybe one from another of your clients? I'd like to see how they're using pricing.

mplsmitch avatar Apr 01 '22 15:04 mplsmitch

Hi @mplsmitch - we have yet to upgrade to a version where we would use per-minute pricing (2.2 or 2.3). What I can share is this older feed for Ginger, https://eu-feeds.joyridecity.bike/api/v1/ginger/chester/gbfs/1/system_pricing_plans.json, which refers to this fleet https://www.ginger.town/chester. The reservation rule for that operation is 2 GBP per 5 min interval.

When we upgrade to 2.3 their pricing will look like: "plans": [ { "plan_id": "{{uuid}}", "name": "Chester", "currency": "GBP", "price": 2.00, "is_taxable": true, "description": "Let's Go Tees Valley!\r\nLet's Go Ginger!", "per_min_pricing": [ { "start": 20, "rate": 2.00, "interval": 20 },

benwedge avatar Apr 01 '22 17:04 benwedge

This discussion has been automatically marked as stale because it has not had recent activity. It will be closed in 60 days if no further activity occurs. Thank you for your contributions.

stale[bot] avatar Jul 30 '22 19:07 stale[bot]

Hi @mplsmitch just wanted to follow up on the information provided above

benwedge avatar Aug 03 '22 16:08 benwedge

Here's a proposal - if it's acceptable to everyone I'll open a PR - if not, weigh in here and let me know what needs fixing and/or clarifying.

To be added to: system_pricing_plans.json

Field REQUIRED Defines
reservation_price_per_min OPTIONAL The cost, described per minute, to reserve the vehicle prior to beginning a rental. This amount is charged for each minute of the vehicle reservation until the rental is initiated, or until the number of minutes defined in vehicle_types.json#default_reserve_time elapses, whichever comes first. When using this field, you MUST declare a value in vehicle_types.json#default_reserve_time. This field MUST NOT be combined in a single pricing plan with reservation_price_flat_rate.
reservation_price_flat_rate OPTIONAL The cost, described as a flat rate, to reserve the vehicle prior to beginning a rental. This amount is charged once to reserve the vehicle for the duration of the time defined by vehicle_types/json#default_reserve_time. When using this field, you MUST declare a value in vehicle_types/json#default_reserve_time.  This field  MUST NOT be combined in a single pricing plan with reservation_price_per_min.

cc: @benwedge

mplsmitch avatar Aug 23 '22 21:08 mplsmitch

This proposal looks good to me, @mplsmitch. It does make me wonder if default_reserve_time is an appropriate descriptor, but that's a separate issue.

benwedge avatar Aug 24 '22 15:08 benwedge

@benwedge there's a discussion that explains why we went with default_reserve_time vs just reserve_time here: https://github.com/NABSA/gbfs/pull/331

On Wed, Aug 24, 2022 at 10:24 AM benwedge @.***> wrote:

This proposal looks good to me, @mplsmitch https://github.com/mplsmitch. It does make me wonder if default_reserve_time is an appropriate descriptor, but that's a separate issue.

— Reply to this email directly, view it on GitHub https://github.com/NABSA/gbfs/issues/401#issuecomment-1225876182, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADUHWFOUTW3P3OWWCIHMTWLV2Y5D5ANCNFSM5L5BWRHQ . You are receiving this because you were mentioned.Message ID: @.***>

mplsmitch avatar Oct 11 '22 07:10 mplsmitch

Hi @benwedge @mplsmitch

Would you be interested in opening a PR for this change using the current proposal?

At MobilityData we’re happy to walk along with you during the change process (PR opening and vote calling) and help facilitate it.

Sergiodero avatar Oct 14 '22 17:10 Sergiodero

Sure, how do I do that? @Sergiodero

benwedge avatar Oct 14 '22 17:10 benwedge

Thanks @benwedge

You would need to open a new Pull Request proposing the changes in the GBFS repo, allowing at least 7 calendar days for discussion to then call for a vote once the discussion is considered resolved. Perhaps @mplsmitch might still be able to help with this first step (opening the PR).

Please note that for the vote to be passed it requires unanimous consensus with at least 3 votes in favor (two of them coming from one producer and one consumer). For further reference please look at the current governance documentation.

Sergiodero avatar Oct 14 '22 18:10 Sergiodero

@benwedge I'll open a PR - if you open it then you're not eligible to vote and we may need your vote to pass it

mplsmitch avatar Oct 14 '22 18:10 mplsmitch

Oops, I created it before seeing your note!

benwedge avatar Oct 14 '22 18:10 benwedge

No problem - looks like you created it on an old branch of mine that's no longer relevant, which creates tons of merge conflicts. For future reference, when working on a PR you should always start with a new branch created from the master so that everything is up to date.

I'll make a new PR, should be ready later today.

mplsmitch avatar Oct 14 '22 19:10 mplsmitch

Sorry! Thanks for your patience & clarification on this

benwedge avatar Oct 14 '22 19:10 benwedge

Closing this to ensure all discussion stays in #457

josee-sabourin avatar Jan 19 '23 13:01 josee-sabourin

Hey @benwedge - there's a PR on this that's open for a vote. We need one more vote for it to pass and become part of the next version. As a GBFS producer you are eligible to vote. Please have a look, voting closes tomorrow at 11:59PM UTC on Friday, January 20th.

mplsmitch avatar Jan 19 '23 18:01 mplsmitch