Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Location and RegistrationInfo objects to root #17

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 64 additions & 1 deletion specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,20 @@ The specification defines the following types:
- [Avatar](#Avatar)
- [Competition](#Competition)
- [CountryCode](#CountryCode)
- [CurrencyCode](#CurrencyCode)
- [Cutoff](#Cutoff)
- [Date](#Date)
- [DateTime](#DateTime)
- [Event](#Event)
- [Extension](#Extension)
- [Location](#Location)
- [Percent](#Percent)
- [Person](#Person)
- [PersonalBest](#PersonalBest)
- [Qualification](#Qualification)
- [Ranking](#Ranking)
- [Registration](#Registration)
- [RegistrationInfo](#RegistrationInfo)
- [Result](#Result)
- [Role](#Role)
- [Room](#Room)
Expand All @@ -55,6 +58,8 @@ Represents the root object and is usually referred to as a WCIF.
| `persons` | [`[Person]`](#person) | List of all the people related to the competition. |
| `events` | [`[Event]`](#event) | List of all events held at the competition. |
| `schedule` | [`Schedule`](#schedule) | All the data related to time and scheduling. |
| `location` | [`Location`](#location) | Data related to the competition's assigned location. |
| `registrationInfo` | [`RegistrationInfo`](#registrationinfo) | Data related to when and how competitors can register for the competition. |
| `competitorLimit` | `Integer\|null` | The maximal number of competitors that can register for the competition. |
| `extensions` | [`[Extension]`](#extension) | List of custom competition extensions. |

Expand Down Expand Up @@ -148,7 +153,17 @@ A `String` representing the [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/I
#### Example

```json
US
"US"
```

### CurrencyCode

A `String` representing the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) code of the given currency.

#### Example

```json
"CAD"
```

### Role
Expand Down Expand Up @@ -196,6 +211,28 @@ Represents person registration data.
}
```

### RegistrationInfo
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you be open to including competitorLimit here as well? I'd like to use this, along with registrationOpen and registrationClose, for Cube New England's website, so I can say "87 / 125 spots filled".


Represents information related to when and how to register for the competition.

| Attribute | Type | Description |
| --- | --- | --- |
| `registrationOpen` | [`DateTime`](#datetime) | The point in time when online registration opens. |
| `registrationClose` | [`DateTime`](#datetime) | The point in time when online registration closes. |
| `baseEntryFee` | `Integer` | The competition's base fee for online registration. |
| `currencyCode` | [`CurrencyCode`](#currencycode) | The currency of the `baseEntryFee`. |

#### Example

```json
{
"registrationOpen": "2023-08-29T05:00:00Z",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't really like the idea of doing .registrationInfo.registrationOpen. That names are redundant. We could have just .registration.openDate or for consistency, .registration.startDate

"registrationClose": "2023-10-13T06:00:00Z",
"baseEntryFee": 20,
"currencyCode": "USD"
}
```

### Avatar

Represents an avatar image.
Expand Down Expand Up @@ -556,6 +593,32 @@ Represents the competition data related to time and scheduling.
}
```

### Location
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I definitely have to veto this part of the changeset, as it is largely redundant with the "venues" part.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More information/thoughts in my general review comment.


Represents the main location assigned to a competition. The `Location` may contain some data that overlaps with a competition [`Venue`](#Venue), but it is possible that no competition `Venue` contains the exact same data as the `Location` (e.g., for 3x3x3 Fewest Moves simultaneous competitions). Only the `Location` contains the `city` and `address`.

| Attribute | Type | Description |
| --- | --- | --- |
| `name` | `String` | The name of the competition venue. |
| `address` | `String` | The address of the competition venue. |
| `city` | `String` | The city where the competition is located. |
| `countryIso2` | [`CountryCode`](#countrycode) | The country where the competition is located. |
| `latitudeMicrodegrees` | `Integer` | The geographic latitude of the competition in microdegrees (degrees times 10^6). |
| `longitudeMicrodegrees` | `Integer` | The geographic longitude of the competition in microdegrees (degrees times 10^6). |

#### Example

```json
{
"name": "Westin Harbour Castle Conference Centre",
"address": "11 Bay Street, Toronto, Ontario",
"cityName": "Toronto, Ontario",
"countryIso2": "CA",
"latitudeMicrodegrees": 43641740,
"longitudeMicrodegrees": 79376902
}
```

### Venue

Represents a physical location where the competition takes place.
Expand Down