Skip to content

Proposal: eligibleCustomerType value and paymentFrequency property with enum #80

@nickevansuk

Description

@nickevansuk

Proposer

Originally proposed by Sportlabs @dolkensp (openactive/implementation-tracker#9 (comment)).

eligibleCustomerType is implemented in various guises by Classfinder (openactive/implementation-tracker#113), Athliit (openactive/implementation-tracker#112), Our Parks (openactive/implementation-tracker#111 (comment)), England Netball (openactive/implementation-tracker#109)

paymentFrequency has been proposed as part of GO Mammoth (gomammoth/opendata#2) and implemented by MakeSweat (openactive/implementation-tracker#86), as well as raised by Everyone Active

Use Case

"As a potential participant, I want to know if the price shown requires a membership, and if the class is available to non-members"

"As a potential participant, I want to know the cost of a membership to access the class"

Why is this not covered by existing properties?

eligibleCustomerType is featured in schema.org, but there is not vocab to cover the notion of a member.

Please provide a link to example data

eligibleCustomerType is implemented in various guises by Classfinder (openactive/implementation-tracker#113), Athliit (openactive/implementation-tracker#112), Our Parks (openactive/implementation-tracker#111 (comment)), England Netball (openactive/implementation-tracker#109)

paymentFrequency has been proposed as part of GO Mammoth (gomammoth/opendata#2) and implemented by MakeSweat (openactive/implementation-tracker#86), as well as raised by Everyone Active

Proposal

Describe member-only pricing using the existing schema.org property:

"eligibleCustomerType": "http://openactive.io/ns#Member"

Describe membership pricing using the new property:

"paymentFrequency": "http://openactive.io/ns#Monthly"

Describe multi-class passes using the existing schema.org property:

"eligibleQuantity": 10

Document that for an Event to be available for pay-and-play it must have at least one Offer without eligibleQuantity (or with eligibleQuantity = 1), without paymentFrequency and without eligibleCustomerType.

Example

"offer": [
  { /* price for pay-as-you-go */
    "type": "Offer",
    "price": "7.00", 
    "priceCurrency": "GDP",
  },
  { /* price for members */
    "type": "Offer",
    "name": "Free for members",
    "price": "0.00", /* note priceCurrency not required for free */
    "eligibleCustomerType": "http://openactive.io/Member"
  },
  { /* 10-class bundle */
    "type": "Offer",
    "name": "10 class pass", /* Booking/ticket type title */
    "description": "", /* Additional information */
    "price": "50.00", /* Price */
    "priceCurrency": "GDP",
    "eligibleQuantity": 10
  },
  { /* monthly subscription */
    "type": "Offer"
    "name": "Single Class Membership",
    "url": "https://www.gomammoth.co.uk/fitness-checkout-flexible/?classid=78",
    "price": "33.00",
    "priceCurrency": "GDP",
    "paymentFrequency": "http://openactive.io/Monthly" /* use the same enum as frequency within Schedule */
  },
]

Beta Enumeration Value

"eligibleCustomerType": "https://openactive.io/ns-beta#Member"

Metadata

Metadata

Assignees

No one assigned

    Labels

    proposalProposed changes to the specification

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions